Найти в Дзене

Особенности установки Torch-CUDA пакетов нейосетей методом "add" менеджера пакетов "UV" вместо эмуляции "pip" под Windows и Linux

Экосистема PyTorch — популярный выбор для исследований и разработок в области глубокого обучения. Вы можете использовать uv для управления проектами PyTorch и зависимостями PyTorch в разных версиях Python и средах, контролируя выбор ускорителя (например, только CPU или CUDA). Для работы некоторых функций, описанных в этом руководстве, требуется версия UV 0.5.3 или более поздняя. Мы рекомендуем обновить библиотеку перед настройкой PyTorch. С точки зрения упаковки, PyTorch обладает несколькими необычными характеристиками: Таким образом, необходимая конфигурация упаковки будет различаться в зависимости от поддерживаемых платформ и используемых ускорителей. Для начала рассмотрим следующую (конфигурацию по умолчанию), которая будет сгенерирована при выполнении команды^ ... а затем команды В этом случае PyTorch будет установлен из PyPI, где размещены пакеты, работающие только на ЦП, для Windows и macOS, а также пакеты GPU для Linux (ориентированные на CUDA 12.8, начиная с PyTorch 2.9.1): [p
Оглавление

Использование UV с PyTorch

Экосистема PyTorch — популярный выбор для исследований и разработок в области глубокого обучения. Вы можете использовать uv для управления проектами PyTorch и зависимостями PyTorch в разных версиях Python и средах, контролируя выбор ускорителя (например, только CPU или CUDA).

Для работы некоторых функций, описанных в этом руководстве, требуется версия UV 0.5.3 или более поздняя. Мы рекомендуем обновить библиотеку перед настройкой PyTorch.

Установка PyTorch

С точки зрения упаковки, PyTorch обладает несколькими необычными характеристиками:

  • Многие пакеты PyTorch, распространяемые через Wheels, размещаются в отдельном индексе, а не в Python Package Index (PyPI). Поэтому для установки PyTorch часто требуется настроить проект для использования индекса PyTorch.
  • PyTorch создает отдельные сборки для каждого ускорителя (например, только для ЦП, CUDA). Поскольку не существует стандартизированного механизма для указания этих ускорителей при публикации или установке, PyTorch кодирует их в локальном спецификаторе версии. Таким образом, версии PyTorch часто будут выглядеть как 2.5.1+cpu, 2.5.1+cu121, и т. д.
  • Сборки для разных ускорителей публикуются в разные индексы. Например, +cpu сборки публикуются по адресу https://download.pytorch.org/whl/cpu , а +cu121сборки для других ускорителей — по адресу https://download.pytorch.org/whl/cu121 .

Таким образом, необходимая конфигурация упаковки будет различаться в зависимости от поддерживаемых платформ и используемых ускорителей.

Для начала рассмотрим следующую (конфигурацию по умолчанию), которая будет сгенерирована при выполнении команды^

  • uv init --python 3.14

... а затем команды

  • uv add torch torchvision

В этом случае PyTorch будет установлен из PyPI, где размещены пакеты, работающие только на ЦП, для Windows и macOS, а также пакеты GPU для Linux (ориентированные на CUDA 12.8, начиная с PyTorch 2.9.1):

[project]
name = "project"
version = "0.1.0"
requires-python = ">=3.14"
dependencies = [
"torch>=2.9.1",
"torchvision>=0.24.1",
]

Это допустимая конфигурация для проектов, которые хотят использовать сборки с поддержкой ЦП в Windows и macOS, а также сборки с поддержкой CUDA в Linux. Однако, если вам необходимо поддерживать другие платформы или ускорители, вам потребуется соответствующим образом настроить проект.

Примечание:
Именно поэтому я призываю использовать WSL-Linux метод установки питона для нейросетей - наличие CUDA-пакетов TORCH на PyPi.
Этот метод установки дает возможность использовать для установки не режим "эмуляции PIP" с командой "uv pip install ***", а намного более скоростной и более защищенный метод установки с командой "uv add ***", который применяется при создании из приложения "проекта" с ведением TOML и LOCK файлов установки!

Если же вы решили работать в других средах (Windows), через команду "uv add ***", используя TOML-LOCK технологию, я вам советую вообще весь процесс установки пакетов питона вынести в TOML-файл. В частности пакеты TORCH-CUDA в пайпроджект-файле надо прописать прямо так:

[[tool.uv.index]]
name = "pytorch-cu129"
url = "https://download.pytorch.org/whl/cu129"
explicit = true
[tool.uv.sources]
torch = [
{ index = "pytorch-cu129", marker = "sys_platform == 'win32'" },
]
torchvision = [
{ index = "pytorch-cu129", marker = "sys_platform == 'win32'" },
]
torchaudio = [
{ index = "pytorch-cu129", marker = "sys_platform == 'win32'" },
]

Только при такой запись команда "UV SYNC" сможет вытащить эти пакеты из PyTorch. Иначе придется использовать технологию эмуляции "uv pip install ***".