diff --git a/docs/guides/grpo-audio-visual.md b/docs/guides/grpo-audio-visual.md index ca82637574..ce31bde9b5 100644 --- a/docs/guides/grpo-audio-visual.md +++ b/docs/guides/grpo-audio-visual.md @@ -4,6 +4,18 @@ This guide explains how to use NeMo RL to train [Qwen2.5-Omni-7B](https://huggin Each training sample feeds the Qwen2.5-Omni processor both the video stream (8 frames) and the audio track decoded from the same file at 16 kHz mono. Audio and video flow as two **independent multimodal items** per prompt: the dataset emits `{type: video}` + `{type: audio}` content items, the Qwen2.5-Omni chat template renders both `<|VIDEO|>` and `<|AUDIO|>` placeholders, and vLLM rollouts populate `multi_modal_data["video"]` and `multi_modal_data["audio"]` from the same sample. +## 0. Install Audio/Video Dependencies + +The NeMo RL container does not ship `torchaudio`, `torchcodec`, or system FFmpeg. Run the helper script once before training or evaluation: + +```bash +bash tools/install_audio_deps.sh +``` + +This installs system FFmpeg (required by `torchcodec` at runtime) and pins `torchaudio==2.11.0` + `torchcodec>=0.3.0` into the container venv. The script is idempotent — re-running it on a machine where the deps are already present exits immediately. + +> **Note:** `decord` and `av` (PyAV) are **not** used. Audio and video are decoded via `torchcodec` (backed by system FFmpeg) and `torchaudio` respectively. + ## 1. Train the Model Run GRPO training with the provided config: diff --git a/docs/guides/grpo-audio.md b/docs/guides/grpo-audio.md index 1e21c5face..e92fd36f3e 100644 --- a/docs/guides/grpo-audio.md +++ b/docs/guides/grpo-audio.md @@ -1,5 +1,14 @@ # Audio Post-training with NeMo RL +> **Audio dependencies are not pre-installed in the NeMo-RL container.** +> Run the following script once before training or evaluation: +> +> ```bash +> bash tools/install_audio_deps.sh +> ``` +> +> The script is a no-op if they are already installed. Audio tests run it automatically. + This guide explains how to use NeMo RL to train [Qwen2.5-Omni](https://huggingface.co/Qwen) (3B or 7B) and [Qwen3-Omni-30B-A3B-Instruct](https://huggingface.co/Qwen/Qwen3-Omni-30B-A3B-Instruct) with GRPO on audio question-answering data, convert the resulting Megatron checkpoint to Hugging Face format, and evaluate it on the [MMAU benchmark](https://huggingface.co/datasets/TwinkStart/MMAU). NeMo RL ships three recipes out of the box, but the pieces are independent and can be mixed: diff --git a/nemo_rl/data/datasets/utils.py b/nemo_rl/data/datasets/utils.py index d7842ab8b1..3efbb9662d 100644 --- a/nemo_rl/data/datasets/utils.py +++ b/nemo_rl/data/datasets/utils.py @@ -37,19 +37,15 @@ def load_audio_from_file(path: str, sampling_rate: int = 16000) -> np.ndarray: - """Decode an audio file (or the audio track of a video) as a 1-D float32 array. - - Uses decord's ``AudioReader`` (already a project dependency for video - decoding) to produce a mono waveform at the requested sampling rate. - """ - import decord - - reader = decord.AudioReader(path, sample_rate=sampling_rate, mono=True) - # Shape: (channels, T). With mono=True channels=1; squeeze to (T,). - audio = reader[:].asnumpy() - if audio.ndim > 1: - audio = audio[0] - return audio.astype(np.float32) + """Decode an audio file (or the audio track of a video) as a 1-D float32 array.""" + import torchaudio + + waveform, sr = torchaudio.load(path) + if sr != sampling_rate: + waveform = torchaudio.functional.resample(waveform, sr, sampling_rate) + if waveform.shape[0] > 1: + waveform = waveform.mean(0, keepdim=True) + return waveform.squeeze(0).numpy().astype(np.float32) def assert_no_double_bos(token_ids: torch.Tensor, tokenizer: TokenizerType) -> None: diff --git a/nemo_rl/data/multimodal_utils.py b/nemo_rl/data/multimodal_utils.py index 6a16e18fec..160d6a0923 100644 --- a/nemo_rl/data/multimodal_utils.py +++ b/nemo_rl/data/multimodal_utils.py @@ -20,7 +20,6 @@ from io import BytesIO from typing import Any, Optional, Union -import decord import requests import torch from PIL import Image @@ -357,17 +356,19 @@ def load_media_from_message( load_audio(aud, **multimodal_load_kwargs["audio"]) ) except (RuntimeError, FileNotFoundError, OSError) as e: - logger.warning("Audio loading failed. Fall back to decord.") - # use decord - loaded_audio = decord.AudioReader( - aud, - sample_rate=multimodal_load_kwargs["audio"]["sampling_rate"], - mono=True, - ) + logger.warning("Audio loading failed. Falling back to torchaudio.") + import torchaudio + + waveform, sr = torchaudio.load(aud) + target_sr = multimodal_load_kwargs["audio"]["sampling_rate"] + if sr != target_sr: + waveform = torchaudio.functional.resample( + waveform, sr, target_sr + ) + if waveform.shape[0] > 1: + waveform = waveform.mean(0, keepdim=True) loaded_media["audio"].append( - loaded_audio[:].asnumpy()[ - get_dim_to_pack_along(processor, "audio") - ] + waveform.numpy()[get_dim_to_pack_along(processor, "audio")] ) else: loaded_media["audio"].append(aud) @@ -379,9 +380,8 @@ def load_media_from_message( if "video" in multimodal_load_kwargs else {} ) - # seems decord backend loads video faster with multithread ffmpeg and it is easier to install loaded_media["video"].append( - load_video(vid, backend="decord", **load_video_kwargs)[0] + load_video(vid, backend="torchcodec", **load_video_kwargs)[0] ) else: loaded_media["video"].append(vid) diff --git a/nemo_rl/data/processors.py b/nemo_rl/data/processors.py index 734ab6cf0e..39aae573ae 100644 --- a/nemo_rl/data/processors.py +++ b/nemo_rl/data/processors.py @@ -538,7 +538,7 @@ def vlm_hf_data_processor( video_value = content["video"] if isinstance(video_value, str): video_value = load_video( - video_value, backend="decord", **load_video_kwargs + video_value, backend="torchcodec", **load_video_kwargs )[0] # Replace path with loaded frames so apply_chat_template can consume it user_message["content"].append({"type": "video", "video": video_value}) diff --git a/nemo_rl/data_plane/codec.py b/nemo_rl/data_plane/codec.py index 1dfa2e4d1b..919bf96a13 100644 --- a/nemo_rl/data_plane/codec.py +++ b/nemo_rl/data_plane/codec.py @@ -261,7 +261,7 @@ def materialize( The lazy ``BatchedDataDict`` import keeps ``import nemo_rl.data_plane`` cheap for unit tests that don't actually call this function (``BatchedDataDict`` transitively - pulls multimodal deps like decord / torchvision). + pulls multimodal deps like torchvision / torchaudio). Args: td: Wire TensorDict to materialize. diff --git a/pyproject.toml b/pyproject.toml index 07796fe0c4..966abd56a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,8 @@ dependencies = [ "sympy>=1.14.0", "pillow>=12.1.1", "torchvision==0.26.0", + # torchaudio and torchcodec are NOT installed in the container image. + # Run tools/install_audio_deps.sh before using audio features or audio tests. # Keep the base range broad enough while allowing backend extras to tighten as needed. # Floor raised to 5.5.0 for Gemma 4 support. "transformers>=5.5.0,<5.9.0", @@ -60,7 +62,6 @@ dependencies = [ "nvidia-nvshmem-cu13>=3.6.5; sys_platform == 'linux' and (platform_machine == 'x86_64' or platform_machine == 'aarch64')", # for deep_ep build "swanlab", "pyzmq", - "decord2", "soundfile>=0.13.1", "nccl4py; sys_platform != 'darwin'", # for non-colocated refit "cuda-bindings; sys_platform != 'darwin'", # for non-colocated refit @@ -255,7 +256,7 @@ nemo-automodel = { path = "3rdparty/Automodel-workspace/Automodel", editable = t megatron-bridge = { path = "3rdparty/Megatron-Bridge-workspace", editable = true } nemo_gym = { workspace = true } nemo_run = { git = "https://github.com/NVIDIA-NeMo/Run", rev = "414f0077c648fde2c71bb1186e97ccbf96d6844c" } -# torch/torchaudio/torchvision/triton all come from the torch index in order to pick up aarch64 wheels +# torch/torchvision/triton all come from the torch index in order to pick up aarch64 wheels torch = [ { index = "pytorch-cu130", marker = "sys_platform != 'darwin'" }, { index = "pypi", marker = "sys_platform == 'darwin'" }, @@ -264,10 +265,6 @@ torchvision = [ { index = "pytorch-cu130", marker = "sys_platform != 'darwin'" }, { index = "pypi", marker = "sys_platform == 'darwin'" }, ] -torchaudio = [ - { index = "pytorch-cu130", marker = "sys_platform != 'darwin'" }, - { index = "pypi", marker = "sys_platform == 'darwin'" }, -] triton = [ { index = "pytorch-cu130", marker = "sys_platform != 'darwin'" }, { index = "pypi", marker = "sys_platform == 'darwin'" }, @@ -349,7 +346,6 @@ override-dependencies = [ "timm<=1.0.22", "nvidia-modelopt[torch]>=0.44.0a0", "torch==2.11.0", - "torchaudio==2.11.0", # sglang has conflicting llguidance versions than vllm, so enforcing vllm's version since it's newer "llguidance>=1.3.0,<1.4.0", # Override setuptools range in other dependencies to address CVE GHSA-58pv-8j8x-9vj2 @@ -378,6 +374,13 @@ override-dependencies = [ # extra composes with mcore/automodel without version-mirroring TQ's # requirements.txt. Forward-compatible across TQ minor bumps. "numpy>=2.1.0", + # av (PyAV) carries CVE-bundled codec libs (libx264, libx265, libopenh264, libmp3lame). + # It is only needed by megatron-bridge's optional WAN diffusion path, which installs it + # at test time via scripts/install_diffusion_deps.sh. Exclude from the shipped container. + "av; sys_platform == 'never'", + # decord2 is pulled transitively by sglang → qwen-vl-utils[decord] on aarch64 Linux. + # NeMo-RL no longer calls any decord API (replaced by torchvision/torchaudio). + "decord2; sys_platform == 'never'", ] # CVE fixes diff --git a/pyrefly.toml b/pyrefly.toml index 435f12d66c..117ec1fdcd 100644 --- a/pyrefly.toml +++ b/pyrefly.toml @@ -10,6 +10,8 @@ replace-imports-with-any = [ "math_verify.*", "sympy.*", "torchdata.*", + "torchaudio.*", + "torchcodec.*", "nemo.*", "megatron.*", "ray.*", diff --git a/tests/functional/audio_grpo_megatron.sh b/tests/functional/audio_grpo_megatron.sh index 2e52a7fa29..fa2a45114b 100644 --- a/tests/functional/audio_grpo_megatron.sh +++ b/tests/functional/audio_grpo_megatron.sh @@ -7,6 +7,9 @@ git config --global --add safe.directory $PROJECT_ROOT set -eou pipefail +# Audio deps (torchaudio/torchcodec) are not in the shipped container; install at test time. +bash "$PROJECT_ROOT/tools/install_audio_deps.sh" + EXP_NAME=$(basename $0 .sh) EXP_DIR=$SCRIPT_DIR/$EXP_NAME LOG_DIR=$EXP_DIR/logs diff --git a/tests/functional/eval_audio.sh b/tests/functional/eval_audio.sh index 6bf8d2d98d..64d003aa3d 100644 --- a/tests/functional/eval_audio.sh +++ b/tests/functional/eval_audio.sh @@ -7,6 +7,9 @@ git config --global --add safe.directory $PROJECT_ROOT set -eou pipefail +# Audio deps (torchaudio/torchcodec) are not in the shipped container; install at test time. +bash "$PROJECT_ROOT/tools/install_audio_deps.sh" + EXP_NAME=$(basename $0 .sh) EXP_DIR=$SCRIPT_DIR/$EXP_NAME LOG_DIR=$EXP_DIR/logs diff --git a/tests/functional/eval_daily_omni.sh b/tests/functional/eval_daily_omni.sh index 28979f2f86..637ef93a67 100755 --- a/tests/functional/eval_daily_omni.sh +++ b/tests/functional/eval_daily_omni.sh @@ -7,6 +7,9 @@ git config --global --add safe.directory $PROJECT_ROOT set -eou pipefail +# Audio deps (torchaudio/torchcodec) are not in the shipped container; install at test time. +bash "$PROJECT_ROOT/tools/install_audio_deps.sh" + EXP_NAME=$(basename $0 .sh) EXP_DIR=$SCRIPT_DIR/$EXP_NAME LOG_DIR=$EXP_DIR/logs diff --git a/tests/functional/sft_avlm.sh b/tests/functional/sft_avlm.sh index 38e6b76e7c..e3728ff78b 100644 --- a/tests/functional/sft_avlm.sh +++ b/tests/functional/sft_avlm.sh @@ -10,6 +10,9 @@ git config --global --add safe.directory $PROJECT_ROOT set -eou pipefail +# Audio/video deps (torchaudio/torchcodec/ffmpeg) are not in the shipped container. +bash "$PROJECT_ROOT/tools/install_audio_deps.sh" + EXP_NAME=$(basename $0 .sh) EXP_DIR=$SCRIPT_DIR/$EXP_NAME LOG_DIR=$EXP_DIR/logs diff --git a/tests/test_suites/llm/common.env b/tests/test_suites/llm/common.env index eb50846027..427cd4a7de 100644 --- a/tests/test_suites/llm/common.env +++ b/tests/test_suites/llm/common.env @@ -9,6 +9,11 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) # catch-22 to get the project root and mark it safe if you don't know the project root PROJECT_ROOT=$(realpath $SCRIPT_DIR/../../..) +# Auto-install av deps for all VLM scripts and audio/omni/avqa scripts (no-op for LLM tests). +if [[ "${BASH_SOURCE[1]:-}" =~ (omni|audio|avqa|vlm) ]]; then + bash "$PROJECT_ROOT/tools/install_audio_deps.sh" +fi + exit_if_max_steps_reached() { # Early stopping to save compute if max step has been reached STEPS_SO_FAR=$(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS || echo 0) diff --git a/tests/unit/L0_Unit_Tests_Data.sh b/tests/unit/L0_Unit_Tests_Data.sh index 9ed0423c2e..02bf4e19c2 100644 --- a/tests/unit/L0_Unit_Tests_Data.sh +++ b/tests/unit/L0_Unit_Tests_Data.sh @@ -17,4 +17,8 @@ source "$(dirname "${BASH_SOURCE[0]}")/run_unit_shard_common.sh" +# Audio/video deps (torchaudio/torchcodec/ffmpeg) are not in the shipped container. +# Data unit tests (e.g. dailyomni) decode real audio/video via these deps. +bash "$PROJECT_ROOT/tools/install_audio_deps.sh" + uv run --no-sync bash -x ./tests/run_unit.sh "unit/data/" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-report=term-missing --cov-report=json --hf-gated diff --git a/tools/install_audio_deps.sh b/tools/install_audio_deps.sh new file mode 100755 index 0000000000..9da6eb04b4 --- /dev/null +++ b/tools/install_audio_deps.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Install audio dependencies that are NOT shipped in the NeMo-RL container. +# +# Run this script before using audio features or running audio tests: +# +# bash tools/install_audio_deps.sh +# +# Safe to call multiple times — exits immediately if already installed. +set -euo pipefail + +# Fast exit: if torchcodec imports cleanly it already has FFmpeg available. +if python -c "import torchcodec" 2>/dev/null; then + echo "[audio-deps] Already installed and functional, skipping." + exit 0 +fi + +# Install system FFmpeg — torchcodec dlopens libavcodec.so.* at runtime. +echo "[audio-deps] Installing system FFmpeg..." +apt-get update && apt-get install -y --no-install-recommends ffmpeg + +# torchaudio 2.11+ routes torchaudio.load through torchcodec, so both are needed. +echo "[audio-deps] Installing torchaudio==2.11.0 and torchcodec..." +uv pip install \ + --index-url https://download.pytorch.org/whl/cu130 \ + --extra-index-url https://pypi.org/simple \ + --reinstall-package torchaudio \ + "torchaudio==2.11.0" \ + "torchcodec>=0.3.0" +echo "[audio-deps] Done." diff --git a/uv.lock b/uv.lock index 976bc8f50b..8257f236db 100644 --- a/uv.lock +++ b/uv.lock @@ -62,6 +62,8 @@ constraints = [ { name = "wheel", specifier = ">=0.46.2" }, ] overrides = [ + { name = "av", marker = "sys_platform == 'never'" }, + { name = "decord2", marker = "sys_platform == 'never'" }, { name = "deep-ep", marker = "platform_machine == 'aarch64'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=a48493600c4886c1b297aaa78db0e1ebc2d8dd6c" }, { name = "deep-ep", marker = "platform_machine == 'x86_64'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=29d31c095796f3c8ece47ee9cdcc167051bbeed9" }, { name = "langchain", specifier = ">=0.3.28" }, @@ -84,8 +86,6 @@ overrides = [ { name = "timm", specifier = "<=1.0.22" }, { name = "torch", marker = "sys_platform != 'darwin'", specifier = "==2.11.0", index = "https://download.pytorch.org/whl/cu130" }, { name = "torch", marker = "sys_platform == 'darwin'", specifier = "==2.11.0", index = "https://pypi.org/simple" }, - { name = "torchaudio", marker = "sys_platform != 'darwin'", specifier = "==2.11.0", index = "https://download.pytorch.org/whl/cu130" }, - { name = "torchaudio", marker = "sys_platform == 'darwin'", specifier = "==2.11.0", index = "https://pypi.org/simple" }, { name = "transformer-engine", extras = ["pytorch", "core-cu13"], git = "https://github.com/NVIDIA/TransformerEngine.git?rev=release_v2.15" }, { name = "xgrammar", specifier = "==0.1.33" }, ] @@ -422,18 +422,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, ] -[[package]] -name = "av" -version = "18.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ae/a4/570a5a35c8638aba01e739925846c35fdd6b0756a15526766d0a4dd3b7df/av-18.0.0.tar.gz", hash = "sha256:4ef7e72c3d3a872584a1215173b16e0226811037f40dcdbf75992631098df1ba", size = 4340222, upload-time = "2026-07-02T06:37:58.907Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/84/74/6732f17b96dc23fd23b876b2805435855abdc8a3b397142be4e581165de8/av-18.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:4d683b7747a0ba9222b8a5f81e41db5f796e7f64473454ec4fe2548e083c2fa0", size = 33387843, upload-time = "2026-07-02T06:37:05.097Z" }, - { url = "https://files.pythonhosted.org/packages/6d/b9/7708c43fed7ae28b4a1bad060b4221e3334cd827cec24f7165902a6ac1f4/av-18.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ae56b40b6f8b067a8ad2dac664fbfbabac7f7a55b9a7bb031eb99289252bc017", size = 35536910, upload-time = "2026-07-02T06:37:08.806Z" }, - { url = "https://files.pythonhosted.org/packages/c9/cf/0d7aee07fe16aa9ffdf96043c14bed5485a52c0dea4259de87aa306ecab4/av-18.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef96dabb3e50dac249913145dff5424b302b257fd95dcb64be3c7b7a8aef16d1", size = 34451176, upload-time = "2026-07-02T06:37:15.154Z" }, - { url = "https://files.pythonhosted.org/packages/76/92/810da80b12680d4c4fe235bd1b4003289be9213ac7f114b77b8ecf0e3b3e/av-18.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:0f65518a184613e41536f29e8758c8e3d8293e46bf5bef108f04f925bbfa3f44", size = 36619869, upload-time = "2026-07-02T06:37:18.495Z" }, -] - [[package]] name = "babel" version = "2.18.0" @@ -939,20 +927,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, ] -[[package]] -name = "decord2" -version = "3.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", marker = "(platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm')" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/37/947bc17d6a16f5c678ab2c6ba3330b20f617ec7652f103051881cf1d98d9/decord2-3.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:deadd17cc00b65545ef731fb5f58e05d625dc8db5fbda25edc9bd30469343413", size = 25036754, upload-time = "2026-04-06T18:09:54.204Z" }, - { url = "https://files.pythonhosted.org/packages/61/ab/ff85679c25708844a5e1f30e8243dfdb40985b9ce04496dde84a698f4eee/decord2-3.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e8d5408963552843411f2d74aac8025d0bb99c975c48b80e36c989297cf2d145", size = 27392918, upload-time = "2026-04-06T18:09:57.154Z" }, - { url = "https://files.pythonhosted.org/packages/fe/28/7d116e141a4ec1a3a7ba3ddb7f5e5e7811a23de5468818501ec640a2995b/decord2-3.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:6c7e50d5e3b3471672641cb296bb2616348638e9ce22ecd17bfadc0897907baf", size = 25036756, upload-time = "2026-04-06T18:10:02.647Z" }, - { url = "https://files.pythonhosted.org/packages/5e/4c/5cb20dcbb7b62d9453b8d1b18a62f02f8005b402747bbc1d7408bf5a57ce/decord2-3.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3d87266f9a4d211a03e2ce23d64a92e84edbc4364bf36356db47031f9f2ce45e", size = 27392917, upload-time = "2026-04-06T18:10:05.232Z" }, -] - [[package]] name = "deep-ep" version = "1.2.1+29d31c0" @@ -3288,7 +3262,6 @@ dependencies = [ { name = "cuda-bindings", marker = "(platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm')" }, { name = "datasets", marker = "(platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm')" }, { name = "debugpy", marker = "(platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm')" }, - { name = "decord2", marker = "(platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm')" }, { name = "hydra-core", marker = "(platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm')" }, { name = "math-verify", marker = "(platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm')" }, { name = "matplotlib", marker = "(platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine != 'aarch64' and platform_machine != 'x86_64' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (sys_platform != 'linux' and extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm')" }, @@ -3462,7 +3435,6 @@ requires-dist = [ { name = "cupy-cuda13x", marker = "extra == 'mcore'" }, { name = "datasets", specifier = ">=4.0.0" }, { name = "debugpy" }, - { name = "decord2" }, { name = "deep-ep", marker = "platform_machine == 'aarch64' and extra == 'automodel'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=a48493600c4886c1b297aaa78db0e1ebc2d8dd6c" }, { name = "deep-ep", marker = "platform_machine == 'aarch64' and extra == 'mcore'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=a48493600c4886c1b297aaa78db0e1ebc2d8dd6c" }, { name = "deep-ep", marker = "platform_machine == 'aarch64' and extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=a48493600c4886c1b297aaa78db0e1ebc2d8dd6c" }, @@ -5159,7 +5131,6 @@ name = "qwen-vl-utils" version = "0.0.14" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "av", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "packaging", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "pillow", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "requests", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, @@ -5478,13 +5449,11 @@ dependencies = [ { name = "aiohttp", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "anthropic", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "apache-tvm-ffi", version = "0.1.9", source = { registry = "https://pypi.org/simple" }, marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, - { name = "av", marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, { name = "blobfile", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "build", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "compressed-tensors", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "cuda-python", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "datasets", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, - { name = "decord2", marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, { name = "easydict", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "einops", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "fastapi", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, @@ -6308,13 +6277,13 @@ wheels = [ [[package]] name = "torchaudio" -version = "2.11.0+cu130" -source = { registry = "https://download.pytorch.org/whl/cu130" } +version = "2.11.0" +source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://download-r2.pytorch.org/whl/cu130/torchaudio-2.11.0%2Bcu130-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:23498b01097648e304e78d6495a9f5bdce8441a802afc3025e2561973d74c025", upload-time = "2026-03-23T15:50:26Z" }, - { url = "https://download-r2.pytorch.org/whl/cu130/torchaudio-2.11.0%2Bcu130-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e9c07cfdab691454092ff12d21dd1407a4bb8ad081d38f222cf6fcf6abcc18c8", upload-time = "2026-03-23T15:50:26Z" }, - { url = "https://download-r2.pytorch.org/whl/cu130/torchaudio-2.11.0%2Bcu130-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:f9b277a0d3b2ab4385778146b7e879716f36b6f2080f7190ec744e3383511791", upload-time = "2026-03-23T15:50:26Z" }, - { url = "https://download-r2.pytorch.org/whl/cu130/torchaudio-2.11.0%2Bcu130-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d07c4cbe4bec3e15bb18ba163058038f5f5fc1775c3061685c194439af4d2e9f", upload-time = "2026-03-23T15:50:26Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/249c1498ebdad3e7752866635ec0855fc0dcf898beccda5a9d2b9df8e4d0/torchaudio-2.11.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:b034d7672f1c415434f48ef17807f2cce47f29e8795338c751d4e596c9fbe8b5", size = 1618523, upload-time = "2026-03-23T18:13:15.703Z" }, + { url = "https://files.pythonhosted.org/packages/4f/98/be13fe35d9aa5c26381c0e453c828a789d15c007f8f7d08c95341d19974d/torchaudio-2.11.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1c1101c1243ef0e4063ec63298977e2d3655c15cf88d9eb0a1bd4fe2db9f47ea", size = 1771992, upload-time = "2026-03-23T18:13:35.343Z" }, + { url = "https://files.pythonhosted.org/packages/06/95/1ad1507482e7263e556709a3f5f87fecd375a0742cdaf238806c8e72eaad/torchaudio-2.11.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:9fe3083c62e035646483a14e180d33561bdc2eed436c9ab1259c137fb7120b4a", size = 1618546, upload-time = "2026-03-23T18:13:29.686Z" }, + { url = "https://files.pythonhosted.org/packages/98/4c/480328ba07487eb9890406720304d0d460dd7a6a64098614f5aa53b662ca/torchaudio-2.11.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:13cff988697ccbad539987599f9dc672f40c417bed67570b365e4e5002bbd096", size = 1771991, upload-time = "2026-03-23T18:13:30.843Z" }, ] [[package]]