Komputasi berkemampuan GPU

Catatan

Beberapa jenis instans berkemampuan GPU berada di Beta dan ditandai seperti di daftar drop-down saat Anda memilih jenis driver dan pekerja selama pembuatan komputasi.

Gambaran Umum

Azure Databricks mendukung komputasi yang dipercepat dengan unit pemrosesan grafis (GPU). Artikel ini menjelaskan cara membuat komputasi dengan instans berkemampuan GPU dan menjelaskan driver dan pustaka GPU yang diinstal pada instans tersebut.

Untuk mempelajari selengkapnya tentang pembelajaran mendalam tentang komputasi berkemampuan GPU, lihat Pembelajaran mendalam.

Membuat komputasi GPU

Membuat komputasi GPU mirip dengan membuat komputasi apa pun. Anda harus memperhatikan hal-hal berikut:

  • Versi Runtime Databricks harus berupa versi berkemampuan GPU, seperti Runtime 13.3 LTS ML (GPU, Scala 2.12.15, Spark 3.4.1).
  • Jenis Pekerja dan Jenis Driver harus berjenis instans GPU.

Jenis instans yang didukung

Azure Databricks mendukung jenis instans berikut:

  • Seri jenis instans NC: Standard_NC12, Standard_NC24
  • Seri jenis instans NC v3: Standard_NC6s_v3, Standard_NC12s_v3, Standard_NC24s_v3
  • Seri jenis instans NC T4 v3: Standard_NC4as_T4_v3, Standard_NC8as_T4_v3, Standard_NC16as_T4_v3, Standard_NC64as_T4_v3
  • Seri jenis instans NC A100 v4: Standard_NC24ads_A100_v4, Standard_NC48ads_A100_v4, Standard_NC96ads_A100_v4
  • Seri jenis instans ND A100 v4: Standard_ND96asr_v4
  • Seri jenis instans NV A10 v5: Standard_NV36ads_A10_v5, Standard_NV36adms_A10_v5, Standard_NV72ads_A10_v5
    • Standard_NV72ads_A10_v5 tidak kompatibel dengan PyTorch 2.0+, dan menimbulkan kesalahan CUDA saat menjalankan beban kerja multi-GPU. Karena Databricks Runtime ML 14.0 ke atas pra-instal PyTorch 2.0+, sebaiknya gunakan Databricks Runtime ML 13.x atau berjalan pip install torch==1.13.1 secara manual jika Anda menjalankan PyTorch pada beban kerja multi-GPU.

Lihat Harga Azure Databricks untuk daftar terbaru jenis instans GPU yang didukung serta wilayah ketersediaannya. Penyebaran Azure Databricks Anda harus berada di wilayah yang didukung untuk meluncurkan komputasi berkemampuan GPU.

Penjadwalan GPU

Databricks Runtime mendukung penjadwalan sadar GPU dari Apache Spark 3.0. Azure Databricks melakukan prakonfigurasi pada komputasi GPU.

Penjadwalan GPU tidak diaktifkan pada komputasi simpul tunggal.

spark.task.resource.gpu.amount adalah satu-satunya konfigurasi Spark yang terkait dengan penjadwalan berbasis GPU yang mungkin perlu Anda ubah. Konfigurasi default menggunakan satu GPU untuk setiap tugas, sehingga sangat ideal untuk beban kerja inferensi terdistribusi dan pelatihan terdistribusi, jika Anda menggunakan semua node GPU. Untuk melakukan pelatihan terdistribusi pada subset simpul, yang membantu mengurangi overhead komunikasi selama pelatihan terdistribusi, Databricks merekomendasikan pengaturan spark.task.resource.gpu.amount ke jumlah GPU per simpul pekerja dalam konfigurasi Spark komputasi.

Untuk tugas PySpark, Azure Databricks secara otomatis memetakan ulang GPU yang ditetapkan ke indeks 0, 1, .... Di konfigurasi default yang menggunakan satu GPU untuk setiap tugas, kode Anda cukup menggunakan GPU default tanpa memeriksa GPU mana yang ditetapkan ke tugas. Jika Anda mengatur beberapa GPU untuk setiap tugas, misalnya 4, kode Anda dapat mengasumsikan bahwa indeks GPU yang ditetapkan selalu 0, 1, 2, dan 3. Jika Anda membutuhkan indeks fisik GPU yang ditetapkan, Anda bisa mendapatkannya dari variabel lingkungan CUDA_VISIBLE_DEVICES.

Jika Anda menggunakan Scala, Anda bisa mendapatkan indeks GPU yang ditetapkan ke tugas dari TaskContext.resources().get("gpu").

Untuk rilis Databricks Runtime di bawah 7.0, untuk menghindari konflik di antara beberapa tugas Spark yang mencoba menggunakan GPU yang sama, Azure Databricks secara otomatis mengonfigurasi komputasi GPU sehingga ada paling banyak satu tugas yang berjalan per simpul. Dengan begitu, tugas dapat menggunakan semua GPU pada node tanpa mengalami konflik dengan tugas lain.

driver NVIDIA GPU, CUDA, dan cuDNN

Secara default, Azure Databricks menginstal driver NVIDIA serta pustaka yang diperlukan untuk menggunakan GPU pada driver Spark dan instans pekerja:

  • Toolkit CUDA yang diinstal di /usr/local/cuda.
  • cuDNN: NVIDIA CUDA Deep Neural Network Library.
  • NCCL: NVIDIA Collective Communications Library.

Versi driver NVIDIA yang disertakan adalah 535.54.03, yang mendukung CUDA 11.0. Untuk seri jenis instans NV A10 v5, versi driver NVIDIA yang disertakan adalah 525.105.17.

Untuk versi pustaka yang disertakan, lihat catatan rilis untuk versi Runtime bahasa umum Databricks tertentu yang Anda gunakan.

Catatan

Perangkat lunak ini berisi kode sumber yang disediakan oleh NVIDIA Corporation. Secara khusus, untuk mendukung GPU, Azure Databricks menyertakan kode dari Sampel CUDA.

Perjanjian Lisensi Pengguna Akhir (EULA) NVIDIA

Saat Anda memilih "Versi Runtime Databricks" dengan dukungan GPU di Azure Databricks, Anda secara implisit menyetujui syarat dan ketentuan yang diuraikan dalam EULA NVIDIA sehubungan dengan pustaka CUDA, cuDNN, dan Tesla, dan Perjanjian Lisensi Pengguna Akhir NVIDIA (dengan Tambahan NCCL) untuk pustaka NCCL.

Layanan Kontainer Databricks pada komputasi GPU

Penting

Fitur ini ada di Pratinjau Publik.

Anda dapat menggunakan Databricks Container Services pada komputasi dengan GPU untuk membuat lingkungan pembelajaran mendalam portabel dengan pustaka yang disesuaikan. Lihat Menyesuaikan kontainer dengan Layanan Kontainer Databricks untuk instruksi.

Untuk membuat gambar kustom untuk komputasi GPU, Anda harus memilih versi runtime standar alih-alih Databricks Runtime ML untuk GPU. Saat Anda memilih Gunakan kontainer Docker Anda sendiri, Anda dapat memilih komputasi GPU dengan versi runtime standar. Gambar kustom untuk GPU didasarkan pada kontainer CUDA resmi, yang berbeda dari Databricks Runtime ML untuk GPU.

Saat Anda membuat gambar kustom untuk komputasi GPU, Anda tidak dapat mengubah versi driver NVIDIA, karena harus cocok dengan versi driver pada komputer host.

databricksruntimeHub Docker berisikan gambar dasar contoh dengan kemampuan GPU. Dockerfiles yang digunakan untuk menghasilkan gambar-gambar ini terletak di contoh kontainer repositori GitHub, yang juga berisikan rincian tentang apa yang disediakan gambar contoh dan cara menyesuaikannya.