[TAO-2523][Docs] Refresh developer docs: codebase tour, deeper architecture, GitHub-era CI - #32
[TAO-2523][Docs] Refresh developer docs: codebase tour, deeper architecture, GitHub-era CI#32vpraveen-nv wants to merge 3 commits into
Conversation
…ecture, GitHub-era CI Bring the developer docs to parity with tao-pytorch's docs tree and address feedback that the repo structure, modules, and architecture are hard for new developers to pick up: - Add docs/codebase_tour.md: annotated repo tree, package module map, service and auto-label backend inventory, anatomy of the annotations service, the two config conventions, and a consolidated sharp-edges list (analytics naming, default_specs limits, unconditional nvidia-smi, multigpu keyed on 'generate', monitor_status coverage, codec policy, two API stories). - Expand docs/architecture.md: shared launcher behavior, configuration flow and field factories, models-and-weights table (Grounding DINO / MAL / VLM / CLIP), the dev-mode vs production API distinction, and tao-core / tao-pytorch submodule boundaries. - Add docs/assets/config_flow.svg and module_map.svg in the same style as tao-pytorch's diagrams. - Refresh agent_onboarding, development_workflows, testing_and_debugging, and index: remove stale .gitlab-ci.yml / ci/ / Jenkinsfile references, document the pre-commit + GitHub Actions checks that actually run, fix the targeted pytest map to reference only tests that exist, and correct the base-image digest bump locations (manifest + release Dockerfile ARG defaults). - Fix the stale generated-README template text in tools/update_readme_supported_commands.py (referenced ci/run_static_tests.py and ci/utils.py, which no longer exist) and regenerate README.md. - Apply the TAO documentation style guide to the new and touched pages. All paths, subtask lists, launcher behavior, and CI configuration verified against source at origin/main. Signed-off-by: Varun Praveen <vpraveen@nvidia.com>
|
For security reasons, CI does not run automatically on NVIDIA's runners — it must be triggered per commit.
Tip Should this fix also ship in a release? Add a Important Before merging: every file needs a license header and every commit must be DCO signed-off — see the 📖 Contribution guide for details. |
Address developer review feedback on the docs refresh: - Architecture no longer opens with the development container launcher. New opening sections explain what the product is (the container it ships as and its user-facing console commands) and how customers run it as of TAO 7.0 (agent + tao-skills + Execution SDK over the container CLI), with the removed TAO Launcher and FTMS surfaces called out explicitly as history and in-repo remnants labeled as legacy integration surfaces. - New Terminology section defining service/model family, subtask, specification, the shared command dispatcher, and the dev-only container launcher - and explicitly disambiguating them from the removed TAO Launcher. - New Test Environment Setup section: submodule init, dev container entry, pip install tao-core/. (the step the README missed), PYTHONPATH notes, and which suites need GPUs or private datasets. - Terminology sweep: 'launcher' now refers only to the dev container tool; the in-repo dispatch code is the 'shared command dispatcher'. Consumption-mode statements verified against the public docs source (release_notes.rst 'Removed in 7.0', migrating_to_tao_7.0.rst, overview.rst deployment-modes table). Signed-off-by: Varun Praveen <vpraveen@nvidia.com>
|
Thanks for the detailed review — pushed an update addressing each point:
The consumption-mode statements are sourced from the public docs ( |
…PU/CPU functions) Review feedback: the units of this repository are batch CLI functions, not long-running services, so 'service' was misleading despite the product name. The Terminology table now defines 'function' with the GPU/CPU classification (GPU functions: augmentation, auto_label, embedding, tmm; CPU functions: annotations, analytics, image, gap_analysis), and the docs use 'function' consistently for the unit while keeping 'Data Services' as the product name and 'microservice' for the FTMS-era Flask code. Signed-off-by: Varun Praveen <vpraveen@nvidia.com>
|
Follow-up commit: renamed the unit noun from "service" to function, since these are batch CLI functions rather than long-running services. The Terminology table now classifies them as GPU functions ( |
|
|
||
| | Term | Meaning here | | ||
| | :--- | :--- | | ||
| | Function | One dataset-preparation capability with its own console command and package, such as `annotations` or `augmentation`. Functions are classified by compute: **GPU functions** (`augmentation`, `auto_label`, `embedding`, `tmm`) and **CPU functions** (`annotations`, `analytics`, `image`, `gap_analysis`). Despite the product name "Data Services," these are batch CLI functions, not long-running services. | |
There was a problem hiding this comment.
They are classified by type of functionality and not the compute they use. It just happens that a kind of functionality typically uses GPU or CPU.
There was a problem hiding this comment.
Also what does it mean by "batch CLI"? What gets batched?
ddevendran-nvidia
left a comment
There was a problem hiding this comment.
Didn't go through everything, but here are some initial comments
|
|
||
| | Term | Meaning here | | ||
| | :--- | :--- | | ||
| | Function | One dataset-preparation capability with its own console command and package, such as `annotations` or `augmentation`. Functions are classified by compute: **GPU functions** (`augmentation`, `auto_label`, `embedding`, `tmm`) and **CPU functions** (`annotations`, `analytics`, `image`, `gap_analysis`). Despite the product name "Data Services," these are batch CLI functions, not long-running services. | |
There was a problem hiding this comment.
Also what does it mean by "batch CLI"? What gets batched?
| | Term | Meaning here | | ||
| | :--- | :--- | | ||
| | Function | One dataset-preparation capability with its own console command and package, such as `annotations` or `augmentation`. Functions are classified by compute: **GPU functions** (`augmentation`, `auto_label`, `embedding`, `tmm`) and **CPU functions** (`annotations`, `analytics`, `image`, `gap_analysis`). Despite the product name "Data Services," these are batch CLI functions, not long-running services. | | ||
| | Subtask | One operation of a function, implemented as one module in the function's `scripts/` package and selected as the first CLI argument: `annotations convert`, `analytics analyze`. | |
There was a problem hiding this comment.
This is a confusing statement. What is "one operation of a function"?
| | Function | One dataset-preparation capability with its own console command and package, such as `annotations` or `augmentation`. Functions are classified by compute: **GPU functions** (`augmentation`, `auto_label`, `embedding`, `tmm`) and **CPU functions** (`annotations`, `analytics`, `image`, `gap_analysis`). Despite the product name "Data Services," these are batch CLI functions, not long-running services. | | ||
| | Subtask | One operation of a function, implemented as one module in the function's `scripts/` package and selected as the first CLI argument: `annotations convert`, `analytics analyze`. | | ||
| | Specification (spec) | The YAML experiment file passed with `-e`, validated against the function's dataclass schema. | | ||
| | Shared command dispatcher | `nvidia_tao_ds/core/entrypoint/entrypoint.py` — the in-repo code every console command delegates to. Not a product. | |
There was a problem hiding this comment.
Why does it say "not a product"?
|  | ||
|
|
||
| ## Runtime Dispatch | ||
| For development, `tao_ds` (dev-only, see Terminology) stands in for whatever |
There was a problem hiding this comment.
This is confusing. Is it talking about the tao_ds command or tao ds as the data services container?
| `PYTHONPATH=/workspace:$PYTHONPATH`, and starts Docker with the requested | ||
| GPUs, mounts, environment variables, shared memory, ulimits, UID/GID, and | ||
| optional service-mode ports. | ||
| `docker/manifest.json`, mounts the repository as `/workspace`, and starts |
There was a problem hiding this comment.
Huh, I thought mounting as /workspace was specific to CR. Good to know
| `runner/tao_ds.py --run_as_service`. | ||
| ## Models and Weights | ||
|
|
||
| The functions orchestrate models from other TAO repositories rather than |
There was a problem hiding this comment.
orchestrate is a bad word here. Don't they simply "use" models from other TAO repositories?
| | `nvidia_tao_ds/core/utils/default_specs.py` | Default experiment YAML generation from dataclass configs. | | ||
| | `nvidia_tao_ds/core/logging/` | TAO Data Services logging helpers. | | ||
| | `nvidia_tao_ds/core/llm_clients/` | OpenAI-compatible, Gemini, and base LLM client abstractions used by auto-label workflows. | | ||
| Two schema conventions coexist: |
There was a problem hiding this comment.
Hmmm, why does it think that two schema conventions exist? For mining and rcca we decided to have nesting in the directory structure. All the modules are meant to follow the typical schema convention.
| ## Configuration Flow | ||
|
|
||
| Most command scripts combine three files: | ||
|  |
There was a problem hiding this comment.
This diagram doesn't explain the config flow to me. I don't know that it should be a "flow".
It should be:
- The schema for the config is defined as a dataclass under config.
- A user can either 1) generate a default spec from the default spec function (this function doesn't work for the mining and rcca modules???), or 2) build their own spec
- The user can also override spec parameters at runtime by using the Hydra convention
- The parameters that get used are the provided spec + the overwritten parameters
Brings the tao-data-services developer docs to parity with tao-pytorch's docs tree and addresses feedback that the repo structure, modules, and architecture are hard for new developers to pick up.
What changed
docs/codebase_tour.md— annotated repo tree, module map, service + auto-label backend inventory, anatomy of theannotationsservice, the two config conventions, and a consolidated sharp-edges list (analytics naming,default_specslimits, unconditionalnvidia-smi, multi-GPU keyed ongenerate,monitor_statuscoverage, codec policy, the two API stories).docs/architecture.md— shared launcher behavior, configuration flow and field factories, a models-and-weights table (Grounding DINO / MAL / VLM / CLIP), the dev-mode vs production API distinction, and tao-core / tao-pytorch submodule boundaries.config_flow.svg,module_map.svg) in tao-pytorch's diagram style..gitlab-ci.yml/ci// Jenkinsfile references, documented the pre-commit + GitHub Actions checks that actually run, fixed the targeted pytest map to reference only tests that exist, and corrected the digest bump locations.tools/update_readme_supported_commands.py(it referencedci/run_static_tests.pyandci/utils.py, which no longer exist) and regeneratedREADME.md.Verification
python tools/update_readme_supported_commands.py --checkpasses;py_compileon the tool passes;git diff --checkclean; SVGs valid; all relative doc links resolve.JIRA: TAO-2523