1. Giriş
İnce ayarlar neden önemlidir?
Temel modeller genel amaçlar için eğitilir ve bazen görevleri istediğiniz kadar iyi yerine getirmez. Bunun nedeni, modelin gerçekleştirmesini istediğiniz görevlerin, yalnızca istem tasarımı kullanılarak modelin eğitilmesi zor olan özel görevler olması olabilir. Bu durumlarda, belirli görevlerde modelin performansını iyileştirmek için model ince ayarını kullanabilirsiniz. Model ince ayarı, talimatlar yeterli olmadığında belirli çıkış gereksinimlerine uymanıza da yardımcı olabilir. Büyük dil modelleri (LLM) çok fazla bilgi içerebilir ve birçok görevi gerçekleştirebilir. Ancak yalnızca özel bir eğitim sağlandığında mükemmel olur. İnce ayar, bir LLM'yi eğiterek önceden eğitilmiş bir LLM'yi özel ihtiyaçlarınıza göre uyarlamanıza olanak tanır.
Bu codelab'de, LLM modeli için gözetimli ayar yaklaşımını kullanarak ince ayar yapmayı öğreneceksiniz.
Gözetimli ayarlama, yeni bir beceri öğreterek modelin performansını artırır. Yüzlerce etiketli örnek içeren veriler, modelin istenen bir davranışı veya görevi taklit etmesini öğretmek için kullanılır. Özel kullanım alanımız için yanıtların nasıl özelleştirileceğini modele öğretmek amacıyla giriş metni (istem) ve çıkış metni (yanıt) için etiketli bir veri kümesi sağlayacağız.
Model özelleştirme hakkında daha fazla bilgiyi burada bulabilirsiniz.
Oluşturacaklarınız
Kullanım alanı: Haber makaleleri için başlık oluşturma
Haber makaleleri için otomatik olarak başlıklar oluşturmak istediğinizi varsayalım. Vertex AI'ı kullanarak, belirli bir stilde uygun bir özetlenmiş başlık oluşturan ve başlığı haber kanalının yönergelerine göre özelleştiren geniş kapsamlı dil modelinde ince ayar yapabilirsiniz.
Bu codelab'de şunları gerçekleştireceksiniz:
BBC FULLTEXT DATA
kullanın (BigQuery Herkese Açık Veri Kümesibigquery-public-data.bbc_news.fulltext
tarafından kullanıma sunulmuştur).- Bir LLM'de (
text-bison@002
) ince ayar yapılmış "bbc-news-summary-tuned
" adlı yeni bir modele ince ayar yapma ve sonucu temel modelin yanıtıyla karşılaştırırsınız. Depoda, bu codelab için örnek bir JSONL dosyası bulabilirsiniz. Dosyayı Cloud Storage Paketinize yükleyip aşağıdaki ince ayar adımlarını uygulayabilirsiniz: - Verilerinizi hazırlama: Örnek kodda kullanılan BBC News veri kümesi gibi haber makalelerinden ve bunlara karşılık gelen başlıklardan oluşan bir veri kümesiyle başlayın.
- Önceden eğitilmiş bir modelde ince ayar yapma: "
text-bison@002
" gibi bir temel model seçin ve Python için Vertex AI SDK'sını kullanarak haber verilerinizle ilgili ince ayarlar yapın. - Sonuçları değerlendirin: Başlık oluşturma kalitesindeki iyileşmeyi görmek için ince ayar yapılmış modelinizin performansını temel modelle karşılaştırın.
- Modelinizi dağıtma ve kullanma: İnce ayar yapılmış modelinizi bir API uç noktası üzerinden kullanılabilir hale getirin ve yeni makaleler için otomatik olarak başlıklar oluşturmaya başlayın.
2. Başlamadan önce
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Google Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin.
- Colab Not Defteri'ni açın ve mevcut etkin Google Cloud hesabınızla aynı hesaba giriş yapın.
3. Büyük dil modelinde ince ayar yapma
Bu codelab'de, modelde ince ayar yapmak için Python için Vertex AI SDK'sı kullanılır. Diğer seçenekleri kullanarak da ince ayar yapabilirsiniz: HTTP, CURL komutu, Java SDK, Console.
Özelleştirilmiş yanıtlar için modelinizi 5 adımda hassaslaştırabilir ve değerlendirebilirsiniz. Depodaki llm_fine_tuning_supervised.ipynb dosyasındaki kodun tamamına bakabilirsiniz.
4. 1. Adım: Bağımlılıkları yükleyin ve içe aktarın
!pip install google-cloud-aiplatform
!pip install --user datasets
!pip install --user google-cloud-pipeline-components
Depodaki .ipynb dosyasında gösterilen diğer adımları uygulayın. PROJECT_ID ve BUCKET_NAME değerlerini kimlik bilgilerinizle değiştirdiğinizden emin olun.
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import warnings
warnings.filterwarnings('ignore')
import vertexai
vertexai.init(project=PROJECT_ID, location=REGION)
import kfp
import sys
import uuid
import json
import pandas as pd
from google.auth import default
from datasets import load_dataset
from google.cloud import aiplatform
from vertexai.preview.language_models import TextGenerationModel, EvaluationTextSummarizationSpec
5. 2. Adım: Eğitim verilerini hazırlayın ve yükleyin
YOUR_BUCKET değerini paketinizle değiştirin ve örnek TRAIN.jsonl eğitim veri dosyasını pakete yükleyin. Örnek veriler, yukarıda belirtilen bağlantıda bu kullanım alanı için sağlanmıştır.
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/TRAIN.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
Bu adımın sonucu şu şekilde olacaktır:
6. 3. Adım: Büyük dil modelinde ince ayar yapın
Bu aşamada, herhangi bir büyük dil modelini ayarlayabilirsiniz (destek uygunluğuna göre) . Ancak bu snippet'te, önceden eğitilmiş "text-bison@002" modelini ayarlıyoruz. önceki adımda yüklediğimiz eğitim verilerinin bulunduğu veri çerçevesiyle değiştirin:
model_display_name = 'bbc-finetuned-model' # @param {type:"string"}
tuned_model = TextGenerationModel.from_pretrained("text-bison@002")
tuned_model.tune_model(
training_data=df,
train_steps=100,
tuning_job_location="europe-west4",
tuned_model_location="europe-west4",
)
Bu adımın tamamlanması birkaç saat sürer. Sonuçtaki ardışık düzen iş bağlantısını kullanarak ince ayarın ilerleme durumunu izleyebilirsiniz.
7. 4. adım: İnce ayar yapılmış yeni modelle tahminde bulunun
İnce ayar işi tamamlandıktan sonra yeni modelinizle tahminde bulunabilirsiniz. Hassaslaştırılmış yeni modelinizle tahmin yapmak için:
response = tuned_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)
Aşağıdaki sonucu göreceksiniz:
Karşılaştırma amacıyla temel model (text-bison@002
) ile tahmin yapmak için aşağıdaki komutları çalıştırın:
base_model = TextGenerationModel.from_pretrained("text-bison@002")
response = base_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)
Aşağıdaki sonucu göreceksiniz:
Oluşturulan her iki başlık da uygun görünse de ilki (ince ayar modeliyle oluşturulmuştur) söz konusu veri kümesinde kullanılan başlıkların stiline daha uygundur.
Ayrıntılı modeli yükleme
İnce ayar yaptığınız bir modeli yüklemek daha kolay olabilir. Ancak 3. adımda, bu etiketin kodun kapsamında çağrıldığını, dolayısıyla hassaslaştırılmış modeli hassaslaştırılmış_model değişkeninde tuttuğunu unutmayın. Peki, geçmişte incelenen bir modeli çağırmak isterseniz ne olur?
Bunu yapmak için Vertex AI Model Registry'den dağıtılan hassas ayarlanmış modelin tam ENDPOINT URL'si ile LLM'de get_tuned_model() yöntemini çağırabilirsiniz. Bu durumda, ilgili kimlikleri yerine PROJECT_NUMBER ve MODEL_NUMBER değerlerini girdiğinizi unutmayın.
tuned_model_1 = TextGenerationModel.get_tuned_model("projects/<<PROJECT_NUMBER>>/locations/europe-west4/models/<<MODEL_NUMBER>>")
print(tuned_model_1.predict("YOUR_PROMPT"))
8. 5. Adım: İnce ayar yapılmış yeni modeli değerlendirin
Değerlendirme, oluşturulan yanıtın kalitesini ve alaka düzeyini değerlendirme açısından kritik bir öneme sahiptir. Bu süreçte, üretken dil modelinden elde edilen çıktının tutarlılığı, doğruluğu ve sağlanan istemle uyumlu olup olmadığı incelenir. Model değerlendirme; iyileştirilmesi gereken alanları belirlemeye, model performansını optimize etmeye ve oluşturulan metnin kalite ve kullanışlılık açısından istenen standartlara uygun olmasını sağlamaya yardımcı olur. Daha fazla bilgi için belgeleri inceleyin. Şimdilik, ince ayar yapılmış model hakkında bazı değerlendirme metriklerini nasıl alabileceğimizi ve temel modelle karşılaştırmayı göreceğiz.
- EVALUATION veri kümesini yükleyin:
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/EVALUATE.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
- İnce ayarlanmış modelde bir metin özetleme görevi için değerlendirme spesifikasyonu tanımlayın.
task_spec = EvaluationTextSummarizationSpec(
task_name = "summarization",
ground_truth_data=df
)
Bu adımın tamamlanması birkaç dakika sürer. Sonuçtaki ardışık düzen iş bağlantısını kullanarak ilerlemeyi izleyebilirsiniz. Bu işlemin ardından aşağıdaki değerlendirme sonucunu görmeniz gerekir:
Değerlendirme sonucundaki rougeLSum
metriği, özetin ROUGE-L puanını belirtir. ROUGE-L, özet ile referans özeti arasındaki çakışmayı ölçen geri çağırmaya dayalı bir metriktir. İki özet arasındaki en uzun ortak alt dizi (LCS) alınıp referans özetinin uzunluğuna bölünerek hesaplanır.
Sağlanan ifadedeki rougeLSum
puanı 0,36600753600753694'tür. Bu, özetin referans özetiyle% 36,6 oranında çakıştığı anlamına gelir.
Değerlendirme adımını temel model üzerinde çalıştırırsanız ince ayar yapılmış model için özet puanının nispeten daha yüksek olduğunu göreceksiniz.
Değerlendirme sonuçlarını, değerlendirme işini oluştururken belirttiğiniz Cloud Storage çıkış dizininde bulabilirsiniz. Dosyanın adı evaluation_metrics.json
. Hassaslaştırılmış modeller için değerlendirme sonuçlarını Google Cloud Console'daki Vertex AI Model Registry sayfasında da görüntüleyebilirsiniz.
9. Dikkat edilmesi gerekenler
- Model desteği: En son uyumluluk için model dokümanlarını her zaman kontrol edin.
- Hızlı gelişim: LLM alanı hızla ilerlemektedir. Daha yeni ve daha güçlü bir model, eski bir tabanı temel alan ince ayar yapılmış bir modelden daha iyi performans gösterebilir. Neyse ki bu ince ayar tekniklerini yeni modellere uygun hale geldiğinde uygulayabilirsiniz.
- LoRA: LoRA, LLM'lere verimli bir şekilde ince ayar yapmaya yarayan bir tekniktir. Bunu, önceden eğitilmiş mevcut modelin katmanlarına eğitilebilir, düşük dereceli ayrıştırma matrisleri ekleyerek yapar. Buradan daha fazla bilgi edinebilirsiniz. LoRA, büyük bir LLM'nin tüm parametrelerini güncellemek yerine, orijinal modelin ağırlık matrislerine eklenen veya bu matrislerle çarpılan daha küçük matrisleri öğrenir. Bu, ince ayar sırasında sunulan ek parametrelerin sayısını önemli ölçüde azaltır.
10. Temizleme
Bu codelab'de kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız aşağıdaki adımları uygulayın:
- Google Cloud konsolunda Kaynakları yönetin sayfasına gidin.
- Proje listesinden silmek istediğiniz projeyi seçin ve ardından Sil'i tıklayın.
- İletişim kutusuna proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
- Alternatif olarak Model Kayıt Defteri'ne, model dağıtma ve test etme sekmesine, uç noktanın dağıtımını kaldırabilir ve dağıtılan hassaslaştırılmış modeli silebilirsiniz.
11. Tebrikler
Tebrikler! Vertex AI'ı başarıyla kullanarak LLM modelinde ince ayar yapma işlemi yaptınız. İnce ayar, LLM'leri alanınıza ve görevlerinize göre özelleştirmenize olanak tanıyan güçlü bir tekniktir. Vertex AI, modellerinizde verimli ve etkili şekilde ince ayar yapmak için ihtiyacınız olan araç ve kaynaklara sahiptir.
GitHub depolarını keşfedin ve örnek kodla denemeler yaparak ince ayar ve değerlendirme işlemlerini ilk elden deneyimleyin. İncelikli LLM'lerin, hedeflenmiş pazarlama metni oluşturmaktan karmaşık belgeleri özetlemeye veya dilleri kültürel nüanslarla çevirmeye kadar özel ihtiyaçlarınızı nasıl karşılayabileceğini düşünün. Vertex AI'ın sunduğu kapsamlı araç ve hizmet paketinden yararlanarak ince ayar yapılmış modellerinizi kolayca oluşturun, eğitin, değerlendirin ve dağıtın.