Ana içeriğe geç

OpenAI'nin Tercih İnce Ayarı: Örneklerle Bir Rehber

OpenAI'nin tercih ince ayarı ve doğrudan tercih optimizasyonunu kullanarak büyük dil modellerini kullanıcı tercihlerine nasıl hizalayacağınızı öğrenin.
· 8 dk. oku

Yapay Zeka ile Keşfedin

Tercih ince ayarı (PFT), LLM'leri ince ayarlamak için uzun süredir kullanılan bir tekniktir. OpenAI, yakın zamanda bunu 12 günlük özellik yayınlarının bir parçası olarak tanıttı.

Denetimli ince ayar (SFT) ve pekiştirmeli ince ayar (RFT) ile birlikte, PFT büyük dil modellerini kullanıcı tercihleriyle hizalamanın bir başka yoludur.

Bu yazıda, tercih ince ayarını kısaca açıklayacak ve OpenAI'nin geliştirici panelinde en az çabayla nasıl kullanacağınızı göstereceğim.

OpenAI'nin Tercih İnce Ayarı Nedir?

Standart denetimli ince ayarın amacı, belirli girdiler verildiğinde modelin belirli çıktılar döndürmesini sağlamakken, tercih ince ayarında (PFT) odak, modeli beğendiğimiz yanıtlara yönlendirmek ve beğenmediklerimizden uzak tutmaktır.

Doğrudan tercih optimizasyonu (DPO), PFT'de standart tekniktir ve basitliği ile etkinliği sayesinde güçlü bir hizalama yöntemi olarak popülerlik kazanmıştır.

Şundan farklı olarak: insan geri bildiriminden pekiştirmeli öğrenme (RLHF), DPO büyük dil modelini (LLM) hizalamak için karmaşık bir ödül modeli gerektirmez; bunun yerine hizalama sorununu bir kayıp fonksiyonunun "doğrudan" optimizasyonu olarak ele alır. Bu da DPO'yu uygulamayı kolay ve hesaplama açısından verimli kılar.

Diğer hizalama yöntemlerinde olduğu gibi, DPO için gereken veri kümesi, verilen bir istem için bir çift "tercih edilen" ve "tercih edilmeyen" yanıt içerir. OpenAI'nin PFT'sinde, diğer ince ayar yöntemlerine benzer şekilde, veri kümesinin JSONL formatında olması ve aşağıdaki yapıya sahip olması gerekir:

{
  "input": {
    "messages": [
      {
        "role": "user",
        "content": "Hello, can you tell me how cold San Francisco is today?"
      }
    ],
    "tools": [],
    "parallel_tool_calls": true
  },
  "preferred_output": [
    {
      "role": "assistant",
      "content": "Today in San Francisco, it is not quite cold as expected. Morning clouds will give away to sunshine, with a high near 68°F (20°C) and a low around 57°F (14°C)."
    }
  ],
  "non_preferred_output": [
    {
      "role": "assistant",
      "content": "It is not particularly cold in San Francisco today."
    }
  ]
}

Resmî OpenAI dokümantasyonu PFT için daha iyi hizalama adına SFT ve PFT'nin birleştirilmesini önerir. PFT gibi hizalama teknikleri genellikle modelin denetimli bir veri kümesinde ince ayarlanmasından sonra kullanılır. SFT ile PFT'yi birleştirmek sektör standardı kabul edilir ve OpenAI tarafından da savunulur.

Tercih İnce Ayarı İçin Veri Kümesi Nasıl Biçimlendirilir

Her şeyden önce, veri kümemizin OpenAI'nin tercih ince ayarı için gereken biçimde olduğundan emin olmamız gerekir.

Bir tercih veri kümesi oluşturmanın birden fazla yolu vardır. Yöntemlerden biri, farklı sıcaklıklarda, top_k veya sistem istemleri verilen LLM çıktısı çiftleri elde etmek ve ardından tercihen daha yetenekli başka bir LLM'ye bir çıktıyı "tercih edilen", diğerini ise "tercih edilmeyen" olarak seçtirmektir.

Bu eğitimdeki demoda, Hugging Face'ten bir tercih veri kümesi indirip yeniden yapılandıracağım. argilla/ultrafeedback-binarized-preferences adlı bir tercih veri kümesini kullanacağım, ancak yalnızca ilk 50 satırı alacağım.

Hugging Face'ten bir tercih veri kümesine örnek.

Hugging Face'ten bir tercih veri kümesine örnek.

Veri kümesinin yapısını OpenAI'nin ince ayar gereksinimlerine dönüştürmek için bir Python betiği yeterlidir, ancak uygulamanıza göre başka bir yaklaşım izlemeyi de tercih edebilirsiniz.

import datasets
import copy 
import json

instance_structure = {
  "input": {
    "messages": [
      {
        "role": "user",
        "content": ""
      }
    ],
    "tools": [],
    "parallel_tool_calls": True
  },
  "preferred_output": [
    {
      "role": "assistant",
      "content": ""
    }
  ],
  "non_preferred_output": [
    {
      "role": "assistant",
      "content": ""
    }
  ]
}

ds = datasets.load_dataset("argilla/ultrafeedback-binarized-preferences", trust_remote_code=True, split="train")
ds_sample = ds.select(range(50)) #select the first 50 rows
ds_list = []
for sample in ds_sample:
  instance = copy.deepcopy(instance_structure)
  instance["input"]["messages"][0]["content"] = sample["instruction"]
  instance["preferred_output"][0]["content"] = sample["chosen_response"]
  instance["non_preferred_output"][0]["content"] = sample["rejected_response"]
  ds_list.append(instance)
  
with open("preference_dataset.jsonl", 'w') as out:
  for json_line in ds_list:
      jout = json.dumps(json_line) + '\\n'
      out.write(jout)

Veri kümenizin biçiminin jsonl olduğundan ve json olmadığından emin olun. Dosyanızın sonunda muhtemelen boş bir satır olacaktır, bunu kaldırmayı unutmayın.

OpenAI'nin Tercih İnce Ayarı Nasıl Çalıştırılır

Veri kümeniz hazır olduğunda, tercih ince ayarını çalıştırmak için şu adımları izleyebilirsiniz:

  1. OpenAI'nin paneline gidin.
  2. İnce ayar bölümünü bulun ve yeni bir ince ayar işi oluşturmak için Create seçeneğini tıklayın.
  3. İnce ayar yöntemi olarak doğrudan tercih optimizasyonunu seçin.
  4. Eğitim ve doğrulama verilerinizi (varsa) yükleyin.

OpenAI panelinden ince ayar ekran görüntüsü.

OpenAI, hiperparametreleri belirtmenize izin verir, ancak bunları boş da bırakabilirsiniz; sistem otomatik olarak karar verir. Veri kümenizin boyutuna bağlı olarak eğitim biraz zaman alabilir.

Sonuç

Doğrudan tercih optimizasyonu, OpenAI'nin ince ayar araç setindeki faydalı yeni bir özelliktir; modelinizin yanıtlarının tonunu ve stilini açıkça kontrol etmenize ve kullanıcı tercihlerine daha iyi hizalamanıza olanak tanır.

OpenAI'nin damıtma, pekiştirmeli ince ayar ve denetimli ince ayar yöntemlerinde olduğu gibi, tercih ince ayarındaki ana katkınız, veri kümesini OpenAI'nin biçim ve yapısına göre hazırlamak olacaktır; geri kalanıyla onların araçları ilgilenecektir:

Daha fazlasını öğrenmek için şu kaynakları öneririm:

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