Tutorial ini menunjukkan cara melatih model bahasa besar (LLM) pada cluster Slurm multi-node dan multi-GPU di Google Cloud. Model yang Anda gunakan dalam tutorial ini didasarkan pada model parameter Qwen2 1,5 miliar. Cluster Slurm menggunakan dua 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:
- Men-deploy cluster Slurm berperforma tinggi dan berkualitas produksi menggunakan Google Cloud Cluster Toolkit. Sebagai bagian dari deployment ini, Anda akan membuat image VM kustom dengan software yang diperlukan yang telah diinstal sebelumnya. Anda juga akan menyiapkan instance Filestore bersama, dan mengonfigurasi jaringan RDMA berkecepatan tinggi.
- Setelah cluster di-deploy, Anda menjalankan tugas pra-pelatihan terdistribusi menggunakan set skrip yang disertakan dalam tutorial ini. Tugas ini memanfaatkan library Hugging Face Accelerate.
Tutorial ini ditujukan untuk engineer, peneliti, administrator dan operator platform machine learning (ML), serta untuk spesialis data dan AI yang tertarik untuk men-deploy cluster Slurm berperforma tinggi di Google Cloud untuk melatih LLM.
Tujuan
- Akses model Qwen2 menggunakan Hugging Face.
- Menyiapkan lingkungan Anda.
- Membuat dan men-deploy cluster Slurm A4 tingkat produksi.
- Latih model Qwen2 menggunakan library Accelerate.
- Memantau 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
-
Instal Google Cloud CLI.
-
Konfigurasi gcloud CLI agar menggunakan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Login ke gcloud CLI dengan identitas gabungan Anda.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih project Google Cloud .
Peran yang diperlukan untuk memilih atau membuat project
- Memilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project apa pun yang perannya telah diberikan kepada Anda.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat project Google Cloud :
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.
-
Pastikan penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan API yang diperlukan, jika belum diaktifkan:
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 Service Usage Admin (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
-
Berikan 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.serviceUsageAdmin, roles/compute.osAdminLogin, roles/iap.tunnelResourceAccessorgcloud 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 akun. Untuk mengetahui contohnya, lihat Merepresentasikan pengguna workforce pool dalam kebijakan IAM.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@ \ --project=PROJECT_ID
Ganti PROJECT_NUMBER dengan nomor project Anda. Untuk meninjau nomor project Anda, lihat Mendapatkan project yang ada.
- Berikan peran Editor (
roles/editor) ke akun layanan default:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@" \ --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.
Mengakses Qwen2 menggunakan Hugging Face
Untuk menggunakan Hugging Face guna mengakses Qwen2, lakukan hal berikut:
Menginstal 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 CLI 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 project Google Cloud tempat Anda ingin membuat cluster GKE.YOUR_CLUSTER_NAME: nama cluster Slurm yang ingin Anda buat.YOUR_ZONE: zona tempat pemesanan Anda berada.YOUR_REGION,: region tempat pemesanan Anda berada.RESERVATION_NAME: URL atau nama pemesanan yang ingin Anda gunakan untuk membuat cluster Slurm.YOUR_GCS_BUCKET: nama bucket tempat Anda menyimpan hasil dari checkpoint pelatihan. 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, ikuti langkah-langkah berikut:
Buat file
a4high-slurm-deployment.yaml:Gunakan perintah
gcluster createuntuk membuat manifes Terraform:Patch manifes:
Deploy cluster:
Perintah
gcluster deployadalah proses dua fase, yaitu sebagai berikut:Fase pertama membangun image kustom dengan semua software yang sudah diinstal sebelumnya, yang dapat memerlukan waktu hingga 50 menit.
Fase kedua men-deploy cluster menggunakan image kustom tersebut. Proses ini umumnya memerlukan waktu lebih singkat daripada fase pertama.
Jika fase pertama berhasil, tetapi fase kedua gagal, Anda dapat mencoba men-deploy cluster Slurm lagi dengan melewati fase pertama:
Menyiapkan workload Anda
Untuk menyiapkan workload Anda, ikuti langkah-langkah berikut:
Membuat skrip workload
Untuk membuat skrip yang akan digunakan workload pelatihan Anda, ikuti langkah-langkah berikut:
Untuk menyiapkan lingkungan virtual Python, buat file
install_environment.shdengan konten berikut:Untuk menentukan konfigurasi tugas fine-tuning, buat file
accelerate_config.yamldengan konten berikut:Untuk menentukan tugas yang akan dijalankan oleh tugas di cluster Slurm, buat file
submit.slurmdengan konten berikut:Untuk menentukan dependensi bagi tugas fine-tuning Anda, buat file
requirements.txtdengan konten berikut:
Catatan: Tutorial ini tidak menggunakan dependensi NVIDIA dan PyTorch versi terbaru. Jika Anda memerlukan dependensi yang lebih baru, lihat dokumentasi NVIDIA dan dokumentasi PyTorch.Untuk mendownload, melakukan tokenisasi, dan melakukan prapemrosesan set data ke dalam format yang siap untuk pelatihan, buat file
preprocess_data.pydengan konten berikut:Untuk menentukan petunjuk bagi tugas Anda, buat file
train.pydengan konten berikut:
Mengupload skrip ke cluster Slurm
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${CLUSTER_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 dengan melakukan hal berikut:
Siapkan lingkungan virtual Python dengan semua dependensi yang diperlukan:
Memulai pra-pelatihan workload Anda
Untuk mulai melatih workload, lakukan hal berikut:
Kirim tugas ke penjadwal Slurm:
Pada 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 progres tugas Anda.
Memantau workload Anda
Anda 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=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%7D
Atau, Anda dapat memasukkan perintah langsung di terminal:
Saat memantau workload, Anda dapat melihat hal berikut:
Penggunaan GPU: untuk tugas fine-tuning yang sehat, Anda akan melihat penggunaan semua 16 GPU (delapan GPU untuk setiap VM di cluster) meningkat dan stabil ke tingkat tertentu selama pelatihan. UJI COBA
Durasi tugas: tugas akan memerlukan waktu sekitar satu jam untuk diselesaikan.
Mendownload model Anda
Setelah Anda berhasil menjalankan tugas, model terlatih Anda akan disimpan di direktori ~/qwen2-from-scratch-on-smollm-fineweb/ pada node login. Karena direktori bersama persisten ini dipasang di semua node dalam cluster, checkpoint model Anda tetap tersedia bahkan setelah tugas selesai atau node komputasi dibatalkan alokasinya.
Anda dapat mendownload model yang disimpan dari node login ke komputer lokal menggunakan perintah gcloud compute scp, seperti yang ditunjukkan dalam contoh berikut:
Setelah mendownload model, Anda dapat melakukan hal berikut:
- Memuat model untuk inferensi: Gunakan framework Hugging Face Transformers untuk memuat direktori
qwen2-trained-model/dan melakukan inferensi dengan model Qwen2 yang baru dilatih. - Fine-tuning tambahan: Gunakan checkpoint yang disimpan sebagai titik awal untuk fine-tuning tambahan pada set data yang lebih spesifik.
- Kirim model ke Hugging Face Hub: Bagikan model terlatih Anda dengan mengirimkannya ke Hugging Face Hub.
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
Untuk menghapus cluster Slurm, jalankan perintah
gcluster destroy:Untuk menghapus bucket Cloud Storage, ikuti langkah-langkah berikut:
Untuk menghapus image Packer, buka browser web Anda, buka halaman berikut, telusuri image spesifik Anda, lalu klik Delete.
Untuk menghapus semua jaringan VPC, aturan firewall, router, IP, dan subnet yang terkait dengan project, lakukan hal berikut:
Menghapus project Anda
Menghapus Google Cloud project:
gcloud projects delete PROJECT_ID