Üretken Yapay Zekalarda Değerlendirilme ve Hata Ayıklama Nasıl Yapılır?

Cahit Barkin Ozer
6 min readAug 6, 2023

--

Deeplearning.ai “Evaluating and Debugging Generative AI” kursu Türkçe özeti.

Makine öğrenimi uygulayıcıları için Weights & Biases’ın sunduğu Makine Öğrnemesi Operasyonları (MLOps) araçlar
Her makine öğrenmesi platformu ile entegre çalışabilir

W&B’yi Enstrümanlaştırma

Bir aracın enstrümanlaştırması veya “instrumenting” , tipik olarak, aracın kod tabanına veya uygulamasına izleme (monitoring), günlük kaydı(logging) ve ölçüm yetenekleri (measurement capabilities) ekleme sürecini ifade eder. Bir aracı enstrüman haline getirmenin amacı, nasıl çalıştığını anlamak, sorunları belirlemek ve iyileştirmeler yapmak için çok önemli olabilecek davranışlarına ve performansına ilişkin veri ve öngörüler toplamaktır.

Neden w&b kullanmalısınız?

Parça ve sürümü otomatik olarak hızlı bir şekilde entegre edebilirsiniz. Verilerinizi görselleştirin ve kritik içgörüleri ortaya çıkarın. Güvenle değerlendirip dağıtabilmeniz için performansı artırın.

!pip install wandb

import wandb

config = {'learning_rate': 0.001} # Hiperparametreleri organize edin

wandb.init(project='gpt-5', config=config) # wandb çalıştırın

wandb.log({"loss":loss}) # metrikleri zamanla loglayarak performansı görselleştirin

wandb.finish() # Notebook ile çalışıyorken bitir

Aşağıdaki örnekte önemli metrikleri izleyip görselleştirebilmeyi, modelimizin davranışına ilişkin içgörüler elde edebilmeyi ve model iyileştirmeleri için bilinçli kararlar alabilmeyi öğreneceğiz. Ayrıca farklı deneyleri nasıl karşılaştıracağımızı ve analiz edeceğimizi, ekip üyeleriyle nasıl işbirliği yapacağımızı ve sonuçları etkili bir şekilde nasıl yeniden üreteceğimizi göreceğiz.

Karakterleri sınıflandırmak için basit bir model oluşturacağız.

W&B hesabı açmak için https://wandb.ai/site adresinden ücretsiz bir hesap için kaydolun ve ardından deneylerinizin sonuçlarını saklamak ve gelişmiş W&B özelliklerini kullanmak için wandb hesabınızda oturum açın. Anonim modda da öğrenmeye devam edebilirsiniz.

W&B’yi Enstrümanlaştırma Kod Örneği:

W&B ile bir difüzyon modelinin eğitimi

“Difüzyon modelleri nasıl çalışır?” kursundaki Lab3 Jupyter Notebook’u alıp aşağıdakileri ekleyeceğiz:

  • Eğitim kaybının ve ölçümlerinin günlüğe kaydedilmesi.
  • Eğitim sırasında modelden örnekleme ve örnekleri W&B’ye yükleme.
  • Model kayıt noktalarını W&B’ye kaydetme.

Difüzyon modelleri nasıl çalışır? kursu:

W&B’den tam kullanıcı deneyimi elde etmek için bir hesap oluşturmanız önerilir.

Jeneratif modeller eğitirken telemetri çok önemlidir. Difüzyon modelimizin eğitimi için:

  • loss (kayıp) ve diğer alakalı metrikleri gözlemleyeceğiz.
  • Eğitim esnasında görseller örnekleyeceğiz.
  • Güvenli bir şekilde modeli ve model kayıt nokta versiyonlarını depolayacağız.

Difüzyon kursunda yaptığımız gibi DDPM gürültü programlayıcı ve örnekleyicisi kurmalıyız .

perturb_input: Programdaki karşılık gelen zaman adımında giriş görüntüsüne gürültü ekler.
sample_ddpm_context: DDPM örnekleyiciyi kullanarak görüntüler oluşturur, bu işlevi eğitim sırasında modelden düzenli olarak örnekleme yapmak ve eğitimimizin nasıl ilerlediğini görmek için kullanır.

Difüzyonumuzu yönlendirmek için her sınıftan 6 örnek içeren sabit bir bağlam vektörü seçiyoruz.
Eğitim hücrelerinin CPU üzerinde çalışması çok uzun sürüyor, model GPU donanımlı bir makinede halihazırda eğittildi.

Örnek W&B panosu:

W&B ile Bir Difüzyon Modelinin Eğitimi Kod Örneği:

Difüzyon Modellerinin Değerlendirilmesi

Bu bölümde önceden eğitilmiş difüzyon modelinden örnekler alacağız:

  • DDPM ve DDIM örnekleyicilerinden alınan örnekleri karşılaştıracağız.
  • Koşullu difüzyon modelleriyle karıştırılan örneklemleri görselleştireceğiz.
  • Önceki not defterinde en iyi modeli bir wandb Artifact (çalışmalar sırasında dosyaları depolama yöntemimiz) olarak kaydetmiştik. Bu bölümde modeli wandb’den yükleyeceğiz ve örnekleme döngüsünü kuracağız.
  • Üretilen örnekleri örnekleyeceğiz ve wandb’ye kaydedeceğiz.
  • Koşullandırılacak bir dizi gürültü ve bir bağlam vektörü tanımlayacağız.
  • Difüzyon kursunda gördüğümüz daha hızlı olan DDIM örnekleyiciyi getireceğiz.
  • DDPM örneklerini önceki gibi hesaplayacağız.
  • DDIM için adım boyutunu n parametresiyle kontrol edeceğiz.
    Ürettiklerimizi saklamak için bir wandb.Table oluşturacağız.
  • Satırları tek tek tabloya ekleyip, ayrıca görüntüleri wandb.Image’a aktaracağız, böylece kullanıcı arayüzünde doğru şekilde oluşturabiliriz.
  • Tabloyu W&B’ye kaydederiz, wandb.init’i bir bağlam yöneticisi olarak da kullanabiliriz, bu şekilde yöneticiden çıkarken çalıştırmanın bitmesini sağlayabiliriz.

Modellerin Yönetimi

Model Kaydı modelleriniz için merkezi bir kayıt sistemidir.

  • Model Kaydı sayesinde kullanıma hazır modeller üretebiliriz.
  • Model versiyonlama sayesinde modellerimizi gösterimden üretime yaşamdöngüsü şeklinde gösterebiliriz.
  • Takımlar arası modeller üzerinde işbirliği yapabiliriz.
  • Eğitim ve üretim boyunca modelin denetlenmesi ve değerlendirilmesi.
  • Aşağı akış eylemini otomatikleştir.

Örneklerin Görselleştirilmesi

W&B Tabloları

  • Video, görsel gibi çeşitli veri tiplerinden oluşmuş tablo verilerini günlüğe kaydedip, sorgu atıp, analiz edebilirsiniz.
  • Değişiklikleri model boyunca karşılaştırabilirsiniz.
ddpm ve ddim farkını görüyoruz

Difüzyon Modellerinin Değerlendirilmesi Kodu:

LLM Değerlendirmesi ve W&B ile İzleme

Bu bölümde oyun varlıklarımızın adlarını oluşturmak için OpenAI LLM’in ChatCompletion’ını kullanarak elde edilen nesilleri W&B Tablolarında kaydedeceğiz böylece onlarla ilgili değerlendirmeler yapabileceğiz.

W&B promptlarının kullanılması:

  • Tablolarla API’lerin kullanımı:
  • Tracer ile llm zincir açıklıklarını takibi:

Nasıl daha yaratıcı çıktılar elde edebiliriz? Önce rastgele bir fantezi dünyası seçecek ve ardından karakter adları oluşturacak bir LLM zinciri tasarlayalım. Böyle bir senaryoda Tracer’ın nasıl kullanılacağını göstereceğiz. Girdileri ve çıktıları, başlangıç ve bitiş zamanlarını, OpenAI çağrısının başarılı olup olmadığını, token kullanımını ve ek meta verileri günlüğe kaydedebiliriz.

  • Langchain ajanlarının takibi:

Nihai adı bulmak için WorldPicker ve NameValidator gibi araçları kullanacak bir aracı tanıtacağız. Langchain’i burada da kullanacağız ve W&B entegrasyonunu göstereceğiz.

ReAct ajanı: Muhakeme içerisinde döngü yapar (ne yapmalıyım?), eylemler (araçlar kullanmak), gözlemler (ne öğrendim?).

WorldPicker: İsimlendireceğin nesne veya karakter için sanal bir oyun dünyası seç.

NameValidator: İsmin doğru bir şekilde üretilip üretilmediğini kontrol et.

LLM: ChatOpenAI()

# enable wandb tracing
os.environ["LANGCHAIN_WANDB_TRACING"] = "true"

# run langchain agent
agent.run("Find a virtual game world for me and imagine the name of a hero in that world")

LLM Değerlendirmesi ve W&B ile İzleme Kodu:

Bir Dil Modelinde İnce Ayar Yapma

Sıfırdan model eğitirken:

  • Eğitim uzun sürer ve pahalıdır.
  • Değerlendirme yapmak uzun sürer ve pahalıdır.
  • Adımları izlemek kritiktir.
  • Kayıt noktasından eğitimi geri çağırma yeteneği gereklidir.

Öte yandan ince ayar (fine-tune) yapmak:

  • Verimli yöntemler geliştirilir.
  • Değerlendirme yapmak yine uzun ve pahalıdır.

Wandb entegrasyonu ile HuggingFace Trainer’ı kullanarak karakter geçmiş hikayeleri oluşturmak için bir dil modelinde nasıl ince ayar yapılacağını görelim. Kaynak kısıtlamaları nedeniyle küçük bir dil modeli olan “TinyStories-33M”i kullanacağız, ancak burada öğrendiğiniz dersler büyük modellere de uygulanabilirdir.

Huggingface’ten Dungeons and Dragons karakter biyografilerini içeren bir veri seti yükleyerek başlayacağız.

HF Dönüştürücüleri ve bunların wandb entegrasyonunu kullanarak veri kümemizde önceden eğitilmiş bir dil modelinde ince ayar yapalım.

Eğitim esnasında kayıp değerinin izlenmesi ve düşmeye devam ettiğinden emin olunması kaynakların verimli kullanımı açısından önemlidir.

Bir Dil Modelinde İnce Ayar Yapma Kodu:

Kaynaklar

[1] Deeplearning.ai, (2 Ağustos 2023), Evaluating and Debugging Generative AI:

[https://learn.deeplearning.ai/evaluating-debugging-generative-ai/]

--

--

Cahit Barkin Ozer
Cahit Barkin Ozer

Written by Cahit Barkin Ozer

Üretken YZ başta olmak üzere teknoloji alanındaki yenilikleri öğrenip sizlerle paylaşıyorum. Youtube Kanalım: https://www.youtube.com/@cbarkinozer

No responses yet