Mulai menggunakan akselerasi GPU untuk ML di WSL

Pembelajaran mesin (ML) menjadi bagian penting dari banyak alur kerja pengembangan. Baik Anda seorang ilmuwan data, insinyur ML, atau memulai perjalanan pembelajaran Anda dengan ML, Subsistem Windows untuk Linux (WSL) menawarkan lingkungan yang bagus untuk menjalankan alat ML yang dipercepat GPU yang paling umum dan populer.

Ada banyak cara berbeda untuk menyiapkan alat-alat ini. Misalnya, NVIDIA CUDA di WSL, TensorFlow-DirectML dan PyTorch-DirectML semuanya menawarkan berbagai cara anda dapat menggunakan GPU untuk ML dengan WSL. Untuk mempelajari selengkapnya tentang alasan memilih satu versus yang lain, lihat Pelatihan ML yang dipercepat GPU.

Panduan ini akan menunjukkan cara menyiapkan:

  • NVIDIA CUDA jika Anda memiliki kartu grafis NVIDIA dan menjalankan contoh kontainer kerangka kerja ML
  • TensorFlow-DirectML dan PyTorch-DirectML pada kartu grafis AMD, Intel, atau NVIDIA Anda

Prasyarat

Menyiapkan NVIDIA CUDA dengan Docker

  1. Unduh dan instal driver terbaru untuk GPU NVIDIA Anda

  2. Instal Docker Desktop atau instal mesin Docker langsung di WSL dengan menjalankan perintah berikut

    curl https://get.docker.com | sh
    
    sudo service docker start
    
  3. Jika Anda menginstal mesin Docker secara langsung, instal NVIDIA Container Toolkit dengan mengikuti langkah-langkah di bawah ini.

    Siapkan repositori stabil untuk NVIDIA Container Toolkit dengan menjalankan perintah berikut:

    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
    

    Instal paket runtime NVIDIA dan dependensi dengan menjalankan perintah:

    sudo apt-get update
    
    sudo apt-get install -y nvidia-docker2
    
  4. Jalankan kontainer dan sampel kerangka kerja pembelajaran mesin.

    Untuk menjalankan kontainer kerangka kerja pembelajaran mesin dan mulai menggunakan GPU Anda dengan kontainer NVIDIA NGC TensorFlow ini, masukkan perintah:

    docker run --gpus all -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3
    

    TensorFlow with CUDA running inside a Docker container

    Anda dapat menjalankan sampel model yang telah dilatih sebelumnya yang dibangun ke dalam kontainer ini dengan menjalankan perintah:

    cd nvidia-examples/cnn/
    
    python resnet.py --batch_size=64
    

    TensorFlow sample model training within Docker container

Cara tambahan untuk mendapatkan penyiapan dan penggunaan NVIDIA CUDA dapat ditemukan di NVIDIA CUDA pada Panduan Pengguna WSL.

Menyiapkan TensorFlow-DirectML atau PyTorch-DirectML

  1. Unduh dan instal driver terbaru dari situs web vendor GPU Anda: AMD, Intel, atau NVIDIA.

  2. Menyiapkan lingkungan Python.

    Sebaiknya siapkan lingkungan Python virtual. Ada banyak alat yang dapat Anda gunakan untuk menyiapkan lingkungan Python virtual — untuk instruksi ini, kami akan menggunakan 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
    
  3. Instal kerangka kerja pembelajaran mesin yang didukung oleh DirectML pilihan Anda.

    TensorFlow-DirectML:

    pip install tensorflow-directml
    

    PyTorch-DirectML:

    sudo apt install libblas3 libomp5 liblapack3
    
    pip install pytorch-directml
    
  4. Jalankan sampel tambahan cepat dalam sesi Python interaktif untuk TensorFlow-DirectML atau PyTorch-DirectML untuk memastikan semuanya berfungsi.

Jika Anda memiliki pertanyaan atau mengalami masalah, kunjungi repositori DirectML di GitHub.

Beberapa GPU

Jika Anda memiliki beberapa GPU di komputer, Anda juga dapat mengaksesnya di dalam WSL. Namun, Anda hanya akan dapat mengakses satu per satu. Untuk memilih GPU tertentu, atur variabel lingkungan di bawah ini ke nama GPU Anda seperti yang muncul di manajer perangkat:

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

Ini akan melakukan kecocokan string, jadi jika Anda mengaturnya ke "NVIDIA" itu akan cocok dengan GPU pertama yang dimulai dengan "NVIDIA".

Sumber Daya Tambahan