Proses debug perintah LLM dengan Learning Interpretability Tool (LIT) di GCP

1. Ringkasan

Lab ini memberikan panduan mendetail tentang cara men-deploy server aplikasi LIT di Google Cloud Platform (GCP) untuk berinteraksi dengan model dasar Vertex AI Gemini dan model bahasa besar (LLM) pihak ketiga yang dihosting sendiri. Panduan ini juga mencakup panduan tentang cara menggunakan UI LIT untuk proses debug prompt dan interpretasi model.

Dengan mengikuti lab ini, pengguna akan mempelajari cara:

  • Konfigurasikan server LIT di GCP.
  • Hubungkan server LIT ke model Gemini Vertex AI atau LLM lain yang dihosting sendiri.
  • Manfaatkan UI LIT untuk menganalisis, men-debug, dan menafsirkan perintah untuk mendapatkan performa dan insight model yang lebih baik.

Apa yang dimaksud dengan LIT?

LIT adalah alat pemahaman model visual dan interaktif yang mendukung data teks, gambar, dan tabulasi. Vertex AI Workbench dapat dijalankan sebagai server mandiri, atau di dalam lingkungan notebook seperti Google Colab, Jupyter, dan Google Cloud Vertex AI. LIT tersedia dari PyPI dan GitHub.

Awalnya dibuat untuk memahami model klasifikasi dan regresi, update terbaru telah menambahkan alat untuk men-debug prompt LLM yang memungkinkan Anda mempelajari pengaruh konten pengguna, model, dan sistem terhadap perilaku pembuatan.

Apa itu Vertex AI dan Model Garden?

Vertex AI adalah platform machine learning (ML) yang memungkinkan Anda melatih dan men-deploy model ML dan aplikasi AI, serta menyesuaikan LLM untuk digunakan dalam aplikasi yang didukung teknologi AI. Vertex AI menggabungkan data engineering, data science, dan alur kerja engineering ML sehingga tim Anda dapat berkolaborasi menggunakan kumpulan alat yang umum dan menskalakan aplikasi menggunakan manfaat Google Cloud.

Vertex Model Garden adalah library model ML yang membantu Anda menemukan, menguji, menyesuaikan, dan men-deploy model dan aset eksklusif Google serta memilih model dan aset pihak ketiga.

Yang akan Anda lakukan

Anda akan menggunakan Cloud Shell dan Cloud Run Google untuk men-deploy container Docker dari image bawaan LIT.

Cloud Run adalah platform komputasi terkelola yang memungkinkan Anda menjalankan container langsung di atas infrastruktur Google yang skalabel, termasuk di GPU.

Set data

Demo ini menggunakan set data sampel proses debug perintah LIT secara default, atau Anda dapat memuat set data Anda sendiri melalui UI.

Sebelum memulai

Untuk panduan referensi ini, Anda memerlukan project Google Cloud. Anda dapat membuat project baru, atau memilih project yang sudah dibuat.

2. Meluncurkan Google Cloud Console dan Cloud Shell

Anda akan meluncurkan Konsol Google Cloud dan menggunakan Google Cloud Shell pada langkah ini.

2-a: Meluncurkan Konsol Google Cloud

Luncurkan browser dan buka Konsol Google Cloud.

Konsol Google Cloud adalah antarmuka admin web yang canggih dan aman yang memungkinkan Anda mengelola resource Google Cloud dengan cepat. Ini adalah alat DevOps kapan saja di mana saja.

2-b: Meluncurkan Google Cloud Shell

Cloud Shell adalah lingkungan operasi dan pengembangan online yang dapat diakses di mana saja dengan browser Anda. Anda dapat mengelola resource dengan terminal online yang telah dilengkapi dengan utilitas seperti alat command line gcloud, kubectl, dan lainnya. Anda juga dapat mengembangkan, mem-build, men-debug, dan men-deploy Aplikasi berbasis cloud menggunakan Cloud Shell Editor online. Cloud Shell menyediakan lingkungan online yang siap digunakan developer dengan kumpulan alat favorit yang telah diinstal sebelumnya dan ruang penyimpanan persisten sebesar 5 GB. Anda akan menggunakan command prompt di langkah berikutnya.

Luncurkan Google Cloud Shell menggunakan ikon di kanan atas panel menu, yang dilingkari dengan warna biru pada screenshot berikut.

Peluncuran Konsol Google Cloud

Anda akan melihat terminal dengan shell Bash di bagian bawah halaman.

Google Cloud Console

2-c: Menetapkan Project Google Cloud

Anda harus menetapkan project ID dan region project menggunakan perintah gcloud.

# Set your GCP Project ID.
gcloud config set project your-project-id

# Set your GCP Project Region.
gcloud config set run/region your-project-region

3. Men-deploy Image Docker Server Aplikasi LIT dengan Cloud Run

3-a: Men-deploy Aplikasi LIT ke Cloud Run

Pertama-tama, Anda harus menetapkan LIT-App versi terbaru sebagai versi yang akan di-deploy.

# Set latest version as your LIT_SERVICE_TAG.
export LIT_SERVICE_TAG=latest
# List all the public LIT GCP App server docker images.
gcloud container images  list-tags  us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app

Setelah menetapkan tag versi, Anda perlu memberi nama layanan.

# Set your lit service name. While 'lit-app-service' is provided as a placeholder, you can customize the service name based on your preferences.
export LIT_SERVICE_NAME=lit-app-service

Setelah itu, Anda dapat menjalankan perintah berikut untuk men-deploy container ke Cloud Run.

# Use below cmd to deploy the LIT App to Cloud Run.
gcloud run deploy $LIT_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app:$LIT_SERVICE_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--no-allow-unauthenticated

LIT juga memungkinkan Anda menambahkan set data saat memulai server. Untuk melakukannya, tetapkan variabel DATASETS untuk menyertakan data yang ingin Anda muat, menggunakan format name:path, misalnya, data_foo:/bar/data_2024.jsonl. Format set data harus .jsonl, dengan setiap data berisi prompt dan kolom target dan source opsional. Untuk memuat beberapa set data, pisahkan dengan koma. Jika tidak ditetapkan, set data contoh proses debug perintah LIT akan dimuat.

# Set the dataset.
export DATASETS=[DATASETS]

Dengan menetapkan MAX_EXAMPLES, Anda dapat menetapkan jumlah maksimum contoh yang akan dimuat dari setiap set evaluasi.

# Set the max examples.
export MAX_EXAMPLES=[MAX_EXAMPLES]

Kemudian, dalam perintah deploy, Anda dapat menambahkan

--set-env-vars "DATASETS=$DATASETS" \
--set-env-vars "MAX_EXAMPLES=$MAX_EXAMPLES" \

3-b: Melihat Layanan Aplikasi LIT

Setelah membuat server Aplikasi LIT, Anda dapat menemukan layanan di bagian Cloud Run di Cloud Console.

Pilih layanan Aplikasi LIT yang baru saja Anda buat. Pastikan nama layanan sama dengan LIT_SERVICE_NAME.

Daftar Cloud Run di Konsol Google Cloud

Anda dapat menemukan URL layanan dengan mengklik layanan yang baru saja di-deploy.

URL Layanan Google Cloud Find

Kemudian, Anda akan dapat melihat UI LIT. Jika Anda mengalami error, lihat bagian Pemecahan masalah.

Halaman beranda Demo LIT

Anda dapat memeriksa bagian LOG untuk memantau aktivitas, melihat pesan error, dan melacak progres deployment.

Log Cloud Run Google Cloud Console

Anda dapat memeriksa bagian METRIK untuk melihat metrik layanan.

Metrik Cloud Run Google Cloud Console

3-c: Memuat Set Data

Klik opsi Configure di UI LIT, pilih Dataset. Muat set data dengan menentukan nama dan memberikan URL set data. Format set data harus .jsonl, dengan setiap data berisi prompt dan kolom target dan source opsional.

Set Data Pemuatan LIT

4. Menyiapkan Model Gemini di Model Garden Vertex AI

Model dasar Gemini Google tersedia dari Vertex AI API. LIT menyediakan wrapper model VertexAIModelGarden untuk menggunakan model ini untuk pembuatan. Cukup tentukan versi yang diinginkan (misalnya, "gemini-1.5-pro-001") melalui parameter nama model. Keuntungan utama menggunakan model ini adalah tidak memerlukan upaya tambahan untuk deployment. Secara default, Anda memiliki akses langsung ke model seperti Gemini 1.0 Pro dan Gemini 1.5 Pro di GCP, sehingga Anda tidak perlu melakukan langkah konfigurasi tambahan.

4-a: Memberikan Izin Vertex AI

Untuk membuat kueri Gemini di GCP, Anda perlu memberikan izin Vertex AI ke akun layanan. Pastikan nama akun layanannya adalah Default compute service account. Salin email akun layanan akun tersebut.

Akun Layanan GCP

Tambahkan email akun layanan sebagai akun utama dengan peran Vertex AI User di daftar yang diizinkan IAM Anda.

Menambahkan Email Akun Layanan

4-b: Memuat Model Gemini

Anda akan memuat model Gemini dan menyesuaikan parameternya dengan mengikuti langkah-langkah di bawah.

    1. Klik opsi Configure di UI LIT.
    1. Pilih opsi gemini di bagian opsi Select a base model.
    1. Anda harus memberi nama model di new_name.
    1. Masukkan model gemini yang dipilih sebagai model_name.
    1. Klik Load Model.
    1. Klik Submit.

Model Gemini LIT Load

5. Men-deploy Server Model LLM yang Dihosting Sendiri di GCP

Menghosting sendiri LLM dengan image docker server model LIT memungkinkan Anda menggunakan fungsi keterlihatan dan tokenisasi LIT untuk mendapatkan insight yang lebih mendalam tentang perilaku model. Image server model berfungsi dengan model KerasNLP atau Hugging Face Transformers, termasuk bobot yang disediakan library dan dihosting sendiri, misalnya, di Google Cloud Storage.

5-a: Mengonfigurasi Model

Setiap penampung memuat satu model, yang dikonfigurasi menggunakan variabel lingkungan.

Anda harus menentukan model yang akan dimuat dengan menetapkan MODEL_CONFIG. Formatnya harus name:path, misalnya model_foo:model_foo_path. Jalur dapat berupa URL, jalur file lokal, atau nama preset untuk framework Deep Learning yang dikonfigurasi (lihat tabel berikut untuk mengetahui informasi selengkapnya). Server ini diuji dengan Gemma, GPT2, Llama, dan Mistral pada semua nilai DL_FRAMEWORK yang didukung. Model lain akan berfungsi, tetapi penyesuaian mungkin diperlukan.

# Set models you want to load. While 'gemma2b is given as a placeholder, you can load your preferred model by following the instructions above.
export MODEL_CONFIG=gemma2b:gemma_2b_en

Selain itu, server model LIT memungkinkan konfigurasi berbagai variabel lingkungan menggunakan perintah di bawah. Lihat tabel untuk mengetahui detailnya. Perhatikan bahwa setiap variabel harus ditetapkan satu per satu.

# Customize the variable value as needed.
export [VARIABLE]=[VALUE]

Variabel

Nilai

Deskripsi

DL_FRAMEWORK

kerasnlp, transformers

Library pemodelan yang digunakan untuk memuat bobot model ke runtime yang ditentukan. Default-nya adalah kerasnlp.

DL_RUNTIME

torch, tensorflow

Framework backend deep learning tempat model berjalan. Semua model yang dimuat oleh server ini akan menggunakan backend yang sama, ketidakcocokan akan menyebabkan error. Default-nya adalah torch.

PRESISI

bfloat16, float32

Presisi floating point untuk model LLM. Default-nya adalah bfloat16.

BATCH_SIZE

Bilangan Bulat Positif

Jumlah contoh yang akan diproses per batch. Default-nya adalah 1.

SEQUENCE_LENGTH

Bilangan Bulat Positif

Panjang urutan maksimum perintah input ditambah teks yang dihasilkan. Default-nya adalah 512.

5-b: Men-deploy Server Model ke Cloud Run

Pertama-tama, Anda harus menetapkan Server Model versi terbaru sebagai versi yang akan di-deploy.

# Set latest as MODEL_VERSION_TAG.
export MODEL_VERSION_TAG=latest
# List all the public LIT GCP model server docker images.
gcloud container images  list-tags  us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server

Setelah menetapkan tag versi, Anda perlu memberi nama server model.

# Set your Service name.
export MODEL_SERVICE_NAME='gemma2b-model-server'

Setelah itu, Anda dapat menjalankan perintah berikut untuk men-deploy container ke Cloud Run. Jika Anda tidak menetapkan variabel lingkungan, nilai default akan diterapkan. Karena sebagian besar LLM memerlukan resource komputasi yang mahal, sebaiknya gunakan GPU. Jika Anda memilih untuk menjalankan hanya di CPU (yang berfungsi dengan baik untuk model kecil seperti GPT2), Anda dapat menghapus argumen terkait --gpu 1 --gpu-type nvidia-l4 --max-instances 7.

# Deploy the model service container.
gcloud beta run deploy $MODEL_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server:$MODEL_VERSION_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--gpu 1 \
--gpu-type nvidia-l4  \
--max-instances 7  \
--set-env-vars "MODEL_CONFIG=$MODEL_CONFIG" \
--no-allow-unauthenticated

Selain itu, Anda dapat menyesuaikan variabel lingkungan dengan menambahkan perintah berikut. Hanya sertakan variabel lingkungan yang diperlukan untuk kebutuhan spesifik Anda.

--set-env-vars "DL_FRAMEWORK=$DL_FRAMEWORK" \
--set-env-vars "DL_RUNTIME=$DL_RUNTIME" \
--set-env-vars "PRECISION=$PRECISION" \
--set-env-vars "BATCH_SIZE=$BATCH_SIZE" \
--set-env-vars "SEQUENCE_LENGTH=$SEQUENCE_LENGTH" \

Variabel lingkungan tambahan mungkin diperlukan untuk mengakses model tertentu. Lihat petunjuk dari Kaggle Hub (digunakan untuk model KerasNLP) dan Hugging Face Hub sebagaimana mestinya.

5-c: Mengakses Server Model

Setelah membuat server model, layanan yang dimulai dapat ditemukan di bagian Cloud Run pada project GCP Anda.

Pilih server model yang baru saja Anda buat. Pastikan nama layanan sama dengan MODEL_SERVICE_NAME.

Daftar Cloud Run di Konsol Google Cloud

Anda dapat menemukan URL layanan dengan mengklik layanan model yang baru saja di-deploy.

URL Layanan Google Cloud Find

Anda dapat memeriksa bagian LOG untuk memantau aktivitas, melihat pesan error, dan melacak progres deployment.

Log Cloud Run Google Cloud Console

Anda dapat memeriksa bagian METRIK untuk melihat metrik layanan.

Metrik Cloud Run Google Cloud Console

5-d: Memuat Model yang Dihosting Sendiri

Jika Anda melakukan proxy server LIT di Langkah 3 (lihat bagian Pemecahan Masalah), Anda harus mendapatkan token identitas GCP dengan menjalankan perintah berikut.

# Find your GCP identity token.
gcloud auth print-identity-token

Anda akan memuat model yang dihosting sendiri dan menyesuaikan parameternya dengan mengikuti langkah-langkah di bawah.

  1. Klik opsi Configure di UI LIT.
  2. Pilih opsi LLM (self hosted) di bagian opsi Select a base model.
  3. Anda harus memberi nama model di new_name.
  4. Masukkan URL server model Anda sebagai base_url.
  5. Masukkan token identitas yang diperoleh di identity_token jika Anda melakukan proxy server Aplikasi LIT (Lihat Langkah 3 dan Langkah 7). Jika tidak, biarkan kosong.
  6. Klik Load Model.
  7. Klik Submit.

Memuat Model LLM LIT

6. Berinteraksi dengan LIT di GCP

LIT menawarkan serangkaian fitur yang lengkap untuk membantu Anda men-debug dan memahami perilaku model. Anda dapat melakukan hal yang sederhana seperti membuat kueri model, dengan mengetik teks di kotak dan melihat prediksi model, atau memeriksa model secara mendalam dengan serangkaian fitur canggih LIT, termasuk:

6-a: Membuat Kueri Model melalui LIT

LIT otomatis membuat kueri set data setelah model dan set data dimuat. Anda dapat melihat respons setiap model dengan memilih respons di kolom.

Respons Tampilan LIT

Respons LIT

6-b: Menggunakan Teknik Kejelasan Urutan

Saat ini, teknik Sequence Salience di LIT hanya mendukung model yang dihosting sendiri.

Sequence Salience adalah alat visual yang membantu men-debug perintah LLM dengan menandai bagian perintah mana yang paling penting untuk output tertentu. Untuk informasi selengkapnya tentang Sequence Salience, lihat tutorial lengkap untuk mengetahui lebih lanjut cara menggunakan fitur ini.

Untuk mengakses hasil keterlihatan, klik input atau output apa pun dalam perintah atau respons, dan hasil keterlihatan akan ditampilkan.

Hasil Salience Urutan LIT

6-c: Mengedit Perintah dan Target secara Manual

LIT memungkinkan Anda mengedit prompt dan target secara manual untuk titik data yang ada. Dengan mengklik Add, input baru akan ditambahkan ke set data.

LIT Mannully Edit

6-d: Membandingkan Perintah Secara Berdampingan

LIT memungkinkan Anda membandingkan perintah secara berdampingan pada contoh asli dan yang diedit. Anda dapat mengedit contoh secara manual dan melihat hasil prediksi serta analisis Sequence Salience untuk versi asli dan yang diedit secara bersamaan. Anda dapat mengubah perintah untuk setiap titik data, dan LIT akan menghasilkan respons yang sesuai dengan membuat kueri model.

LIT Compare Datasets

6-e: Membandingkan Beberapa Model Secara Berdampingan

LIT memungkinkan perbandingan model secara berdampingan pada setiap contoh pembuatan teks dan penskoran, serta pada contoh gabungan untuk metrik tertentu. Dengan membuat kueri berbagai model yang dimuat, Anda dapat dengan mudah membandingkan perbedaan dalam responsnya.

LIT Compare Model Response

6-f: Generator Counterfactual Otomatis

Anda dapat menggunakan generator counterfactual otomatis untuk membuat input alternatif, dan langsung melihat perilaku model Anda terhadap input tersebut.

LIT Membuat Input Secara Otomatis

6-g: Mengevaluasi performa model

Anda dapat menilai performa model menggunakan metrik (saat ini mendukung skor BLEU dan ROUGE untuk pembuatan teks) di seluruh set data, atau subkumpulan contoh yang difilter atau dipilih.

Metrik Model Tampilan LIT

7. Pemecahan masalah

7-a: Kemungkinan masalah akses dan solusinya

Karena --no-allow-unauthenticated diterapkan saat men-deploy ke Cloud Run, Anda mungkin mengalami error yang dilarang seperti yang ditunjukkan di bawah ini.

Error Dilarang Google Cloud

Ada dua pendekatan untuk mengakses layanan Aplikasi LIT.

1. Proxy ke Jasa dan Servis Lokal

Anda dapat melakukan proxy layanan ke host lokal menggunakan perintah di bawah.

# Proxy the service to local host.
gcloud run services proxy $LIT_SERVICE_NAME

Kemudian, Anda akan dapat mengakses server LIT dengan mengklik link layanan yang di-proxy.

2. Mengautentikasi Pengguna Secara Langsung

Anda dapat mengikuti link ini untuk mengautentikasi pengguna, sehingga memungkinkan akses langsung ke layanan Aplikasi LIT. Pendekatan ini juga dapat memungkinkan sekelompok pengguna mengakses layanan. Untuk pengembangan yang melibatkan kolaborasi dengan beberapa orang, ini adalah opsi yang lebih efektif.

7-b: Memeriksa untuk memastikan Server Model telah berhasil diluncurkan

Untuk memastikan server model telah berhasil diluncurkan, Anda dapat langsung membuat kueri server model dengan mengirim permintaan. Server model menyediakan tiga endpoint, predict, tokenize, dan salience. Pastikan Anda memberikan kolom prompt dan kolom target dalam permintaan.

# Query the model server predict endpoint.
curl -X POST  http://YOUR_MODEL_SERVER_URL/predict -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'

# Query the model server tokenize endpoint.
curl -X POST  http://YOUR_MODEL_SERVER_URL/tokenize -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'

# Query the model server salience endpoint.
curl -X POST  http://YOUR_MODEL_SERVER_URL/salience -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'

Jika Anda mengalami masalah akses, lihat bagian 7-a di atas.

8. Selamat

Selamat, Anda telah menyelesaikan codelab. Saatnya bersantai!

Pembersihan

Untuk membersihkan lab, hapus semua Layanan Google Cloud yang dibuat untuk lab. Gunakan Google Cloud Shell untuk menjalankan perintah berikut.

Jika Koneksi Google Cloud hilang karena tidak aktif, reset variabel dengan mengikuti langkah-langkah sebelumnya.

# Delete the LIT App Service.
gcloud run services delete $LIT_SERVICE_NAME

Jika memulai server model, Anda juga perlu menghapus server model.

# Delete the Model Service.
gcloud run services delete $MODEL_SERVICE_NAME

Bacaan lebih lanjut

Lanjutkan mempelajari fitur alat LIT dengan materi di bawah:

Kontak

Jika ada pertanyaan atau masalah terkait codelab ini, hubungi kami di GitHub.

Lisensi

Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 4.0.