Büyük Dil Modellerinde İnce Ayar: Vertex AI, LLM'leri Bir Sonraki Seviyeye Nasıl Taşıyor?

1. Giriş

İnce ayar neden önemlidir?

Temel modeller genel amaçlar için eğitilir ve bazen görevleri istediğiniz kadar iyi gerçekleştirmez. Bunun nedeni, modelin gerçekleştirmesini istediğiniz görevlerin yalnızca istem tasarımı kullanılarak öğretilmesi zor olan özel görevler olması olabilir. Bu gibi durumlarda, belirli görevler için bir modelin performansını artırmak üzere model ayarlamayı kullanabilirsiniz. Model ayarı, talimatlar yeterli olmadığında belirli çıkış koşullarına uymanıza da yardımcı olabilir. Büyük dil modelleri (LLM'ler) çok fazla bilgiye sahip olabilir ve birçok görevi gerçekleştirebilir ancak yalnızca özel eğitim verildiğinde başarılı olurlar. İ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, bir LLM modeli için gözetimli ayarlama yaklaşımını kullanarak nasıl hassas ayarlama yapacağınızı öğreneceksiniz.

Gözetimli ayarlama, yeni bir beceri öğreterek modelin performansını artırır. Yüzlerce etiketli örnek içeren veriler, modele istenen davranışı veya görevi taklit etmeyi öğretmek için 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.

Oluşturacağınız uygulama

Kullanım alanı: Haber makaleleri için başlık oluşturma

Haber makaleleri için başlıkları otomatik olarak 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'de ince ayar yapabilirsiniz.

Bu codelab'de şunları yapacaksınız:

  • BBC FULLTEXT DATA (bigquery-public-data.bbc_news.fulltext BigQuery Herkese Açık Veri Kümesi tarafından kullanıma sunulmuştur) kullanın.
  • Bir LLM'yi (text-bison@002) "bbc-news-summary-tuned" adlı yeni bir hassas ayarlanmış modele hassas ayarlayın ve sonucu temel modelden gelen yanıtla karşılaştırın. Bu kod laboratuvarının örnek JSONL dosyasını depoda bulabilirsiniz. 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 ilgili başlıklarından 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 modelde ince ayar yapın.
  • Sonuçları değerlendirin: Başlık oluşturma kalitesindeki iyileşmeyi görmek için hassas ayarlanmış modelinizin performansını ana modelle karşılaştırın.
  • Modelinizi dağıtın ve kullanın: İnce ayarlanmış modelinizi bir API uç noktası üzerinden kullanıma sunun ve yeni makaleler için başlıkları otomatik olarak oluşturmaya başlayın.

2. Başlamadan önce

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Google Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin.
  3. Colab Notebook'u 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, model üzerinde ince ayar yapmak için Python için Vertex AI SDK kullanılmaktadır. HTTP, CURL komutu, Java SDK'sı ve Console gibi diğer seçenekleri kullanarak da hassas ayarlamalar yapabilirsiniz.

Özelleştirilmiş yanıtlar için modelinizde 5 adımda ince ayar yapabilir ve modelinizi değerlendirebilirsiniz. Depodaki llm_fine_tuning_supervised.ipynb dosyasında kodun tamamını bulabilirsiniz.

4. 1. Adım: Bağımlılıkları yükleyip içe aktarın

!pip install google-cloud-aiplatform
!pip install --user datasets
!pip install --user google-cloud-pipeline-components

Repo'daki .ipynb dosyasında gösterilen 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

KABINIZ'ı kendi paketinizle değiştirin ve örnek TRAIN.jsonl eğitim veri dosyasını bu pakete yükleyin. Yukarıda belirtilen 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 sonucunda şunu göreceksiniz:

17274866af36a47c.png

6. 3. Adım: Büyük dil modelini hassas ayarlama

Bu noktada, büyük dil modellerini (destek durumuna bağlı olarak) ayarlayabilirsiniz. Ancak bu snippet'te, "text-bison@002" adlı önceden eğitilmiş modeli, önceki adımda yüklediğimiz eğitim verilerini içeren veri çerçevesiyle 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 hassas ayarlama işleminin ilerleme durumunu takip edebilirsiniz.

7. 4. adım: Yeni hassas ayarlanmış modelle tahminde bulunma

İnce ayarlama işi tamamlandıktan sonra yeni modelinizle tahminde bulunabilirsiniz. Yeni ayarlanmış modelinizle tahminde bulunmak 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örürsünüz:

67061c36b7ba39b7.png

Karşılaştırma için temel modelle (text-bison@002) tahminde bulunmak ü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örürsünüz:

22ec58e4261405d6.png

Oluşturulan her iki başlık da uygun görünse de ilk başlık (ince ayarlanmış modelle oluşturulan), söz konusu veri kümesinde kullanılan başlık stiliyle daha uyumlu.

İnce ayarlanmış modeli yükleme

Az önce hassas ayar yaptığınız bir modeli yüklemek daha kolay olabilir. Ancak 3. adımda, kodun kapsamında çağrıldığını unutmayın. Bu nedenle, tuned_model değişkeninde ayarlanmış modeli hâlâ tutar. Peki ya geçmişte ayarlanmış bir modeli çağırmak istiyorsanız?

Bunu yapmak için LLM'de get_tuned_model() yöntemini, Vertex AI Model Registry'den dağıtılan hassas ayarlanmış modelin tam UÇ NOKTASI URL'siyle çağırabilirsiniz. Bu durumda, ilgili kimliklerin 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 hassas ayarlanmış modeli değerlendirme

Değerlendirme, oluşturulan yanıtın kalitesini ve alaka düzeyini değerlendirmenin kritik bir parçasıdır. Bu işlem, üretken dil modelinin çıkışını inceleyerek tutarlılığını, doğruluğunu ve sağlanan istemle uyumunu belirlemeyi içerir. Model değerlendirmesi, iyileş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 dokümanlar bölümünde bulabilirsiniz. Şimdilik, hassas ayarlanmış modelde bazı değerlendirme metriklerini nasıl elde edebileceğimizi ve temel modelle nasıl karşılaştırabileceğimizi göreceğiz.

  1. DEĞERLENDİRME 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)
  1. İnce ayarlanmış modelde bir 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 ardışık düzen işi bağlantısını kullanarak ilerlemeyi takip edebilirsiniz. İşlem tamamlandıktan sonra aşağıdaki değerlendirme sonucunu görürsünüz:

387843d6c970e02.png

Değerlendirme sonucundaki rougeLSum metriği, özetin ROUGE-L puanını belirtir. ROUGE-L, bir özet ile referans özet arasındaki çakışma oranını ölçen, hatırlamaya dayalı bir metriktir. İki özet arasındaki en uzun ortak alt dizinin (LCS) alınıp referans özetin uzunluğuna bölünmesiyle hesaplanır.

Sağlanan ifadedeki rougeLSum puanı 0,36600753600753694'tür. Bu, özetin referans özetle% 36,6 örtüştüğü anlamına gelir.

Değerlendirme adımını referans modelde çalıştırırsanız özet puanının, hassas ayarlanmış model için 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 edilmesi gerekenler

  • Model desteği: En son uyumluluk için her zaman model dokümanlarını kontrol edin.
  • Hızlı gelişme: LLM'ler alanındaki gelişmeler hızla devam ediyor. Daha yeni ve daha güçlü bir model, eski bir temele dayalı hassas ayarlanmış bir modelden daha iyi performans gösterebilir. Bu ince ayar tekniklerini, özellik kullanıma sunulduğunda yeni modellere uygulayabilirsiniz.
  • LoRA: LoRA, LLM'lere verimli bir şekilde ince ayar yapmak için kullanılan bir tekniktir. Bunu, mevcut önceden eğitilmiş modelin katmanlarına eğitilebilir, düşük rütbeli ayrıştırma matrisleri ekleyerek yapar. Bu konu hakkında daha fazla bilgiyi burada bulabilirsiniz. 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, hassas ayar sırasında eklenen ek parametrelerin sayısı önemli ölçüde azaltılır.

10. Temizleme

Bu kod laboratuvarında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:

  1. Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
  2. Proje listesinde, silmek istediğiniz projeyi seçin ve ardından Sil'i tıklayın.
  3. İletişim kutusuna proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
  4. Alternatif olarak Model Kaydı'na gidip model dağıtma ve test etme sekmesine gidebilir, uç noktanın dağıtımını kaldırabilir ve dağıtılan ayarlanmış modeli silebilirsiniz.

11. Tebrikler

Tebrikler! LLM modelinde ince ayar yapmak için Vertex AI'ı başarıyla kullandı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 modellerinizde verimli ve etkili bir şekilde ince ayar yapmak için ihtiyaç duyduğunuz araçlara ve kaynaklara sahip olursunuz.

İnce ayarlama ve değerlendirme özelliklerini ilk elden deneyimlemek için GitHub depolarını keşfedin ve örnek kodu deneyin. Hassas ayarlanmış LLM'lerin, hedeflenen pazarlama metinleri oluşturmaktan karmaşık dokümanları özetlemeye veya dilleri kültürel nüanslarla çevirmeye kadar belirli ihtiyaçlarınıza nasıl yanıt verebileceğini düşünün. İnce ayarlanmış modellerinizi kolayca oluşturmak, eğitmek, değerlendirmek ve dağıtmak için Vertex AI tarafından sunulan kapsamlı araç ve hizmet paketinden yararlanın.