> This page is for version Latest · v1.4.0 (26.09) (default).
> For other versions, use one of these documentation indexes:
> - Latest · v1.4.0 (26.09) (default): https://docs.nvidia.com/nemo/curator/latest/llms.txt
> - Main · preview: https://docs.nvidia.com/nemo/curator/main/llms.txt
> - 26.09 · v1.4.0: https://docs.nvidia.com/nemo/curator/v26.09/llms.txt
> - 26.07 · v1.3.0: https://docs.nvidia.com/nemo/curator/v26.07/llms.txt
> - 26.04 · v1.2.0: https://docs.nvidia.com/nemo/curator/v26.04/llms.txt
> - 26.02 · v1.1.0: https://docs.nvidia.com/nemo/curator/v26.02/llms.txt
> - 25.09 · v1.0.0: https://docs.nvidia.com/nemo/curator/v25.09/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/curator/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/curator/_mcp/server.

> Draft migration checklist for upgrading NeMo Curator workflows to 26.09

# Migrate to NeMo Curator 26.09

Use this draft checklist to review applications and environments for the planned 26.09 release. The package version and publication status are not confirmed. For the feature summary, refer to the [26.09 release notes](/about/release-notes).

## Migration at a Glance

Review the changes that affect your workflows:

| Area                          | Action                                                                                                                    | Affected Users                         |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
| Release status                | Confirm the published package version and release tag before upgrading                                                    | Everyone                               |
| Installation and distribution | Use the Python package for general workflows; build a maintained local image for audio/video or when you need a container | All users                              |
| Semantic deduplication        | Review the new `float16` Pairwise default, `pairwise_batch_size=1024`, and precision requirements                         | Semantic deduplication workflows       |
| KMeans memory                 | Review `fit_data_fraction` and second-pass Parquet assignment behavior                                                    | Large semantic deduplication workflows |
| Worker sizing                 | Consider `with_(num_workers_per_node=...)` for node-relative sizing                                                       | Multi-node pipelines                   |
| Tooling                       | Use `uv` 0.12 or later                                                                                                    | All source and container installations |
| vLLM on GB200                 | Install `quack-kernels>=0.4.1` through the vLLM extra                                                                     | GB200 inference-server deployments     |
| Nemotron-Parse examples       | Use `InterleavedParquetWriterStage(path=...)`                                                                             | Nemotron-Parse users                   |
| Media dependencies            | Include the `cv2` extra and install FFmpeg only for workflows that use them                                               | Image, audio, and video workflows      |

## Review Semantic Deduplication Precision

Pairwise compute defaults to `float16` and processes ranked neighbors in batches of 1,024. Keep the default after validating duplicate outputs for your data. When your workflow requires float32 precision, set both `kmeans_embedding_output_dtype="float32"` and `pairwise_compute_dtype="float32"`. Combining the default float16 KMeans output with float32 pairwise compute raises a `ValueError` at construction time. Validate results when changing precision.

KMeans can fit centroids from a sample of complete Parquet files and then reread all input for assignment. Review `fit_data_fraction` and leave GPU memory for reading, prediction, and writing. Refer to [Semantic Deduplication](/curate-text/process-data/deduplication/semdedup) for the current configuration.

## Update Worker Configuration

Consider `stage.with_(num_workers_per_node=...)` when worker capacity should follow the number of live nodes. Do not combine it with `num_workers` or Ray Data actor-pool min/max/initial settings. Existing Xenna stage-spec values remain compatible when the common hook is unset. Refer to [Stage Worker Sizing](/reference/infra/stage-worker-sizing).

## Check Tooling and Inference Dependencies

Use `uv` 0.12 or later to satisfy the project requirement. For GB200 vLLM startup, use `quack-kernels>=0.4.1`.

Use the installation command shown on the current [installation page](/get-started/installation).

For container deployments, [build a container image](/reference/infra/container-environments#build-an-image) from the source release you adopt. The repository Dockerfile remains maintained. Audio and video workflows should use a derived image with the appropriate FFmpeg package or build; see [Add FFmpeg for Audio or Video](/reference/infra/container-environments#add-ffmpeg-for-audio-or-video). NVIDIA no longer publishes new NGC images starting with 26.09, though previously published images remain downloadable. Refer to the [Distribution Change](/about/release-notes#distribution-change).

The `all` extra no longer includes `cv2` directly, though OpenCV may be installed transitively through vLLM. Include the `cv2` extra for workflows that require it explicitly. Audio and video workflows should use a container image that includes the required FFmpeg system packages; Python package users can install FFmpeg on each executor as described in the [Installation Guide](/get-started/installation#install-ffmpeg-for-audio-and-video-source-installs).

## Update Nemotron-Parse Examples

Replace unsupported writer imports or constructor arguments with `InterleavedParquetWriterStage(path=...)`. In-process and Ray Serve inference select architecture-aware attention defaults. Preserve an explicit `attention_backend` only when your deployment requires it. Refer to [Nemotron-Parse PDF processing](/curate-text/load-data/nemotron-parse-pdf).

## Validate Before Adoption

Validate the updated environment and pipeline outputs before deployment:

1. Confirm the final release tag, package version, and lockfile before upgrading.
2. Reinstall the extras used by your pipeline with the release lockfile, or build an image from that release's source.
3. Run semantic deduplication on a representative sample and compare duplicate IDs at the selected precision.
4. Run a representative multi-node pipeline and verify worker placement and output manifests.
5. Validate Nemotron-Parse output on each GPU architecture used in production.