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, istem hata ayıklama ve model yorumlama için LIT kullanıcı arayüzünün nasıl kullanılacağına dair rehberlik de sağlanmaktadır.
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 biçimindeki verileri destekleyen görsel ve etkileşimli bir model anlama aracıdır. Tek başına bir sunucu olarak veya Google Colab, Jupyter ve Google Cloud Vertex AI gibi not defteri ortamlarında ç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 ve belirli üçüncü taraf modellerini ve öğelerini keşfetmenize, test etmenize, özelleştirmenize ve dağıtmanıza yardımcı olan bir makine öğrenimi modeli 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 başlatın
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ınızı geliştirebilir, derleyebilir, hatalarını ayıklayabilir ve dağıtabilirsiniz. Cloud Shell, en sevdiğiniz araç setinin önceden yüklü olduğu ve 5 GB kalıcı depolama alanı bulunan, geliştiricilere hazır bir online ortam sunar. Sonraki adımlarda komut isteminden yararlanacaksınız.
Menü çubuğunun sağ üst kısmındaki (aşağıdaki ekran görüntüsünde mavi daire içine alınmış) simgeyi kullanarak bir Google Cloud Shell oturumu başlatın.
Sayfanın alt kısmında Bash kabuğunun bulunduğu bir terminal görürsünüz.
2-c: Google Cloud projesini ayarlama
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, kapsayıcıyı 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. Her kayıt prompt
ve isteğe bağlı target
ve source
alanları 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 modelleri 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. İstenen sürümü (ör. "gemini-1.5-pro-001") model adı parametresi aracılığıyla gönderebilirsiniz. Bu modellerin kullanılmasının en önemli 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 gerek kalmaz.
4-a: Vertex AI İzinleri Verin
GCP'de Gemini'yi sorgulamak için hizmet hesabına Vertex AI izinleri vermeniz gerekir. Hizmet hesabı adının Default compute service account
olduğundan emin olun. Hesabın hizmet hesabı e-posta adresini 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
olarak adlandırmanız gerekir.
- 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. Kendi Kendine Barındırılan LLMs Model Sunucusunu GCP'de dağıtma
LIT'in model sunucusu Docker resmiyle kendi kendine barındırılan LLM'ler, model davranışı hakkında daha ayrıntılı analizler elde etmek için LIT'in önem ve dize oluşturma 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 kullanılabilir 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 komut kullanılarak ç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ş isteğinin maksimum dize uzunluğu artı 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 sunucunuzu adlandırmanız 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 özel 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 LIT sunucunuzu proxy'ye bağlarsanız (Sorun giderme bölümünü kontrol edin) 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
olarak adlandırmanız gerekir. - Model sunucunuzun URL'sini
base_url
olarak girin. - LIT uygulama sunucusunun proxy'sini kullanıyorsanız elde edilen kimlik jetonunu
identity_token
alanına girin (3. Adım ve 7. Adım'a bakın). Aksi takdirde 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ı anlayıp hata ayıklamanıza yardımcı olacak zengin bir özellik grubu sunar. Bir kutuya metin yazarak model tahminlerini görebilir veya LIT'in güçlü özellik paketiyle 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ütunlarda yanıtı seçerek her modelin yanıtını görüntüleyebilirsiniz.
6-b: Sıralı Öne Çıkan Nokta Tekniği'ni 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 eğitimin tamamını inceleyin.
Önem sonuçlarına erişmek için istem veya yanıttaki herhangi bir girişi ya da çıkışı tıklayın. Önem 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 sorgulayarak 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. Yüklenen çeşitli modelleri sorgulayarak yanıtlarındaki farklılıkları kolayca karşılaştırabilirsiniz.
6-f: Otomatik Kontrafaktual Oluşturucular
Alternatif girişler oluşturmak ve modelinizin bu girişlerde nasıl davrandığını hemen görmek için otomatik karşıt gerçeklik oluşturucuları kullanabilirsiniz.
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ını destekler) 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 hizmete proxy
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
Ardından, proxy'lenmiş 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 makalesi: 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.