Tutorial ini menunjukkan cara menyesuaikan model mistralai/Mixtral-8x7B-v0.1
pada cluster Slurm multi-node dan multi-GPU di Google Cloud. Cluster ini menggunakan dua instance virtual machine (VM) a4-highgpu-8g, yang masing-masing memiliki 8 GPU NVIDIA B200.
Dua proses utama yang dijelaskan dalam tutorial ini adalah sebagai berikut:
- Deploy cluster Slurm berperforma tinggi dan siap produksi menggunakan Google Cloud Cluster Toolkit. Sebagai bagian dari deployment ini, Anda akan membuat image VM kustom dengan software yang diperlukan sudah diinstal sebelumnya. Anda juga menyiapkan sistem file Lustre bersama dan mengonfigurasi jaringan berkecepatan tinggi.
- Setelah cluster di-deploy, Anda menjalankan tugas penyesuaian terdistribusi dengan menggunakan kumpulan skrip yang menyertai tutorial ini. Tugas ini memanfaatkan PyTorch Fully Sharded Data Parallel (FSDP), yang Anda akses melalui library Transformer Reinforcement Learning (TRL) Hugging Face.
Tutorial ini ditujukan untuk engineer, peneliti, administrator, dan operator platform machine learning (ML), serta spesialis data dan AI yang tertarik untuk mendistribusikan beban kerja AI di beberapa node dan GPU.
Tujuan
- Mengakses Mixtral menggunakan Hugging Face
- Instal Cluster Toolkit
- Menyiapkan lingkungan Anda
- Buat dan deploy cluster Slurm GPU Tinggi A4 tingkat produksi.
- Konfigurasi lingkungan multi-node untuk pelatihan terdistribusi dengan FSDP.
- Sesuaikan model Mixtral dengan menggunakan class
trl.SFTTrainerHugging Face. - Siapkan data ke SSD lokal.
- Pantau tugas Anda.
- Jalankan pembersihan.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan API yang diperlukan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable compute.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com lustre.googleapis.com
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan API yang diperlukan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable compute.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com lustre.googleapis.com
-
Memberikan peran ke akun pengguna Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/compute.admin, roles/iam.serviceAccountUser, roles/file.editor, roles/storage.admin, roles/serviceusage.serviceUsageAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Ganti kode berikut:
PROJECT_ID: Project ID Anda.USER_IDENTIFIER: ID untuk akun pengguna Anda. Misalnya,myemail@example.com.ROLE: Peran IAM yang Anda berikan ke akun pengguna Anda.
- Aktifkan akun layanan default untuk project Google Cloud Anda:
gcloud iam service-accounts enable PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --project=PROJECT_ID
Ganti PROJECT_NUMBER dengan nomor project Anda. Untuk meninjau nomor project Anda, lihat Mendapatkan project yang sudah ada.
- Berikan peran Editor (
roles/editor) ke akun layanan default:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role=roles/editor
- Buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
- Aktifkan Login OS untuk project Anda:
gcloud compute project-info add-metadata --metadata=enable-oslogin=TRUE
- Login atau buat akun Hugging Face.
- Instal dependensi yang Anda perlukan untuk menggunakan Cluster Toolkit.
Mengakses Mixtral menggunakan Hugging Face
Untuk menggunakan Hugging Face guna mengakses Mixtral, lakukan hal berikut:
- Login ke Hugging Face dan jelajahi model Mixtral.
- Buat token akses
readHugging Face. - Salin dan simpan nilai token. Anda akan menggunakannya nanti dalam tutorial ini.
Instal Cluster Toolkit
Cluster Toolkit adalah alat open source yang menyederhanakan deployment workload komputasi berperforma tinggi (HPC), kecerdasan buatan (AI), dan machine learning (ML) di Google Cloud. Untuk mengetahui informasi selengkapnya tentang cara menggunakan gcluster dan mengelola cluster, lihat Ringkasan Cluster Toolkit.
Siapkan versi Cluster Toolkit:
Download rilis:
Tentukan jalur
gcluster:
Menyiapkan lingkungan Anda
Untuk menyiapkan lingkungan Anda, ikuti langkah-langkah berikut:
Tetapkan variabel lingkungan default:
Ganti kode berikut:
YOUR_PROJECT_ID: nama Google Cloud project tempat Anda ingin membuat cluster Slurm.YOUR_ZONE: zona tempat pemesanan Anda berada.YOUR_REGION: region tempat pemesanan Anda berada.YOUR_RESERVATION_NAME: URL atau nama reservasi yang ingin Anda gunakan untuk membuat cluster Slurm.YOUR_CLUSTER_NAME: nama deployment Anda. Gunakan nama pendek yang hanya berisi huruf dan angka (misalnya,a4high). Nama ini juga ditetapkan ke cluster Slurm yang dibuat oleh deployment.YOUR_GCS_BUCKET: nama bucket tempat Anda menyimpan hasil dari titik pemeriksaan pelatihan. Tentukan bucket yang ada atau buat bucket baru. Sebelum membuatnya, pahami persyaratan penamaan bucket.YOUR_HF_TOKEN: token Hugging Face yang Anda buat di langkah sebelumnya.
Membuat bucket Cloud Storage:
Membuat cluster Slurm A4
Untuk membuat cluster Slurm A4, lakukan hal berikut:
Timpa file
a4high-slurm-deployment.yamldi direktoriexamples/machine-learning/a4-highgpu-8gdengan variabel lingkungan Anda dengan menjalankan perintah berikut:Buka file
a4high-slurm-blueprint.yamldi direktoriexamples/machine-learning/a4-highgpu-8g, lalu edit untuk menggunakan Managed Lustre untuk direktori/homebersama sebagai berikut:- Hapus blok modul
homefsdefault dengansource: modules/file-system/filestore. - Aktifkan modul
lustrefs(blokhomefsdenganremote_mount: lustrefs) danprivate-service-access. - Di blok
vars, konfigurasi hal berikut:- Ubah nilai
install_managed_lustredi/var/tmp/slurm_vars.jsonmenjaditrue. - Tetapkan parameter
per_unit_storage_throughputke500. - Tetapkan parameter
lustre_size_gibke36000. - Hapus tanda komentar
lustre_instance_id: lustre-instance. - Menambahkan komentar atau menghapus
filestore_ip_rangeyang tidak digunakan.
- Ubah nilai
- Hapus blok modul
Deploy cluster:
Perintah
./gcluster deploymemulai proses dua fase, yang adalah sebagai berikut:- Fase pertama membuat image kustom dengan semua software yang sudah diinstal sebelumnya, yang dapat memerlukan waktu hingga 35 menit untuk diselesaikan.
- Fase kedua men-deploy cluster menggunakan image kustom tersebut. Proses ini akan selesai lebih cepat daripada fase pertama.
Menyiapkan workload Anda
Untuk menyiapkan beban kerja, ikuti langkah-langkah berikut:
Membuat skrip beban kerja
Untuk membuat skrip yang akan digunakan workload penyesuaian, ikuti langkah-langkah berikut:
Untuk menyiapkan lingkungan virtual Python, buat file
install_environment.shdengan konten berikut:Untuk menentukan dependensi Python untuk skrip pelatihan, buat file
requirements-fsdp.txtdengan konten berikut:Tentukan
train-mixtral.pysebagai skrip pelatihan utama:Untuk menentukan tugas yang akan dijalankan pada cluster Slurm, buat file
train-mixtral.shdengan konten berikut:
Upload skrip ke cluster Slurm Anda
Untuk mengupload skrip yang Anda buat di bagian sebelumnya ke cluster Slurm, ikuti langkah-langkah berikut:
Tetapkan variabel
LOGIN_NODEdengan mengambil nama node login untuk cluster Anda:Variabel
LOGIN_NODEmenyimpan nilai yang mirip dengan${DEPLOYMENT_NAME}-login-001.Buat aturan firewall:
Upload skrip Anda ke direktori utama node login:
Menghubungkan ke cluster Slurm
Hubungkan ke cluster Slurm dengan menghubungkan ke node login melalui SSH:
Menginstal framework dan alat
Setelah Anda terhubung ke node login, instal framework dan alat yang diperlukan dengan menjalankan skrip penginstalan di node komputasi:
Perintah ini menyiapkan lingkungan virtual, menginstal semua dependensi, dan
mendownload bobot model Mixtral ke ~/Mixtral-8x7B-v0.1. Proses ini bisa memerlukan waktu lebih dari 30 menit hingga selesai.
Menjalankan langkah ini melalui srun akan mendelegasikan skrip penginstalan dari node login ke node komputasi yang dialokasikan, sehingga memungkinkan skrip mengakses driver GPU selama kompilasi.
Mulai workload penyesuaian
Untuk memulai workload pelatihan, lakukan hal berikut:
Kirimkan tugas ke penjadwal Slurm:
Memantau workload Anda
Untuk memantau progres tugas penyesuaian, gunakan metode berikut:
Di node login di cluster Slurm, Anda dapat memantau progres tugas dengan memeriksa file output yang dibuat di direktori
home:Jika tugas Anda berhasil dimulai, file
.errakan menampilkan status progres yang diperbarui seiring berjalannya tugas Anda.Pekerjaan ini memiliki dua fase utama:
- Menyalin model dasar berukuran besar ke SSD lokal setiap node komputasi.
- Tugas pelatihan, yang dimulai setelah penyalinan model selesai.
Seluruh tugas akan memerlukan waktu sekitar 60 menit untuk dijalankan.
Anda juga dapat memantau penggunaan GPU di cluster Slurm untuk memverifikasi bahwa tugas penyesuaian Anda berjalan secara efisien. Untuk melakukannya, buka link berikut di browser Anda:
https://console.cloud.google.com/monitoring/metrics-explorer?project=YOUR_PROJECT_ID&pageState=%7B%22xyChart%22%3A%7B%22dataSets%22%3A%5B%7B%22timeSeriesFilter%22%3A%7B%22filter%22%3A%22metric.type%3D%5C%22agent.googleapis.com%2Fgpu%2Futilization%5C%22%20resource.type%3D%5C%22gce_instance%5C%22%22%2C%22perSeriesAligner%22%3A%22ALIGN_MEAN%22%7D%2C%22plotType%22%3A%22LINE%22%7D%5D%7D%7DAtau, Anda dapat memasukkan perintah langsung di terminal:
Saat memantau workload, Anda dapat melihat hal berikut:
Penggunaan GPU: untuk tugas penyesuaian yang berjalan lancar, Anda dapat melihat penggunaan semua 16 GPU Anda (delapan GPU untuk setiap VM dalam cluster) meningkat dan stabil ke tingkat tertentu selama pelatihan.
Durasi tugas: tugas akan memerlukan waktu sekitar satu jam untuk diselesaikan.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus resource
Jalankan perintah berikut untuk menghapus resource yang Anda buat dalam tutorial ini:
Untuk menghapus cluster Slurm, buka direktori
cluster-toolkitdan jalankan perintah berikut:Menghapus bucket Anda:
Untuk menghapus gambar Packer, buka browser web Anda, buka halaman berikut, telusuri gambar spesifik Anda, lalu klik Hapus.
Menghapus project Anda
Menghapus Google Cloud project:
gcloud projects delete PROJECT_ID
Langkah berikutnya
- Men-deploy ulang cluster Slurm
- Menguji performa jaringan di cluster Slurm
- Memantau VM di cluster Slurm
- Buat endpoint penyaluran: Setelah memiliki model yang di-fine-tune, Anda dapat men-deploy-nya ke endpoint penyaluran menggunakan Google Kubernetes Engine (GKE) atau Vertex AI agar dapat diakses untuk inferensi.
- Pelajari layanan penyimpanan yang direkomendasikan untuk workload AI dan ML