Repository navigation
[doc] Convert observability, more-libs, references, and AIR pages from RST to MyST - #66673
Conversation
…m RST to MyST Format-only conversion of 25 pages under ray-observability/, ray-more-libs/, ray-references/, and ray-air/. The two observability API reference pages (reference/api.rst and reference/cli.rst) stay RST with the other API reference trees. Exclude ray-references/glossary.md from the main doctest target. Nothing ran its doctest block as .rst, and the stock --doctest-glob parser that reads .md files can't pass its elided output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Douglas Strodtman <douglas@anyscale.com>
…nd AIR pages Whitespace-only reflow of the pages converted in the previous commit, one line per paragraph and list item. verify.py confirms non-whitespace bytes and rendered HTML are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Douglas Strodtman <douglas@anyscale.com>
…s, references, and AIR pages The render diff against /en/master found these regressions through a green build: - modin: two bare-word named references rendered as literal text. - getting-started: a bold URL was autolinked. - system-metrics: a URL in a table cell lost its link. - dask-on-ray: `_not_` rendered as emphasis. - glossary: inline `.. TODO: RLlib` text became a comment. This commit also adds compat targets with the docutils slug to five bare headings that contain an apostrophe, so their old anchors keep resolving. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Douglas Strodtman <douglas@anyscale.com>
There was a problem hiding this comment.
Code Review
This pull request converts several documentation files from reStructuredText (RST) to MyST Markdown format across Ray's libraries and observability guides. The review feedback highlights several formatting and rendering issues introduced during this migration, such as leftover RST syntax, broken bulleted lists due to incorrect line reflows, links wrapped in backticks rendering as literal code, typos, grammatical errors, and incorrectly converted TODO comments. Addressing these issues will ensure the documentation renders correctly in MyST Markdown.
| 1. To take advantage of Ray-specific features such as the | ||
| : {ref}`launching cloud clusters <cluster-index>` and | ||
| {ref}`shared-memory store <memory>`. |
| ## Best Practice for Large Scale workloads | ||
| For Ray 1.3, the default scheduling policy is to pack tasks to the same node as much as possible. It is more desirable to spread tasks if you run a large scale / memory intensive Dask on Ray workloads. | ||
|
|
||
| In this case, there are two recommended setups. \- Reducing the config flag `scheduler_spread_threshold` to tell the scheduler to prefer spreading tasks across the cluster instead of packing. \- Setting the head node's `num-cpus` to 0 so that tasks are not scheduled on a head node. |
| - Current number of tasks (both remote functions and actor calls) by state. The State label (e.g., RUNNING, FINISHED, FAILED) describes the state of the task. See [rpc::TaskState](https://github.com/ray-project/ray/blob/e85355b9b593742b4f5cb72cab92051980fa73d3/src/ray/protobuf/common.proto#L583) for more information. The function/method name is available as the Name label. If the task was retried due to failure or reconstruction, the IsRetry label will be set to "1", otherwise "0". | ||
| * - `ray_actors` | ||
| - `Name`, `State` | ||
| - Current number of actors in each state described in `rpc::ActorTableData::ActorState <https://github.com/ray-project/ray/blob/b3799a53dcabd8d1a4d20f22faa98e781b0059c7/src/ray/protobuf/gcs.proto#L79>`. ALIVE has two sub-states: ALIVE_IDLE, and ALIVE_RUNNING_TASKS. An actor is considered ALIVE_IDLE if it is not running any tasks. |
|
|
||
| ### Debugger | ||
|
|
||
| Many Python developers use a debugger to debug Python programs, and [Python pdb](https://docs.python.org/3/library/pdb.html)) is one of the popular choices. Ray has native integration to `pdb`. You can simply add `breakpoint()` to Actors and Tasks code to enable `pdb`. View {ref}`Ray Debugger <ray-debugger>` for more details. |
| :::{note} | ||
| The following errors are conditional and not signals of failures for your Python programs: | ||
|
|
||
| * If you see "No such file or direction", check if your worker process has exited. |
There was a problem hiding this comment.
|
|
||
| **Fix:** | ||
|
|
||
| — Use only shared file paths for such applications. For example, a network file system or S3 storage can provide the required consistency. — Avoid relying on local files to be consistent across machines. |
There was a problem hiding this comment.
Two list items starting with em-dashes (—) have been reflowed into a single line, which prevents them from rendering as a list. They should be split into separate lines and formatted as a standard Markdown bulleted list.
| — Use only shared file paths for such applications. For example, a network file system or S3 storage can provide the required consistency. — Avoid relying on local files to be consistent across machines. | |
| - Use only shared file paths for such applications. For example, a network file system or S3 storage can provide the required consistency. | |
| - Avoid relying on local files to be consistent across machines. |
|
|
||
| To enable call site capture, set the environment variable `RAY_record_task_actor_creation_sites=true`. When enabled: | ||
|
|
||
| — Ray captures a stack trace when creating tasks, actors, or invoking actor methods. — The captured stack trace is available in the Ray dashboard (under task and actor details), output of the state CLI command `ray list task --detail`, and state API responses. |
|
|
||
| For many - but not all - libraries, you can diagnose this by opening `top` while your application is running. If one process is using most of the CPUs, and the others are using a small amount, this may be the problem. The most common exception is PyTorch, which will appear to be using all the cores despite needing `torch.set_num_threads(1)` to be called to avoid contention. | ||
|
|
||
| If you are still experiencing a slowdown, but none of the above problems apply, we'd really like to know! Create a [GitHub issue](https://github.com/ray-project/ray/issues) and Submit a minimal code example that demonstrates the problem. |
There was a problem hiding this comment.
Typo: "Submit" is capitalized in the middle of the sentence. It should be lowercase "submit".
| If you are still experiencing a slowdown, but none of the above problems apply, we'd really like to know! Create a [GitHub issue](https://github.com/ray-project/ray/issues) and Submit a minimal code example that demonstrates the problem. | |
| If you are still experiencing a slowdown, but none of the above problems apply, we'd really like to know! Create a [GitHub issue](https://github.com/ray-project/ray/issues) and submit a minimal code example that demonstrates the problem. |
|
|
||
| # Using the Ray Debugger | ||
|
|
||
| Ray has a built in debugger that allows you to debug your distributed applications. It allows to set breakpoints in your Ray tasks and actors and when hitting the breakpoint you can drop into a PDB session that you can then use to: |
There was a problem hiding this comment.
Grammatical issue: "It allows to set breakpoints" should be "It allows you to set breakpoints" or "It allows setting breakpoints".
| Ray has a built in debugger that allows you to debug your distributed applications. It allows to set breakpoints in your Ray tasks and actors and when hitting the breakpoint you can drop into a PDB session that you can then use to: | |
| Ray has a built in debugger that allows you to debug your distributed applications. It allows you to set breakpoints in your Ray tasks and actors and when hitting the breakpoint you can drop into a PDB session that you can then use to: |
| Training iteration | ||
| A partial training pass of input data up to pre-defined yield point | ||
| (e.g., time or data consumed) for checkpointing of long running training jobs. | ||
| A full training epoch can consist of multiple training iterations. |
There was a problem hiding this comment.
The RST comment .. TODO: RLlib was incorrectly converted to .\. TODO: RLlib, which will render as literal text. It should be converted to a standard Markdown comment <!-- TODO: RLlib -->. Note that the same issue applies to other .. TODO: lines in this file (e.g., lines 145, 157, 163, etc.) and they should all be converted to standard HTML comments <!-- TODO: ... -->.
| A full training epoch can consist of multiple training iterations. | |
| <!-- TODO: RLlib --> |
The RST sources wrote these as lines starting with '-' or an em dash inside a paragraph, which /en/master renders as run-on text. The soft-wrap joined them onto one line, which makes the problem visible in the source. Make them real Markdown lists. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Douglas Strodtman <douglas@anyscale.com>
Remove the glossary's placeholder TODO entries. The `.. TODO:` lines rendered as literal text inside the MyST glossary, and the missing terms can be identified later. Revert the doc/BUILD.bazel change so the PR stays docs-only and doesn't trigger library CI. Instead, mark the glossary's batch-format example `+SKIP` so the stock `--doctest-glob='*.md'` parser doesn't run its stale output. The example never ran as .rst, and Sphinx's default `trim_doctest_flags` hides the flag in the rendered page. Also fix defects carried over from the .rst sources: a stray definition list in dask-on-ray, an unconverted link in system-metrics, an extra parenthesis in debug-failures, two typos, a grammar slip in ray-debugging, and em-dash pseudo-list items in general-debugging. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Douglas Strodtman <douglas@anyscale.com>
…m RST to MyST (ray-project#66673) ## Why are these changes needed? This PR converts the remaining prose pages under `ray-observability/`, `ray-more-libs/`, `ray-references/`, and `ray-air/` from reStructuredText to MyST Markdown. It continues the RST-to-MyST conversion that already landed for `ray-core/` (ray-project#66430), `data/` (ray-project#66375), and the doctest-wired pages (ray-project#66461). The conversion is format only: the goal is for each page's rendered HTML to match `/en/master`. There are five commits: 1. **Conversion.** This commit converts 25 pages, `git rm`s the `.rst` sources, and adds one `doc/BUILD.bazel` exclude, which commit 5 reverts. Prose keeps its source line wrapping, so the diff lines up with the `.rst` line by line. 2. **Soft-wrap.** This commit reflows whitespace only, to one line per paragraph and list item. `verify.py` from `ray-soft-wrap` confirms that the non-whitespace bytes and the rendered HTML don't change on all 25 files. 3. **Render fixes.** This commit fixes six regressions that the render diff against `/en/master` caught, even though the build was green. In `modin`, two bare-word RST link references (`Modin_`, `documentation_`) rendered as literal text. In `getting-started`, a bold URL was autolinked. In `system-metrics`, a URL in a table cell lost its link. In `dask-on-ray`, `_not_` rendered as italics. In `glossary`, the inline `.. TODO: RLlib` text, which `/en/master` shows, had become a comment. The commit also adds compat anchors to five headings with apostrophes (see below). 4. **Pseudo-lists.** This commit restores three pseudo-lists that the soft-wrap merged into one line. 5. **Review feedback.** This commit removes the glossary's placeholder TODO entries, reverts the `doc/BUILD.bazel` change so the PR stays docs-only, and fixes defects that the review flagged in the `.rst` sources: a stray definition list in `dask-on-ray`, an unconverted link in `system-metrics`, an extra parenthesis in `debug-failures`, typos in `debug-hangs` and `optimize-performance`, a grammar slip in `ray-debugging`, and em-dash pseudo-list items in `general-debugging`, which are now a bulleted list. ### Scope - `ray-air/`: `getting-started` and `deployment`, converted together. `getting-started` includes `deployment`, and the include now points at `deployment.md`. - `ray-observability/`: 14 pages, including `user-guides/debug-apps/` and `reference/system-metrics`. - `ray-more-libs/`: 9 pages. - `ray-references/`: `glossary` and `faq`. **Left as RST:** `ray-observability/reference/api.rst` (`autosummary`) and `ray-observability/reference/cli.rst` (`click`). They're API reference pages, so they stay RST along with the other `*/api/` reference trees. ### Construct notes for reviewers - **Glossary.** The glossary is a native MyST `{glossary}` directive, not RST wrapped in `{eval-rst}`. Sphinx's `glossary` directive parses each definition with the host parser, so the definitions are Markdown now. The glossary's placeholder `.. TODO:` entries are removed. Missing terms can be identified separately. - **Glossary doctest.** Nothing ran the glossary's `.. doctest::` block as `.rst`: `pytest-sphinx` doesn't execute `doctest` sections, and `--doctest-glob='*.md'` doesn't match `.rst`. As `.md`, the stock doctest parser would start running its five `>>>` prompts, and the `[[0],[1],...,[3],[4]]` output can't pass without `ELLIPSIS`. Each prompt now carries `# doctest: +SKIP`, which keeps coverage the same as master without a `doc/BUILD.bazel` change. Sphinx's default `trim_doctest_flags` strips the flag from the rendered page, as in `data/working-with-tensors.md`. If you'd rather fix the expected output and start testing it, I can do that in a follow-up. - **FAQ.** `faq.md` includes `_includes/_help-links.md`, the Markdown copy of `_help.rst` that ray-project#66417 added. `_help.rst` stays, because `cluster/vms/user-guides/community/yarn.rst` and `tune/key-concepts.rst` still include it. - **Comparison table.** The grid table in `ray-collective-custom-backend` is now a native `{list-table}`. - **Line blocks.** The line blocks in `dask-on-ray`'s version table are now Markdown hard line breaks. This is an expected render difference: `<p>` with `<br>` instead of `div.line-block`. ### Dead links fixed on the way These links were broken on `/en/master` and fail `fail_on_warning` when they're transcribed into MyST: - `joblib` and `multiprocessing` linked to relative `actors.html` and `installation.html`, which resolve under `ray-more-libs/` and return 404. They now link to `{doc}` `/ray-core/actors` and `/ray-overview/installation`. - `ray-collective` linked to `#api-reference`, but the heading's anchor is `#api-references`. ### Open PRs that edit these pages Each of these PRs needs to move its change onto the `.md` file: ray-project#66363 (`ray-event-export`), ray-project#65693 and ray-project#65583 (`system-metrics`), and ray-project#64957 (`joblib`, `multiprocessing`). ray-project#65321 edits `reference/cli.rst`, which this PR doesn't convert. ## Related issue number None. ## Checks - [x] I've signed off every commit (`git commit -s`). - [x] Duplicate check: no open PR converts these pages. I searched open PRs for MyST, observability, glossary, and more-libs, and for open PRs that edit these files. - **Doctest parity:** `doctest_parity.py` (the `pytest-sphinx` parser, run against `upstream/master`) reports the same sections and examples on all 25 pages, before and after the soft-wrap: 12 examples before, 12 after. - **Local doctest:** `pytest --doctest-modules --doctest-glob='*.md' -c NO_PYTEST_CONFIG -p doctest_pytest_plugin` on the 24 converted pages in the main target, with Ray nightly `bc900c2` on Python 3.10: 5 passed. Those are the 5 files with examples. The glossary, now in the target too, reports 1 skipped: the stock parser finds 5 examples and all 5 carry `+SKIP`. - **Static checks:** frontmatter parses, fences balance, every label is preserved, and there's no leftover RST outside fences or directives. - **RtD preview:** green under `fail_on_warning` on all three commits. - **Render diff** (`render_diff.py`, preview against `/en/master`, filtering the two class-only differences every MyST page shows): 11 of 25 pages are identical. Every difference on the other 14 is one of these: - RST comments now emit `<!-- ... -->` HTML comments, which readers don't see. Pages: `ray-air/*`, `ray-more-libs/index`, `ray-collective`, `getting-started`, `general-debugging`, `glossary`. - The `dask-on-ray` version table: Markdown hard line breaks (`<p>` with `<br>`) replace RST line blocks (`div.line-block`). - The `dask-on-ray` "Why use Dask on Ray?" item keeps its definition-list structure. MyST adds a `myst` class to the `<dl>`, and the class has no styling. - Same-page fragment and `{doc}` links render as `reference internal` instead of `reference external`. Pages: `ray-collective`, `joblib`, `multiprocessing`. This list also includes the dead links fixed above. - Headings with an apostrophe get a new anchor, because MyST drops the apostrophe where docutils turned it into a hyphen. For example, `#what-s-the-out-of-memory-error` becomes `#whats-the-out-of-memory-error`. Five of these headings had no label, so each gets a compat target with the old slug, which keeps existing links working. The sixth, in `optimize-performance`, already carries the `dashboard-cprofile` label. This PR was written with AI assistance (Claude Code). I reviewed the changes and ran the checks above. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: Douglas Strodtman <douglas@anyscale.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Why are these changes needed?
This PR converts the remaining prose pages under
ray-observability/,ray-more-libs/,ray-references/, andray-air/from reStructuredText to MyST Markdown. It continues the RST-to-MyST conversion that already landed forray-core/(#66430),data/(#66375), and the doctest-wired pages (#66461). The conversion is format only: the goal is for each page's rendered HTML to match/en/master.There are five commits:
git rms the.rstsources, and adds onedoc/BUILD.bazelexclude, which commit 5 reverts. Prose keeps its source line wrapping, so the diff lines up with the.rstline by line.verify.pyfromray-soft-wrapconfirms that the non-whitespace bytes and the rendered HTML don't change on all 25 files./en/mastercaught, even though the build was green. Inmodin, two bare-word RST link references (Modin_,documentation_) rendered as literal text. Ingetting-started, a bold URL was autolinked. Insystem-metrics, a URL in a table cell lost its link. Indask-on-ray,_not_rendered as italics. Inglossary, the inline.. TODO: RLlibtext, which/en/mastershows, had become a comment. The commit also adds compat anchors to five headings with apostrophes (see below).doc/BUILD.bazelchange so the PR stays docs-only, and fixes defects that the review flagged in the.rstsources: a stray definition list indask-on-ray, an unconverted link insystem-metrics, an extra parenthesis indebug-failures, typos indebug-hangsandoptimize-performance, a grammar slip inray-debugging, and em-dash pseudo-list items ingeneral-debugging, which are now a bulleted list.Scope
ray-air/:getting-startedanddeployment, converted together.getting-startedincludesdeployment, and the include now points atdeployment.md.ray-observability/: 14 pages, includinguser-guides/debug-apps/andreference/system-metrics.ray-more-libs/: 9 pages.ray-references/:glossaryandfaq.Left as RST:
ray-observability/reference/api.rst(autosummary) andray-observability/reference/cli.rst(click). They're API reference pages, so they stay RST along with the other*/api/reference trees.Construct notes for reviewers
{glossary}directive, not RST wrapped in{eval-rst}. Sphinx'sglossarydirective parses each definition with the host parser, so the definitions are Markdown now. The glossary's placeholder.. TODO:entries are removed. Missing terms can be identified separately... doctest::block as.rst:pytest-sphinxdoesn't executedoctestsections, and--doctest-glob='*.md'doesn't match.rst. As.md, the stock doctest parser would start running its five>>>prompts, and the[[0],[1],...,[3],[4]]output can't pass withoutELLIPSIS. Each prompt now carries# doctest: +SKIP, which keeps coverage the same as master without adoc/BUILD.bazelchange. Sphinx's defaulttrim_doctest_flagsstrips the flag from the rendered page, as indata/working-with-tensors.md. If you'd rather fix the expected output and start testing it, I can do that in a follow-up.faq.mdincludes_includes/_help-links.md, the Markdown copy of_help.rstthat [docs] Convert ray-core scheduling pages to MyST #66417 added._help.rststays, becausecluster/vms/user-guides/community/yarn.rstandtune/key-concepts.rststill include it.ray-collective-custom-backendis now a native{list-table}.dask-on-ray's version table are now Markdown hard line breaks. This is an expected render difference:<p>with<br>instead ofdiv.line-block.Dead links fixed on the way
These links were broken on
/en/masterand failfail_on_warningwhen they're transcribed into MyST:joblibandmultiprocessinglinked to relativeactors.htmlandinstallation.html, which resolve underray-more-libs/and return 404. They now link to{doc}/ray-core/actorsand/ray-overview/installation.ray-collectivelinked to#api-reference, but the heading's anchor is#api-references.Open PRs that edit these pages
Each of these PRs needs to move its change onto the
.mdfile: #66363 (ray-event-export), #65693 and #65583 (system-metrics), and #64957 (joblib,multiprocessing). #65321 editsreference/cli.rst, which this PR doesn't convert.Related issue number
None.
Checks
git commit -s).doctest_parity.py(thepytest-sphinxparser, run againstupstream/master) reports the same sections and examples on all 25 pages, before and after the soft-wrap: 12 examples before, 12 after.pytest --doctest-modules --doctest-glob='*.md' -c NO_PYTEST_CONFIG -p doctest_pytest_pluginon the 24 converted pages in the main target, with Ray nightlybc900c2on Python 3.10: 5 passed. Those are the 5 files with examples. The glossary, now in the target too, reports 1 skipped: the stock parser finds 5 examples and all 5 carry+SKIP.fail_on_warningon all three commits.render_diff.py, preview against/en/master, filtering the two class-only differences every MyST page shows): 11 of 25 pages are identical. Every difference on the other 14 is one of these:<!-- ... -->HTML comments, which readers don't see. Pages:ray-air/*,ray-more-libs/index,ray-collective,getting-started,general-debugging,glossary.dask-on-rayversion table: Markdown hard line breaks (<p>with<br>) replace RST line blocks (div.line-block).dask-on-ray"Why use Dask on Ray?" item keeps its definition-list structure. MyST adds amystclass to the<dl>, and the class has no styling.{doc}links render asreference internalinstead ofreference external. Pages:ray-collective,joblib,multiprocessing. This list also includes the dead links fixed above.#what-s-the-out-of-memory-errorbecomes#whats-the-out-of-memory-error. Five of these headings had no label, so each gets a compat target with the old slug, which keeps existing links working. The sixth, inoptimize-performance, already carries thedashboard-cprofilelabel.This PR was written with AI assistance (Claude Code). I reviewed the changes and ran the checks above.
🤖 Generated with Claude Code