Начало работы с ускорением GPU для машинного обучения в WSL
Машинное обучение (ML) становится ключевой частью многих рабочих процессов разработки. Независимо от того, являетесь ли вы специалистом по обработке и анализу данных, инженером машинного обучения или начинайте обучение с помощью подсистема Windows для Linux (WSL) предлагает отличную среду для запуска наиболее распространенных и популярных средств машинного обучения с ускорением GPU.
Существует множество различных способов настройки этих средств. Например, NVIDIA CUDA в WSL, TensorFlow-DirectML и PyTorch-DirectML предлагают различные способы использования GPU для машинного обучения с WSL. Дополнительные сведения о причинах выбора одного или другого см. в статье об обучении gpu с ускорением машинного обучения.
В этом руководстве показано, как настроить:
- NVIDIA CUDA, если у вас есть графические карта NVIDIA и запуск примера контейнера платформы машинного обучения
- TensorFlow-DirectML и PyTorch-DirectML на графических карта AMD, Intel или NVIDIA
Необходимые компоненты
- Убедитесь, что вы работаете под управлением Windows 11 или Windows 10 версии 21H2 или более поздней.
- Установите WSL и настройте имя пользователя и пароль для дистрибутива Linux.
Настройка NVIDIA CUDA с помощью Docker
Установите Docker Desktop или установите подсистему Docker непосредственно в WSL, выполнив следующую команду.
curl https://get.docker.com | sh
sudo service docker start
Если вы установили подсистему Docker непосредственно, установите контейнер NVIDIA набор средств выполните указанные ниже действия.
Настройте стабильный репозиторий для контейнера NVIDIA набор средств, выполнив следующие команды:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-keyring.gpg
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-docker-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
Установите пакеты и зависимости среды выполнения NVIDIA, выполнив следующие команды:
sudo apt-get update
sudo apt-get install -y nvidia-docker2
Запустите контейнер платформы машинного обучения и пример.
Чтобы запустить контейнер платформы машинного обучения и начать использовать GPU с этим контейнером NVIDIA NGC TensorFlow, введите команду:
docker run --gpus all -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3
Вы можете запустить предварительно обученный пример модели, встроенный в этот контейнер, выполнив команды:
cd nvidia-examples/cnn/
python resnet.py --batch_size=64
Дополнительные способы установки и использования NVIDIA CUDA можно найти в руководстве пользователя NVIDIA CUDA в WSL.
Настройка TensorFlow-DirectML или PyTorch-DirectML
Скачайте и установите последний драйвер с веб-сайта поставщиков GPU: AMD, Intel или NVIDIA.
Настройка среды Python.
Рекомендуется настроить виртуальную среду Python. Существует множество средств, которые можно использовать для настройки виртуальной среды Python— для этих инструкций мы будем использовать Miniconda в Anaconda.
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create --name directml python=3.7 -y
conda activate directml
Установите платформу машинного обучения, поддерживаемую DirectML по вашему выбору.
TensorFlow-DirectML:
pip install tensorflow-directml
PyTorch-DirectML:
sudo apt install libblas3 libomp5 liblapack3
pip install pytorch-directml
Выполните быстрый пример добавления в интерактивном сеансе Python для TensorFlow-DirectML или PyTorch-DirectML , чтобы убедиться, что все работает.
Если у вас возникли вопросы или возникли проблемы, посетите репозиторий DirectML на GitHub.
Несколько GPU
Если на компьютере есть несколько GPU, вы также можете получить доступ к ним внутри WSL. Однако вы сможете получить доступ только к одному за раз. Чтобы выбрать конкретный GPU, задайте для переменной среды ниже имя GPU, как оно отображается в диспетчере устройств:
export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"
Это позволит выполнить строковое совпадение, поэтому если задать для него значение NVIDIA, он будет соответствовать первому GPU, который начинается с NVIDIA.
Дополнительные ресурсы
Windows Subsystem for Linux