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

1. Ringkasan

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

Dengan mengikuti lab ini, pengguna akan mempelajari cara:

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

Apa itu LIT?

LIT adalah alat pemahaman model yang visual dan interaktif yang mendukung data teks, gambar, dan tabulasi. Server ini 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 perintah LLM sehingga Anda dapat 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 AI. Vertex AI menggabungkan alur kerja data engineering, data science, dan ML engineering, sehingga tim Anda dapat berkolaborasi menggunakan rangkaian alat yang sama 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 pihak ketiga tertentu.

Yang akan Anda lakukan

Anda akan menggunakan Cloud Shell dan Cloud Run Google untuk men-deploy container Docker dari image yang telah dibuat sebelumnya oleh LIT.

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

Set data

Secara default, demo menggunakan set data sampel debug perintah LIT, 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. Luncurkan Konsol Google Cloud dan Cloud Shell

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

2-a: Luncurkan Konsol Google Cloud

Buka 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 yang dapat digunakan kapan saja di mana saja.

2-b: Luncurkan Google Cloud Shell

Cloud Shell adalah lingkungan operasi dan pengembangan online yang dapat diakses di mana saja melalui 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, membangun, men-debug, dan men-deploy APLIKASI berbasis cloud menggunakan Cloud Shell Editor online. Cloud Shell menyediakan lingkungan online yang siap digunakan developer dengan set alat favorit yang telah diinstal sebelumnya dan ruang penyimpanan persisten sebesar 5 GB. Anda akan menggunakan command prompt pada langkah berikutnya.

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

Peluncuran Konsol Google Cloud

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

Konsol Google Cloud

2-c: Setel 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: Deploy Aplikasi LIT ke Cloud Run

Pertama, Anda perlu menetapkan versi terbaru LIT-App 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 agar 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 kolom prompt dan kolom target serta source opsional. Untuk memuat beberapa set data, pisahkan dengan koma. Jika tidak ditetapkan, dataset sampel untuk 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, di perintah deployment, 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 Konsol Cloud.

Pilih layanan LIT App 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 Temukan Google Cloud

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

Beranda Demo LIT

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

Log Cloud Run di Google Cloud Console

Anda dapat memeriksa bagian METRICS untuk melihat metrik layanan.

Metrik Cloud Run di Konsol Google Cloud

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 kolom prompt dan kolom target serta source opsional.

Memuat Set Data 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 dalam 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 tidak memerlukan langkah-langkah konfigurasi tambahan.

4-a: Berikan Izin Vertex AI

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

Akun Layanan GCP

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

Tambahkan 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 perlu memberi nama model di new_name.
    1. Masukkan model gemini yang Anda pilih sebagai model_name.
    1. Klik Load Model.
    1. Klik Submit.

LIT Memuat Model Gemini

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

Dengan menghosting sendiri LLM menggunakan image Docker server model LIT, Anda dapat menggunakan fungsi keunggulan 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 container memuat satu model, yang dikonfigurasi menggunakan variabel lingkungan.

Anda harus menentukan model yang akan dimuat dengan menyetel 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 disetel 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, dan 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 dari perintah input ditambah teks yang dihasilkan. Default-nya adalah 512.

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

Pertama, Anda perlu menetapkan versi terbaru Model Server 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 menyetel variabel lingkungan, nilai default akan diterapkan. Karena sebagian besar LLM memerlukan resource komputasi yang mahal, sangat direkomendasikan untuk menggunakan GPU. Jika Anda lebih 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: Akses Server Model

Setelah membuat server model, layanan yang dimulai dapat ditemukan di bagian Cloud Run 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 Temukan Google Cloud

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

Log Cloud Run di Google Cloud Console

Anda dapat memeriksa bagian METRICS untuk melihat metrik layanan.

Metrik Cloud Run di Konsol Google Cloud

5-d: Memuat Model yang Dihosting Sendiri

Jika Anda mem-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 perlu 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 memproksi 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 lengkap untuk membantu Anda men-debug dan memahami perilaku model. Anda dapat melakukan hal sederhana seperti membuat kueri model, dengan mengetik teks dalam kotak dan melihat prediksi model, atau memeriksa model secara mendalam dengan serangkaian fitur canggih LIT, termasuk:

6-a: Mengirim Kueri ke Model melalui LIT

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

Respons Tampilan LIT

Respons LIT

6-b: Menggunakan Teknik Keunggulan Urutan

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

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

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

Hasil Keunggulan 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.

Edit Manual LIT

6-d: Membandingkan Perintah Berdampingan

LIT memungkinkan Anda membandingkan perintah secara berdampingan pada contoh asli dan yang telah diedit. Anda dapat mengedit contoh secara manual dan melihat hasil prediksi serta analisis Keunggulan Urutan untuk versi asli dan versi 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 contoh pembuatan dan pemberian skor teks individual, serta pada contoh gabungan untuk metrik tertentu. Dengan membuat kueri berbagai model yang dimuat, Anda dapat dengan mudah membandingkan perbedaan dalam responsnya.

Respons Model Perbandingan LIT

6-f: Generator Kontrafaktual Otomatis

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

Input Pembuatan Otomatis LIT

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 terlarang seperti yang ditunjukkan di bawah.

Error Terlarang Google Cloud

Ada dua pendekatan untuk mengakses layanan Aplikasi LIT.

1. Proxy ke Layanan 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 membuka 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 banyak orang, opsi ini lebih efektif.

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

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

# 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 terputus karena tidak ada aktivitas, reset variabel dengan mengikuti langkah-langkah sebelumnya.

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

Jika Anda 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 ini:

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.