Habilitación de PyTorch con DirectML en WSL 2

Esta versión preliminar proporciona a los alumnos y principiantes una manera de empezar a desarrollar sus conocimientos en el espacio de aprendizaje automático (ML) en el hardware existente mediante el paquete torch-directml. Una vez configurado, puede empezar con nuestros ejemplos.

Nota:

Parte de la información hace referencia al producto de versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.

Comprobación de la versión de Windows

El paquete torch-directml en el Subsistema de Windows para Linux nativo (WSL) funciona a partir de Windows 11. Para comprobar el número de versión de compilación, ejecute winver mediante el comando Run (tecla del logo de Windows + R).

Comprobación de las actualizaciones del controlador de GPU

Asegúrese de que tiene los controladores de GPU más recientes instalados. Seleccione Buscar actualizaciones en la sección Windows Update de la aplicación de Configuración.

Configuración de la versión preliminar de Torch-DirectML

Instalación de WSL 2

Para configurar el subsistema de Windows para Linux (WSL) 2, siga las instrucciones de la Instalación de WSL.

A continuación, instale el controlador de GUI de WSL siguiendo las instrucciones del archivo README.md en el repositorio de GitHub microsoft/wslg.

Configuración del entorno de Python

Se recomienda configurar un entorno de Python virtual dentro de la instancia de WSL 2. Existen muchas herramientas que puede usar para configurar un entorno de Python virtual; en este tema, usaremos la característica Miniconda de Anaconda. En el resto de esta configuración se da por supuesto que usa un entorno de Miniconda.

Instale Miniconda siguiendo la guía de instalación en el sitio de Anaconda o ejecutando los siguientes comandos en WSL.

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 
bash Miniconda3-latest-Linux-x86_64.sh

Una vez instalado Miniconda, cree un entorno de Python denominado directml y actívelo mediante los siguientes comandos:

conda create --name directml -y
conda activate directml

Instalación de PyTorch y el complemento Torch-DirectML

Nota:

El paquete torch-directml solo admite PyTorch 1.13.

La versión más reciente de Torch-DirectML sigue un modelo de complemento, lo que significa que tiene dos paquetes para instalar. Primero, instale todas las dependencias de PyTorch, para lo que debe ejecutar los siguientes comandos:

conda install numpy pandas tensorboard matplotlib tqdm pyyaml -y
pip install opencv-python
pip install wget
pip install torchvision

A continuación, instale PyTorch. Para nuestros fines, solo necesita instalar la versión de la CPU, pero si necesita otras plataformas de proceso, siga las instrucciones de instalación en el sitio web de PyTorch.

conda install pytorch cpuonly -c pytorch

Por último, instale el complemento Torch-DirectML.

pip install torch-directml

Comprobación y creación de dispositivos

Una vez instalado el paquete Torch-DirectML, puede comprobar que se ejecuta correctamente agregando dos tensores. En primer lugar, inicie una sesión interactiva de Python e importe Torch con las siguientes líneas:

import torch
import torch_directml
dml = torch_directml.device()

La versión actual del complemento Torch-DirectML se asigna al back-end de Torch "PrivateUse1". La nueva API torch_directml.device() es un cómodo contenedor para enviar los tensores al dispositivo DirectML.

Con el dispositivo DirectML creado, ahora puede definir dos tensores simples; un tensor que contiene 1 y otro que contiene 2. Coloque los tensores en el dispositivo "dml".

tensor1 = torch.tensor([1]).to(dml) # Note that dml is a variable, not a string!
tensor2 = torch.tensor([2]).to(dml)

Agregue los tensores e imprima los resultados.

dml_algebra = tensor1 + tensor2
dml_algebra.item()

Debería ver que el número 3 es la salida, como en el ejemplo siguiente.

>>> import torch
>>> tensor1 = torch.tensor([1]).to(dml)
>>> tensor2 = torch.tensor([2]).to(dml)
>>> dml_algebra = tensor1 + tensor2
>>> dml_algebra.item()
3

PyTorch con ejemplos de DirectML y comentarios

Ahora está listo para empezar a aprender más sobre el aprendizaje automático. Consulte nuestros ejemplos para comenzar. Si tiene problemas o tiene comentarios sobre el paquete PyTorch con DirectML, póngase en contacto con nuestro equipo aquí.