1. Genel Bakış
Bu laboratuvarda, Vertex AI Gemini temel modelleri ve kendi kendine barındırılan üçüncü taraf büyük dil modelleriyle (LLM'ler) etkileşim kurmak için Google Cloud Platform'da (GCP) bir LIT uygulama sunucusunun dağıtılmasıyla ilgili ayrıntılı bir açıklama sunulmaktadır. Ayrıca istemde hata ayıklama ve model yorumlama için LIT kullanıcı arayüzünün nasıl kullanılacağıyla ilgili yol gösterici bilgiler de bulabilirsiniz.
Bu laboratuvarda kullanıcılar şunları öğrenecek:
- GCP'de bir LIT sunucusu yapılandırın.
- LIT sunucusunu Vertex AI Gemini modellerine veya kendi kendine barındırılan diğer LLM'lere bağlayın.
- Daha iyi model performansı ve analizler için istemleri analiz etmek, hata ayıklamak ve yorumlamak üzere LIT kullanıcı arayüzünü kullanın.
LIT nedir?
LIT, metin, resim ve tablo verilerini destekleyen görsel, etkileşimli bir model anlama aracıdır. Bağımsız bir sunucu olarak veya Google Colab, Jupyter ve Google Cloud Vertex AI gibi not defteri ortamlarının içinde çalıştırılabilir. LIT'i PyPI ve GitHub'dan indirebilirsiniz.
Başlangıçta sınıflandırma ve regresyon modellerini anlamak için geliştirilen bu modele, son güncellemelerle LLM istemlerinde hata ayıklama için araçlar eklendi. Bu araçlar sayesinde kullanıcı, model ve sistem içeriğinin oluşturma davranışını nasıl etkilediğini keşfedebilirsiniz.
Vertex AI ve Model Garden nedir?
Vertex AI, makine öğrenimi (ML) modellerini ve yapay zeka uygulamalarını eğitip dağıtmanıza ve LLM'leri yapay zeka destekli uygulamalarınızda kullanmak üzere özelleştirmenize olanak tanıyan bir makine öğrenimi platformudur. Vertex AI, veri mühendisliği, veri bilimi ve makine öğrenimi mühendisliği iş akışlarını birleştirerek ekiplerinizin ortak bir araç seti kullanarak birlikte çalışmasını ve Google Cloud'un avantajlarını kullanarak uygulamalarınızı ölçeklendirmesini sağlar.
Vertex Model Garden, Google'a ait olan ve belirli üçüncü taraf modellerini ve öğelerini keşfetmenize, test etmenize, özelleştirmenize ve dağıtmanıza yardımcı olan bir makine öğrenimi model kitaplığıdır.
Yapacağınız işlemler
LIT'in önceden oluşturulmuş görüntüsünden bir Docker container'ı dağıtmak için Google Cloud Shell ve Cloud Run'u kullanacaksınız.
Cloud Run, GPU'lar da dahil olmak üzere container'ları doğrudan Google'ın ölçeklenebilir altyapısında çalıştırmanıza olanak tanıyan yönetilen bir işlem platformudur.
Veri kümesi
Demoda varsayılan olarak LIT istemi hata ayıklama örnek veri kümesi kullanılır. Dilerseniz arayüz üzerinden kendi veri kümenizi de yükleyebilirsiniz.
Başlamadan önce
Bu referans kılavuzunda bir Google Cloud projeniz olmalıdır. Yeni bir proje oluşturabilir veya önceden oluşturduğunuz bir projeyi seçebilirsiniz.
2. Google Cloud Console'u ve Cloud Shell'i başlatma
Bu adımda bir Google Cloud Console'u başlatacak ve Google Cloud Shell'i kullanacaksınız.
2-a: Google Cloud Console'u kullanıma sunma
Bir tarayıcı açıp Google Cloud Console'a gidin.
Google Cloud Console, Google Cloud kaynaklarınızı hızlı bir şekilde yönetmenizi sağlayan güçlü ve güvenli bir web yöneticisi arayüzüdür. Hareket halindeyken kullanabileceğiniz bir DevOps aracıdır.
2-b: Google Cloud Shell'i başlatın
Cloud Shell, tarayıcınızı kullanarak her yerden erişebileceğiniz bir online geliştirme ve işlem ortamıdır. Cloud Shell'in gcloud komut satırı aracı, kubectl ve daha fazlası gibi yardımcı programlarla önceden yüklenmiş olan online terminalini kullanarak kaynaklarınızı yönetebilirsiniz. Ayrıca online Cloud Shell Düzenleyici'yi kullanarak bulut tabanlı uygulamaları geliştirebilir, derleyebilir, hata ayıklaması yapabilir ve dağıtabilirsiniz. Cloud Shell, geliştiricilere önceden yüklenmiş favori araç seti ve 5 GB kalıcı depolama alanı içeren online bir ortam sağlar. Sonraki adımlarda komut isteminden yararlanacaksınız.
Menü çubuğunun sağ üst tarafındaki simgeyi kullanarak bir Google Cloud Shell başlatın. Bu simge, aşağıdaki ekran görüntüsünde mavi daire içine alınmış.
Sayfanın alt kısmında Bash kabuğunun bulunduğu bir terminal görürsünüz.
2-c: Google Cloud projesi oluşturma
gcloud
komutunu kullanarak proje kimliğini ve proje bölgesini ayarlamanız gerekir.
# 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. LIT App Server Docker görüntüsünü Cloud Run ile dağıtma
3-a: LIT uygulamasını Cloud Run'a dağıtma
Öncelikle LIT-App'in en son sürümünü dağıtılacak sürüm olarak ayarlamanız gerekir.
# 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
Sürüm etiketini ayarladıktan sonra hizmeti adlandırmanız gerekir.
# 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
Ardından, container'ı Cloud Run'a dağıtmak için aşağıdaki komutu çalıştırabilirsiniz.
# 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, sunucuyu başlatırken veri kümesini eklemenize de olanak tanır. Bunu yapmak için DATASETS
değişkenini, yüklemek istediğiniz verileri içerecek şekilde name:path
biçimini kullanarak ayarlayın (ör. data_foo:/bar/data_2024.jsonl
). Veri kümesi biçimi .jsonl olmalıdır. Burada her kayıt prompt
ile isteğe bağlı target
ve source
alanlarını içerir. Birden fazla veri kümesi yüklemek için bunları virgülle ayırın. Ayarlanmazsa LIT istemi hata ayıklama örnek veri kümesi yüklenir.
# Set the dataset.
export DATASETS=[DATASETS]
MAX_EXAMPLES parametresini ayarlayarak her değerlendirme grubundan yüklenecek maksimum örnek sayısını belirleyebilirsiniz.
# Set the max examples.
export MAX_EXAMPLES=[MAX_EXAMPLES]
Ardından dağıtım komutuna şunları ekleyebilirsiniz:
--set-env-vars "DATASETS=$DATASETS" \
--set-env-vars "MAX_EXAMPLES=$MAX_EXAMPLES" \
3-b: LIT uygulama hizmetini görüntüleme
LIT uygulama sunucusunu oluşturduktan sonra hizmeti Cloud Console'un Cloud Run bölümünde bulabilirsiniz.
Yeni oluşturduğunuz LIT App hizmetini seçin. Hizmet adının LIT_SERVICE_NAME
ile aynı olduğundan emin olun.
Hizmet URL'sini, dağıttığınız hizmeti tıklayarak bulabilirsiniz.
Ardından LIT kullanıcı arayüzünü görüntüleyebilirsiniz. Hatayla karşılaşırsanız Sorun giderme bölümünü inceleyin.
Etkinliği izlemek, hata mesajlarını görüntülemek ve dağıtımın ilerleme durumunu takip etmek için GÜNLÜKLER bölümünü kontrol edebilirsiniz.
Hizmetin metriklerini görüntülemek için METRİKLER bölümünü kontrol edebilirsiniz.
3-c: Veri Kümelerini Yükleme
LIT kullanıcı arayüzünde Configure
seçeneğini tıklayın, Dataset
'yi seçin. Bir ad ve veri kümesi URL'si belirterek veri kümesini yükleyin. Veri kümesi biçimi .jsonl olmalıdır. Her kayıt prompt
ve isteğe bağlı target
ve source
alanları içerir.
4. Vertex AI Model Garden'da Gemini Modellerini Hazırlama
Google'ın Gemini temel modelleri Vertex AI API'den kullanılabilir. LIT, bu modelleri oluşturma için kullanmak üzere VertexAIModelGarden
model sarmalayıcısını sağlar. İstediğiniz sürümü belirtmeniz yeterlidir (ör. "gemini-1.5-pro-001") model adı parametresi aracılığıyla gönderebilirsiniz. Bu modellerin önemli bir avantajı, dağıtım için ek çaba gerektirmemesidir. Varsayılan olarak GCP'de Gemini 1.0 Pro ve Gemini 1.5 Pro gibi modellere anında erişebilirsiniz. Böylece ek yapılandırma adımlarına ihtiyaç duymazsınız.
4-a: Vertex AI'a İzin Verme
GCP'de Gemini'ı sorgulamak için hizmet hesabına Vertex AI'a izin vermeniz gerekir. Hizmet hesabı adının Default compute service account
olduğundan emin olun. Hesabın hizmet hesabı e-postasını kopyalayın.
Hizmet hesabı e-posta adresini IAM izin verilenler listenize Vertex AI User
rolüne sahip bir asıl öğe olarak ekleyin.
4-b: Gemini modellerini yükleme
Aşağıdaki adımları uygulayarak Gemini modellerini yükleyip parametrelerini ayarlayacaksınız.
- LIT kullanıcı arayüzünde
Configure
seçeneğini tıklayın.
- LIT kullanıcı arayüzünde
Select a base model
seçeneği altındagemini
seçeneğini belirleyin.
- Modeli
new_name
kullanarak adlandırmanız gerekiyor.
- Modeli
- Seçtiğiniz Gemini modellerini
model_name
olarak girin.
- Seçtiğiniz Gemini modellerini
Load Model
simgesini tıklayın.
Submit
simgesini tıklayın.
5. GCP'de Kendinden Barındırılan LLM Model Sunucu Dağıtma
LIT'nin model sunucu Docker görüntüsüne sahip kendi kendini barındıran LLM'ler, model davranışıyla ilgili daha ayrıntılı analizler elde etmek için LIT'nin belirginlik ve tokenizasyon işlevlerini kullanmanıza olanak tanır. Model sunucusu resmi, kitaplık tarafından sağlanan ve kendi bünyesinde barındırılan ağırlıklar (ör. Google Cloud Storage'da) dahil olmak üzere KerasNLP veya Hugging Face Transformers modelleriyle çalışır.
5-a: Modelleri Yapılandırın
Her kapsayıcı, ortam değişkenleri kullanılarak yapılandırılan bir model yükler.
MODEL_CONFIG'i ayarlayarak yüklenecek modelleri belirtmeniz gerekir. Biçim name:path
olmalıdır (ör. model_foo:model_foo_path
). Yol bir URL, yerel dosya yolu veya yapılandırılmış derin öğrenme çerçevesi için hazır ayarın adı olabilir (daha fazla bilgi için aşağıdaki tabloya bakın). Bu sunucu, desteklenen tüm DL_FRAMEWORK
değerlerinde Gemma, GPT2, Llama ve Mistral ile test edilmiştir. Diğer modeller de çalışır ancak ayarlamalar gerekebilir.
# 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
Ayrıca LIT model sunucusu, aşağıdaki komutu kullanarak çeşitli ortam değişkenlerinin yapılandırılmasına olanak tanır. Ayrıntılar için lütfen tabloya bakın. Her değişkenin ayrı ayrı ayarlanması gerektiğini unutmayın.
# Customize the variable value as needed.
export [VARIABLE]=[VALUE]
Değişken | Değerler | Açıklama |
DL_FRAMEWORK |
| Model ağırlıklarını belirtilen çalışma zamanına yüklemek için kullanılan modelleme kitaplığı. Varsayılan olarak |
DL_RUNTIME |
| Modelin çalıştığı derin öğrenme arka uç çerçevesi. Bu sunucu tarafından yüklenen tüm modeller aynı arka uç kullanır. Uyumsuzluk, hatalara neden olur. Varsayılan olarak |
HASSASİYET |
| LLM modelleri için kayan nokta hassasiyeti. Varsayılan olarak |
BATCH_SIZE | Pozitif tam sayılar | Her toplu işlem için işlenecek örnek sayısı. Varsayılan olarak |
SEQUENCE_LENGTH | Pozitif tam sayılar | Giriş isteminin maksimum sıra uzunluğu ve oluşturulan metin. Varsayılan olarak |
5-b: Model sunucusunu Cloud Run'a dağıtma
Öncelikle Model Sunucusu'nun en son sürümünü dağıtılacak sürüm olarak ayarlamanız gerekir.
# 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
Sürüm etiketini ayarladıktan sonra, model sunucunuza bir ad vermeniz gerekir.
# Set your Service name.
export MODEL_SERVICE_NAME='gemma2b-model-server'
Ardından, kapsayıcıyı Cloud Run'a dağıtmak için aşağıdaki komutu çalıştırabilirsiniz. Ortam değişkenlerini ayarlamazsanız varsayılan değerler uygulanır. Çoğu LLM pahalı bilgi işlem kaynakları gerektirdiğinden, GPU kullanılması önemle tavsiye edilir. Yalnızca CPU'da çalıştırmayı tercih ediyorsanız (GPT2 gibi küçük modeller için iyi çalışır) ilgili bağımsız değişkenleri --gpu 1 --gpu-type nvidia-l4 --max-instances 7
kaldırabilirsiniz.
# 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
Ayrıca, aşağıdaki komutları ekleyerek ortam değişkenlerini özelleştirebilirsiniz. Yalnızca belirli ihtiyaçlarınız için gerekli olan ortam değişkenlerini ekleyin.
--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" \
Belirli modellere erişmek için ek ortam değişkenleri gerekebilir. Uygun durumlarda Kaggle Hub'daki (KerasNLP modelleri için kullanılır) ve Hugging Face Hub'daki talimatları inceleyin.
5-c: Model Sunucusuna Erişim
Model sunucu oluşturulduktan sonra başlatılan hizmeti GCP projenizin Cloud Run bölümünde bulabilirsiniz.
Yeni oluşturduğunuz model sunucusunu seçin. Hizmet adının MODEL_SERVICE_NAME
ile aynı olduğundan emin olun.
Hizmet URL'sini, yeni dağıttığınız model hizmetini tıklayarak bulabilirsiniz.
Etkinliği izlemek, hata mesajlarını görüntülemek ve dağıtımın ilerleme durumunu takip etmek için GÜNLÜKLER bölümünü kontrol edebilirsiniz.
Hizmetin metriklerini görüntülemek için METRİKLER bölümünü kontrol edebilirsiniz.
5-d: Kendi Kendini Barındıran Modelleri Yükleme
3. adımda (Sorun giderme bölümüne bakın) LIT sunucunuza proxy uyguladıysanız aşağıdaki komutu çalıştırarak GCP kimlik jetonunuzu almanız gerekir.
# Find your GCP identity token.
gcloud auth print-identity-token
Aşağıdaki adımları uygulayarak kendi kendine barındırılan modelleri yükleyip parametrelerini ayarlayacaksınız.
- LIT kullanıcı arayüzünde
Configure
seçeneğini tıklayın. Select a base model
seçeneği altındaLLM (self hosted)
seçeneğini belirleyin.- Modeli
new_name
kullanarak adlandırmanız gerekiyor. base_url
olarak model sunucunuzun URL'sini girin.- LIT uygulaması sunucusuna proxy uyguladıysanız elde edilen kimlik jetonunu
identity_token
içine girin (bkz. 3. ve 7. adım). Aksi takdirde bu alanı boş bırakın. Load Model
simgesini tıklayın.Submit
simgesini tıklayın.
6. GCP'de LIT ile etkileşim kurma
LIT, model davranışlarını hata ayıklamanıza ve anlamanıza yardımcı olacak zengin bir özellik grubu sunar. Bir kutuya metin yazarak model tahminlerini görebilir veya LIT'in güçlü özellikleriyle modelleri ayrıntılı olarak inceleyebilirsiniz. Örneğin:
6-a: LIT aracılığıyla modeli sorgulayın
LIT, model ve veri kümesi yüklendikten sonra veri kümesini otomatik olarak sorgulanır. Sütunlardaki yanıtı seçerek her bir modelin yanıtını görüntüleyebilirsiniz.
6-b: Dizi Netlik Tekniği Kullanın
Şu anda LIT'teki sıra salinesi tekniği yalnızca kendi kendine barındırılan modelleri desteklemektedir.
Sıralı Önem, bir istemin belirli bir çıkış için en önemli bölümlerinin vurgulanmasını sağlayarak LLM istemlerinde hata ayıklamanıza yardımcı olan görsel bir araçtır. Sıralamanın Öne Çıkması hakkında daha fazla bilgi edinmek için bu özelliğin nasıl kullanılacağıyla ilgili dersin tamamını inceleyin.
Belirginlik sonuçlarına erişmek için istem veya yanıttaki herhangi bir girişi ya da çıkışı tıklayın. Belirginlik sonuçları gösterilir.
6-c: İstemi ve Hedefi Manuel Olarak Düzenleme
LIT, mevcut veri noktaları için prompt
ve target
değerlerini manuel olarak düzenlemenize olanak tanır. Add
simgesini tıkladığınızda yeni giriş veri kümesine eklenir.
6-d: İstemleri Yan Yana Karşılaştırma
LIT, istemi orijinal ve düzenlenmiş örneklerde yan yana karşılaştırmanıza olanak tanır. Bir örneği manuel olarak düzenleyebilir ve hem orijinal hem de düzenlenmiş sürümlerin tahmin sonucunu ve dize belirginliği analizini aynı anda görüntüleyebilirsiniz. Her veri noktası için istemi değiştirebilirsiniz. LIT, modeli sorgular ve ilgili yanıtı oluşturur.
6-e: Birden Çok Modeli Yan Yana Karşılaştırma
LIT, metin oluşturma ve puanlama örnekleri için modellerin tek tek karşılaştırılmasının yanı sıra belirli metrikler için toplu örneklerin karşılaştırılmasını sağlar. Çeşitli yüklü modelleri sorgulayarak yanıtlarındaki farklılıkları kolayca karşılaştırabilirsiniz.
6-f: Otomatik Kontrafaktual Oluşturucular
Alternatif girişler oluşturmak için otomatik varsayımsal oluşturucular kullanabilir ve modelinizin bu girişler üzerinde nasıl davrandığını hemen görebilirsiniz.
6-g: Model performansını değerlendirme
Veri kümesinin tamamında veya filtrelenmiş ya da seçili örneklerin herhangi bir alt kümesinde metrikleri (şu anda metin oluşturma için BLEU ve ROUGE puanları desteklenir) kullanarak model performansını değerlendirebilirsiniz.
7. Sorun giderme
7-a: Olası erişim sorunları ve çözümleri
Cloud Run'a dağıtım yapılırken --no-allow-unauthenticated
uygulandığından aşağıda gösterilen yasaklanmış hatalarla karşılaşabilirsiniz.
LIT App hizmetine erişmek için iki yaklaşım vardır.
1. Yerel Hizmet Proxy'si
Aşağıdaki komutu kullanarak hizmeti yerel ana makineye proxy'le bağlayabilirsiniz.
# Proxy the service to local host.
gcloud run services proxy $LIT_SERVICE_NAME
Proxy kullanılan hizmet bağlantısını tıklayarak LIT sunucusuna erişebilirsiniz.
2. Kullanıcıların Kimliklerini Doğrulama
Kullanıcıların kimliğini doğrulamak için bu bağlantıyı takip ederek LIT App hizmetine doğrudan erişim sağlayabilirsiniz. Bu yaklaşım, bir grup kullanıcının da hizmete erişmesini sağlayabilir. Birden fazla kişiyle ortak çalışmayı içeren geliştirmeler için bu daha etkili bir seçenektir.
7-b: Model sunucusunun başarıyla başlatılmasını sağlayan kontroller
Model sunucusunun başarıyla başlatıldığından emin olmak için bir istek göndererek doğrudan model sunucusunu sorgulayabilirsiniz. Model sunucusu predict
, tokenize
ve salience
olmak üzere üç uç nokta sağlar. İsteğinizde hem prompt
hem de target
alanlarını sağladığınızdan emin olun.
# 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]}]}'
Erişim sorunuyla karşılaşırsanız yukarıdaki 7-a bölümüne göz atın.
8. Tebrikler
Codelab'i tamamladığınız için tebrikler. Dinlenme zamanı.
Temizleme
Laboratuvarı temizlemek için laboratuvar için oluşturulan tüm Google Cloud hizmetlerini silin. Aşağıdaki komutları çalıştırmak için Google Cloud Shell'i kullanın.
Google Cloud bağlantısı, işlem yapılmaması nedeniyle kaybedilirse önceki adımları uygulayarak değişkenleri sıfırlayın.
# Delete the LIT App Service.
gcloud run services delete $LIT_SERVICE_NAME
Model sunucusunu başlattıysanız model sunucusunu da silmeniz gerekir.
# Delete the Model Service.
gcloud run services delete $MODEL_SERVICE_NAME
Daha fazla bilgi
Aşağıdaki materyalleri inceleyerek LIT aracının özelliklerini öğrenmeye devam edin:
- Gemma: Bağlantı
- LIT açık kaynak kod tabanı: Git deposu
- LIT makalesi: ArXiv
- LIT istemi hata ayıklama sayfası: ArXiv
- LIT özellikli video demosu: Youtube
- LIT istemi hata ayıklama demosu: Youtube
- Sorumlu Üretken Yapay Zeka Aracı Kiti: Bağlantı
İletişim
Bu kod laboratuvarıyla ilgili sorularınız veya sorunlarınız için lütfen GitHub üzerinden bize ulaşın.
Lisans
Bu çalışma, Creative Commons Attribution 4.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.