Текст и данные · Инструкция
Как включить GPU в WSL 2 для PyTorch через DirectML
Включить GPU в WSL 2 для PyTorch через DirectML можно на совместимой Windows 11 с актуальным драйвером видеокарты.
Короткий ответ
Проверьте Windows 11 и WSL 2, обновите Windows-драйвер GPU, создайте отдельное Python-окружение и установите `torch-directml`. Затем получите устройство через `torch_directml.device()` и выполните минимальную операцию с тензорами.
Когда DirectML подходит, а когда лучше CUDA
DirectML предоставляет PyTorch доступ к DirectX 12-совместимым GPU разных производителей, поэтому интересен на AMD, Intel и NVIDIA. Microsoft одновременно указывает CUDA in WSL как отдельный путь для NVIDIA и привычных CUDA-workflow. Выбор определяется не брендом Windows, а совместимостью вашего проекта: набор поддерживаемых операторов, версии библиотек, используемые расширения и требования к производительности. В актуальной документации `torch-directml` для WSL 2 отмечен как public preview, поэтому нельзя предполагать, что любой PyTorch-проект заработает без изменений. Сначала проверяют минимальный backend, затем конкретную модель. Если проект уже построен вокруг CUDA-расширений, миграция на DirectML может потребовать больше работы, чем сохранение CUDA in WSL.
Совет: Создавайте отдельное окружение для DirectML. Это позволяет сравнить backend с CPU/CUDA и не ломает рабочий проект.
Установка PyTorch DirectML в WSL 2
- Проверьте Windows через `winver`. Документация Microsoft для `torch-directml` в WSL 2 указывает Windows 11 build 22000 или новее.
- В PowerShell выполните `wsl -l -v` и убедитесь, что нужный дистрибутив имеет VERSION 2. При необходимости обновите WSL.
- Установите актуальный Windows-драйвер видеокарты через Windows Update или сайт производителя. Для DirectML Microsoft опирается на Windows GPU driver.
- Создайте изолированное Python-окружение. В официальном примере используется Miniconda и Python 3.10; другой менеджер допустим, если версии совместимы.
- Активируйте окружение и выполните `pip install torch-directml`. До первого теста не смешивайте туда случайные CUDA-сборки и несовместимые версии torch.
- В Python импортируйте `torch` и `torch_directml`, создайте `dml = torch_directml.device()`, перенесите два маленьких тензора на `dml` и сложите их. Ожидаемый числовой результат подтверждает рабочую цепочку.
Важно: Сначала добейтесь успеха на минимальном тесте из нескольких строк. Только потом ставьте большой ML-проект.
Проверка компонентов
- Windows. `winver`. Windows 11 build 22000+
- WSL. `wsl -l -v`. VERSION 2
- GPU driver. Windows Update/сайт производителя. Актуальный драйвер
- Python env. `python --version`. Совместимая изолированная среда
- DirectML. `torch_directml.device()` + tensor op. Операция без ошибки
Предупреждение: Не устанавливайте внутри WSL отдельный Linux display driver поверх Windows GPU-драйвера только ради DirectML. Это другой стек и может запутать окружение.
Что доказывает минимальный тест
Успешный `pip install` подтверждает только разрешение Python-зависимостей. Минимальная тензорная операция проверяет гораздо больше: пакет импортируется, backend создаёт устройство, PyTorch переносит тензоры на это устройство, операция исполняется и возвращает правильный результат. Если импорт падает, ищите конфликт окружения и версий. Если device создаётся, но большая модель падает на конкретной операции, это уже вопрос поддержки оператора или особенностей модели. Поэтому диагностику ведут слоями, а не переустанавливают сразу Windows и WSL. Зафиксируйте версии Python, torch, torch-directml и драйвера — без них воспроизводить проблему сложно.
Что сохранить перед запуском проекта
- Точный build Windows и версия WSL.
- Модель GPU и версия Windows-драйвера.
- Версии Python, torch и torch-directml.
- Результат минимального DirectML-теста.
- CPU fallback или альтернативное окружение на случай несовместимого оператора.
Почему старые DirectML-гайды нужно перепроверять
Экосистема Windows AI меняется. Microsoft сообщает, что DirectML продолжает поддерживаться, но новые Windows-ориентированные сценарии развиваются рядом с Windows ML; при этом `torch-directml` остаётся отдельным актуальным путём для PyTorch в WSL. Не переносите автоматически инструкции для TensorFlow-DirectML или старых preview-сборок в новый проект. Проверяйте дату страницы и название backend. Если у вас NVIDIA и код изначально использует CUDA, сравните с официальной схемой CUDA in WSL до миграции: цель должна быть в совместимости и производительности проекта, а не просто в факте использования DirectML.
Как перейти от smoke-теста к реальному PyTorch-проекту
Минимальная операция на двух тензорах подтверждает только базовую связку `torch` → `torch-directml` → GPU. Перед обучением модели добавьте второй этап проверки: запустите небольшой фрагмент именно вашего графа, сделайте один forward pass и убедитесь, что используемые операции поддерживаются backend-ом. Public preview означает, что совместимость и производительность могут отличаться от привычного CUDA или CPU поведения, поэтому фиксируйте версии пакетов в окружении, где тест прошёл. Не оценивайте скорость по единственной первой операции: инициализация backend-а и загрузка данных могут заметно искажать первый замер; сравнивайте несколько одинаковых проходов после прогрева и измеряйте весь рабочий сценарий, а не красивый микротест. Если проект требует библиотеку, рассчитанную строго на CUDA extensions, наличие DirectML device само по себе не делает эту зависимость совместимой. В таком случае заранее держите отдельное CUDA- или CPU-окружение, вместо того чтобы бесконечно менять версии в рабочем env. При обновлении Windows, GPU driver или `torch-directml` повторяйте короткий smoke-test и тест ключевой модели: так проще понять, какой слой изменился. Для воспроизводимости сохраните `pip freeze` или эквивалентный список зависимостей вместе с версией Windows и WSL. Это превращает разовый успешный запуск в контролируемую конфигурацию, которую можно восстановить после следующего обновления.
Как отличить установку пакета от реального ускорения модели
После успешного примера с двумя тензорами сделайте второй тест на операции, которая похожа на вашу реальную нагрузку. Минимальная сумма доказывает, что DirectML device создаётся и базовая цепочка работает, но не обещает поддержку каждого оператора конкретной нейросети. Если модель падает позже, зафиксируйте название неподдерживаемой операции и версии `torch` и `torch-directml`, а затем проверьте issue tracker DirectML. Для сравнения производительности используйте одинаковый размер входных данных и несколько повторов после прогрева; первый запуск может включать инициализацию и не отражать устойчивую скорость. Не делайте вывод «GPU не работает» только по загрузке в Диспетчере задач без теста результата и времени — разные движки GPU отображаются отдельно. И наоборот, высокая загрузка не гарантирует ускорение, если данные постоянно копируются между CPU и устройством. Для проекта, который критично зависит от конкретных CUDA-расширений, заранее проверьте их совместимость: DirectML — другой backend, и пакет, написанный строго под CUDA, не становится переносимым автоматически.
Практическая проверка результата
Для реального проекта добавьте тест корректности, а не только скорости. Сравните небольшой выход модели на CPU и DirectML в допустимой для задачи точности, затем проверьте выделение памяти и стабильность нескольких последовательных проходов. Если ошибка появляется только на одном операторе, сохраните минимальный воспроизводимый пример и версию окружения — это гораздо полезнее, чем переустанавливать весь стек. Так вы понимаете, является ли проблема ограничением backend-а, конкретной зависимости или конфигурации системы.
Что учитывать
Экосистема Windows AI меняется. Microsoft сообщает, что DirectML продолжает поддерживаться, но новые Windows-ориентированные сценарии развиваются рядом с Windows ML; при этом `torch-directml` остаётся отдельным актуальным путём для PyTorch в WSL. Не переносите автоматически инструкции для TensorFlow-DirectML или старых preview-сборок в новый проект. Проверяйте дату страницы и название backend. Если у вас NVIDIA и код изначально использует CUDA, сравните с официальной схемой CUDA in WSL до…
Источники и проверка
Фактическая часть сверена по первичным источникам (в т.ч. Enable PyTorch with DirectML on WSL). Пример и формулировки — редакция N1RO на 2026-09-20.