cp: Refactor video frame extraction to improve PyNvCodec availability check (1511) into r1.1.0 - #1513
Conversation
…ck (#1511) * Refactor video frame extraction to improve PyNvCodec availability check - Removed the try-except block for importing PyNvcFrameExtractor, simplifying the import logic. - Updated the condition for initializing the PyNvcFrameExtractor in the VideoFrameExtractionStage to rely solely on the _PYNVC_AVAILABLE flag. - Adjusted the handling of pixel format conversion in NvVideoDecoder to prepare for future updates to cvcuda. Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> * Refactor NvVideoDecoder to replace deprecated nvcv_image with cvcuda tensor - Updated NvVideoDecoder to remove the use of nvcv_image, which is deprecated, and replaced it with cvcuda tensor. - Adjusted related tensor operations and tests to ensure compatibility with the new cvcuda implementation. Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> * Update import statements in test_nvcodec_utils.py to include ruff linting rule - Modified import statements in the test file to include the RUF100 linting rule, ensuring better adherence to coding standards. - This change enhances the clarity of the import handling tests. Signed-off-by: [Your Name] <your.email@example.com> Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> * Update tests/utils/test_nvcodec_utils.py Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> * Update tests/utils/test_nvcodec_utils.py Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> --------- Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> Signed-off-by: [Your Name] <your.email@example.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com>
|
/ok to test 12456a7 |
Greptile SummaryThis cherry-pick refactors how PyNvCodec availability is detected and surfaced across the video frame extraction pipeline. The Key changes:
Confidence Score: 4/5
Important Files Changed
Flowchartflowchart TD
A[Module Import] --> B{nvcodec_utils try/except}
B -->|Success: cvcuda + pycuda + PyNvVideoCodec| C[_PYNVC_AVAILABLE = True]
B -->|ImportError / RuntimeError| D[_PYNVC_AVAILABLE = False\nAll GPU vars = None]
C --> E[video_frame_extraction.py\nimports _PYNVC_AVAILABLE & PyNvcFrameExtractor]
D --> E
E --> F[VideoFrameExtractionStage.setup]
F --> G{decoder_mode == pynvc?}
G -->|No| H[No extractor created\nFFmpeg used directly]
G -->|Yes| I{_PYNVC_AVAILABLE?}
I -->|True| J[Create PyNvcFrameExtractor\nGPU-accelerated decoding]
I -->|False| K[pynvc_frame_extractor = None\nFallback to FFmpeg]
J --> L[VideoFrameExtractionStage.process]
K --> L
L --> M{pynvc_frame_extractor is not None?}
M -->|True| N[PyNvcFrameExtractor call\nNvVideoDecoder via PyNvVideoCodec]
M -->|False| O[get_frames_from_ffmpeg CPU]
N --> P{Exception?}
P -->|Yes| O
P -->|No| Q[Return GPU tensor]
N --> R[NvVideoDecoder.generate_decoded_frames]
R --> S[decoded_frame.nvcv_image - deprecated\ncvcuda.as_image + cvcuda.as_tensor]
S --> T[cvcuda.reformat_into NCHW→NHWC]
T --> U[Queue frame tensor]
Last reviewed commit: 12456a7 |
| # TODO: Remove the use of nvcv_image. It's deprecated | ||
| cvcuda_tensor = cvcuda.as_tensor(cvcuda.as_image(decoded_frame.nvcv_image(), cvcuda.Format.U8)) |
There was a problem hiding this comment.
Deprecated nvcv_image() API still in use
The TODO comment correctly flags that decoded_frame.nvcv_image() is deprecated, but the call remains in production code. This PR migrates nvcv.as_tensor/nvcv.as_image to their cvcuda equivalents, yet the upstream call into PyNvVideoCodec still uses the old nvcv_image() surface. Consider checking the PyNvVideoCodec changelog for the replacement API (e.g. a direct tensor accessor) to complete the migration and avoid relying on a deprecated interface that may be removed in a future SDK release.
| from nemo_curator.stages.base import ProcessingStage | ||
| from nemo_curator.stages.resources import Resources | ||
| from nemo_curator.tasks.video import VideoTask | ||
| from nemo_curator.utils.nvcodec_utils import _PYNVC_AVAILABLE, PyNvcFrameExtractor |
There was a problem hiding this comment.
Hard import may fail loudly when GPU deps are absent
The old code used a try/except guard so that video_frame_extraction.py could be imported safely on CPU-only hosts. The new unconditional import from nemo_curator.utils.nvcodec_utils import _PYNVC_AVAILABLE, PyNvcFrameExtractor relies on nvcodec_utils itself catching ImportError/RuntimeError internally and always exporting both names, which it does. This is correct, but it represents a tighter coupling: if nvcodec_utils ever raises during module-level initialization for any reason other than those two exceptions (e.g. an OSError or AttributeError from a partial GPU driver install), the import of this file will now propagate the exception rather than gracefully degrading. The previous isolation made that failure mode impossible. Consider whether this tighter coupling is acceptable for all deployment environments.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
…ck (NVIDIA-NeMo#1511) (NVIDIA-NeMo#1513) * Refactor video frame extraction to improve PyNvCodec availability check - Removed the try-except block for importing PyNvcFrameExtractor, simplifying the import logic. - Updated the condition for initializing the PyNvcFrameExtractor in the VideoFrameExtractionStage to rely solely on the _PYNVC_AVAILABLE flag. - Adjusted the handling of pixel format conversion in NvVideoDecoder to prepare for future updates to cvcuda. * Refactor NvVideoDecoder to replace deprecated nvcv_image with cvcuda tensor - Updated NvVideoDecoder to remove the use of nvcv_image, which is deprecated, and replaced it with cvcuda tensor. - Adjusted related tensor operations and tests to ensure compatibility with the new cvcuda implementation. * Update import statements in test_nvcodec_utils.py to include ruff linting rule - Modified import statements in the test file to include the RUF100 linting rule, ensuring better adherence to coding standards. - This change enhances the clarity of the import handling tests. * Update tests/utils/test_nvcodec_utils.py * Update tests/utils/test_nvcodec_utils.py --------- Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> Signed-off-by: [Your Name] <your.email@example.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Abhinav Garg <abhinavg@stanford.edu> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com>
* ci: Bump version to 1.1.0 (#1364) (#1365) Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Dong Hyuk Chang <thomaschang26@tutanota.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * feat: FFmpeg to 8.0.1 (#1362) (#1363) Signed-off-by: Ao Tang <aot@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Ao Tang <aot@nvidia.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Fix bug in SDG example (#1370) (#1371) Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Fix bug in Gliner tutorial (#1372) (#1378) * Fix bug in Gliner tutorial * update readmes --------- Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Address aiohttp and urllib3 cve (#1379) (#1383) Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Dong Hyuk Chang <thomaschang26@tutanota.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Adding one worker per partition to FilePartioningStage and URLGeneratorStage (#1350) (#1366) Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Abhinav Garg <abhinavg@stanford.edu> Co-authored-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Update instructions for AWS credentials in ArXiv download and extract tutorial (#1380) (#1402) * Update instructions for AWS credentials in ArXiv download and extract tutorial * ruff --------- Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * cp: Revert "Remove nvenc/dec for xenna 0.1.6 (#1202)" (#1374) (#1403) This reverts commit c4805ae. Signed-off-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Pin sklearn to < 1.8.0 for cuml 25.10 for r.1.1.0 #1405 Signed-off-by: Lawrence Lane <llane@nvidia.com> * Clarify instructions for downloading the Llama Nemotron Post-Training Dataset (#1416) (#1423) Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * CP: Fix vllm API compatibility with Video Pipeline + Upgrade vLLM to 0.14 (#1429) * vllm API compatibility fixed Signed-off-by: Ao Tang <aot@nvidia.com> * upgrade vllm to 0.14.0 Signed-off-by: Ao Tang <aot@nvidia.com> * refactor Signed-off-by: Ao Tang <aot@nvidia.com> * pyproject update Signed-off-by: Ao Tang <aot@nvidia.com> * add protobuf in constraint-dependencies Signed-off-by: Ao Tang <aot@nvidia.com> * comment improve Signed-off-by: Ao Tang <aot@nvidia.com> * resolve pyproject Signed-off-by: Ao Tang <aot@nvidia.com> --------- Signed-off-by: Ao Tang <aot@nvidia.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * ci: Address setuptools CVE (#1438) (#1439) * Address CVE fixes * Remove cache of aiohttp from ray * Update uv lock * Update cache path --------- Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * ci: Optimize docker layer and uv with no cache (#1444) (#1446) * Optimize docker layer and uv with no cache * Add missing slash * Add comments to dockerfile --------- Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Purge InternVideo2 (#1451) (#1462) * Remove Internvideo2 * more to remove * fix writer * Enhance Clip class to include cosmos_embed1_frames and cosmos_embed1_embedding in total size calculation * remove iv2 --------- Signed-off-by: Ao Tang <aot@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Ao Tang <aot@nvidia.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * ci: Update cve for python-multipart (#1450) (#1455) * Update cve for python-multipart * Update uv lock --------- Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Co-authored-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * cherry pick commit, no benchmarking needed (#1461) Co-authored-by: Huy Vu2 <huvu@login-eos02.eos.clusters.nvidia.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * ci: Update vllm to 0.14.1 and override conflict (#1467) (#1468) * Update vllm to 0.14.1 and override conflict * Upperbound numpy for Numba compatibility * Update vllm to 0.15.1 --------- Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * ci: Remove thirdparty aiohttp file from ray (#1469) (#1475) Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Fix: fasttext predict call for numpy>2 (#1482) (#1486) Signed-off-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Update transformers dependency to exact version 4.55.2 in pyproject.t… (#1471) (#1488) * Update transformers dependency to exact version 4.55.2 in pyproject.toml and uv.lock to prevent import failures in Cosmos Embed. Downgrade tokenizers version to 0.21.4 for compatibility. * Update transformers dependency in pyproject.toml and uv.lock to allow versions up to 4.55.2, ensuring compatibility with Cosmos Embed imports. --------- Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Abhinav Garg <abhinavg@stanford.edu> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Cherry pick `tutorials` changes from #1477 (#1491) * Update tutorial README Signed-off-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> * Update quickstart Updated sample sentences to provide more detailed feedback. Signed-off-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> --------- Signed-off-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Update tutorial to be more explicit about num_gpus (#1492) (#1499) * Update tutorial to be more explicit about num_gpus * fix false positive secret scan * Hopefully fix the secrets --------- Signed-off-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Co-authored-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Add relevant 26.02 docs to r1.1.0 (#1493) * add release notes Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> * add more pages Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> * add more pages Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> * add new sdg docs Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> * update remaining files from sdg docs Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> * continue adding more changes Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> * more video docs Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> * add remaining updates Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> --------- Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * ci: Address new CVEs from rc4 (#1497) (#1500) * Scrub thirdparty aiohttp file from ray * Address new rc4 CVE * Apt get for consistency --------- Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Add feedback to tutorials (#1476) (#1501) * Add feedback to tutorials * clarify install instructions for classifier tutorials * byo classifiers * add descriptions --------- Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> Signed-off-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * ci: Update pyasn1 in uv lock (#1505) Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * Refactor video frame extraction to improve PyNvCodec availability check (#1511) (#1513) * Refactor video frame extraction to improve PyNvCodec availability check - Removed the try-except block for importing PyNvcFrameExtractor, simplifying the import logic. - Updated the condition for initializing the PyNvcFrameExtractor in the VideoFrameExtractionStage to rely solely on the _PYNVC_AVAILABLE flag. - Adjusted the handling of pixel format conversion in NvVideoDecoder to prepare for future updates to cvcuda. * Refactor NvVideoDecoder to replace deprecated nvcv_image with cvcuda tensor - Updated NvVideoDecoder to remove the use of nvcv_image, which is deprecated, and replaced it with cvcuda tensor. - Adjusted related tensor operations and tests to ensure compatibility with the new cvcuda implementation. * Update import statements in test_nvcodec_utils.py to include ruff linting rule - Modified import statements in the test file to include the RUF100 linting rule, ensuring better adherence to coding standards. - This change enhances the clarity of the import handling tests. * Update tests/utils/test_nvcodec_utils.py * Update tests/utils/test_nvcodec_utils.py --------- Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> Signed-off-by: [Your Name] <your.email@example.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Abhinav Garg <abhinavg@stanford.edu> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * docs: isolate release notes and changelog (#1529) * docs: isolate release notes and changelog Signed-off-by: Lawrence Lane <llane@nvidia.com> * abhinav's feedback Signed-off-by: Lawrence Lane <llane@nvidia.com> * feedback Signed-off-by: Lawrence Lane <llane@nvidia.com> --------- Signed-off-by: Lawrence Lane <llane@nvidia.com> * ci: Update final release version (#1540) Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> * docs: release note updates Signed-off-by: Lawrence Lane <llane@nvidia.com> --------- Signed-off-by: Dong Hyuk Chang <donghyukc@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Signed-off-by: Lawrence Lane <llane@nvidia.com> Signed-off-by: Ao Tang <aot@nvidia.com> Signed-off-by: Sarah Yurick <sarahyurick@gmail.com> Signed-off-by: Abhinav Garg <abhinavg@stanford.edu> Signed-off-by: Ayush Dattagupta <ayushdg95@gmail.com> Signed-off-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Signed-off-by: [Your Name] <your.email@example.com> Co-authored-by: Pablo Garay <palenq@gmail.com> Co-authored-by: Dong Hyuk Chang <thomaschang26@tutanota.com> Co-authored-by: Ao Tang <aot@nvidia.com> Co-authored-by: Ayush Dattagupta <ayushdg95@gmail.com> Co-authored-by: Sarah Yurick <53962159+sarahyurick@users.noreply.github.com> Co-authored-by: Abhinav Garg <abhinavg@stanford.edu> Co-authored-by: Praateek Mahajan <praateekmahajan@users.noreply.github.com> Co-authored-by: Huy Vu <86480512+huvunvidia@users.noreply.github.com> Co-authored-by: Huy Vu2 <huvu@login-eos02.eos.clusters.nvidia.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
beep boop [🤖]: Hi @abhinavg4 👋,