Ana içeriğe geç

OpenAI Model Damıtma: Örneklerle Bir Rehber

OpenAI'nin damıtma aracıyla LLM'leri nasıl damıtacağınızı öğrenin. Bu eğitim, Git komutları üretmek için GPT-4o ve GPT-4o-mini kullanılarak adım adım bir rehber sunar.
· 8 dk. oku

Yapay Zeka ile Keşfedin

OpenAI’nin yeni OpenAI model damıtma aracını denedim—minimum kodlama gerektiriyor ve veri kümesi oluşturmadan modelleri ince ayarlamaya ve performanslarını değerlendirmeye kadar tüm damıtma sürecini tek bir platformda yönetmemizi sağlıyor.

Bu eğitimde, OpenAI’nin model damıtma aracıyla başlamanıza yardımcı olacağım. Önce model damıtmanın temellerini ele alacağız, ardından OpenAI API’sini kullanarak örnek bir damıtma projesi yapacağız.

Model Damıtma Nedir?

Yetenekli, iyi eğitimli bir öğretmenin düşünme sürecini ve bilgisini bir öğrenciye aktardığını hayal edin. Model damıtmanın çalışma prensibi temelde budur.

Bu teknikte öğretmen, önceden eğitilmiş büyük bir modeldir; öğrenci ise öğretmenin çıktısını taklit etmeyi öğrenen daha küçük bir modeldir. Bu sayede öğrenci, daha az kaynakla öğretmene yakın bir düzeyde belirli görevleri yerine getirebilir.

Model damıtma, her birinin farklı yöntem ve hedefleri olan birçok biçimde gelir. Bazı durumlarda öğrencinin yalnızca daha büyük bir modelin çıktısını taklit etmesi gerekir. Başka durumlarda ise öğretmenin sorun çözme yaklaşımını daha küçük modele aşılamak isteriz. Nihayetinde amaç, büyük bir modelin yeteneklerinden verimli bir model kullanarak yararlanmaktır.

Bilgi damıtma

"Öğretmen" modelden "öğrenci" modele bilgi aktarmanın yaygın bir yolu, öğrenciyi öğretmen tarafından üretilmiş girişler ve bunlara karşılık gelen çıktılardan oluşan bir veri kümesi üzerinde ince ayar yapmaktır.

Bu denetimli öğrenme sürecinde, öğrenci model benzer girdilerle karşılaştığında öğretmenin yanıtlarını çoğaltmayı öğrenir.

Model damıtmanın faydaları

Damıtma süreci birçok avantajla birlikte gelir:

  • Düşük maliyet: Daha küçük modellerin kullanımı daha ucuzdur.
  • Daha hızlı yanıt: Küçük modellerin daha hızlı çıktılar üretmesi kullanıcı deneyimini iyileştirir.
  • Erişilebilirlik: Model, uç platformlar veya mobil cihazlar gibi sınırlı hesaplama kaynağına sahip ortamlarda kullanılabilir.

Damıtma hakkında daha fazla bilgi için şu makaleyi okuyabilirsiniz: LLM Damıtma Açıklaması.

OpenAI API ile Model Damıtma Nasıl Uygulanır

Bu bölümde, OpenAI platformunu kullanarak model damıtma örneğini inceleyeceğiz. Birincil odağımız kullanıcının talebine yönelik Git komutları üretmek olacak.

Önce OpenAI’nin küçük GPT-4o mini (öğrenci) modelinin bir veri kümesini oluşturacak ve çıktıları değerlendireceğiz.

Sonra aynı cümleleri çevirmek için GPT-4o (öğretmen) kullanacak ve öğretmenin ürettiği veri kümesiyle öğrenci modeli ince ayar yapacağız.

Son olarak, öğrenci modeli değerlendirmemiz ve gelişimi ölçmemiz gerekiyor.

Özetle şu adımları uygulayacağız:

  1. Öğretmen ve öğrenci modelleri seçin
  2. Veri kümenizi hazırlayın
  3. Öğrenci için girdi/çıktı çiftleri üretin
  4. Öğrencinin performansını değerlendirin
  5. Öğretmen için girdi/çıktı çiftleri üretin
  6. Öğrenciyi öğretmenin veri kümesiyle ince ayar yapın
  7. İnce ayarlı modeli değerlendirin

Adım 1: Öğretmen ve öğrenci modelleri seçin

Model damıtmanın ilk adımı, hedeflenen göreve ve hesaplama bütçenize göre belirlenen öğretmeni ve öğrenciyi seçmektir.

Açık kaynak modellerle çalışırken farklı yetenek ve boyutlara sahip çeşitli LLM’ler bulunur. OpenAI’nin platformunda ise seçenekler sınırlıdır.

OpenAI'nin model adlarını, açıklamalarını ve yeteneklerini içeren bir genel bakış tablosu.

Örneğimizde daha küçük öğrenci modeli olarak GPT-4o miniyi ve öğretmen modeli olarak GPT-4oyu seçeceğiz.

GPT-4o-mini nispeten küçük bir modeldir ve öğrenci rolü için iyi bir adaydır. GPT-4o ise nispeten daha büyüktür ancak çok daha yeteneklidir ve öğrenci için verimli bir öğretmen olarak çalışabilir.

Başka seçenekler de mevcuttur ve modelleri değiştirmek damıtma projemizde minimum çaba gerektirecektir.

Adım 2: Veri kümenizi hazırlayın

Bu görev için veri kümeniz, öğrenci model için yeterince zorlayıcı ama öğretmen için o kadar zorlayıcı olmayacak nitelikte olmalıdır. Çeşitlilik, temsiliyet veya doğruluk gibi iyi bir veri kümesinin nitelikleri, model damıtmada da geçerlidir.

Öğrenci model üzerinde etkili olacak kadar büyük bir veri kümesine sahip olmak çok önemlidir. “Damıtma veri kümesi ne kadar büyük olmalı?” sorusunun net bir cevabı yoktur; hedef görevinizin karmaşıklığına ve öğretmen ile öğrenci olarak seçtiğiniz modellere bağlıdır.

OpenAI belgelerine göre, birkaç yüz örnek yeterli olabilirken, daha çeşitli binlerce örnek bazen daha iyi sonuçlar verebilir.

Bu yazıdaki veri kümemiz, bir JSON dosyasında saklanan 386 kullanıcı isteğinden oluşuyor (aynı şekilde bir Python listesi halinde de saklayabilirsiniz).

{    
    "requests": [
      "Initialize a new Git repository in the current directory.",
      "Clone the repository from GitHub to my local machine.",
      "Create a new branch called 'feature-login'.",
			...
      "Show the differences between the working directory and the staging area.",
      "Stage all modified and deleted files for commit.",
      ]
}

Adım 3: Öğrenci için girdi/çıktı çiftleri üretin (isteğe bağlı)

Veri kümemiz şu anda yalnızca girdilerden oluşuyor ve çıktı da üretmeliyiz. Öğrencinin çıktıları damıtma için gerekli değildir, ancak öğrenci modelin doğruluğu için bir başlangıç düzeyi (adım 4) elde etmemiz gerekir.

Aşağıdaki kodu, girdi veri kümesi üzerinde yineleme yapıp her biri için çıktı üretmek üzere kullanıyoruz:

def generate_responses():
    with open(JSON_PATH, 'r') as file:
        user_messages = json.load(file)
    
    for sentence in user_messages['requests']:
        # Call the OpenAI model gpt-4o-mini and store the response
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": system_prompt},
                {
                    "role": "user",
                    "content": sentence
                },
            ],
            store=True,
            metadata={
                "task": "git"
            }
        )

generate_responses()

OpenAI modelini çağırırken store=True kullandığımıza dikkat edin. Bu argüman, girdi/çıktı çiftlerini OpenAI panomuzda kaydedecek, böylece çıktıları kodla saklamamız gerekmeyecek.

Bu sohbet tamamlamalarını daha sonra tanımlayıp filtreleyebilmek için, client.chat.completions.create fonksiyonunu çağırırken meta verileri eklemeyi unutmayın. Bu meta verinin argümanları serbesttir.

Oluşturulan çıktıları OpenAI panomuzdaki Chat Completions bölümünde bulabilirsiniz.

OpenAI panosundaki Chat Completions bölümünün, önceki sohbet etkileşimlerinin listesini gösteren bir ekran görüntüsü.

Adım 4: Öğrencinin performansını değerlendirin (isteğe bağlı)

Model damıtma için kullanışlı bir başka OpenAI aracı da Evaluations aracıdır. Bu aracı, eğitimden önce öğrenci modelin performansını bir başlangıç ölçütü olarak değerlendirmek için kullanıyoruz. İnce ayarlı öğrenci modeli değerlendirirken de yine kullanacağız.

Bir önceki adımın sohbet tamamlamalarını filtreledikten sonra Evaluate düğmesine tıklayın. Şimdi test kriterleri eklememiz gerekiyor.

OpenAI Evaluations aracı arayüzünün, test kriterleri ekleme seçeneklerini gösteren bir ekran görüntüsü.

Girdi/çıktı çiftlerini değerlendirmek için çeşitli yöntemler vardır. Mevcut veri kümemizin OpenAI’nin sohbet tamamlamalarıyla otomatik olarak üretildiğini ve yalnızca girdiler ile çıktıları içerdiğini unutmayın. Ancak bu kriterlerden bazıları karşılaştırma için bir referans da gerektirir.

Bu referans, GPT-4o veya o1-preview gibi daha gelişmiş bir model tarafından üretilen çıktılar olabilir. Sohbetleri OpenAI’ye otomatik kaydetmek böyle bir referans sağlamamıza izin vermediğinden, yalnızca girdi ve çıktı gerektiren Criteria match veya Custom prompt yöntemleriyle sınırlıyız.

Diğer yöntemleri kullanmanız gerekiyorsa, OpenAI’nin sohbet tamamlamalarını kullanamaz ve kodla kendi JSON dosyanızı oluşturmanız gerekir. Bu karmaşık değildir, ancak bu yazıda buna girmeyeceğiz.

Kriter yapılandırması için OpenAI grafik kullanıcı arayüzünün bir ekran görüntüsü

Değerlendirmeleri çalıştırdıktan kısa süre sonra sonuçlarınızı alacaksınız.

Adım 5: Öğretmen için girdi/çıktı çiftleri üretin

Öğrenci modeli ince ayar yapmak için öğretmen tarafından üretilmiş yüksek kaliteli bir veri kümesine ihtiyacımız var. Bu adım, adım 3 ile neredeyse aynıdır—yalnızca model argümanını gpt-4o-miniden gpt-4oya değiştirmeniz yeterlidir.

Adım 6: Öğrenciyi ince ayar yapın

Yine Chat Completions’ta, öğretmen model ve meta verilere göre filtreleyin. Ardından Distill düğmesini seçin. OpenAI’nin damıtma aracı özünde ince ayar aracıdır.

Temel modelleri ve hiperparametreleri seçme seçeneklerini gösteren OpenAI ince ayar aracı arayüzünün bir ekran görüntüsü.

Temel model olarak öğrenciyi seçiyoruz. En iyi sonuçları elde etmek için hiperparametrelerle deney yapmak ve test etmek gerekir—otomatik olarak ayarlayın. Son olarak Create seçeneğini seçin ve ince ayarın tamamlanmasını bekleyin.

Adım 7: İnce ayarlı modeli değerlendirin

Tamamlandığında, bu kez model argümanı olarak ince ayarlı modeli kullanarak adım 3’teki kodu tekrar kullanacağız. İnce ayarlı modelin adı, ince ayar sayfanızda “Output model” olarak görüntülenir.

def generate_responses():
    with open(JSON_PATH, 'r') as file:
        user_messages = json.load(file)

    for sentence in user_messages['requests']:
        # Call the OpenAI model gpt-4o-mini and store the response
        response = client.chat.completions.create(
            model="ft:gpt-4o-mini-2024-07-18:personal:git:AF7QSF0m",
            messages=[
                {"role": "system", "content": system_prompt},
                {
                    "role": "user",
                    "content": sentence
                },
            ],
            store=True,
            metadata={
                "task": "git"
            }
        )

generate_responses()

Çıktıları üretmeyi tamamladıktan sonra, girdiler üzerinde yeni modelinizin yeteneğini değerlendirmek için değerlendirmeleri kullanın.

Sonuç

OpenAI’nin damıtma tarifi basit ama nettir. Özellikle, modelleri kendiniz ince ayarlama veya sonuçları değerlendirmek için kod kullanma derdi olmadan çalışmanıza yardımcı olur.

OpenAI’nin modelleri, küçük olanları bile, zaten oldukça gelişmiştir. Modeli ince ayar yapmadan önce hiperparametrelerle denemeler yapın, hem öğretmen hem de öğrenci için yeterli ve zorlayıcı istemler hazırlayın ve ince ayarlı değerlendirmeyi başlangıç değerlendirmesiyle karşılaştırın.

Kendi model damıtmanızla işe başlamadan önce şu iki OpenAI kaynağını okumanızı tavsiye ederim: API’de OpenAI Model Damıtma ve Model Damıtma Dokümanı.

Hesam Sheikh Hassani

Yazar

Hesam Sheikh Hassani

Yapay Zeka alanında yüksek lisans öğrencisi ve yapay zeka teknik yazarı. En yeni yapay zeka teknolojilerine dair içgörüler paylaşıyorum, ML araştırmalarını erişilebilir kılıyor ve sizi ön planda tutmak için karmaşık YZ konularını sadeleştiriyorum.

Konular

İlgili