diff --git a/.github/workflows/cicd-main.yml b/.github/workflows/cicd-main.yml index 50e730c4b11..e1c802b5bfb 100644 --- a/.github/workflows/cicd-main.yml +++ b/.github/workflows/cicd-main.yml @@ -301,7 +301,6 @@ jobs: build-args: | MAX_JOBS=4 NEMO_RL_COMMIT=${{ needs.pre-flight.outputs.test_sha }} - SKIP_SGLANG_BUILD=1 update-uv-cache: name: Update uv build cache diff --git a/docker/Dockerfile b/docker/Dockerfile index 6bc769aabec..7ada4205244 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -59,7 +59,7 @@ apt-get clean rm -rf /var/lib/apt/lists/* EOF -# CMake (for sglang build) +# CMake (for CUDA extension builds: transformer-engine, mamba-ssm, etc.) RUN GITHUB_ARTIFACTORY=github.com \ && CMAKE_VERSION=3.31.1 \ && ARCH=$(uname -m) \ diff --git a/nemo_rl/models/generation/sglang/sglang_worker.py b/nemo_rl/models/generation/sglang/sglang_worker.py index d2a19006aee..1620d1f729c 100644 --- a/nemo_rl/models/generation/sglang/sglang_worker.py +++ b/nemo_rl/models/generation/sglang/sglang_worker.py @@ -179,6 +179,9 @@ def __init__( # Get current node IP and a free port for the server node_ip = _get_node_ip_local() free_port = _get_free_port_local() + # sglang derives grpc_port = port + 10000, so cap at 55535 to stay within valid range + while free_port > 55535: + free_port = _get_free_port_local() # Build SGLang server arguments kwargs = { diff --git a/pyproject.toml b/pyproject.toml index c3f356fd8a1..73c2b2e1b90 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -143,8 +143,8 @@ vllm = [ "nvidia-cutlass-dsl>=4.4.0.dev1", ] sglang = [ - "sglang", - "sglang-kernel", # Must be a direct dep so [tool.uv.sources] VCS override applies (transitive deps don't use sources) + "sglang==0.5.11", + "sglang-kernel==0.4.2", # Direct dep for explicit version control ] mcore = [ # also need cudnn (https://developer.nvidia.com/cudnn-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_network) @@ -249,9 +249,6 @@ causal-conv1d = { git = "https://github.com/Dao-AILab/causal-conv1d", rev = "67e mamba-ssm = { git = "https://github.com/state-spaces/mamba.git", rev = "d68d16ed7d5d5164eb5a57c0285f3b7eb8394ec1" } nv-grouped-gemm = { git = "https://github.com/fanshiqing/grouped_gemm", tag = "v1.1.4.post7" } emerging-optimizers = { git = "https://github.com/NVIDIA-NeMo/Emerging-Optimizers.git", rev = "v0.2.0" } -# Official sglang v0.5.10 with transformers v5 support -sglang = { git = "https://github.com/sgl-project/sglang.git", tag = "v0.5.10", subdirectory = "python" } -sglang-kernel = { git = "https://github.com/sgl-project/sglang.git", tag = "v0.5.10", subdirectory = "sgl-kernel" } nvidia-modelopt = { git = "https://github.com/NVIDIA/Model-Optimizer", rev = "905018803414702e414a86716484ed4115b37ba6" } nvidia-resiliency-ext = { git = "https://github.com/NVIDIA/nvidia-resiliency-ext.git", rev = "15a851565a4ce846c04431ecb0cf09903ab4837e" } @@ -278,7 +275,6 @@ explicit = true [tool.uv] preview = true # Enable preview features like extra-build-dependencies -extra-build-variables = { sglang-kernel = { CMAKE_BUILD_PARALLEL_LEVEL = "8", FLASHINFER_CUDA_ARCH_LIST = "9.0a 10.0a", CMAKE_ARGS = "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" } } no-build-isolation-package = [ "transformer-engine-torch", "transformer-engine", @@ -288,7 +284,6 @@ no-build-isolation-package = [ "deep_gemm", "deep_ep", "nv-grouped-gemm", # from mlm (added here to make sure it's built no isolation since mlm workspace uses setup.py) - "sglang-kernel", ] # Always apply the build group since dependencies like TE/mcore/nemo-run require build dependencies # and this lets us assume they are implicitly installed with a simply `uv sync`. Ideally, we'd @@ -318,12 +313,9 @@ override-dependencies = [ "setuptools>=80.10.2", "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@bfded34800dfec415b71503f8205181de90b2480 ; platform_machine == 'x86_64'", "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@a48493600c4886c1b297aaa78db0e1ebc2d8dd6c ; platform_machine == 'aarch64'", - # Note: flashinfer versions are pinned per-extra (vllm uses 0.6.8.post1, sglang uses 0.6.7.post2) - # since vllm and sglang extras are mutually exclusive and have different requirements. - # Override megatron-core's flashinfer~=0.5.0 constraint to allow both vllm (0.6.8.post1) and sglang (0.6.7.post2) + # Override megatron-core's flashinfer~=0.5.0 constraint to allow both vllm and sglang (both use 0.6.8.post1) "flashinfer-python>=0.5.0", "flashinfer-cubin>=0.5.0", - # sglang 0.5.10 requires nvidia-cutlass-dsl>=4.4.1 (via flashinfer 0.6.7.post2 which uses CUTLASS 4.4.2). # Override to >=4.4.1 so uv can resolve to a version satisfying both vllm and sglang. "nvidia-cutlass-dsl>=4.4.1", # Relax megatron-core workspace member's opentelemetry-api ceiling (<1.34) for protobuf 6.x compat with ray @@ -331,7 +323,7 @@ override-dependencies = [ # vLLM 0.20.0 excludes transformers 5.0-5.5.0 but our codebase needs 5.3.0. # Override so uv can resolve transformers==5.3.0 for non-vllm extras. "transformers==5.3.0", - #Override till we can upgrade sglang version to address CVE GHSA-7rgv-gqhr-fxg3 + # Override sglang's xgrammar==0.1.32 to address CVE GHSA-7rgv-gqhr-fxg3 "xgrammar==0.1.33", # Override dependencies to address CVEs "mlflow>=3.11.1", @@ -411,7 +403,6 @@ transformer-engine-torch = [{ requirement = "torch", match-runtime = true }] mamba-ssm = [{ requirement = "torch", match-runtime = true }] causal-conv1d = [{ requirement = "torch", match-runtime = true }] nv-grouped-gemm = [{ requirement = "torch", match-runtime = true }] -sglang-kernel = [{ requirement = "torch", match-runtime = true }] # Needed when building from source [[tool.uv.dependency-metadata]] @@ -458,83 +449,6 @@ name = "nv-grouped-gemm" version = "v1.1.4.post7" requires-dist = ["setuptools", "wheel", "torch", "numpy"] -[[tool.uv.dependency-metadata]] -name = "sglang-kernel" -# This version has to match the version in the commit/rev/tag used -version = "0.4.1" -requires-dist = ["torch", "scikit-build-core", "wheel"] - -[[tool.uv.dependency-metadata]] -name = "sglang" -# VCS install from official sgl-project/sglang v0.5.10 -# Version is dynamic (setuptools-scm), so uv cannot resolve deps from the VCS source automatically. -# This requires-dist list must be kept in sync with the official python/pyproject.toml [project].dependencies. -# Source: https://github.com/sgl-project/sglang/blob/v0.5.10/python/pyproject.toml -version = "0.5.10" -requires-dist = [ - "IPython", - "aiohttp", - "apache-tvm-ffi>=0.1.5,<0.2", - "anthropic>=0.20.0", - "blobfile==3.0.0", - "build", - "compressed-tensors", - "cuda-python==13.0", - "decord2", - "datasets", - "einops", - "fastapi", - "flashinfer_python==0.6.7.post2", - "flashinfer_cubin==0.6.7.post2", - "gguf", - "interegular", - "llguidance>=0.7.11,<0.8.0", - "modelscope", - "msgspec", - "ninja", - "numpy", - "nvidia-cutlass-dsl>=4.4.1", - "nvidia-ml-py", - "openai-harmony==0.0.4", - "openai==2.6.1", - "orjson", - "outlines==0.1.11", - "packaging", - "partial_json_parser", - "pillow", - "prometheus-client>=0.20.0", - "psutil", - "py-spy", - "pybase64", - "pydantic", - "python-multipart", - "pyzmq>=25.1.2", - "quack-kernels>=0.3.0", - "requests", - "scipy", - "sentencepiece", - "setproctitle", - "flash-attn-4>=4.0.0b4", - "sglang-kernel==0.4.1", - "soundfile==0.13.1", - "tiktoken", - "timm==1.0.16", - "torch_memory_saver==0.0.9", - "torch==2.9.1", - "torchao==0.9.0", - "torchaudio==2.9.1", - "torchcodec==0.9.1 ; sys_platform != 'linux' or (sys_platform == 'linux' and platform_machine != 'aarch64' and platform_machine != 'arm64' and platform_machine != 'armv7l')", - "torchvision", - "tqdm", - "mistral_common>=1.9.0", - "transformers==5.3.0", - "uvicorn", - "uvloop", - "watchfiles", - "xgrammar==0.1.32", - "smg-grpc-servicer>=0.5.0", -] - [[tool.uv.dependency-metadata]] name = "megatron-bridge" # Static metadata so the root resolver handles megatron-bridge's deps diff --git a/tests/functional/L1_Functional_Tests_GPU.sh b/tests/functional/L1_Functional_Tests_GPU.sh index af5ebbb7d45..7f3dba50533 100644 --- a/tests/functional/L1_Functional_Tests_GPU.sh +++ b/tests/functional/L1_Functional_Tests_GPU.sh @@ -68,10 +68,7 @@ run_test uv run --no-sync bash ./tests/functional/grpo_multiple_dataloaders run_test uv run --no-sync bash ./tests/functional/grpo_multiturn.sh run_test uv run --no-sync bash ./tests/functional/grpo_non_colocated.sh run_test uv run --no-sync bash ./tests/functional/grpo_rm_env.sh -# Skip sglang functional test if sglang was not built into the container -if python -c "import sglang" 2>/dev/null; then - run_test uv run --no-sync bash ./tests/functional/grpo_sglang.sh -fi +run_test uv run --no-sync bash ./tests/functional/grpo_sglang.sh run_test fast uv run --no-sync bash ./tests/functional/grpo_topp_topk.sh run_test uv run --no-sync bash ./tests/functional/prorlv2.sh run_test uv run --no-sync bash ./tests/functional/qa_distillation_megatron.sh diff --git a/tests/unit/L0_Unit_Tests_Generation.sh b/tests/unit/L0_Unit_Tests_Generation.sh index 5f76b2aa517..c9a974afb8c 100644 --- a/tests/unit/L0_Unit_Tests_Generation.sh +++ b/tests/unit/L0_Unit_Tests_Generation.sh @@ -57,14 +57,10 @@ else uv run --extra vllm bash -x ./tests/run_unit.sh "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-append --cov-report=term-missing --cov-report=json --hf-gated --vllm-only fi -# Check and run sglang tests (skip if sglang was not built into the container) -if python -c "import sglang" 2>/dev/null; then - exit_code=$(cd ${PROJECT_ROOT}/tests && uv run --extra sglang pytest "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --collect-only --hf-gated --sglang-only -q >/dev/null 2>&1; echo $?) - if [[ $exit_code -eq 5 ]]; then - echo "No sglang tests to run" - else - uv run --extra sglang bash -x ./tests/run_unit.sh "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-append --cov-report=term-missing --cov-report=json --hf-gated --sglang-only - fi +# Check and run sglang tests +exit_code=$(cd ${PROJECT_ROOT}/tests && uv run --extra sglang pytest "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --collect-only --hf-gated --sglang-only -q >/dev/null 2>&1; echo $?) +if [[ $exit_code -eq 5 ]]; then + echo "No sglang tests to run" else - echo "sglang not installed, skipping sglang tests" + uv run --extra sglang bash -x ./tests/run_unit.sh "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-append --cov-report=term-missing --cov-report=json --hf-gated --sglang-only fi diff --git a/tests/unit/L0_Unit_Tests_Other.sh b/tests/unit/L0_Unit_Tests_Other.sh index 8d61cacfa4c..fa830aeb0b2 100644 --- a/tests/unit/L0_Unit_Tests_Other.sh +++ b/tests/unit/L0_Unit_Tests_Other.sh @@ -57,16 +57,12 @@ else uv run --extra vllm bash -x ./tests/run_unit.sh "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-append --cov-report=term-missing --cov-report=json --hf-gated --vllm-only fi -# Check and run sglang tests (skip if sglang was not built into the container) -if python -c "import sglang" 2>/dev/null; then - exit_code=$(cd ${PROJECT_ROOT}/tests && uv run --extra sglang pytest "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --collect-only --hf-gated --sglang-only -q >/dev/null 2>&1; echo $?) - if [[ $exit_code -eq 5 ]]; then - echo "No sglang tests to run" - else - uv run --extra sglang bash -x ./tests/run_unit.sh "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-append --cov-report=term-missing --cov-report=json --hf-gated --sglang-only - fi +# Check and run sglang tests +exit_code=$(cd ${PROJECT_ROOT}/tests && uv run --extra sglang pytest "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --collect-only --hf-gated --sglang-only -q >/dev/null 2>&1; echo $?) +if [[ $exit_code -eq 5 ]]; then + echo "No sglang tests to run" else - echo "sglang not installed, skipping sglang tests" + uv run --extra sglang bash -x ./tests/run_unit.sh "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-append --cov-report=term-missing --cov-report=json --hf-gated --sglang-only fi # Check and run nemo_gym tests diff --git a/tests/unit/L0_Unit_Tests_Policy.sh b/tests/unit/L0_Unit_Tests_Policy.sh index 7368927be50..f19691c4212 100644 --- a/tests/unit/L0_Unit_Tests_Policy.sh +++ b/tests/unit/L0_Unit_Tests_Policy.sh @@ -57,14 +57,10 @@ else uv run --extra vllm bash -x ./tests/run_unit.sh "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-append --cov-report=term-missing --cov-report=json --hf-gated --vllm-only fi -# Check and run sglang tests (skip if sglang was not built into the container) -if python -c "import sglang" 2>/dev/null; then - exit_code=$(cd ${PROJECT_ROOT}/tests && uv run --extra sglang pytest "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --collect-only --hf-gated --sglang-only -q >/dev/null 2>&1; echo $?) - if [[ $exit_code -eq 5 ]]; then - echo "No sglang tests to run" - else - uv run --extra sglang bash -x ./tests/run_unit.sh "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-append --cov-report=term-missing --cov-report=json --hf-gated --sglang-only - fi +# Check and run sglang tests +exit_code=$(cd ${PROJECT_ROOT}/tests && uv run --extra sglang pytest "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --collect-only --hf-gated --sglang-only -q >/dev/null 2>&1; echo $?) +if [[ $exit_code -eq 5 ]]; then + echo "No sglang tests to run" else - echo "sglang not installed, skipping sglang tests" + uv run --extra sglang bash -x ./tests/run_unit.sh "${TEST_PATHS[@]}" "${IGNORE[@]}" "${EXCLUDED_UNIT_TESTS[@]}" --cov=nemo_rl --cov-append --cov-report=term-missing --cov-report=json --hf-gated --sglang-only fi diff --git a/uv.lock b/uv.lock index e6e30e2296e..7d182cf205a 100644 --- a/uv.lock +++ b/uv.lock @@ -188,16 +188,6 @@ name = "nv-grouped-gemm" version = "1.1.4.post7" requires-dist = ["setuptools", "wheel", "torch", "numpy"] -[[manifest.dependency-metadata]] -name = "sglang" -version = "0.5.10" -requires-dist = ["ipython", "aiohttp", "apache-tvm-ffi>=0.1.5,<0.2", "anthropic>=0.20.0", "blobfile==3.0.0", "build", "compressed-tensors", "cuda-python==13.0", "decord2", "datasets", "einops", "fastapi", "flashinfer-python==0.6.7.post2", "flashinfer-cubin==0.6.7.post2", "gguf", "interegular", "llguidance>=0.7.11,<0.8.0", "modelscope", "msgspec", "ninja", "numpy", "nvidia-cutlass-dsl>=4.4.1", "nvidia-ml-py", "openai-harmony==0.0.4", "openai==2.6.1", "orjson", "outlines==0.1.11", "packaging", "partial-json-parser", "pillow", "prometheus-client>=0.20.0", "psutil", "py-spy", "pybase64", "pydantic", "python-multipart", "pyzmq>=25.1.2", "quack-kernels>=0.3.0", "requests", "scipy", "sentencepiece", "setproctitle", "flash-attn-4>=4.0.0b4", "sglang-kernel==0.4.1", "soundfile==0.13.1", "tiktoken", "timm==1.0.16", "torch-memory-saver==0.0.9", "torch==2.9.1", "torchao==0.9.0", "torchaudio==2.9.1", "torchcodec==0.9.1 ; (platform_machine != 'aarch64' and platform_machine != 'arm64' and platform_machine != 'armv7l') or sys_platform != 'linux'", "torchvision", "tqdm", "mistral-common>=1.9.0", "transformers==5.3.0", "uvicorn", "uvloop", "watchfiles", "xgrammar==0.1.32", "smg-grpc-servicer>=0.5.0"] - -[[manifest.dependency-metadata]] -name = "sglang-kernel" -version = "0.4.1" -requires-dist = ["torch", "scikit-build-core", "wheel"] - [[manifest.dependency-metadata]] name = "transformer-engine" version = "2.14.1+366798e" @@ -1379,6 +1369,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/87/eb/153b2b32dca090e956a1e512293db3c7c144db50da439373d1be56880512/dulwich-0.25.2-py3-none-any.whl", hash = "sha256:19dd5a0e08a47483be7f404e2555136a9ebaf70781fee3280457f8e2d65b2388", size = 650045, upload-time = "2026-01-11T22:04:45.398Z" }, ] +[[package]] +name = "easydict" +version = "1.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/9f/d18d6b5e19244788a6d09c14a8406376b4f4bfcc008e6d17a4f4c15362e8/easydict-1.13.tar.gz", hash = "sha256:b1135dedbc41c8010e2bc1f77ec9744c7faa42bce1a1c87416791449d6c87780", size = 6809, upload-time = "2024-03-04T12:04:41.251Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/ec/fa6963f1198172c2b75c9ab6ecefb3045991f92f75f5eb41b6621b198123/easydict-1.13-py3-none-any.whl", hash = "sha256:6b787daf4dcaf6377b4ad9403a5cee5a86adbc0ca9a5bcf5410e9902002aeac2", size = 6804, upload-time = "2024-03-04T12:04:39.508Z" }, +] + [[package]] name = "einops" version = "0.8.2" @@ -2525,6 +2524,59 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, ] +[[package]] +name = "kernels" +version = "0.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "kernels-data" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "tomlkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/16/d9c473289d72d07a5c8e00367e5de9326bf0135e65ba74a235e2eb2510f2/kernels-0.14.1.tar.gz", hash = "sha256:ba21b7b509b7a0c2d2c7a0efd546e9dda2b1022ed5ff2b8fde8e94d7637754d3", size = 62800, upload-time = "2026-05-14T06:42:36.234Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/94/fb8cbf1427af4b520ad08a458b6696f1958732761bc284b55273fa3aa684/kernels-0.14.1-py3-none-any.whl", hash = "sha256:be1a91116e14be1e012fc8f47afb51173ee052586a570fba3d594ef0d1b38920", size = 57977, upload-time = "2026-05-14T06:42:35.002Z" }, +] + +[[package]] +name = "kernels-data" +version = "0.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/15/b071356425b50d8b49d01152b344222d18b4a535cbc352f7d00267dd4ceb/kernels_data-0.14.1.tar.gz", hash = "sha256:35c7d46da843decc1f12f098ca781b8453f21ecbabb4e18b9266c0e0b113fc82", size = 41008, upload-time = "2026-05-14T06:41:15.534Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/09/1d69a0ecb9c271464e7566066ebbd921fed22d332c313239fc3305141494/kernels_data-0.14.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:00f60a9f470b6d6ca4b49eac95a96c6a19cb3507034481ec07a7f8d8889cb59a", size = 1056558, upload-time = "2026-05-14T06:40:55.174Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b1/3cbaf8fc778c9d94cf5e0a946d76b0a124749a9ff2e55a614c63fa45c585/kernels_data-0.14.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:853a649698f16fb97bfaa7f823806673555789de10ce44797c489e455e4f40ba", size = 1018220, upload-time = "2026-05-14T06:40:50.888Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6b/4bc5fe105a31a0cdcb95226905b8fdbc60ef10933073cb619b2b8834166f/kernels_data-0.14.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24eb5c71a79979699603688dca740f91d21a0c4cf6ea6b5f45400a84e34bb06c", size = 1157452, upload-time = "2026-05-14T06:40:23.918Z" }, + { url = "https://files.pythonhosted.org/packages/00/22/aa09a47ac7f3993102feb595251fb326fbb39c03d5bce2a6a108db0308b5/kernels_data-0.14.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b2b235178abf5542dea5c493d088915c97c4332294ef9c8bd818db4f61ed3eed", size = 1104888, upload-time = "2026-05-14T06:40:28.694Z" }, + { url = "https://files.pythonhosted.org/packages/bc/03/f02b4aec8d3b1d4a152e46c7a179e714c362563d073f7df187e76c5246d3/kernels_data-0.14.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:289a8111b4c119b213c379e56bdb5ceb7287380aa1e5b36d1ec0cffab1f70520", size = 1410978, upload-time = "2026-05-14T06:40:32.958Z" }, + { url = "https://files.pythonhosted.org/packages/fc/3b/5d258575a3513b57e38e636bce806e03113114ca17a64c8115b1eba290ff/kernels_data-0.14.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9f6458e4d3e8d8270c3bebc3b97f9d2909b2bab122bdf88fe380ec08d02cfe1d", size = 1217059, upload-time = "2026-05-14T06:40:37.397Z" }, + { url = "https://files.pythonhosted.org/packages/d0/ab/819882409a30b2122182a496ea3c80d15b1898fa5ab8da43548ad959a531/kernels_data-0.14.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb94043895397d4acf86eb8bc88d21d91d6b6ef5ecd78271e8782fea2b5607d4", size = 1170855, upload-time = "2026-05-14T06:40:46.921Z" }, + { url = "https://files.pythonhosted.org/packages/67/aa/54279f7013524e93d2e3616a7de9fc33cc9bb200440ca9ca3a8419417d17/kernels_data-0.14.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5dbc23adf5d9456b01483917db42a3a2230f75fec3e5ebd018307afcb87d826c", size = 1198350, upload-time = "2026-05-14T06:40:42.421Z" }, + { url = "https://files.pythonhosted.org/packages/6b/d5/26a1c2f2322aaa6b3ed3d5454f15749143f3672c624f5ad204ef892c96e3/kernels_data-0.14.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a948fa5d6b644b7927e51902d8e334cbeb8f678d70cd1f224691eae4c9e34ad5", size = 1332080, upload-time = "2026-05-14T06:40:59.024Z" }, + { url = "https://files.pythonhosted.org/packages/59/3b/6e0fcf525250235e8b115ba1fbfa942ac4938e7721f5d2e292a92838abf2/kernels_data-0.14.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eddcf653db57ea31d103767f8930de109861343bbb362a49d5f583a66a2e4e82", size = 1380843, upload-time = "2026-05-14T06:41:03.457Z" }, + { url = "https://files.pythonhosted.org/packages/47/11/29f477f2a54d68891bc66666993328076949d71f616008114045297ff932/kernels_data-0.14.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:ea61e0f51b3f2a202bc04b74ec9168950c765e5d3680baaad25d0e781ffb9291", size = 1381133, upload-time = "2026-05-14T06:41:07.819Z" }, + { url = "https://files.pythonhosted.org/packages/34/8f/1b737f46d5058849b44e6fdfcb770b450d82ab1b78ceed52560499a55c3e/kernels_data-0.14.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7937a49af7ca2d8396fbb5223e70ba7b8e9acdcc14282ae597b73f692a88b11b", size = 1407765, upload-time = "2026-05-14T06:41:11.935Z" }, + { url = "https://files.pythonhosted.org/packages/2f/06/6f831f7213da768e12cc2f5b07375e0abff65eced6a74b3e87a73f5a7dd5/kernels_data-0.14.1-cp313-cp313t-win32.whl", hash = "sha256:071f9e7fd57aefeeb80c3fd31b8081b1f9d9864c79af992da63fd6dd16b4f5d8", size = 830111, upload-time = "2026-05-14T06:41:21.984Z" }, + { url = "https://files.pythonhosted.org/packages/4c/08/3a411197ce15e145cdc85b70e96b082587f6b42e56192c384b24511e1c86/kernels_data-0.14.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f4854e78ff81385a73ef9034b69aa8c33743450114aad6625633b4a80178ed7f", size = 919433, upload-time = "2026-05-14T06:41:17.723Z" }, + { url = "https://files.pythonhosted.org/packages/2c/b9/78c5096b78078187d5b4558bd52ead6ec473c4471dd43d49d5cf7a4fa895/kernels_data-0.14.1-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:9f987d4c491891b98f8a6f2eaa765a0e06c1eeb1d71cce8eab7fe37b5e1d03ee", size = 1066779, upload-time = "2026-05-14T06:40:57.669Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/2896723815fb49844b2e5fbd569c6c8ee19ccfb7c97857b56d35d169a155/kernels_data-0.14.1-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:0bd051ba798dcff3e1e5545b139a17df190ba96ba8c98837bf58444333836b49", size = 1027104, upload-time = "2026-05-14T06:40:53.646Z" }, + { url = "https://files.pythonhosted.org/packages/63/6d/dc1c2095d858b62dbfe8ccf4bd05ff304450601bef42e4c5e971e3550deb/kernels_data-0.14.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6446304de3bec9d72da88e64717e37ad4ec8bc8b096e0f73a5c5d5e6ae4f153", size = 1162253, upload-time = "2026-05-14T06:40:27.196Z" }, + { url = "https://files.pythonhosted.org/packages/67/c4/e6dd4a26059323a6f8577d845d5d9cd21098b78ba2f222599b0482f7e4de/kernels_data-0.14.1-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a3687b29786afe7a8afd196d6d6288eb5104c10b7a2117fc6f5a501d569d619", size = 1110177, upload-time = "2026-05-14T06:40:31.413Z" }, + { url = "https://files.pythonhosted.org/packages/76/39/6a7520596a2842f582bff0372ade8c5b0f78c87e1f2d7d765b18550fa434/kernels_data-0.14.1-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1022a4b144fab4c737286158f0acf6d05e547b0dfe5c07ef2eb7cfe1601ca018", size = 1413144, upload-time = "2026-05-14T06:40:35.83Z" }, + { url = "https://files.pythonhosted.org/packages/13/7f/05ea4510d0ff2418e7a4220b2fc62545be66adf80fb2c80ca4ff3e0bd460/kernels_data-0.14.1-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6916722f08554dcd8336eb11f828394b66ccfc66c10a8d7be15442bdabecc876", size = 1222375, upload-time = "2026-05-14T06:40:40.815Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b5/cabd476a1bdaad270509b48427a4f06a62a717d3aa67a6279ef134e7de60/kernels_data-0.14.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71178b60a4e65791d5421cdf4844e0be4cd0fb4f341051a491cfbe94afc765f0", size = 1176707, upload-time = "2026-05-14T06:40:49.605Z" }, + { url = "https://files.pythonhosted.org/packages/6f/93/65e34ddb9906772cf4a2094387f5a145957600972a1e8ebed9b0c3365aac/kernels_data-0.14.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:203d6ecf0d1b781724f02ce939204c94eb2e33b6d8f6751b69dcc4f7d792f777", size = 1204395, upload-time = "2026-05-14T06:40:45.342Z" }, + { url = "https://files.pythonhosted.org/packages/3b/28/a3b063047af38c17c13e5938cbe1979e2daaaa094a2f44cfc21ac7b7fc19/kernels_data-0.14.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f432b770b22039fa357be6252889ed823b72e753ced9d543ba514b4fe8601e0b", size = 1338286, upload-time = "2026-05-14T06:41:02.1Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ca/c7518a532ef3e7e203b07978f7bfb5d8bfee85601696adbac9decf2e7e71/kernels_data-0.14.1-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:3e60a34665fafe53275fee20a44aff9fef66640986420b055ae3becc5c101eb6", size = 1387803, upload-time = "2026-05-14T06:41:06.244Z" }, + { url = "https://files.pythonhosted.org/packages/78/54/5865ac36248a76a3f32a23dacdd6366d982abb6b9496d6524246c0320f15/kernels_data-0.14.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:394c878dc51c162a2eaee11a18f207a5ed7aeca8615037d8efbce7cfaa0ec473", size = 1386821, upload-time = "2026-05-14T06:41:10.638Z" }, + { url = "https://files.pythonhosted.org/packages/87/ea/fe955e157094d93fe20919441dc709ba7afbcf933de5896b546d5c217938/kernels_data-0.14.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ec694ae26ed8569f613e5cd4269222210cb57b1c16cf8b0c5acbf0082324804f", size = 1414055, upload-time = "2026-05-14T06:41:14.424Z" }, + { url = "https://files.pythonhosted.org/packages/2c/12/9437b2421b8f8e2ca0f756fa7a61d57bc2a305df66d67a2fdae00eb8c92d/kernels_data-0.14.1-cp38-abi3-win32.whl", hash = "sha256:c8e61e4177c88437000e7d476ebffba89a35e9a5f479ca7c61111cc2a9ee9adf", size = 833630, upload-time = "2026-05-14T06:41:25.524Z" }, + { url = "https://files.pythonhosted.org/packages/d1/8d/ef0c132a994dd54e100c373e5118a44ba8f493dc0f84b7c2ca393f80935e/kernels_data-0.14.1-cp38-abi3-win_amd64.whl", hash = "sha256:0ca55a6d1762b40fd5f54a210d7f4cda03f644786fb301e8f68c73036818e19d", size = 922248, upload-time = "2026-05-14T06:41:20.419Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e3/a3cb594f6644ca54e9b089052c81981fd94ca33d343835c9a0be288ab6ff/kernels_data-0.14.1-cp38-abi3-win_arm64.whl", hash = "sha256:9d7a8918eda5991c139db7bc3922ef80ae5c08669b2151051e36c9ce21a8f12b", size = 863762, upload-time = "2026-05-14T06:41:16.305Z" }, +] + [[package]] name = "kiwisolver" version = "1.5.0" @@ -4032,8 +4084,8 @@ requires-dist = [ { name = "ray", extras = ["default"], specifier = "==2.54.0" }, { name = "rich" }, { name = "setuptools" }, - { name = "sglang", marker = "extra == 'sglang'", git = "https://github.com/sgl-project/sglang.git?subdirectory=python&tag=v0.5.10" }, - { name = "sglang-kernel", marker = "extra == 'sglang'", git = "https://github.com/sgl-project/sglang.git?subdirectory=sgl-kernel&tag=v0.5.10" }, + { name = "sglang", marker = "extra == 'sglang'", specifier = "==0.5.11" }, + { name = "sglang-kernel", marker = "extra == 'sglang'", specifier = "==0.4.2" }, { name = "soundfile", specifier = ">=0.13.1" }, { name = "swanlab" }, { name = "sympy", specifier = ">=1.14.0" }, @@ -6149,19 +6201,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5d/e6/ec8471c8072382cb91233ba7267fd931219753bb43814cbc71757bfd4dab/safetensors-0.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:d1239932053f56f3456f32eb9625590cc7582e905021f94636202a864d470755", size = 341380, upload-time = "2025-11-19T15:18:44.427Z" }, ] -[[package]] -name = "scikit-build-core" -version = "0.12.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, - { name = "pathspec" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/28/cd/9ebb50029b6d8a3ee9e38cdce514ebd70190ec1edf28ab0a1f66d0b84670/scikit_build_core-0.12.2.tar.gz", hash = "sha256:562e0bbc9de1a354c87825ccf732080268d6582a0200f648e8c4a2dcb1e3736d", size = 303553, upload-time = "2026-03-05T18:25:57.666Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/49/b2f0fbe3165d55c02e7f9eec6a10685d518af0ef6e919ff2f589c2d15c85/scikit_build_core-0.12.2-py3-none-any.whl", hash = "sha256:6ea4730da400f9a998ec3287bd3ebc1d751fe45ad0a93451bead8618adbc02b1", size = 192625, upload-time = "2026-03-05T18:25:56.207Z" }, -] - [[package]] name = "scikit-learn" version = "1.8.0" @@ -6304,18 +6343,20 @@ wheels = [ [[package]] name = "sglang" -version = "0.5.10" -source = { git = "https://github.com/sgl-project/sglang.git?subdirectory=python&tag=v0.5.10#1519acf37c23f2189adb93f57ca9cd2db1bebf18" } +version = "0.5.11" +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, { name = "anthropic" }, { name = "apache-tvm-ffi", version = "0.1.11", source = { registry = "https://pypi.org/simple" } }, + { name = "av", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'arm64' and sys_platform == 'linux') or (platform_machine == 'armv7l' and sys_platform == 'linux')" }, { name = "blobfile" }, { name = "build" }, { name = "compressed-tensors" }, { name = "cuda-python" }, { name = "datasets" }, - { name = "decord2" }, + { name = "decord2", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'arm64' and sys_platform == 'linux') or (platform_machine == 'armv7l' and sys_platform == 'linux')" }, + { name = "easydict" }, { name = "einops" }, { name = "fastapi" }, { name = "flash-attn-4" }, @@ -6324,6 +6365,7 @@ dependencies = [ { name = "gguf" }, { name = "interegular" }, { name = "ipython" }, + { name = "kernels" }, { name = "llguidance" }, { name = "mistral-common" }, { name = "modelscope" }, @@ -6372,16 +6414,18 @@ dependencies = [ { name = "watchfiles" }, { name = "xgrammar" }, ] +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/c8/ccc83d76bc86f3cb1295c548f42115db5c25f15672a9daa47f00b503154f/sglang-0.5.11-cp313-cp313-manylinux_2_34_aarch64.whl", hash = "sha256:2a455ff867cf2b5cce6b2930483a3cd64506ba2cdf12a375d8d731ae45ad1b93", size = 7299476, upload-time = "2026-05-07T00:07:12.408Z" }, + { url = "https://files.pythonhosted.org/packages/4c/03/d9fe8402d18232c3099e3b502903dd150b74ce199aed7348568b3d2fdffa/sglang-0.5.11-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:db716eb7081082e2fb1e0542cd860a553243ea1bb1387925aa9d517d44e03b96", size = 7308088, upload-time = "2026-05-07T00:07:14.473Z" }, +] [[package]] name = "sglang-kernel" -version = "0.4.1" -source = { git = "https://github.com/sgl-project/sglang.git?subdirectory=sgl-kernel&tag=v0.5.10#1519acf37c23f2189adb93f57ca9cd2db1bebf18" } -dependencies = [ - { name = "scikit-build-core" }, - { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'darwin' and extra == 'extra-7-nemo-rl-sglang') or (extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm') or (extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm')" }, - { name = "torch", version = "2.11.0+cu130", source = { registry = "https://download.pytorch.org/whl/cu130" }, marker = "(sys_platform != 'darwin' and extra == 'extra-7-nemo-rl-sglang') or (extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-fsdp') or (extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-mcore') or (extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-sglang') or (extra == 'extra-7-nemo-rl-automodel' and extra == 'extra-7-nemo-rl-vllm') or (extra == 'extra-7-nemo-rl-fsdp' and extra == 'extra-7-nemo-rl-sglang') or (extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-sglang') or (extra == 'extra-7-nemo-rl-mcore' and extra == 'extra-7-nemo-rl-vllm') or (extra == 'extra-7-nemo-rl-sglang' and extra == 'extra-7-nemo-rl-vllm')" }, - { name = "wheel" }, +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/73/724a04941e36cba08035b99ed6827edffdb6f390aef9d5faf90593b11fa2/sglang_kernel-0.4.2-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:d53271b01e29e0971842b0ddab0833ca1dd875c96b027dfc1cad6f3b09b493f1", size = 193221651, upload-time = "2026-04-30T23:49:58.764Z" }, + { url = "https://files.pythonhosted.org/packages/1b/43/66513757d480140d9e9b0f234995a47f7165513e498932ed21f05adeb81c/sglang_kernel-0.4.2-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:11e8198d6f6ff47df2ff445e3add666897d7d75fddbed9ff862e7b42fd75530c", size = 326259979, upload-time = "2026-04-30T23:02:24.178Z" }, ] [[package]] @@ -7047,6 +7091,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" }, ] +[[package]] +name = "tomlkit" +version = "0.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/db/03eaf4331631ef6b27d6e3c9b68c54dc6f0d63d87201fed600cc409307fd/tomlkit-0.15.0.tar.gz", hash = "sha256:7d1a9ecba3086638211b13814ea79c90dd54dd11993564376f3aa92271f5c7a3", size = 161875, upload-time = "2026-05-10T07:38:22.245Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/43/8bd850ee71a191bf072e31302c73a66be413fecdd98fdcd111ecbcce13ca/tomlkit-0.15.0-py3-none-any.whl", hash = "sha256:4dbc8f0fc024412b57ced8757ac7461305126a648ff8c2c807fcb8e133a78738", size = 41328, upload-time = "2026-05-10T07:38:23.517Z" }, +] + [[package]] name = "torch" version = "2.11.0" @@ -7189,20 +7242,21 @@ wheels = [ [[package]] name = "torch-memory-saver" -version = "0.0.9" +version = "0.0.9.post1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/28/6c/21dfda5d31afb71f52cedff52370acbb8290485b3f0fee6816a15a3d08f1/torch_memory_saver-0.0.9.tar.gz", hash = "sha256:3bbf76391fb16870b1b0df279fc281c8a05ef8f8809400b309b0a8240e8ee5ba", size = 14220, upload-time = "2025-10-18T02:10:18.163Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/fd/42aad783d433fd69dc108b1b2ee5860fcf33e20e5440b899bc004ff97d70/torch_memory_saver-0.0.9.post1.tar.gz", hash = "sha256:25fd4b691ed3242c3a18b2bef0dbe9de84d2e7068b96a37686a923d55c274f43", size = 15209, upload-time = "2026-05-02T05:30:54.649Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/35/b22df9e730d8444d62445a594421992781c7fad271325d41656d8a32d103/torch_memory_saver-0.0.9-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:0cf26332993649f8ea1b95d7307dfba3a95ee6cee53de84a3e561fb21752b584", size = 488722, upload-time = "2025-10-18T02:10:16.825Z" }, + { url = "https://files.pythonhosted.org/packages/69/76/9a88e20f0be461af58165cc87663076a1fdfa53893f8371442d2e4ccabd1/torch_memory_saver-0.0.9.post1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:2c3505ba2bd7aa9ac75392417c675e8be686029da7c5f35037c59e2e8a3dfece", size = 1008682, upload-time = "2026-05-02T05:30:53.267Z" }, + { url = "https://files.pythonhosted.org/packages/49/67/6789f9048b836615d07e419fd2f253b83fb9b0f86f34d03ab75ac1f07049/torch_memory_saver-0.0.9.post1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:b4e560fcd88a0641efb21ac530bb79a6e78fc0b31c9a654fa3b5eb7c3629e555", size = 1015832, upload-time = "2026-05-02T05:30:51.317Z" }, ] [[package]] name = "torchao" -version = "0.9.0" +version = "0.17.0" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/fe/a24225d30775192a4c5d9cea3ecb95e6adc69d0a8b5ed98eb8e58d362344/torchao-0.9.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc708910301a9f98344d43f3fe2aa6d5e1fab706d772b6df47ff05087d664145", size = 5652091, upload-time = "2025-02-28T13:54:15.239Z" }, - { url = "https://files.pythonhosted.org/packages/db/72/01f755514fb61eadc80b974eb4bd4f22f3009b35457773523e3bd497c511/torchao-0.9.0-py3-none-any.whl", hash = "sha256:ea5603c32762f1a9ade1a4dc7b00f5246623b24a28e49e666f614c79a408712a", size = 712541, upload-time = "2025-02-28T13:54:13.671Z" }, + { url = "https://files.pythonhosted.org/packages/32/fe/a4036a8e80fa800c92dbcbf75f541cd4c106248b6b579db6dab1800f616a/torchao-0.17.0-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:87a418ce0ec064a821ceab83c921b501acef0ce9a6ccd1be358fcd16c3ae8c58", size = 3206172, upload-time = "2026-03-30T22:25:52.974Z" }, + { url = "https://files.pythonhosted.org/packages/c9/37/ef37ca885265e5f79a168616767dd416a3cea1cc3b28bb6b503ce4a5b652/torchao-0.17.0-py3-none-any.whl", hash = "sha256:02eba449036715b9ae784fbaa1a6f97994bb7b0421ce92d1d5d1c08e5bd6d349", size = 1200680, upload-time = "2026-03-30T22:25:54.457Z" }, ] [[package]] @@ -7269,12 +7323,13 @@ wheels = [ [[package]] name = "torchcodec" -version = "0.9.1" +version = "0.11.1" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/c7/67fc8417f9efa8a25c00a44f0d674761a0bad9c45e9725e3fd116b3c48ed/torchcodec-0.9.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c9cdcba50c75be70ef6ec919ec1f7f14d9d5163d93cf6bd94403e134f03734c", size = 4034415, upload-time = "2025-12-10T15:56:02.04Z" }, - { url = "https://files.pythonhosted.org/packages/68/05/06240f661e9aa08b20765305e3b88f60bff706bbe54ac35830af74612443/torchcodec-0.9.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:0643c5e9c3a51fdafdea87935d5b0a38e99626c664f47a150482d77ab370a877", size = 2067767, upload-time = "2025-12-10T15:55:37.27Z" }, - { url = "https://files.pythonhosted.org/packages/13/a2/d78cd65863fb805d9e35fe90ae7574eab86ff0ae63438208bd07d2cf1fd2/torchcodec-0.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:df0b5a15998fd7457625c2af2a6276e0e710fac158d145045340dbbcd1cfdb65", size = 2186788, upload-time = "2025-12-10T15:56:20.204Z" }, + { url = "https://files.pythonhosted.org/packages/2c/61/a8985a7561ef651e409deeac151a0ed5cef763db9577db5cc49c2f5eaab2/torchcodec-0.11.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:915fbe20068ec77486fbbeaf0c627c89c7376445f27d215b7489c0a03c64fd4c", size = 4289805, upload-time = "2026-04-14T18:24:59.124Z" }, + { url = "https://files.pythonhosted.org/packages/7a/31/c4ec0304dd169a9b2b7fa0dd1d5d659d3cccc975b98ac88c498fe6dd7196/torchcodec-0.11.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:3755de03c96afd37410cba68198225d11cd6431a32f2161a0019791a4a853305", size = 2399057, upload-time = "2026-04-14T18:25:00.782Z" }, + { url = "https://files.pythonhosted.org/packages/5d/b2/85ad7a81f387e40983c21bc94da0c333974afb41f38c3a85d25875274187/torchcodec-0.11.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5eee69971cec1147a03b8a6b678b5dfbeff0b2c71ed7929e488391f9fbcd630c", size = 2332721, upload-time = "2026-04-14T18:25:02.518Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ca/5c66f21d2a12039450e9dd4d9d7c480019dfbe9e8a87696a3c3a827c1e37/torchcodec-0.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:67b34e5733636588ebe0f15082bbb90a8ce1472ccb8bb1a656ec28958a208919", size = 1920990, upload-time = "2026-04-14T18:25:04.269Z" }, ] [[package]]