diff --git a/.vscode/settings.json b/.vscode/settings.json index 96a3a2d..a6d9e0f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,7 @@ { "[python]": { "editor.defaultFormatter": "charliermarsh.ruff", - "editor.formatOnSave": true, + "editor.formatOnSave": false, }, "python.testing.pytestArgs": [ "src" diff --git a/POSITRONIC_README.md b/POSITRONIC_README.md index 554cb9b..97ac148 100644 --- a/POSITRONIC_README.md +++ b/POSITRONIC_README.md @@ -8,10 +8,13 @@ In src/openpi/training/config.py modify config with new dataset name. ```python TrainConfig( - name="pi0_positronic_lowmem", - # Here is an example of loading a pi0-FAST model for LoRA finetuning. - # For setting action_dim, action_horizon, and max_token_len, see the comments above. - model=pi0.Pi0Config(paligemma_variant="gemma_2b_lora", action_expert_variant="gemma_300m_lora"), + name="pi05_positronic_lowmem", + # Pi05 model with LoRA finetuning for low memory usage on Positronic dataset. + model=pi0.Pi0Config( + pi05=True, + paligemma_variant="gemma_2b_lora", + action_expert_variant="gemma_300m_lora", + ), data=LeRobotPositronicDataConfig( repo_id="", @@ -25,7 +28,7 @@ In src/openpi/training/config.py modify config with new dataset name. Run script to compute normalization stats for your dataset. ```bash -HF_LEROBOT_HOME="path/to/dataset" uv run scripts/compute_norm_stats.py --config-name pi0_positronic_lowmem +HF_LEROBOT_HOME="path/to/dataset" uv run scripts/compute_norm_stats.py --config-name pi05_positronic_lowmem ``` ### Run train @@ -33,13 +36,98 @@ HF_LEROBOT_HOME="path/to/dataset" uv run scripts/compute_norm_stats.py --config- Train policy. ```bash -HF_LEROBOT_HOME="path/to/dataset" XLA_PYTHON_CLIENT_MEM_FRACTION=0.995 uv run scripts/train.py pi0_positronic_lowmem --exp-name= --overwrite +HF_LEROBOT_HOME="path/to/dataset" XLA_PYTHON_CLIENT_MEM_FRACTION=0.995 uv run scripts/train.py pi05_positronic_lowmem --exp-name= --overwrite +``` + +### Serve policy + +After training you could find weights in `checkpoints/pi05_positronic_lowmem//`. Run policy server with: + +```bash +uv run scripts/serve_policy.py policy:checkpoint --policy.config=pi05_positronic_lowmem --policy.dir checkpoints/pi05_positronic_lowmem//29999/ +``` + +By default, the server is served from port 8000, so if you serve it on Nebius or other cloud provider, you need to have this port open: +```bash +ssh -L 8000:localhost:8000 +``` + +Then on the local machine, you will run the inference script (from `positronic` repository root): +```bash +python -m positronic.run_inference sim_pi0 --output_dir=../datasets/inference/ --show_gui --num_iterations=10 --simulation_time=15 +``` + +## Using Docker + +### Build and Push Docker Image + +Build and push the training image to Nebius Container Registry: + +```bash +cd docker +make push +``` + +This will: +1. Build the Docker image with all source code baked in +2. Tag it with version, git SHA, and `latest` +3. Push to the Nebius registry at `cr.eu-north1.nebius.cloud/e00a0ahqzcp9x0xczz/openpi-training` + +### Run Training in Docker + +All commands can be run using the cloud Docker image. The code is already baked into the image, so no source code mounting is needed: + +```bash +docker run --rm -it --gpus all --pull=always \ + -v /datasets:/datasets \ + -v /outputs:/outputs \ + cr.eu-north1.nebius.cloud/e00a0ahqzcp9x0xczz/openpi-training \ + +``` + +#### Docker Examples + +**Compute norm stats:** +```bash +docker run --rm -it --gpus all --pull=always \ + -v /datasets:/datasets \ + -v /outputs/openpi/assets:/openpi/assets \ + -e HF_LEROBOT_HOME=/datasets/ \ + cr.eu-north1.nebius.cloud/e00a0ahqzcp9x0xczz/openpi-training \ + python -m scripts.compute_norm_stats --config-name pi05_positronic_lowmem +``` + +**Run train:** +```bash +docker run --rm -it --gpus all --pull=always \ + -v /datasets:/datasets \ + -v /outputs/openpi/assets:/openpi/assets \ + -v /outputs/checkpoints:/openpi/checkpoints \ + -e HF_LEROBOT_HOME=/datasets/ \ + cr.eu-north1.nebius.cloud/e00a0ahqzcp9x0xczz/openpi-training \ + python -m scripts.train pi05_positronic_lowmem --exp-name= +``` + +**Serve policy:** +```bash +docker run --rm -it --gpus all --pull=always \ + -v /outputs/openpi/checkpoints:/openpi/checkpoints \ + -p 8000:8000 \ + cr.eu-north1.nebius.cloud/e00a0ahqzcp9x0xczz/openpi-training \ + python -m scripts.serve_policy policy:checkpoint \ + --policy.config=pi05_positronic_lowmem \ + --policy.dir=/openpi/checkpoints/pi05_positronic_lowmem//29999/ ``` -### Serve polciy +### Local Development (Optional) -After training you could find weights in `checkpoints/pi0_positronic_lowmem//`. Run policy server with: +For local development with live code editing, use `Dockerfile.training`: ```bash -uv run scripts/serve_policy.py policy:checkpoint --policy.config=pi0_positronic_lowmem --policy.dir checkpoints/pi0_positronic_lowmem//29999/ +docker build -f docker/Dockerfile.training -t openpi-training-dev . +docker run --rm -it --gpus all \ + -v $PWD:/openpi \ + -v /datasets:/datasets \ + openpi-training-dev \ + bash -lc 'uv pip install --no-deps -e /openpi && ' ``` \ No newline at end of file diff --git a/docker/Dockerfile.training b/docker/Dockerfile.training new file mode 100644 index 0000000..e33b336 --- /dev/null +++ b/docker/Dockerfile.training @@ -0,0 +1,41 @@ +# Local development Dockerfile with bind-mount support. +# The virtualenv and dependencies are pre-installed in the image, then at runtime you mount +# your local source code over /openpi and reinstall in editable mode for live code changes. +# +# Build: +# docker build -f Dockerfile.training -t openpi-training . +# +# Run: +# docker run --rm -it --gpus all \ +# -v $PWD:/openpi \ +# -v /datasets:/datasets \ +# openpi-training \ +# bash -lc 'python -m pip install --no-deps -e /openpi && python scripts/your_script.py' +# +# Note: After mounting your code, reinstall with 'python -m pip install --no-deps -e /openpi' +# to update package metadata while keeping dependencies from the image. +FROM nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04 +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ +RUN apt-get update && apt-get install -y \ + build-essential \ + curl \ + git \ + ffmpeg \ + libturbojpeg \ + && rm -rf /var/lib/apt/lists/* +ENV UV_LINK_MODE=copy +ENV PIP_DEFAULT_TIMEOUT=600 +ENV UV_HTTP_TIMEOUT=600 +RUN uv venv --python 3.11 +ENV VIRTUAL_ENV=/.venv +ENV PATH=/$VIRTUAL_ENV/bin:$PATH +COPY pyproject.toml uv.lock ./ +# Copy workspace packages needed for dependency resolution +COPY packages ./packages +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen --extra dev --no-install-project +COPY . /openpi +WORKDIR /openpi +RUN uv pip install --no-deps . +ENV PYTHONPATH=/openpi +CMD ["bash"] diff --git a/docker/Dockerfile.training.cloud b/docker/Dockerfile.training.cloud new file mode 100644 index 0000000..16a44e1 --- /dev/null +++ b/docker/Dockerfile.training.cloud @@ -0,0 +1,50 @@ +FROM nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04 + +# Copy uv for fast Python package management +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ + +# Install minimal system dependencies +RUN apt-get update && apt-get install -y \ + build-essential \ + curl \ + git \ + ffmpeg \ + libturbojpeg \ + && rm -rf /var/lib/apt/lists/* + +# Configure uv and pip timeouts +ENV UV_LINK_MODE=copy +ENV PIP_DEFAULT_TIMEOUT=600 +ENV UV_HTTP_TIMEOUT=600 + +# Create Python virtual environment +RUN uv venv --python 3.11 + +# Activate venv for docker run +ENV VIRTUAL_ENV=/.venv +ENV PATH=/$VIRTUAL_ENV/bin:$PATH + +# Copy project metadata and lock for reproducible deps +COPY pyproject.toml uv.lock ./ +# Copy workspace packages needed for dependency resolution +COPY packages ./packages +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --frozen --extra dev --no-install-project + +# Copy source code into the image +COPY . /openpi + +# Set working directory +WORKDIR /openpi + +# Install the project so runtime metadata (e.g. importlib.metadata) is present. +# For local dev containers that bind-mount the repo, run +# `uv pip install --no-deps -e /openpi` once after start so edits reflect +# immediately while preserving metadata. +RUN uv pip install --no-deps . + +# Set Python path +ENV PYTHONPATH=/openpi + +# Default command +CMD ["bash"] diff --git a/docker/Makefile b/docker/Makefile new file mode 100644 index 0000000..5069503 --- /dev/null +++ b/docker/Makefile @@ -0,0 +1,89 @@ +.PHONY: all build tag push clean prune help + +# Image configuration +IMAGE_NAME := openpi-training + +# Extract version from pyproject.toml +VERSION := $(shell grep '^version = ' ../pyproject.toml | sed 's/version = "\(.*\)"/\1/') + +# Get git commit SHA (short) +GIT_SHA := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") + +# Registry URL - can be overridden via environment variable or command line +# Example: make push REGISTRY_URL=cr.eu-north1.nebius.cloud/e00a0ahqzcp9x0xczz +REGISTRY_URL ?= cr.eu-north1.nebius.cloud/e00a0ahqzcp9x0xczz + +# Image tags +TAG_LATEST := $(REGISTRY_URL)/$(IMAGE_NAME):latest +TAG_VERSION := $(REGISTRY_URL)/$(IMAGE_NAME):v$(VERSION) +TAG_SHA := $(REGISTRY_URL)/$(IMAGE_NAME):$(GIT_SHA) +LOCAL_TAG := $(IMAGE_NAME):local + +help: + @echo "OpenPI Training Container - Makefile" + @echo "" + @echo "Configuration:" + @echo " Image Name: $(IMAGE_NAME)" + @echo " Version: $(VERSION)" + @echo " Git SHA: $(GIT_SHA)" + @echo " Registry URL: $(REGISTRY_URL)" + @echo "" + @echo "Targets:" + @echo " make build Build the training image with baked source code" + @echo " make tag Tag the image (depends on build)" + @echo " make push Push all tags to registry (depends on tag)" + @echo " make all Build, tag, and push (alias for push)" + @echo " make clean Remove local training images" + @echo " make prune Remove dangling/unused Docker images" + @echo " make help Show this help message" + @echo "" + @echo "To override registry URL:" + @echo " make push REGISTRY_URL=your-registry-url" + +build: + @echo "Building $(IMAGE_NAME) with source code baked in..." + @if [ -z "$(VERSION)" ]; then \ + echo "Error: Could not extract version from pyproject.toml"; \ + exit 1; \ + fi + docker build -f Dockerfile.training.cloud -t $(LOCAL_TAG) .. + +tag: build + @echo "Tagging image with multiple tags..." + @if [ -z "$(REGISTRY_URL)" ]; then \ + echo "Error: REGISTRY_URL is not set."; \ + echo "Please set it via: make push REGISTRY_URL=your-registry-url"; \ + exit 1; \ + fi + docker tag $(LOCAL_TAG) $(TAG_LATEST) + docker tag $(LOCAL_TAG) $(TAG_VERSION) + docker tag $(LOCAL_TAG) $(TAG_SHA) + @echo "Tagged with:" + @echo " - $(TAG_LATEST)" + @echo " - $(TAG_VERSION)" + @echo " - $(TAG_SHA)" + +push: tag + @echo "Pushing images to Container Registry..." + docker push $(TAG_LATEST) + docker push $(TAG_VERSION) + docker push $(TAG_SHA) + @echo "" + @echo "Successfully pushed to Container Registry!" + @echo "Pull with:" + @echo " docker pull $(TAG_LATEST)" + +all: push + +clean: + @echo "Removing local training images..." + -docker rmi $(LOCAL_TAG) + -docker rmi $(TAG_LATEST) + -docker rmi $(TAG_VERSION) + -docker rmi $(TAG_SHA) + @echo "Local images removed." + +prune: + @echo "Pruning dangling and unused Docker images..." + docker image prune -f + @echo "Prune complete." diff --git a/packages/openpi-client/pyproject.toml b/packages/openpi-client/pyproject.toml index fba7b66..cca3c45 100644 --- a/packages/openpi-client/pyproject.toml +++ b/packages/openpi-client/pyproject.toml @@ -5,7 +5,7 @@ requires-python = ">=3.7" dependencies = [ "dm-tree>=0.1.8", "msgpack>=1.0.5", - "numpy>=1.22.4,<2.0.0", + "numpy>=1.22.4", # ,<2.0.0 "pillow>=9.0.0", "tree>=0.2.4", "websockets>=11.0", diff --git a/src/openpi/training/config.py b/src/openpi/training/config.py index 5d97906..2c86aee 100644 --- a/src/openpi/training/config.py +++ b/src/openpi/training/config.py @@ -426,7 +426,7 @@ def create(self, assets_dirs: pathlib.Path, model_config: _model.BaseModelConfig # We return all data transforms for training and inference. No need to change anything here. return dataclasses.replace( - self.create_base_config(assets_dirs), + self.create_base_config(assets_dirs, model_config), repack_transforms=repack_transform, data_transforms=data_transforms, model_transforms=model_transforms, @@ -815,16 +815,16 @@ def __post_init__(self) -> None: name="pi0_positronic_lowmem", # Here is an example of loading a pi0-FAST model for LoRA finetuning. # For setting action_dim, action_horizon, and max_token_len, see the comments above. - model=pi0.Pi0Config(paligemma_variant="gemma_2b_lora", action_expert_variant="gemma_300m_lora"), + model=pi0_config.Pi0Config(paligemma_variant="gemma_2b_lora", action_expert_variant="gemma_300m_lora"), data=LeRobotPositronicDataConfig( - repo_id="stack-cubes-pimm-lerobot-new-convert", + repo_id="lerobot", base_config=DataConfig(prompt_from_task=True), ), weight_loader=weight_loaders.CheckpointWeightLoader("gs://openpi-assets/checkpoints/pi0_base/params"), num_train_steps=30_000, # Again, make sure to match the model config above when extracting the freeze filter # that specifies which parameters should be frozen during LoRA finetuning. - freeze_filter=pi0.Pi0Config( + freeze_filter=pi0_config.Pi0Config( paligemma_variant="gemma_2b_lora", action_expert_variant="gemma_300m_lora" ).get_freeze_filter(), # Turn off EMA for LoRA finetuning. @@ -834,9 +834,9 @@ def __post_init__(self) -> None: name="pi0_positronic", # Here is an example of loading a pi0-FAST model for LoRA finetuning. # For setting action_dim, action_horizon, and max_token_len, see the comments above. - model=pi0.Pi0Config(), + model=pi0_config.Pi0Config(), data=LeRobotPositronicDataConfig( - repo_id="stack-cubes-pimm-lerobot-new-convert", + repo_id="lerobot", base_config=DataConfig(prompt_from_task=True), ), weight_loader=weight_loaders.CheckpointWeightLoader("gs://openpi-assets/checkpoints/pi0_base/params"), @@ -844,6 +844,28 @@ def __post_init__(self) -> None: # Turn off EMA for LoRA finetuning. ema_decay=None, ), + TrainConfig( + name="pi05_positronic_lowmem", + # Pi05 model with LoRA finetuning for low memory usage on Positronic dataset. + model=pi0_config.Pi0Config( + pi05=True, + paligemma_variant="gemma_2b_lora", + action_expert_variant="gemma_300m_lora", + ), + data=LeRobotPositronicDataConfig( + repo_id="lerobot", + base_config=DataConfig(prompt_from_task=True), + ), + freeze_filter=pi0_config.Pi0Config( + pi05=True, + paligemma_variant="gemma_2b_lora", + action_expert_variant="gemma_300m_lora", + ).get_freeze_filter(), + weight_loader=weight_loaders.CheckpointWeightLoader("gs://openpi-assets/checkpoints/pi05_base/params"), + num_train_steps=30_000, + # Turn off EMA for LoRA finetuning. + ema_decay=None, + ), TrainConfig( name="pi05_libero", model=pi0_config.Pi0Config(pi05=True, action_horizon=10, discrete_state_input=False), diff --git a/uv.lock b/uv.lock index 11ee7ef..0e6f792 100644 --- a/uv.lock +++ b/uv.lock @@ -1,11 +1,16 @@ version = 1 requires-python = ">=3.11" resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", @@ -758,11 +763,16 @@ name = "dm-tree" version = "0.1.8" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", ] sdist = { url = "https://files.pythonhosted.org/packages/f8/6d/f1997aac42e0f550c1e952a0b920eaa0bfc4d27d0421499881b934b969fc/dm-tree-0.1.8.tar.gz", hash = "sha256:0fcaabbb14e7980377439e7140bd05552739ca5e515ecb3119f234acee4b9430", size = 35384 } wheels = [ @@ -1518,10 +1528,10 @@ wheels = [ [package.optional-dependencies] cli = [ - { name = "inquirerpy" }, + { name = "inquirerpy", marker = "python_full_version < '4.0'" }, ] hf-transfer = [ - { name = "hf-transfer" }, + { name = "hf-transfer", marker = "python_full_version < '4.0'" }, ] [[package]] @@ -1628,8 +1638,8 @@ name = "inquirerpy" version = "0.3.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pfzy" }, - { name = "prompt-toolkit" }, + { name = "pfzy", marker = "python_full_version < '4.0'" }, + { name = "prompt-toolkit", marker = "python_full_version < '4.0'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/64/73/7570847b9da026e07053da3bbe2ac7ea6cde6bb2cbd3c7a5a950fa0ae40b/InquirerPy-0.3.4.tar.gz", hash = "sha256:89d2ada0111f337483cb41ae31073108b2ec1e618a49d7110b0d7ade89fc197e", size = 44431 } wheels = [ @@ -2607,9 +2617,12 @@ name = "nvidia-cublas-cu12" version = "12.6.4.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", "python_full_version == '3.12.*' and sys_platform == 'emscripten'", @@ -2628,8 +2641,10 @@ name = "nvidia-cublas-cu12" version = "12.9.0.13" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'darwin'", @@ -2645,9 +2660,12 @@ name = "nvidia-cuda-cupti-cu12" version = "12.6.80" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", "python_full_version == '3.12.*' and sys_platform == 'emscripten'", @@ -2668,8 +2686,10 @@ name = "nvidia-cuda-cupti-cu12" version = "12.9.19" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'darwin'", @@ -2695,6 +2715,7 @@ name = "nvidia-cuda-nvrtc-cu12" version = "12.6.77" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/2f/72df534873235983cc0a5371c3661bebef7c4682760c275590b972c7b0f9/nvidia_cuda_nvrtc_cu12-12.6.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5847f1d6e5b757f1d2b3991a01082a44aad6f10ab3c5c0213fa3e25bddc25a13", size = 23162955 }, { url = "https://files.pythonhosted.org/packages/75/2e/46030320b5a80661e88039f59060d1790298b4718944a65a7f2aeda3d9e9/nvidia_cuda_nvrtc_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:35b0cc6ee3a9636d5409133e79273ce1f3fd087abb0532d2d2e8fff1fe9efc53", size = 23650380 }, ] @@ -2703,9 +2724,12 @@ name = "nvidia-cuda-runtime-cu12" version = "12.6.77" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", "python_full_version == '3.12.*' and sys_platform == 'emscripten'", @@ -2726,8 +2750,10 @@ name = "nvidia-cuda-runtime-cu12" version = "12.9.37" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'darwin'", @@ -2743,9 +2769,12 @@ name = "nvidia-cudnn-cu12" version = "9.5.1.17" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", "python_full_version == '3.12.*' and sys_platform == 'emscripten'", @@ -2767,8 +2796,10 @@ name = "nvidia-cudnn-cu12" version = "9.10.1.4" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'darwin'", @@ -2787,9 +2818,12 @@ name = "nvidia-cufft-cu12" version = "11.3.0.4" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", "python_full_version == '3.12.*' and sys_platform == 'emscripten'", @@ -2813,8 +2847,10 @@ name = "nvidia-cufft-cu12" version = "11.4.0.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'darwin'", @@ -2834,6 +2870,7 @@ version = "1.11.1.6" source = { registry = "https://pypi.org/simple" } wheels = [ { url = "https://files.pythonhosted.org/packages/b2/66/cc9876340ac68ae71b15c743ddb13f8b30d5244af344ec8322b449e35426/nvidia_cufile_cu12-1.11.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc23469d1c7e52ce6c1d55253273d32c565dd22068647f3aa59b3c6b005bf159", size = 1142103 }, + { url = "https://files.pythonhosted.org/packages/17/bf/cc834147263b929229ce4aadd62869f0b195e98569d4c28b23edc72b85d9/nvidia_cufile_cu12-1.11.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:8f57a0051dcf2543f6dc2b98a98cb2719c37d3cee1baba8965d57f3bbc90d4db", size = 1066155 }, ] [[package]] @@ -2841,8 +2878,10 @@ name = "nvidia-curand-cu12" version = "10.3.7.77" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/42/ac/36543605358a355632f1a6faa3e2d5dfb91eab1e4bc7d552040e0383c335/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:6e82df077060ea28e37f48a3ec442a8f47690c7499bff392a5938614b56c98d8", size = 56289881 }, { url = "https://files.pythonhosted.org/packages/73/1b/44a01c4e70933637c93e6e1a8063d1e998b50213a6b65ac5a9169c47e98e/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a42cd1344297f70b9e39a1e4f467a4e1c10f1da54ff7a85c12197f6c652c8bdf", size = 56279010 }, { url = "https://files.pythonhosted.org/packages/4a/aa/2c7ff0b5ee02eaef890c0ce7d4f74bc30901871c5e45dee1ae6d0083cd80/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:99f1a32f1ac2bd134897fc7a203f779303261268a65762a623bf30cc9fe79117", size = 56279000 }, + { url = "https://files.pythonhosted.org/packages/a6/02/5362a9396f23f7de1dd8a64369e87c85ffff8216fc8194ace0fa45ba27a5/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7b2ed8e95595c3591d984ea3603dd66fe6ce6812b886d59049988a712ed06b6e", size = 56289882 }, ] [[package]] @@ -2850,9 +2889,12 @@ name = "nvidia-cusolver-cu12" version = "11.7.1.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", "python_full_version == '3.12.*' and sys_platform == 'emscripten'", @@ -2878,8 +2920,10 @@ name = "nvidia-cusolver-cu12" version = "11.7.4.40" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'darwin'", @@ -2900,9 +2944,12 @@ name = "nvidia-cusparse-cu12" version = "12.5.4.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", "python_full_version == '3.12.*' and sys_platform == 'emscripten'", @@ -2926,8 +2973,10 @@ name = "nvidia-cusparse-cu12" version = "12.5.9.5" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'darwin'", @@ -2946,6 +2995,7 @@ name = "nvidia-cusparselt-cu12" version = "0.6.3" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/62/da/4de092c61c6dea1fc9c936e69308a02531d122e12f1f649825934ad651b5/nvidia_cusparselt_cu12-0.6.3-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8371549623ba601a06322af2133c4a44350575f5a3108fb75f3ef20b822ad5f1", size = 156402859 }, { url = "https://files.pythonhosted.org/packages/3b/9a/72ef35b399b0e183bc2e8f6f558036922d453c4d8237dab26c666a04244b/nvidia_cusparselt_cu12-0.6.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e5c8a26c36445dd2e6812f1177978a24e2d37cacce7e090f297a688d1ec44f46", size = 156785796 }, ] @@ -2963,9 +3013,12 @@ name = "nvidia-nccl-cu12" version = "2.26.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", "python_full_version == '3.12.*' and sys_platform == 'emscripten'", @@ -2983,8 +3036,10 @@ name = "nvidia-nccl-cu12" version = "2.26.5" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'darwin'", @@ -3000,9 +3055,12 @@ name = "nvidia-nvjitlink-cu12" version = "12.6.85" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", + "python_full_version >= '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", + "python_full_version >= '4.0' and sys_platform == 'emscripten'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'emscripten'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux'", "python_full_version == '3.12.*' and sys_platform == 'emscripten'", @@ -3021,8 +3079,10 @@ name = "nvidia-nvjitlink-cu12" version = "12.9.41" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '4.0' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and python_full_version < '4.0' and sys_platform == 'darwin'", + "python_full_version >= '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and python_full_version < '4.0' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'darwin'", @@ -3038,6 +3098,8 @@ name = "nvidia-nvtx-cu12" version = "12.6.77" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/93/80f8a520375af9d7ee44571a6544653a176e53c2b8ccce85b97b83c2491b/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f44f8d86bb7d5629988d61c8d3ae61dddb2015dee142740536bc7481b022fe4b", size = 90549 }, + { url = "https://files.pythonhosted.org/packages/2b/53/36e2fd6c7068997169b49ffc8c12d5af5e5ff209df6e1a2c4d373b3a638f/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:adcaabb9d436c9761fca2b13959a2d237c5f9fd406c8e4b723c695409ff88059", size = 90539 }, { url = "https://files.pythonhosted.org/packages/56/9a/fff8376f8e3d084cd1530e1ef7b879bb7d6d265620c95c1b322725c694f4/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b90bed3df379fa79afbd21be8e04a0314336b8ae16768b58f2d34cb1d04cd7d2", size = 89276 }, { url = "https://files.pythonhosted.org/packages/9e/4e/0d0c945463719429b7bd21dece907ad0bde437a2ff12b9b12fee94722ab0/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6574241a3ec5fdc9334353ab8c479fe75841dbe8f4532a8fc97ce63503330ba1", size = 89265 }, ] @@ -3227,7 +3289,7 @@ dev = [ requires-dist = [ { name = "dm-tree", specifier = ">=0.1.8" }, { name = "msgpack", specifier = ">=1.0.5" }, - { name = "numpy", specifier = ">=1.22.4,<2.0.0" }, + { name = "numpy", specifier = ">=1.22.4" }, { name = "pillow", specifier = ">=9.0.0" }, { name = "tree", specifier = ">=0.2.4" }, { name = "websockets", specifier = ">=11.0" },