Özel Amaç Sınıflandırması İçin GPT-3'te İnce Ayar Nasıl Yapılır

Kullanıcı ifadelerinin veya konuşmalarının niyet tanıması, çoğu sohbet robotunun ön saflarında yer alır. Burada, verilerinizle bir OpenAI GPT-3 modelinden nasıl yararlanacağınızı ve ince ayar yapacağınızı adım adım gösteriyorum!

Şu anda HumanFirst'te Baş Müjdeciyim . Yapay zeka ve dilin kesiştiği noktada her şeyi araştırıyor ve yazıyorum; LLM'ler, Chatbot'lar, Voicebot'lar, Geliştirme Çerçeveleri, Veri Merkezli gizli alanlar ve daha fazlasını içerir.

Neredeyse tüm sohbet robotlarının temelinde niyet algılama bulunur. Ve özünde, amaçlar/sınıflandırmalar örnek eğitim verileri kullanılarak önceden tanımlanır ve amaçları/sınıflandırmaları gerçek zamanlı olarak kullanıcı girdisinden algılayan ve tanıyan bir model eğitilir.
Bu, açıkça, daha yaygın olarak bilinen üretici senaryoların aksine, tahmine dayalı bir şekilde bir LLM kullanmaktır.
Alana özgü kullanım durumları ve jargon, sektöre özgü terimler, şirkete özgü ürün ve hizmetler vb. açısından belirli bir uygulamanın artan doğruluğu için genellikle ince ayar yapılması gerekir.
Haydi başlayalım… düşündüğünüzden daha kolay!
Bu örnek için, sporla ilgili e-postaların halka açık bir veri kümesinden yararlanacağız, bu, toplamda 1.197 örnek içeren bir e-posta posta listesidir. Bu örnekler, 597 beyzbol örneği ve 600 hokey örneği arasında bölünmüştür.
Bu örnekte GPT-3 ada modeli, iki sporu ayırt etmek için bir sınıflandırıcı olarak ince ayarlanmıştır/eğitilmiştir: Beyzbol ve Hokey.
Ada modeli, orijinal temel GPT-3 serisinin bir parçasını oluşturur.
Bu iki sporu biri “beyzbol” diğeri “hokey” olmak üzere iki temel amaç olarak görebilirsiniz.
Total examples: 1197, Baseball examples: 597, Hockey examples: 600

⭐️ Güncellemeler için lütfen beni LinkedIn'de takip edin .
Verileri Alma
Aşağıda, bu demo için Colab dizüstü bilgisayar kullanımımın bir görünümü bulunmaktadır . ⬇️

Haber grubu veri seti, sklearn kullanılarak yüklenebilir. Veri setini aşağıda görüldüğü gibi inceleyebilirsiniz:
from sklearn.datasets import fetch_20newsgroups
import pandas as pd
import openai
categories = ['rec.sport.baseball', 'rec.sport.hockey']
sports_dataset = fetch_20newsgroups(subset='train', shuffle=True, random_state=42, categories=categories)
print(sports_dataset['data'][10])
Veri Dönüşümü
Bu kod parçacığı ile veriler bir pandas veri çerçevesine dönüştürülür.
import pandas as pd
labels = [sports_dataset.target_names[x].split('.')[-1] for x in sports_dataset['target']]
texts = [text.strip() for text in sports_dataset['data']]
df = pd.DataFrame(zip(texts, labels), columns = ['prompt','completion']) #[:300]
df.head()

Bu komut ile veri seti bir jsonl dosyası olarak kaydedilir…⬇️
df.to_json("sport2.jsonl", orient='records', lines=True)
Bir üretim senaryosu için, NLU/NLG Tasarım verilerini verimli bir şekilde almak, işlemek ve yapılandırmak için kodsuz bir NLU/NLG Tasarım aracı gerekecektir.
{"prompt":"he MLB team with the most Hall of Famers is the New York Yankees with 27.",
"completion":"Baseball"}
{"prompt":"The first organized indoor game was played in Montreal in 1875.",
"completion":"Hockey"}
!pip install --upgrade openai
!openai tools fine_tunes.prepare_data -f sport2.jsonl -q

⭐️ Güncellemeler için lütfen beni LinkedIn'de takip edin .
Modeli Eğitmek
Eğitim sürecini başlatmak için kod satırı aşağıdadır… api-key'in komutun içine yerleştirildiğine dikkat edin:
!openai --api-key 'xxxxxxxxxxxxxxxxxxxxxxxx' api fine_tunes.create -t "sport2_prepared_train.jsonl" -v "sport2_prepared_valid.jsonl" --compute_classification_metrics --classification_positive_class " baseball" -m ada

Akış kesilirse, şu komutla yeniden başlatabilirsiniz:
!openai --api-key 'xxxxxxxxxxxxxxxxxxxxxxxx' api fine_tunes.follow -i ft-KGbV68gqwGwmfEqnVMMM13FU
[2023-01-06 08:53:57] Created fine-tune: ft-KGbV68gqwGwmfEqnVMMM13FU
[2023-01-06 08:54:54] Fine-tune costs $0.78
[2023-01-06 08:54:54] Fine-tune enqueued. Queue number: 1
[2023-01-06 09:11:24] Fine-tune is in the queue. Queue number: 0
[2023-01-06 09:12:00] Fine-tune started
[2023-01-06 09:14:37] Completed epoch 1/4
[2023-01-06 09:17:11] Completed epoch 2/4
[2023-01-06 09:19:42] Completed epoch 3/4
[2023-01-06 09:22:14] Completed epoch 4/4
[2023-01-06 09:22:46] Uploaded model: ada:ft-personal-2023-01-06-09-22-45
[2023-01-06 09:22:47] Uploaded result file: file-kX8n4tm6DU7s5AFImIxChUAR
[2023-01-06 09:22:47] Fine-tune succeeded
Job complete! Status: succeeded
Try out your fine-tuned model:
openai api completions.create -m ada:ft-personal-2023-01-06-09-22-45 -p <YOUR_PROMPT>
Modeli Test Etme
Model aşağıdaki kodla test edilebilir… ince ayarlı sınıflandırıcı çok yönlüdür. Ve e-postalar üzerinde eğitilmiş olsa da, tweet'ler, kullanıcı ifadeleri vb. açısından diğer girdi türleri iyi çalışabilir.
ft_model = 'ada:ft-personal-2023-01-06-09-22-45'
sample_baseball_tweet="""BREAKING: The Tampa Bay Rays are finalizing a deal to acquire slugger Nelson Cruz from the Minnesota Twins, sources tell ESPN."""
res = openai.Completion.create(model=ft_model, prompt=sample_baseball_tweet + '\n\n###\n\n', max_tokens=1, temperature=0, logprobs=2)
res['choices'][0]['text']
baseball
ft_model = 'ada:ft-personal-2023-01-06-09-22-45'
sample_baseball_tweet="""The ice is not well maintained so that is something the Caps will have to attend to."""
res = openai.Completion.create(model=ft_model, prompt=sample_baseball_tweet + '\n\n###\n\n', max_tokens=1, temperature=0, logprobs=2)
res['choices'][0]['text']
hockey

⭐️ Güncellemeler için lütfen beni LinkedIn'de takip edin .
OpenAI Bahçesi
Aşağıda görüldüğü gibi, ince ayarlı model, OpenAI oyun alanında hemen kullanılabilir.

⭐️ Güncellemeler için lütfen beni LinkedIn'de takip edin .
Sonuç olarak
Bana göre, bunun gibi bir alıştırmadan geçmek, bir üretim ortamının nelere yol açacağına dair iyi bir fikir veriyor.
Tüm bu süreçteki eksik halka, yapılandırılmamış verileri almak ve bu yapılandırılmamış verileri kodsuz bir şekilde NLU/NLG Tasarım verilerine dönüştürmek için kullanılabilen bir NLU/NLG tasarım aracıdır.
Kod örneklerinden de görülebileceği gibi, eğitim verilerinin sabit bir formatı vardır ve eğitim verilerinin Notepad++ veya MS Excel gibi bir şeyle manuel olarak işlenmesi, uygulanabilir ve sürdürülebilir bir çözüm değildir.
HumanFirst gibi kodsuz bir NLU/NLG Tasarım Stüdyosu, bu veri hazırlama, yapılandırma iyileştirme ve LLM entegrasyonu sürecini tamamlar.

Şu anda HumanFirst'te Baş Müjdeciyim . Yapay zeka ve dilin kesiştiği noktada her şeyi araştırıyor ve yazıyorum; LLM'ler , Chatbot'lar , Voicebot'lar , Geliştirme Çerçeveleri, Veri Merkezli gizli alanlar ve daha fazlası.




