Skip to content

Commit 499919f

Browse files
aidanfnvclaude
andcommitted
Website: Friendlier Documentation section (#229)
* Restore developer_guides text/prose (rewrites + :orphan: removals + plumbing-prose scrubs) This branch is the holding area for the developer-guides prose work while the sibling site-merge integration branch ships a thin developer-guides surface (main-state plus three structural compensations — see the site-merge revert commit for details). Restored on this branch: - `developer_guides/index.rst`: the marketing-flow-then-docs-scaffold rewrite (plain title, intro paragraphs naming the reading order, 5-card sphinx_design grid covering Inference pipeline overview / Config system / Add a new method / Usage patterns / Interactive serving, a "Where these guides fit" closing block with cross-links to /quickstart-now-get_started and /api/index, and a :hidden: toctree of all five sub-pages). - `:orphan:` removed from `usage_patterns.rst` and `interactive_serving.rst` so they can sit non-orphan inside the rewritten index's toctree. - Plumbing-prose scrubs across the sub-pages (`flashdreams-run` / `uv` references in narrative prose were taken out and kept only in code blocks). PR target: `dev/aidanf/flashdreams-site-merge`. When this branch is ready, the merge brings the developer-guides text content into the public-website integration line. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Revert changes related to unused guides * Revert changes related to unused guides * Integrate new docs into docs section * Cleanup * Cleanup * Rewrite API/CLI index * Rename API index * Consistency of API index title --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent fc634de commit 499919f

10 files changed

Lines changed: 135 additions & 72 deletions

File tree

docs/source/_templates/layout.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
marketing.
2626
#}
2727
{% set _fd_is_reference = pagename == 'documentation'
28-
or pagename.startswith('api/')
2928
or pagename.startswith('developer_guides/')
29+
or pagename.startswith('api/')
30+
or pagename == 'troubleshooting'
3031
or pagename.startswith('models/')
3132
or pagename.startswith('community/')
3233
or pagename.startswith('quickstart/')

docs/source/api/index.rst

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,52 @@
1313
.. See the License for the specific language governing permissions and
1414
.. limitations under the License.
1515
16-
API reference
17-
===================================
16+
CLI and API Reference
17+
=====================
1818

19-
Reference pages for FlashDreams Python APIs.
19+
Reference pages for the FlashDreams command-line interface and Python APIs.
2020

21-
- :doc:`CLI reference </api/cli>`
22-
- :doc:`Core </api/core>`
23-
- :doc:`Infra </api/infra>`
24-
- :doc:`Pipelines and runners </api/integrations>`
25-
- :doc:`Serving </api/serving>`
21+
.. grid:: 1 1 2 2
22+
:gutter: 3
23+
24+
.. grid-item-card:: CLI
25+
:link: cli
26+
:link-type: doc
27+
28+
The unified ``flashdreams-run`` entry point: listing runner slugs,
29+
inspecting a runner's options, and launching single- and multi-GPU
30+
inference.
31+
32+
.. grid-item-card:: Core
33+
:link: core
34+
:link-type: doc
35+
36+
The low-level kernels and process-group utilities that
37+
integrations share: attention, the block-structured KV cache, and
38+
distributed helpers.
39+
40+
.. grid-item-card:: Infra
41+
:link: infra
42+
:link-type: doc
43+
44+
The swappable abstractions every integration plugs into: the
45+
config system, the encoder / diffusion-model / decoder triple, and
46+
the streaming inference pipeline that drives them.
47+
48+
.. grid-item-card:: Pipelines and runners
49+
:link: integrations
50+
:link-type: doc
51+
52+
The two public layers a model integration is built from: pipelines
53+
that define model behavior and runners that define CLI-facing I/O.
54+
55+
.. grid-item-card:: Serving
56+
:link: serving
57+
:link-type: doc
58+
59+
The runner / pipeline building blocks for integration-driven
60+
serving, with LingBot-World as the canonical interactive-transport
61+
reference.
2662

2763
.. toctree::
2864
:hidden:

docs/source/community/support.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ Before you file an issue
6868
answer.
6969
- **Check the** :doc:`faq` **page.** If your question is there,
7070
great; if a related question is there, link to it in your issue.
71+
- **Check the** :doc:`/troubleshooting` **page.** It lists common
72+
first-run failures (e.g. CUDA build mismatches, disk and cache limits,
73+
Hugging Face auth, GPU memory) with a likely
74+
cause and next step for each.
7175
- **Confirm your version.** A bug fixed in ``main`` looks identical to
7276
a fresh bug if you're on an older tagged release. Reproduce against
7377
the latest ``main`` or note your version in the report.

docs/source/conf.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
"community/*": ["page-toc"],
9393
"models/*": ["page-toc"],
9494
"documentation": ["page-toc"],
95+
"troubleshooting": ["page-toc"],
9596
"developer_guides/*": ["page-toc"],
9697
"api/*": ["page-toc"],
9798
},
@@ -133,6 +134,7 @@
133134
"models/*": ["sidebar-nav-bs"],
134135
"models/index": [],
135136
"documentation": ["search-field", "sidebar-nav-bs"],
137+
"troubleshooting": ["search-field", "sidebar-nav-bs"],
136138
"developer_guides/*": ["search-field", "sidebar-nav-bs"],
137139
"api/*": ["search-field", "sidebar-nav-bs"],
138140
}

docs/source/developer_guides/config_system.rst

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ Config system
1717
===================================
1818

1919
FlashDreams configuration is built around simple, strongly-typed Python ``dataclass`` objects.
20-
This configuration system is similar to the one employed in `nerfstudio <https://github.com/nerfstudio-project/nerfstudio>`_,
21-
allowing to easily compose different model components variants and nest configurations to define the complete
20+
This configuration system is similar to the one employed in `nerfstudio <https://github.com/nerfstudio-project/nerfstudio>`_.
21+
It allows you to easily plug in different permutations of model components and nest configurations to define the complete
2222
inference pipeline.
2323

2424
Base components
2525
---------------
2626

27-
All configurable components in FlashDreams - such as the encoder, transformer, scheduler, and decoder -
28-
have a corresponding configuration dataclass in ``flashdreams.infra``.
27+
All configurable components in FlashDreams (such as the encoder, transformer, scheduler, and decoder)
28+
have a corresponding configuration dataclass and can be found under ``flashdreams.infra``.
2929
As outlined in the :doc:`/developer_guides/inference_pipeline_overview`, the main entry point for defining an integration
3030
is the :class:`~flashdreams.infra.pipeline.StreamInferencePipelineConfig`.
3131

@@ -57,10 +57,9 @@ A typical pipeline config defines the architecture by composing other config dat
5757
Creating new configs
5858
--------------------
5959

60-
To create a brand new model component, a corresponding config with the associated parameters to be exposed has to be created.
60+
If you are interested in creating a brand new model component, you will need to create a corresponding config with the associated parameters you want to expose.
6161

62-
To create a new encoder called ``MyEncoder``, a new ``Encoder`` class that extends the base class has to be defined.
63-
Before the model definition, the actual ``MyEncoderConfig``, which points to the ``MyEncoder`` class, has to be defined using the ``_target`` field.
62+
Let's say you want to create a new encoder called ``MyEncoder``. You can create a new ``Encoder`` class that extends the base class. Before the model definition, you define the actual ``MyEncoderConfig`` which points to the ``MyEncoder`` class using the ``_target`` field.
6463

6564
.. code-block:: python
6665
@@ -97,9 +96,7 @@ Before the model definition, the actual ``MyEncoderConfig``, which points to the
9796
def forward(self, input):
9897
...
9998
100-
Alternatively, it's not always required to define a complete configuration from scratch.
101-
One can use :func:`flashdreams.infra.config.derive_config` to create concise variants from existing configs,
102-
allowing to inherit the base settings and to only override specific fields:
99+
Alternatively, you do not always have to write a complete configuration from scratch. You can use :func:`flashdreams.infra.config.derive_config` to create concise variants from existing configs. This allows you to inherit the base settings and only override the specific fields you want to change:
103100

104101
.. code-block:: python
105102
@@ -116,10 +113,9 @@ allowing to inherit the base settings and to only override specific fields:
116113
Modifying from CLI
117114
------------------
118115

119-
To simply play with the parameters of an existing model without having to specify a new one, one can employ CLI arguments, which are powered by `tyro <https://github.com/brentyi/tyro>`_.
116+
Often you just want to play with the parameters of an existing model without specifying a new configuration. The command-line interface, powered by `tyro <https://github.com/brentyi/tyro>`_, exposes every nested dataclass field as a flag.
120117

121-
Because the FlashDreams configurations are strongly typed dataclasses, ``tyro`` automatically generates a comprehensive command-line interface.
122-
The ``flashdreams-run`` cli command can be used to dynamically override any nested dataclass field.
118+
Because configurations are strongly typed dataclasses, ``tyro`` generates the CLI automatically. Each shipped model is a named runner slug; pass any nested field as a flag to override it.
123119

124120
For example, to list all existing configurable parameters for a model:
125121

docs/source/developer_guides/index.rst

Lines changed: 45 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,61 @@
1313
.. See the License for the specific language governing permissions and
1414
.. limitations under the License.
1515
16-
:orphan:
16+
Developer Guides
17+
================
1718

18-
Developer guides
19-
===================================
19+
.. grid:: 1 1 2 2
20+
:gutter: 3
2021

21-
Use these guides after the quick start to understand the runtime, choose a
22-
developer workflow, configure runs, build serving applications, or add a new
23-
model integration.
22+
.. grid-item-card:: Inference pipeline overview
23+
:link: inference_pipeline_overview
24+
:link-type: doc
2425

25-
Guides
26-
------
26+
The end-to-end computation flow: warmup, CUDA-graph capture,
27+
the autoregressive-step body, the ring-attention shard group,
28+
and finalize. The mental model the rest of the project assumes.
2729

28-
- :doc:`Inference pipeline overview </developer_guides/inference_pipeline_overview>`
29-
- :doc:`Config system </developer_guides/config_system>`
30-
- :doc:`Interactive-drive latency tuning </developer_guides/latency_tuning>`
31-
- :doc:`Add a new method </developer_guides/new_integration>`
30+
.. grid-item-card:: Config system
31+
:link: config_system
32+
:link-type: doc
3233

33-
.. Temporarily commented out for internal development:
34-
.. - :doc:`How to use FlashDreams as a developer </developer_guides/usage_patterns>`
35-
.. - :doc:`Interactive serving </developer_guides/interactive_serving>`
34+
How every overridable field is surfaced as a CLI flag, how
35+
recipe defaults compose, and how to layer overrides on top.
36+
37+
.. grid-item-card:: Interactive-drive latency tuning
38+
:link: latency_tuning
39+
:link-type: doc
40+
41+
The supported knobs for ``interactive-drive`` latency: model and
42+
backend choice, resolution, chunk-size constraints, FP8 and native
43+
acceleration, transport, and the validated GB300 reference.
44+
45+
.. grid-item-card:: Add a new method
46+
:link: new_integration
47+
:link-type: doc
48+
49+
The entry-point surface a new recipe ships against: what to
50+
subclass, what to register, and where the parity tests live.
51+
52+
Where these guides fit
53+
----------------------
54+
55+
These guides are conceptual. For a specific recipe, see its per-model
56+
page under :doc:`/models/index`; for the per-symbol reference, see
57+
:doc:`/api/index`; and for the two-command path from install to a
58+
generated clip, see :doc:`/quickstart/index`.
3659

3760
.. toctree::
3861
:hidden:
3962
:maxdepth: 1
4063

4164
inference_pipeline_overview
4265
config_system
66+
latency_tuning
4367
new_integration
44-
.. Temporarily commented out for internal development:
45-
.. usage_patterns
46-
.. interactive_serving
68+
69+
..
70+
Temporarily commented out for internal development:
71+
72+
usage_patterns
73+
interactive_serving

docs/source/developer_guides/latency_tuning.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
.. See the License for the specific language governing permissions and
1414
.. limitations under the License.
1515
16-
:orphan:
17-
1816
Interactive-drive latency tuning
1917
================================
2018

docs/source/developer_guides/new_integration.rst

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@
1616
Add a new method
1717
===================================
1818

19-
Before starting to add a new method, we highly recommend reading the :doc:`/developer_guides/inference_pipeline_overview` and :doc:`/developer_guides/config_system` pages first to obtain an overview of the system's architecture.
19+
Before you start adding a new method, we highly recommend reading the :doc:`/developer_guides/inference_pipeline_overview` and :doc:`/developer_guides/config_system` pages first to obtain an overview of the system architecture.
2020

21-
FlashDreams aims to offer researchers a codebase that they can utilize to extend and develop novel video and world models. Our vision is for users to establish a *standalone repository* that imports FlashDreams as a dependency and overrides pipeline components (such as encoders, transformers, or decoders) to cater to specific functionality requirements of the new approach. We encourage to maintain methods externally rather than pushing changes directly into the `integrations/ <https://github.com/NVIDIA/flashdreams/tree/main/integrations>`_ directory of this repository.
21+
FlashDreams aims to offer researchers a codebase that they can utilize to extend and develop novel video and world models. Our vision is for users to establish a *standalone repository* that imports FlashDreams as a dependency and overrides pipeline components (such as encoders, transformers, or decoders) to cater to specific functionality requirements of the new approach. We encourage you to maintain your method externally rather than pushing changes directly into the `integrations/ <https://github.com/NVIDIA/flashdreams/tree/main/integrations>`_ directory of this repository.
2222

23-
However, if any new features requires modifications to the core FlashDreams infra or introduce generally useful components (such as the :mod:`TAEHV decoder <flashdreams.recipes.taehv>`), we encourage you to submit a PR to enable others to benefit from them.
23+
However, if any of your new features require modifications to the core FlashDreams infra or introduce generally useful components (such as the :mod:`TAEHV decoder <flashdreams.recipes.taehv>`), we encourage you to submit a PR to enable others to benefit from them.
2424

2525
File structure
2626
--------------
2727

28-
We recommend the following file structure for new methods:
28+
We recommend the following file structure for your new method:
2929

3030
.. code-block:: text
3131
@@ -41,7 +41,7 @@ We recommend the following file structure for new methods:
4141
│ └── ...
4242
└── pyproject.toml
4343
44-
Add optional files are only if customization beyond what is available in FlashDreams is required.
44+
Add optional files only when you need to customize the behavior beyond what is available in FlashDreams.
4545
Most integrations can use the base :class:`~flashdreams.infra.pipeline.StreamInferencePipeline` directly and only provide model components plus config literals.
4646
As explained in :doc:`/developer_guides/config_system`, a method typically defines a pipeline config and a runner config.
4747
The runner handles CLI-facing I/O and runtime loops.
@@ -104,29 +104,27 @@ The runner handles CLI-facing I/O and runtime loops.
104104
)
105105
106106
107-
Existing integrations under the `integrations/ <https://github.com/NVIDIA/flashdreams/tree/main/integrations>`_ can be used as a minimal guide.
108-
These folders are simple examples of what mini standalone repositories that depend on FlashDreams look like.
109-
Examples are often the best way to learn; take a look at the `LingBot-World <https://github.com/NVIDIA/flashdreams/tree/main/integrations/lingbot>`_ and `Self-Forcing <https://github.com/NVIDIA/flashdreams/tree/main/integrations/self_forcing>`_ integrations for good references on how to extend and use FlashDreams in a custom project.
107+
You can use the existing integrations under the `integrations/ <https://github.com/NVIDIA/flashdreams/tree/main/integrations>`_ directory as a minimal guide. These folders are simple examples of what mini standalone repositories that depend on FlashDreams look like. Examples are often the best way to learn; take a look at the `LingBot-World <https://github.com/NVIDIA/flashdreams/tree/main/integrations/lingbot>`_ and `Self-Forcing <https://github.com/NVIDIA/flashdreams/tree/main/integrations/self_forcing>`_ integrations for good references on how to extend and use FlashDreams in your own projects.
110108

111-
Registering methods
112-
-------------------
109+
Registering your method
110+
-----------------------
113111

114-
After registering a method one should be able to see it in the CLI helptext and run it, leveraging the existing CLI for complete command line control:
112+
After registering your method you should be able to see it in the CLI helptext and run it, leveraging the existing CLI for complete command line control:
115113

116114
.. code-block:: bash
117115
118-
# List all available models, including new ones
116+
# List all available models, including your new one
119117
flashdreams-run --help
120118
121-
# See configurable parameters for new models
119+
# See configurable parameters for your new model
122120
flashdreams-run customized-method --help
123121
124122
# Run the new model
125123
flashdreams-run customized-method --prompt "A beautiful custom generation."
126124
127-
In order to extend FlashDreams and register own models, one can package code as a Python package and register it with FlashDreams via an entrypoint in the ``pyproject.toml`` file. FlashDreams will automatically search for all registered runners and will register them to be used by the ``flashdreams-run`` CLI.
125+
To register your own models, package your code as a Python package and declare a runner entry point in its ``pyproject.toml``. FlashDreams discovers every registered runner at import time and surfaces it through the same command-line interface as the in-tree recipes. There is no central manifest to keep in sync.
128126

129-
A ``pyproject.toml`` file is where the entrypoint to custom methods is specified and additional dependencies are specified. For example:
127+
Create a ``pyproject.toml`` file. This is where the entrypoint to your method is set and also where you can specify additional dependencies required by your codebase.
130128

131129
.. code-block:: toml
132130
:caption: pyproject.toml
@@ -152,16 +150,16 @@ Finally, run the following to register the method:
152150
153151
pip install -e .
154152
155-
When developing a new methods they don't always need to be installed as a package. Instead, the ``FLASHDREAMS_RUNNER_CONFIGS`` environment variable can be usedto temporarily register custom custom method.
153+
When developing a new method, you don't always want to install your code as a package. Instead, you may use the ``FLASHDREAMS_RUNNER_CONFIGS`` environment variable to temporarily register your custom method.
156154

157155
.. code-block:: bash
158156
159157
export FLASHDREAMS_RUNNER_CONFIGS="customized-method=customized_method.config:RUNNER_CONFIGS"
160158
161-
The ``FLASHDREAMS_RUNNER_CONFIGS`` environment variable additionally accepts a function (a zero-arg callable) to temporarily register custom runners if construction has side effects to be deferred until CLI time.
159+
The ``FLASHDREAMS_RUNNER_CONFIGS`` environment variable additionally accepts a function (a zero-arg callable) to temporarily register your custom runner if construction has side effects you want to defer until CLI time.
162160

163161
Adding to the FlashDreams documentation
164162
---------------------------------------
165163

166-
We invite researchers to contribute their own integrations to our official codebase and documentation. More information on how to do this can be found in the repository's `CONTRIBUTING.md <https://github.com/NVIDIA/flashdreams/blob/main/CONTRIBUTING.md>`_.
167-
See the existing model pages under the `docs/source/models/ <https://github.com/NVIDIA/flashdreams/tree/main/docs/source/models>`_ (e.g., :doc:`/models/self_forcing`) as templates for documenting new methods.
164+
We invite researchers to contribute their own integrations to our official codebase and documentation. You can find more information on how to do this in the repository's `CONTRIBUTING.md <https://github.com/NVIDIA/flashdreams/blob/main/CONTRIBUTING.md>`_.
165+
See the existing model pages under the `docs/source/models/ <https://github.com/NVIDIA/flashdreams/tree/main/docs/source/models>`_ directory (e.g., :doc:`/models/self_forcing`) as templates for documenting your new method.

docs/source/documentation.rst

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,6 @@
1616
Documentation
1717
=============
1818

19-
The FlashDreams documentation is organized into two sections.
20-
The **developer guides** section contains guides that teach you how to understand, extend, and build on FlashDreams,
21-
combining conceptual explanation with worked code examples.
22-
The **CLI and API reference** section contains the complete technical reference for every public
23-
class, function, and command-line flag.
24-
2519
.. grid:: 1 1 2 2
2620
:gutter: 3
2721

@@ -33,17 +27,26 @@ class, function, and command-line flag.
3327
FlashDreams, combining conceptual explanation with worked code
3428
examples.
3529

36-
.. grid-item-card:: CLI and API reference
30+
.. grid-item-card:: CLI and API Reference
3731
:link: /api/index
3832
:link-type: doc
3933

4034
Complete reference for the ``flashdreams-run`` CLI, the core
4135
runtime, the infrastructure layer, the pipelines and runners,
4236
and the serving components.
4337

38+
.. grid-item-card:: Troubleshooting
39+
:link: /troubleshooting
40+
:link-type: doc
41+
42+
Common first-run failures (e.g. CUDA build mismatches, disk and
43+
cache limits, Hugging Face authentication, GPU memory)
44+
each with the likely cause and the next step to try.
45+
4446
.. toctree::
4547
:hidden:
4648
:maxdepth: 1
4749

48-
Developer guides </developer_guides/index>
49-
CLI and API reference </api/index>
50+
/developer_guides/index
51+
/api/index
52+
/troubleshooting

0 commit comments

Comments
 (0)