Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -361,8 +361,6 @@ class Resources:
cpus: float = 1.0 # Number of CPU cores
gpu_memory_gb: float = 0.0 # Number of GPU memory in GB (Only for single GPU)
gpus: float = 0.0 # Number of GPUs (Only for multi-GPU)
nvdecs: int = 0 # Number of NVDEC decoders
nvencs: int = 0 # Number of NVENC encoders
entire_gpu: bool = False # Whether to use the entire GPU
```

Expand Down
2 changes: 0 additions & 2 deletions api-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,6 @@ class Resources:
cpus: float = 1.0 # Number of CPU cores
gpu_memory_gb: float = 0.0 # Number of GPU memory in GB (Only for single GPU)
gpus: float = 0.0 # Number of GPUs (Only for multi-GPU)
nvdecs: int = 0 # Number of NVDEC decoders
nvencs: int = 0 # Number of NVENC encoders
entire_gpu: bool = False # Whether to use the entire GPU
```

Expand Down
5 changes: 2 additions & 3 deletions docs/about/concepts/video/abstractions.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ A stage represents a single step in your data curation workflow. Video stages ar
Each processing stage:

1. Inherits from `ProcessingStage`
2. Declares a stable `name` and `resources: Resources` (CPU cores, GPU memory, optional NVDEC/NVENC, or more than one GPU)
2. Declares a stable `name` and `resources: Resources` (CPU cores, GPU memory, entire GPU flag, or multiple GPUs)
3. Defines `inputs()`/`outputs()` to document required attributes and produced attributes on tasks
4. Implements `setup(worker_metadata)` for model initialization and `process(task)` to transform tasks

Expand All @@ -75,9 +75,8 @@ Refer to the stage base and resources definitions in Curator for full details.
`Resources` support both fractional and whole‑GPU semantics:

- `gpu_memory_gb`: Request a fraction of a single GPU by memory; Curator rounds to a fractional GPU share and enforces that `gpu_memory_gb` stays within one device.
- `entire_gpu`: Request an entire GPU regardless of memory (also implies access to NVDEC/NVENC on that device).
- `entire_gpu`: Request an entire GPU regardless of memory (also implies access to hardware decoders and encoders on that device).
- `gpus`: Request more than one GPU for a stage that is multi‑GPU aware.
- `nvdecs` / `nvencs`: Request hardware decode/encode units when needed.

Choose one of `gpu_memory_gb` (single‑GPU fractional) or `gpus` (multi‑GPU). Combining both is not allowed.

Expand Down
4 changes: 2 additions & 2 deletions docs/curate-audio/tutorials/beginner.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ cd NeMo-Curator/tutorials/audio/fleurs/

## Prerequisites

* NeMo Curator installed (see [Installation Guide](docs/admin/installation.md))
* NeMo Curator installed (see [Installation Guide](admin-installation))
* NVIDIA GPU (required for ASR inference, minimum 16GB VRAM recommended)
* Internet connection for dataset download
* Basic Python knowledge
Expand Down Expand Up @@ -373,7 +373,7 @@ After completing this tutorial, explore:

## Related Topics

- **[Audio Curation Quickstart](docs/get-started/audio.md)**: Quick introduction to audio curation
- **[Audio Curation Quickstart](gs-audio)**: Quick introduction to audio curation
- **[FLEURS Dataset](../load-data/fleurs-dataset.md)**: Detailed FLEURS dataset documentation
- **[Quality Assessment](../process-data/quality-assessment/index.md)**: Comprehensive quality metrics guide
- **[Save & Export](../save-export.md)**: Advanced export options and formats
6 changes: 3 additions & 3 deletions docs/curate-text/process-data/deduplication/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ text_workflow.run()
- `TextSemanticDeduplicationWorkflow`: For raw text with automatic embedding generation
- `SemanticDeduplicationWorkflow`: For pre-computed embeddings

See {ref}`Semantic Deduplication <text-process-data-dedup-semdedup>` for details.
See {ref}`Semantic Deduplication <text-process-data-format-sem-dedup>` for details.
:::

:::{dropdown} Advanced: Step-by-Step Semantic Deduplication
Expand Down Expand Up @@ -378,7 +378,7 @@ For detailed implementation guides, see:

- {ref}`Exact Duplicate Removal <text-process-data-dedup-exact>`
- {ref}`Fuzzy Duplicate Removal <text-process-data-dedup-fuzzy>`
- {ref}`Semantic Deduplication <text-process-data-dedup-semdedup>`
- {ref}`Semantic Deduplication <text-process-data-format-sem-dedup>`

:::{dropdown} Performance Considerations
:icon: zap
Expand Down Expand Up @@ -455,7 +455,7 @@ The ID Generator ensures consistent IDs across workflow stages.

- **New to deduplication**: Start with {ref}`Exact Duplicate Removal <text-process-data-dedup-exact>` for the fastest approach
- **Need near-duplicate detection**: See {ref}`Fuzzy Duplicate Removal <text-process-data-dedup-fuzzy>` for MinHash-based matching
- **Require semantic matching**: Explore {ref}`Semantic Deduplication <text-process-data-dedup-semdedup>` for meaning-based deduplication
- **Require semantic matching**: Explore {ref}`Semantic Deduplication <text-process-data-format-sem-dedup>` for meaning-based deduplication

**For hands-on guidance**: See {ref}`Text Curation Tutorials <text-tutorials>` for step-by-step examples.

Expand Down
2 changes: 1 addition & 1 deletion docs/curate-video/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Understand how components work together so you can plan, scale, and troubleshoot
```

```{note}
Video pipelines use the `XennaExecutor` backend by default, which provides optimized support for GPU-accelerated video processing including hardware decoders (`nvdecs`) and encoders (`nvencs`). You do not need to import or configure the executor unless you want to use an alternative backend. For more information about customizing backends, refer to [Add a Custom Stage](video-tutorials-pipeline-cust-add-stage).
Video pipelines use the `XennaExecutor` backend by default, which provides optimized support for GPU-accelerated video processing including hardware decoders and encoders. You do not need to import or configure the executor unless you want to use an alternative backend. For more information about customizing backends, refer to [Pipeline Execution Backends](reference-execution-backends).
```

---
Expand Down
37 changes: 14 additions & 23 deletions docs/curate-video/load-data/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,20 @@ Load video data for curation using NeMo Curator.

NeMo Curator loads videos with a composite stage that discovers files and extracts metadata:

1. `VideoReader` decomposes into a partitioning stage plus a reader stage.
2. Local paths use `FilePartitioningStage` to list files; remote URLs (for example, `s3://`, `gcs://`, `http(s)://`) use `ClientPartitioningStage` backed by `fsspec`.
3. For remote datasets, you can optionally supply an explicit file list using `ClientPartitioningStage.input_list_json_path`.
4. `VideoReaderStage` downloads bytes (local or via `FSPath`) and calls `video.populate_metadata()` to extract resolution, fps, duration, encoding format, and other fields.
5. Set `video_limit` to cap discovery; use `None` for unlimited. Set `verbose=True` to log detailed per-video information.
`VideoReader` is a composite stage that is broken down into a
1. Partitioning (list files) stage
- Local paths use `FilePartitioningStage` to list files
- Remote URLs (for example, `s3://`, `gcs://`)
- use `ClientPartitioningStage` backed by `fsspec`.
- Optional `input_list_json_path` allows explicit file lists under a root prefix.

2. Reader stage (`VideoReaderStage`)
- This stage downloads the bytes (local or via `FSPath`) for each listed file
- Calls `video.populate_metadata()` to extract resolution, fps, duration, encoding format, and other fields.

You can set
- `video_limit` to limit the number of files to be processed; use `None` for unlimited.
- `verbose=True` to log detailed per-video information.

---

Expand All @@ -32,24 +41,6 @@ NeMo Curator loads videos with a composite stage that discovers files and extrac

Use `VideoReader` to load videos from local paths or remote URLs.

### Local Paths

- Examples: `/data/videos/`, `/mnt/datasets/av/`
- Uses `FilePartitioningStage` to recursively discover files.
- Filters by extensions: `.mp4`, `.mov`, `.avi`, `.mkv`, `.webm`.
- Set `video_limit` to cap discovery during testing (`None` means unlimited).

### Remote Paths

- Examples: `s3://bucket/path/`, `gcs://bucket/path/`, `https://host/path/`, and other fsspec-supported protocols such as `s3a://` and `abfs://`.
- Uses `ClientPartitioningStage` backed by `fsspec` to list files.
- Optional `input_list_json_path` allows explicit file lists under a root prefix.
- Wraps entries as `FSPath` for efficient byte access during reading.

```{tip}
Use an object storage prefix (for example, `s3://my-bucket/videos/`) to stream from cloud storage. Configure credentials in your environment or client configuration.
```

### Example

```python
Expand Down
Loading
Loading