1. Giriş
İnce ayar neden önemlidir?
Temel modeller genel amaçlar için eğitilir ve bazen görevleri istediğiniz kadar iyi yerine getiremez. Bunun nedeni, modelin gerçekleştirmesini istediğiniz görevlerin, yalnızca istem tasarımı kullanılarak bir modele öğretilmesi zor olan özel görevler olması olabilir. Bu gibi durumlarda, belirli görevlerde modelin performansını artırmak için model ayarlamayı kullanabilirsiniz. Model ayarlama, talimatlar yeterli olmadığında belirli çıkış koşullarına uymaya da yardımcı olabilir. Büyük dil modelleri (LLM'ler) çok fazla bilgiye sahip olabilir ve birçok görevi yerine getirebilir ancak yalnızca özel eğitim verildiğinde başarılı olur. İnce ayar, bir LLM'yi eğiterek önceden eğitilmiş büyük dil modelini kendi ihtiyaçlarınıza göre uyarlamanıza olanak tanır.
Bu codelab'de, bir LLM modeli için denetimli ayarlama yaklaşımını kullanarak ince ayar yapmayı öğreneceksiniz.
Denetimli ayarlama, yeni bir beceri öğreterek modelin performansını artırır. Modele belirli bir davranışı veya görevi taklit etmeyi öğretmek için yüzlerce etiketli örnek içeren veriler kullanılır. Modele, yanıtları belirli kullanım alanımıza göre nasıl özelleştireceğini öğretmek için 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.
Ne oluşturacaksınız?
Kullanım alanı: Haber makaleleri için başlık oluşturma
Haber makaleleri için otomatik olarak başlık oluşturmak istediğinizi varsayalım. Vertex AI'ı kullanarak belirli bir stilde uygun bir özet başlık oluşturan ve başlığı haber kanalının yönergelerine göre özelleştiren bir LLM'ye ince ayar yapabilirsiniz.
Bu codelab'de şunları yapacaksınız:
BBC FULLTEXT DATA(BigQuery Public Datasetbigquery-public-data.bbc_news.fulltexttarafından kullanıma sunulmuştur) kullanın.- Bir LLM'yi (
text-bison@002) "bbc-news-summary-tuned" adlı yeni bir ince ayarlı modelle ince ayarlayın ve sonucu temel modelin yanıtıyla karşılaştırın. Bu codelab için örnek bir JSONL dosyası depoda mevcuttur. Dosyayı Cloud Storage paketinize yükleyip aşağıdaki ince ayar adımlarını uygulayabilirsiniz: - Verilerinizi hazırlayın: Örnek kodda kullanılan BBC News veri kümesi gibi haber makaleleri ve bunlara karşılık gelen başlıkların yer aldığı bir veri kümesiyle başlayın.
- Önceden eğitilmiş bir modeli ince ayar yapın: "
text-bison@002" gibi bir temel model seçin ve Python için Vertex AI SDK'sını kullanarak haber verilerinizle ince ayar 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ğıtın ve kullanın: İnce ayarlı modelinizi bir API uç noktası üzerinden kullanılabilir hâle getirin ve yeni makaleler için otomatik olarak başlık 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ı kontrol etmeyi öğrenin.
- Colab not defterini açın ve mevcut etkin Google Cloud hesabınızla aynı hesapta oturum açın.
3. Büyük bir dil modelini ince ayarlama
Bu codelab'de, modeli ince ayarlamak için Python için Vertex AI SDK kullanılır. Diğer seçenekleri (HTTP, CURL komutu, Java SDK, Console) kullanarak da ince ayar yapabilirsiniz.
Modelinizi 5 adımda özelleştirilmiş yanıtlar için ince ayarlayabilir ve değerlendirebilirsiniz. Depodaki llm_fine_tuning_supervised.ipynb dosyasında kodun tamamını bulabilirsiniz.
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 kendi paketinizle değiştirin ve örnek TRAIN.jsonl eğitim verileri dosyasını bu pakete yükleyin. Yukarıda bahsedilen bağlantıda bu kullanım alanı için örnek veriler 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 olmalıdır:

6. 3. adım: Büyük bir dil modelinde ince ayar yapın
Bu noktada, destek durumuna bağlı olarak herhangi bir büyük dil modelini ayarlayabilirsiniz. Ancak bu snippet'te, önceki adımda yüklediğimiz eğitim verilerini içeren veri çerçevesiyle "text-bison@002" adlı önceden eğitilmiş modeli ayarlıyoruz:
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şi bağlantısını kullanarak ince ayar işleminin ilerleme durumunu takip edebilirsiniz.
7. 4. adım: Yeni ince ayarlı modelle tahmin yapma
İnce ayar işi tamamlandıktan sonra yeni modelinizle tahmin yapabilirsiniz. Yeni ince ayarlı 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örmeniz gerekir:

Karşılaştırma için temel modelle (text-bison@002) tahmin yapmak üzere 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örmeniz gerekir:

Oluşturulan her iki başlık da uygun görünse de ilki (ince ayarlı modelle oluşturulan) söz konusu veri kümesinde kullanılan başlıkların stiline daha uygun.
İnce ayarlı modeli yükleme
Yeni ince ayar yaptığınız bir modeli yüklemek daha kolay olabilir. Ancak 3. adımda, kodun kendisi kapsamında çağrıldığını unutmayın. Bu nedenle, ayarlanmış modeli tuned_model değişkeninde tutmaya devam eder. Peki ya geçmişte ayarlanmış bir modeli çağırmak istiyorsanız?
Bunu yapmak için Vertex AI Model Registry'den dağıtılan ince ayarlı modelin tam ENDPOINT URL'siyle LLM'de get_tuned_model() yöntemini çağırabilirsiniz. Bu durumda, ilgili kimlikler 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: Yeni ince ayarlı modeli değerlendirin
Değerlendirme, oluşturulan yanıtın kalitesini ve alaka düzeyini değerlendirmenin kritik bir yönüdür. Bu işlemde, üretken dil modelinin çıkışı incelenerek tutarlılığı, doğruluğu ve sağlanan istemle uyumu belirlenir. Model değerlendirmesi, geliştirilebilecek alanları belirlemeye, model performansını optimize etmeye ve oluşturulan metnin kalite ve kullanışlılık açısından istenen standartları karşılamasını sağlamaya yardımcı olur. Bu konu hakkında daha fazla bilgiyi belgelerde bulabilirsiniz. Şimdilik ince ayar yapılmış modelle ilgili bazı değerlendirme metriklerini nasıl alabileceğimize ve bunları temel modelle nasıl karşılaştırabileceğimize bakacağız.
- 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 ayarlı modelde metin özetleme görevi için değerlendirme spesifikasyonunu tanımlayın.
task_spec = EvaluationTextSummarizationSpec(
task_name = "summarization",
ground_truth_data=df
)
Bu adımın tamamlanması birkaç dakika sürer. Sonuçtaki işlem hattı işi bağlantısını kullanarak ilerleme durumunu takip edebilirsiniz. Tamamlandıktan sonra aşağıdaki değerlendirme sonucunu görürsünüz:

Değerlendirme sonucundaki rougeLSum metriği, özetin ROUGE-L puanını belirtir. ROUGE-L, bir özet ile referans özet arasındaki örtüşmeyi ölçen, hatırlamaya dayalı bir metriktir. Bu oran, iki özet arasındaki en uzun ortak alt dizinin (LCS) alınarak referans özetin uzunluğuna bölünmesiyle hesaplanır.
Sağlanan ifadede rougeLSum puanı 0,36600753600753694'tür. Bu, özetin referans özetle% 36,6 oranında örtüştüğü anlamına gelir.
Değerlendirme adımını temel modelde çalıştırırsanız özet puanının, ince ayarlı modelde nispeten daha yüksek olduğunu görürsünüz.
Değerlendirme sonuçlarını, değerlendirme işini oluştururken belirttiğiniz Cloud Storage çıkış dizininde bulabilirsiniz. Dosyanın adı evaluation_metrics.json. Ayarlanmış 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 edilecek önemli noktalar
- Model desteği: En son uyumluluk bilgileri için her zaman model dokümanlarını kontrol edin.
- Hızlı gelişim: Büyük dil modelleri alanı hızla gelişiyor. Daha yeni ve daha güçlü bir model, eski bir temelde oluşturulan ince ayarlı bir modelden daha iyi performans gösterebilir. Bu ince ayar tekniklerini, özellik kullanıma sunulduğunda daha yeni modellere de uygulayabilirsiniz.
- LoRA: LoRA, LLM'lere verimli bir şekilde ince ayar yapma tekniğidir. Bunu, mevcut önceden eğitilmiş modelin katmanlarına eğitilebilir, düşük sıralı ayrıştırma matrisleri ekleyerek yapar. Bu konu hakkında daha fazla bilgiye buradan ulaşabilirsiniz. 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 sayede, ince ayar sırasında eklenen parametrelerin sayısı önemli ölçüde azalır.
10. Temizleme
Bu codelab'de kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:
- Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
- Proje listesinde silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
- İletişim kutusunda proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
- Alternatif olarak Model Registry'ye gidebilir, model dağıtma ve test sekmesine gidip uç noktanın dağıtımını kaldırabilir ve dağıtılan ayarlanmış modeli silebilirsiniz.
11. Tebrikler
Tebrikler! Vertex AI'ı kullanarak bir LLM modeline ince ayar yapma işlemini başarıyla tamamladı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 ile modellerinizi verimli ve etkili bir şekilde ince ayarlamak için ihtiyaç duyduğunuz araçlara ve kaynaklara sahip olursunuz.
GitHub depolarını keşfedin ve ince ayar ile değerlendirme deneyimini ilk elden yaşamak için örnek kodla denemeler yapın. İnce ayarlı LLM'lerin, hedeflenmiş pazarlama metinleri oluşturma, karmaşık belgeleri özetleme veya kültürel inceliklerle dilleri çevirme gibi özel ihtiyaçlarınızı nasıl karşılayabileceğini değerlendirin. Vertex AI'ın sunduğu kapsamlı araç ve hizmet paketini kullanarak ince ayarlı modellerinizi kolayca oluşturun, eğitin, değerlendirin ve dağıtın.