Tutorial ini menunjukkan cara menyesuaikan Gemma model bahasa besar (LLM), kelompok model terbuka, menggunakan unit (GPU) di Google Kubernetes Engine (GKE) dengan Transformers galeri foto dari Hugging Face. Fine Tuning adalah model yang meningkatkan kemampuan model terlatih dalam melakukan tugas dengan memperbarui parameternya dengan {i>dataset<i} baru. Dalam tutorial ini, Anda download parameter 2B model kelompok Gemma yang telah dilatih sebelumnya dari Memeluk Wajah dan menyesuaikannya di GKE Autopilot atau Standard .
Panduan ini merupakan titik awal yang baik jika Anda memerlukan kontrol terperinci, skalabilitas, ketahanan, portabilitas, dan efektivitas biaya Kubernetes terkelola saat melakukan fine-tuning LLM. Jika Anda memerlukan AI terkelola terpadu untuk membangun dan menyalurkan model ML secara hemat biaya dengan cepat, kami merekomendasikan Anda untuk mencoba solusi Vertex AI kami.
Latar belakang
Dengan menyajikan Gemma menggunakan GPU di GKE menggunakan library transformer, Anda dapat menerapkan solusi inferensi yang tangguh dan siap produksi dengan semua manfaat Kubernetes terkelola, termasuk skalabilitas yang efisien dan peningkatan ketersediaan tinggi. Bagian ini menjelaskan teknologi utama yang digunakan dalam panduan ini.
Gemma
Gemma adalah serangkaian kecerdasan buatan generatif yang ringan dan tersedia secara terbuka (AI) yang dirilis dengan lisensi terbuka. Model AI ini tersedia untuk dijalankan di aplikasi, hardware, perangkat seluler, atau layanan yang dihosting.
Dalam panduan ini, kami memperkenalkan Gemma untuk pembuatan teks. Anda juga dapat menyesuaikan model ini agar memiliki spesialisasi dalam melakukan tugas tertentu.
Set data yang Anda gunakan dalam dokumen ini adalah b-mc2/sql-create-context.
Untuk mempelajari lebih lanjut, lihat dokumentasi Gemma.
GPU
Dengan GPU, Anda dapat mempercepat workload tertentu yang berjalan di node Anda seperti mesin pembelajaran dan pemrosesan data. GKE menyediakan berbagai macam opsi jenis untuk konfigurasi {i>node<i}, termasuk jenis mesin dengan NVIDIA H100, L4, dan A100.
Sebelum menggunakan GPU di GKE, sebaiknya Anda menyelesaikan jalur pembelajaran berikut:
- Pelajari ketersediaan versi GPU saat ini
- Pelajari GPU di GKE
Transformer Wajah Memeluk
Dengan library Transformers dari Hugging Face, Anda dapat mengakses model terlatih yang canggih. Dengan library Transformers, Anda dapat mengurangi waktu, resource, dan biaya komputasi yang terkait dengan pelatihan model yang lengkap.
Dalam tutorial ini, Anda menggunakan alat dan API Hugging Face untuk mendownload dan menyesuaikan model terlatih ini.
Tujuan
Panduan ini ditujukan untuk pengguna GKE, ML baru atau lama Engineer, engineer MLOps (DevOps), atau administrator platform yang tertarik untuk menggunakan kapabilitas orkestrasi kontainer Kubernetes melakukan fine-tuning LLM pada perangkat keras GPU H100, A100, dan L4.
Di akhir panduan ini, Anda akan dapat melakukan langkah-langkah berikut:
- Siapkan lingkungan Anda dengan cluster GKE di Mode autopilot.
- Buat penampung penyesuaian.
- Gunakan GPU untuk menyesuaikan model Gemma 2B dan mengupload model aplikasi ke Wajah Memeluk.
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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API yang diperlukan.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API yang diperlukan.
-
Pastikan Anda memiliki peran berikut di project: roles/container.admin, roles/iam.serviceAccountAdmin
Memeriksa peran
-
Di konsol Google Cloud, buka halaman IAM.
Buka IAM - Pilih project.
-
Di kolom Akun utama, cari baris yang berisi alamat email Anda.
Jika alamat email Anda tidak ada di kolom tersebut, berarti Anda tidak memiliki peran apa pun.
- Di kolom Peran untuk baris yang berisi alamat email Anda, periksa apakah daftar peran menyertakan peran yang diperlukan.
Memberikan peran
-
Di konsol Google Cloud, buka halaman IAM.
Buka IAM - Pilih project.
- Klik Berikan akses.
- Di kolom Akun utama baru, masukkan alamat email Anda.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
-
- Buat akun Wajah Memeluk, jika Anda belum memilikinya.
- Pastikan project Anda memiliki kuota yang cukup untuk GPU. Untuk mempelajari lebih lanjut, lihat Tentang GPU dan Kuota alokasi.
Mendapatkan akses ke model
Guna mendapatkan akses ke model Gemma untuk di-deploy ke GKE, Anda harus menandatangani perjanjian izin lisensi terlebih dahulu, lalu membuat Token akses Wajah memeluk.
Tanda tangani perjanjian izin lisensi
Anda harus menandatangani perjanjian persetujuan untuk menggunakan Gemma. Ikuti petunjuk berikut:
- Akses halaman izin model di Kaggle.com.
- Verifikasi izin menggunakan akun Wajah Memeluk Anda.
- Setujui persyaratan model.
Membuat token akses
Untuk mengakses model melalui Wajah Memeluk, Anda memerlukan Wajah Memeluk token tersebut.
Ikuti langkah-langkah ini untuk membuat token baru jika Anda belum memilikinya:
- Klik Profil Anda > Pengaturan > Token Akses.
- Pilih New Token.
- Tentukan Nama pilihan Anda dan Peran minimal
Write
. - Pilih Buat token.
- Salin token yang dihasilkan ke papan klip.
Menyiapkan lingkungan Anda
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk mengelola resource yang dihosting di Google Cloud. Cloud Shell telah dilengkapi dengan software yang Anda perlukan
untuk tutorial ini, termasuk
kubectl
dan
gcloud CLI.
Untuk menyiapkan lingkungan Anda dengan Cloud Shell, ikuti langkah-langkah berikut:
Di konsol Google Cloud, luncurkan sesi Cloud Shell dengan mengklik Aktifkan Cloud Shell di Konsol Google Cloud. Tindakan ini akan meluncurkan sesi di panel bawah Konsol Google Cloud.
Tetapkan variabel lingkungan default:
gcloud config set project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export REGION=REGION export CLUSTER_NAME=finetuning export HF_TOKEN=HF_TOKEN export HF_PROFILE=HF_PROFILE
Ganti nilai berikut:
- PROJECT_ID: Google Cloud Anda project ID Anda.
- REGION: Region yang mendukung akselerator
yang ingin Anda gunakan, misalnya,
us-central1
untuk GPU L4. - HF_TOKEN: Token Wajah Memeluk yang Anda buat sebelumnya.
- HF_PROFILE: ID Profil Wajah Memeluk yang Anda buat sebelumnya.
Clone repositori kode contoh dari GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/ai-ml/llm-finetuning-gemma
Membuat dan mengonfigurasi resource Google Cloud
Ikuti petunjuk berikut untuk membuat resource yang diperlukan.
Membuat cluster GKE dan node pool
Anda dapat menyajikan Gemma pada GPU di GKE Autopilot atau Standard Anda. Sebaiknya gunakan Autopilot untuk pengalaman Kubernetes yang terkelola sepenuhnya. Untuk memilih mode operasi GKE yang paling cocok untuk workload Anda, lihat Memilih mode operasi GKE.
Autopilot
Jalankan perintah berikut di Cloud Shell:
gcloud container clusters create-auto ${CLUSTER_NAME} \
--project=${PROJECT_ID} \
--region=${REGION} \
--release-channel=rapid \
--cluster-version=1.29
GKE membuat cluster Autopilot dengan CPU dan GPU seperti yang diminta oleh workload yang di-deploy.
Standard
Di Cloud Shell, jalankan perintah berikut untuk membuat :
gcloud container clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --region=${REGION} \ --workload-pool=${PROJECT_ID}.svc.id.goog \ --release-channel=rapid \ --num-nodes=1
Pembuatan cluster memerlukan waktu beberapa menit.
Jalankan perintah berikut untuk membuat kumpulan node untuk cluster Anda:
gcloud container node-pools create gpupool \ --accelerator type=nvidia-l4,count=8,gpu-driver-version=latest \ --project=${PROJECT_ID} \ --location=${REGION} \ --node-locations=${REGION}-a \ --cluster=${CLUSTER_NAME} \ --machine-type=g2-standard-96 \ --num-nodes=1
GKE membuat satu node pool yang berisi dua GPU L4 untuk setiap {i>node<i}.
Membuat rahasia Kubernetes untuk kredensial Memeluk Wajah
Di Cloud Shell, lakukan hal berikut:
Konfigurasi
kubectl
untuk berkomunikasi dengan cluster Anda:gcloud container clusters get-credentials ${CLUSTER_NAME} --location=${REGION}
Buat Rahasia Kubernetes yang berisi token Wajah Memeluk:
kubectl create secret generic hf-secret \ --from-literal=hf_api_token=${HF_TOKEN} \ --dry-run=client -o yaml | kubectl apply -f -
Membuat container penyempurnaan dengan Docker dan Cloud Build
Container ini menggunakan kode PyTorch dan Hugging Face Transformers untuk men-tuning model Gemma terlatih yang ada.
Membuat Repositori Docker Artifact Registry
gcloud artifacts repositories create gemma \ --project=${PROJECT_ID} \ --repository-format=docker \ --location=us \ --description="Gemma Repo"
Membuat dan mengirim image
gcloud builds submit .
Ekspor
IMAGE_URL
untuk digunakan nanti dalam tutorial ini.export IMAGE_URL=us-docker.pkg.dev/$PROJECT_ID/gemma/finetune-gemma-gpu:1.0.0
Jalankan Tugas yang lebih mendetail di GKE
Men-deploy tugas fine tuning Gemma
Buka file
finetune.yaml
.Terapkan manifes untuk membuat tugas fine-tuning:
envsubst < finetune.yaml | kubectl apply -f -
Instruksi ini mengganti
IMAGE_URL
dengan variabel dalam manifes.Pantau Tugas dengan menjalankan perintah berikut:
watch kubectl get pods
Periksa log tugas dengan menjalankan perintah berikut:
kubectl logs job.batch/finetune-job -f
Resource Tugas mendownload data model, lalu meningkatkan kualitas model tersebut ke semua 8 GPU. Proses ini dapat memerlukan waktu hingga 20 menit.
Setelah Tugas selesai, buka akun Wajah Memeluk Anda. Model baru bernama
$HF_PROFILE/gemma-2b-sql-finetuned
muncul di profil Wajah Pelukan Anda.
Sajikan model yang telah di-fine-tune di GKE
Di bagian ini, Anda akan men-deploy container vLLM
untuk menyalurkan Gemma
model transformer.
Buat manifes
serve-gemma.yaml
berikut:Buat variabel lingkungan untuk
MODEL_ID
baruexport MODEL_ID=$HF_PROFILE/gemma-2b-sql-finetuned
Ganti
MODEL_ID
di manifes:sed -i "s|google/gemma-2b|$MODEL_ID|g" serve-gemma.yaml
Terapkan manifes:
kubectl apply -f serve-gemma.yaml
Pod di cluster akan mendownload bobot model dari Memeluk Wajah dan memulai mesin inferensi.
Tunggu hingga Deployment tersedia:
kubectl wait --for=condition=Available --timeout=700s deployment/vllm-gemma-deployment
Lihat log dari Deployment yang berjalan:
kubectl logs -f -l app=gemma-finetune
Resource Deployment mendownload data model. Proses ini dapat memerlukan beberapa menit. Outputnya mirip dengan hal berikut ini:
INFO 01-26 19:02:54 model_runner.py:689] Graph capturing finished in 4 secs.
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Pastikan model telah didownload sepenuhnya sebelum melanjutkan ke bagian berikutnya.
Menyajikan model
Di bagian ini, Anda akan berinteraksi dengan model.
Menyiapkan penerusan port
Setelah model di-deploy, jalankan perintah berikut untuk menyiapkan penerusan port pada model:
kubectl port-forward service/llm-service 8000:8000
Outputnya mirip dengan hal berikut ini:
Forwarding from 127.0.0.1:8000 -> 8000
Berinteraksi dengan model menggunakan curl
Dalam sesi terminal baru, gunakan curl
untuk melakukan chat dengan model Anda:
Contoh perintah berikut adalah untuk TGI
USER_PROMPT="Question: What is the total number of attendees with age over 30 at kubecon eu? Context: CREATE TABLE attendees (name VARCHAR, age INTEGER, kubecon VARCHAR)"
curl -X POST http://localhost:8000/generate \
-H "Content-Type: application/json" \
-d @- <<EOF
{
"prompt": "${USER_PROMPT}",
"temperature": 0.1,
"top_p": 1.0,
"max_tokens": 24
}
EOF
Output berikut menunjukkan contoh respons model:
{"generated_text":" Answer: SELECT COUNT(age) FROM attendees WHERE age > 30 AND kubecon = 'eu'\n"}
Bergantung pada kueri, Anda mungkin harus mengubah max_token
untuk mendapatkan hasil yang lebih baik. Anda juga dapat menggunakan model instruksi yang disesuaikan untuk pengalaman chat yang lebih baik.
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 yang di-deploy
Agar tidak menimbulkan biaya ke akun Google Cloud Anda untuk resource yang Anda buat dalam panduan ini, jalankan perintah berikut:
gcloud container clusters delete ${CLUSTER_NAME} \
--region=${REGION}
Langkah selanjutnya
- Pelajari lebih lanjut GPU di GKE.
- Pelajari cara menggunakan Gemma dengan TGI pada akselerator lainnya, termasuk GPU A100 dan H100, dengan melihat kode contoh di GitHub.
- Pelajari cara men-deploy workload GPU di Autopilot.
- Pelajari cara men-deploy workload GPU di Standard.
- Pelajari Vertex AI Model Garden.
- Ketahui cara menjalankan workload AI/ML yang dioptimalkan dengan GKE orkestrasi platform Google Workspace for Education.
- Pelajari cara menggunakan Assured Workloads untuk menerapkan kontrol ke folder di Google Cloud untuk memenuhi persyaratan peraturan.