<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Developer concepts on TauGrid</title><link>https://azure.github.io/taugrid/docs/developer-guide/concepts/</link><description>Recent content in Developer concepts on TauGrid</description><generator>Hugo</generator><language>en</language><atom:link href="https://azure.github.io/taugrid/docs/developer-guide/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>TauGrid object model</title><link>https://azure.github.io/taugrid/docs/developer-guide/concepts/object-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://azure.github.io/taugrid/docs/developer-guide/concepts/object-model/</guid><description>&lt;aside class="tau-maturity tau-maturity--ga" aria-label="Feature stage: GA"&gt;
 &lt;span class="tau-maturity__prefix"&gt;Feature state:&lt;/span&gt;
 &lt;strong class="tau-maturity__status"&gt;GA&lt;/strong&gt;
 &lt;span class="tau-maturity__reviewed"&gt;Reviewed 2026-07-16&lt;/span&gt;
&lt;/aside&gt;

&lt;p&gt;Full definitions for these terms live in the &lt;a href="../../../reference/glossary/"&gt;glossary&lt;/a&gt;. This
page only explains how they relate and who owns what.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Concept&lt;/th&gt;
					&lt;th&gt;Owns&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="../../../reference/glossary/#repository"&gt;Repository&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Code and history in one Git worktree&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="../../../reference/glossary/#project"&gt;Project&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;One or more targets and a workspace connection&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="../../../reference/glossary/#workspace"&gt;Workspace&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Destination policy: cluster, namespace, queue, priority, output root, identity&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="../../../reference/glossary/#target"&gt;Target&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;One checked-in runnable config&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="../../../reference/glossary/#run"&gt;Run&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;One execution plus its lifecycle handle&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="../../../reference/glossary/#workload"&gt;Workload&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Rendered Job or RayJob execution intent&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="../../../reference/glossary/#service"&gt;Service&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Online RayService or Deployment lifecycle target&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="../../../reference/glossary/#experiment"&gt;Experiment&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;A comparison set over runs, metrics, and artifacts&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The ownership split is deliberate:&lt;/p&gt;</description></item><item><title>Run and workload lifecycle</title><link>https://azure.github.io/taugrid/docs/developer-guide/concepts/lifecycle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://azure.github.io/taugrid/docs/developer-guide/concepts/lifecycle/</guid><description>&lt;aside class="tau-maturity tau-maturity--ga" aria-label="Feature stage: GA"&gt;
 &lt;span class="tau-maturity__prefix"&gt;Feature state:&lt;/span&gt;
 &lt;strong class="tau-maturity__status"&gt;GA&lt;/strong&gt;
 &lt;span class="tau-maturity__reviewed"&gt;Reviewed 2026-07-16&lt;/span&gt;
&lt;/aside&gt;

&lt;p&gt;A TauGrid run crosses independent control planes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Resolution:&lt;/strong&gt; TauGrid finds the project, workspace, and target.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendering:&lt;/strong&gt; TauGrid validates intent and builds a Job or RayJob.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admission:&lt;/strong&gt; Kueue reserves quota and admits the workload.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scheduling:&lt;/strong&gt; Kubernetes places pods on matching nodes and devices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runtime:&lt;/strong&gt; Ray or the Job controller starts the application.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Progress:&lt;/strong&gt; The model or data process advances and writes evidence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Completion:&lt;/strong&gt; Results, checkpoints, metrics, and terminal state remain inspectable.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These states are not equivalent:&lt;/p&gt;</description></item><item><title>Workspaces</title><link>https://azure.github.io/taugrid/docs/developer-guide/concepts/workspaces/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://azure.github.io/taugrid/docs/developer-guide/concepts/workspaces/</guid><description>&lt;p&gt;A workspace connects repository intent to one cluster namespace, LocalQueue,
workload ServiceAccount, and authorization contract.&lt;/p&gt;
&lt;h2 id="single-active-workspace"&gt;Single active workspace&lt;/h2&gt;
&lt;aside class="tau-maturity tau-maturity--ga" aria-label="Feature stage: GA"&gt;
 &lt;span class="tau-maturity__prefix"&gt;Feature state:&lt;/span&gt;
 &lt;strong class="tau-maturity__status"&gt;GA&lt;/strong&gt;
 &lt;span class="tau-maturity__reviewed"&gt;Reviewed 2026-08-12&lt;/span&gt;
&lt;/aside&gt;

&lt;p&gt;TauGrid v0 activates one workspace per cluster. The CLI resolves that workspace
from the checked-in connection descriptor or the cluster&amp;rsquo;s primary-workspace
marker, so researchers can omit the workspace name for normal runs.&lt;/p&gt;
&lt;p&gt;The active workspace must be &lt;code&gt;Ready&lt;/code&gt; before TauGrid submits a workload. Readiness
confirms the namespace, queue, workload identity configuration, and
authorization contract described in the
&lt;a href="../../../reference/workspace/"&gt;TauWorkspace reference&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Configuration resolution</title><link>https://azure.github.io/taugrid/docs/developer-guide/concepts/config-resolution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://azure.github.io/taugrid/docs/developer-guide/concepts/config-resolution/</guid><description>&lt;aside class="tau-maturity tau-maturity--ga" aria-label="Feature stage: GA"&gt;
 &lt;span class="tau-maturity__prefix"&gt;Feature state:&lt;/span&gt;
 &lt;strong class="tau-maturity__status"&gt;GA&lt;/strong&gt;
 &lt;span class="tau-maturity__reviewed"&gt;Reviewed 2026-07-16&lt;/span&gt;
&lt;/aside&gt;

&lt;p&gt;The normal researcher contract is a checked-in direct run config:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;train&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;rayjob&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;entrypoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;train.py&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;compute&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;workers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;gpus_per_worker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;data_pvc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;training-data&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;TauGrid combines:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Explicit &lt;a href="../../../reference/glossary/#project"&gt;project&lt;/a&gt; and &lt;a href="../../../reference/glossary/#target"&gt;target&lt;/a&gt; selection.&lt;/li&gt;
&lt;li&gt;&lt;a href="../../../reference/glossary/#repository"&gt;Repository&lt;/a&gt; or monorepo discovery.&lt;/li&gt;
&lt;li&gt;The project&amp;rsquo;s &lt;a href="../../../reference/glossary/#workspace-connection"&gt;workspace connection descriptor&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Platform-owned &lt;a href="../../../reference/glossary/#workspace"&gt;workspace&lt;/a&gt; defaults.&lt;/li&gt;
&lt;li&gt;Checked-in &lt;a href="../../../reference/glossary/#workload"&gt;workload&lt;/a&gt; intent.&lt;/li&gt;
&lt;li&gt;Temporary explicit operator overrides.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ambiguity is an error. Dry-run output must keep default sources visible.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tau run validate --config tau/train.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tau run train --dry-run&lt;span class="o"&gt;=&lt;/span&gt;client
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tau run explain-config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;See &lt;a href="../../../reference/glossary/#run-config-vs-manifest"&gt;direct run config vs. managed workflow manifest&lt;/a&gt;
for how Python SDK-generated manifests relate to this default format.&lt;/p&gt;</description></item><item><title>Experiment evidence and artifacts</title><link>https://azure.github.io/taugrid/docs/developer-guide/concepts/evidence/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://azure.github.io/taugrid/docs/developer-guide/concepts/evidence/</guid><description>&lt;aside class="tau-maturity tau-maturity--ga" aria-label="Feature stage: GA"&gt;
 &lt;span class="tau-maturity__prefix"&gt;Feature state:&lt;/span&gt;
 &lt;strong class="tau-maturity__status"&gt;GA&lt;/strong&gt;
 &lt;span class="tau-maturity__reviewed"&gt;Reviewed 2026-08-25&lt;/span&gt;
&lt;/aside&gt;

&lt;p&gt;Every run should save enough information for you to answer four questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What code and settings produced this result?&lt;/li&gt;
&lt;li&gt;Did the model improve during the run?&lt;/li&gt;
&lt;li&gt;Where are the checkpoint and output files?&lt;/li&gt;
&lt;li&gt;Can I compare, reproduce, or resume this run later?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-taugrid-saves"&gt;What TauGrid saves&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Saved data&lt;/th&gt;
					&lt;th&gt;Examples&lt;/th&gt;
					&lt;th&gt;Where it is saved&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Run details&lt;/td&gt;
					&lt;td&gt;Project, run ID, config, and input references&lt;/td&gt;
					&lt;td&gt;TauGrid experiment index&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Metrics over time&lt;/td&gt;
					&lt;td&gt;Loss, accuracy, throughput, and GPU use&lt;/td&gt;
					&lt;td&gt;Metric files&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Metric summary&lt;/td&gt;
					&lt;td&gt;First and latest step, minimum, maximum, and point count&lt;/td&gt;
					&lt;td&gt;TauGrid experiment index&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Output files&lt;/td&gt;
					&lt;td&gt;Checkpoints, models, images, tables, profiles, and reports&lt;/td&gt;
					&lt;td&gt;The directory set by &lt;code&gt;storage.output&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Run history&lt;/td&gt;
					&lt;td&gt;Attempts, retries, resumes, and final status&lt;/td&gt;
					&lt;td&gt;TauGrid experiment index and Kubernetes workload&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The output files stay on the storage chosen by the platform team. TauGrid keeps
an index so you can find and compare them.&lt;/p&gt;</description></item></channel></rss>