paint-brush
100 Günlük Yapay Zeka, 13. Gün: Talimatlarda İnce Ayarlama, Önceden Eğitimli Bir Yüksek Lisans Eğitimini Nasıl Geliştirir?ile@sindamnataraj
709 okumalar
709 okumalar

100 Günlük Yapay Zeka, 13. Gün: Talimatlarda İnce Ayarlama, Önceden Eğitimli Bir Yüksek Lisans Eğitimini Nasıl Geliştirir?

ile Nataraj6m2024/03/06
Read on Terminal Reader

Çok uzun; Okumak

Talimat ince ayarı, GPT3 gibi temel modelleri chat-gpt benzeri bir ürüne dönüştürmek için kullanılan bir ince ayar tekniğidir. Bu yazıda temel modelleri geliştirmek için talimat ince ayarının nasıl kullanıldığını öğreneceğiz.
featured image - 100 Günlük Yapay Zeka, 13. Gün: Talimatlarda İnce Ayarlama, Önceden Eğitimli Bir Yüksek Lisans Eğitimini Nasıl Geliştirir?
Nataraj HackerNoon profile picture


Selam millet! Ben Nataraj'ım ve tıpkı sizin gibi ben de yapay zekanın son zamanlardaki ilerlemesine hayran kaldım. Gelişmeleri yakından takip etmem gerektiğinin farkına vararak kişisel bir öğrenme yolculuğuna çıkmaya karar verdim. 100 günlük yapay zeka doğdu! Bu seriyle yüksek lisans (LLM) hakkında bilgi edineceğim ve fikirleri, deneyleri, görüşleri, trendleri ve öğrendiklerimi blog yazılarım aracılığıyla paylaşacağım. Yolculuğu HackerNoon'da takip edebilirsiniz Burada veya kişisel web sitem Burada .


Önceki yazılarımızdan birinde ince ayardan ve bunun neden önemli olduğundan bahsetmiştik. Bu yazıda Talimat İnce Ayarı adı verilen belirli bir ince ayar türüne göz atacağız.

Önceden Eğitimli Temel Modellerin Sınırlamaları:

Gpt-3 gibi önceden eğitilmiş temel modeller, çok büyük miktarda veri üzerinde eğitilir. Gpt-3 durumunda internetteki tüm verilerdir. Bunu kesin olarak bilmiyoruz ancak bu modellerin çoğu, önemli miktarda manuel temizleme ve biçimlendirme sonrasında internet ölçeğindeki verilerle eğitiliyor. Temel modeller eğitildikçe bir sonraki jetonu nasıl tahmin edeceklerini öğrenirler ve jeton tahmininde gerçekten başarılı olurlar. Ancak saf token tahmini sandığınız kadar kullanışlı değil. Önceden eğitilmiş bir temel modele “ Meksika'nın başkenti nedir?” diye sorarsanız. Bir cevapla cevap vermeyecek ancak giriş cümlesini “ Kolombiya'nın başkenti nedir ” ile tamamlayabilir. Yani gpt-3 gibi bir model token tahmininde güçlü olsa da bir chatbot veya yardımcı pilot olarak çalışmayacaktır. Peki önceden eğitilmiş bir modeli chat-gpt gibi kullanışlı bir chatbot'a nasıl dönüştürebiliriz? Cevap ince ayardır, esas olarak “ Talimat İnce Ayarı ” adı verilen özel bir ince ayar türüdür.

Talimatın ince ayarı nedir?

"Talimat takibi" olarak da adlandırılan talimat ince ayarı, önceden eğitilmiş bir temel modelin bir sohbet botu gibi davranmasını öğretmeye yönelik bir süreçtir.

Talimat İnce Ayarı


Öğretimin ince ayarı, soru-cevap biçimindeki veri setlerine ihtiyaç duyar. Herkese açık veri setlerini veya şirketinizin soru-cevap şeklindeki veri setini kullanabilirsiniz. Veri kümeniz Soru-Cevap şeklinde değilse Alpaca gibi farklı teknikleri kullanarak veya diğer LLM'lerdeki özel istemleri kullanarak verileri Soru-Cevap'a dönüştürebilirsiniz. Talimatlarda ince ayar yapmanın, modele yalnızca ince ayarda kullandığınız verilerle ilgili soruları yanıtlama konusunda yeni bir davranış kazandırdığını, aynı zamanda bu yeni davranışın, modelin zaten sahip olduğu mevcut bilgiye uygulanabilir olduğunu ve bunun da ince ayarı güçlü bir teknik haline getirdiğini unutmayın.

Lamini Kullanarak Talimat İnce Ayarı:

Lamini, geliştiricilerin, barındırma, eğitim ve diğer karmaşık yönlerin karmaşıklığını ortadan kaldırarak dil modelleriyle kolay bir şekilde ilgilenmelerine olanak tanıyan bir yapay zeka şirketidir. Tüm yeteneklerine buradan göz atın. Eleuther AI tarafından oluşturulan açık kaynaklı bir model olan pythia adlı küçük dil modelini eğitmek için Lamini'yi kullanacağız ve Alpaca adlı bir şirket veri kümesini kullanarak üzerinde talimat ince ayarları yapacağız.


Adım 1: Talimat İnce Ayarı veri kümesini başlatın ve yükleyin

Bu adımda gerekli modülü başlatalım ve ayrıca alpaka eğitim veri setine bakalım. İşte kod.

 import itertools import jsonlines from datasets import load_dataset from pprint import pprint from llama import BasicModelRunner from transformers import AutoTokenizer, AutoModelForCausalLM from transformers import AutoModelForSeq2SeqLM, AutoTokenizer ## we are using alpaca data set, which is an open source fine tuning data set instruction_tuned_dataset = load_dataset("tatsu-lab/alpaca", split="train", streaming=True) m = 5 print("Instruction-tuned dataset:") top_m = list(itertools.islice(instruction_tuned_dataset, m)) for j in top_m: print(j)

Talimat ayarlama veri seti bu şekilde görünür. Soru-cevap şeklinde veriler içerir.

Talimat ince ayarı veri seti


2. Adım: İstemleri nemlendirin

Bu adımda alpaka setinden verileri alıp aşağıda gösterilen komutlara yerleştiriyoruz.

 prompt_template_with_input = """Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request. ### Instruction: {instruction} ### Input: {input} ### Response:""" prompt_template_without_input = """Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: {instruction} ### Response:""" ## hydrate prompts - meaning add data to the above prompts processed_data = [] for j in top_m: if not j["input"]: processed_prompt = prompt_template_without_input.format(instruction=j["instruction"]) else: processed_prompt = prompt_template_with_input.format(instruction=j["instruction"], input=j["input"]) processed_data.append({"input": processed_prompt, "output": j["output"]})

Bunu yaptıktan sonra veri seti aşağıdaki gibi görünecektir.

Hidratlanmış Veri Kümesi


Temel olarak ham Soru-Cevap verilerini alıyoruz ve LLM'ye bir soru sorulduğunda bu sorunun cevabının nasıl görünmesi gerektiğini anlamlı kılacak bir formata dönüştürüyoruz. Bunu yinelemeli olarak yapıyoruz ve bir jsonl dosyasında saklıyoruz.

 with jsonlines.open(f'alpaca_processed.jsonl', 'w') as writer: writer.write_all(processed_data)

Adım 3 – İnce Ayarlanmamış Çıktı

1. ve 2. adımda ham verileri yükledik, nemlendirdik ve jsonl formatında sakladık. Ancak Lamini'de bu hidratlanmış veriler kullanıma hazır olduğundan teknik olarak 1. ve 2. adım gerekli değildir. Ancak talimat ince ayarının nasıl çalıştığını anlamak için gösterilmesi gerekiyordu. Öncelikle Pythia modelinin ince ayarı yapılmamış bir versiyonunun basit bir soruya nasıl cevap vereceğini görelim.

 tokenizer = AutoTokenizer.from_pretrained("EleutherAI/pythia-70m") #70M parameter model that is not instruction tuned. model = AutoModelForCausalLM.from_pretrained("EleutherAI/pythia-70m") def inference(text, model, tokenizer, max_input_tokens=1000, max_output_tokens=100): # Tokenize input_ids = tokenizer.encode( text, return_tensors="pt", truncation=True, max_length=max_input_tokens ) # Generate device = model.device generated_tokens_with_prompt = model.generate( input_ids=input_ids.to(device), max_length=max_output_tokens ) # Decode generated_text_with_prompt = tokenizer.batch_decode(generated_tokens_with_prompt, skip_special_tokens=True) # Strip the prompt generated_text_answer = generated_text_with_prompt[0][len(text):] return generated_text_answer ## the 70M model doesnt have any company specific data, we will use the alpace data set from hosted on lamini and fine tune this model # load alpaca dataset finetuning_dataset_path = "lamini/lamini_docs" finetuning_dataset = load_dataset(finetuning_dataset_path) #print(finetuning_dataset) test_sample = finetuning_dataset["test"][0] print(test_sample) print("untrained output sample") print(inference(test_sample["question"], model, tokenizer))

Aldığım çıktı bu. Çıktının yararlı olmadığını ve modelin belirteç tamamlamayı denediğini ve gerçek bir yanıt vermediğini fark edeceksiniz.

İnce Ayarlı Olmayan Çıkış


Adım 4 – Talimatın İnce Ayarlı Çıkışı

Önceki adımda görülen soru-cevap verilerini talimat ince ayarı için kullandığımızda, aynı model bir sohbet botu gibi davranmaya başlayacak ve hem ince ayarlı verilerde hem de modelin zaten sahip olduğu verilerde sorularınıza daha doğru yanıtlar sağlayacaktır. oluşur. Tıpkı bir çocuğun ilk kez dil öğrendiğinde olduğu gibi, artık dil eğitimi sayesinde öğrendiği yeni şeylerin yanı sıra, halihazırda sahip olduğu duyguları da ifade edebilecektir. Modelin önceden eğitilmiş versiyonu gibi, ince ayarlı talimat modeli de Lamini'de barındırılır ve aşağıda gösterildiği gibi bir komutla çıkarılabilir. (Evet Lamini harika!)

 ## finetuned output instruction_model = AutoModelForCausalLM.from_pretrained("lamini/lamini_docs_finetuned") print("instruction finetuned output") print(inference(test_sample["question"], instruction_model, tokenizer))

İşte çıktının nasıl görüneceği. Önceki adımda gördüğümüz anlamsızlık yerine daha doğru bir çıktıya sahip olduğumuzu fark edeceksiniz.

Talimatlarda ince ayar yapılmış modelin çıktısı


Bu yazının amacı , talimat ince ayarına ve bunun temel modelleri daha kullanışlı sürümlere dönüştürmek için nasıl kullanıldığına bir giriş yapmaktır. Gelecek yazılarda talimat ince ayarının yapılmasına ilişkin gerçek süreci derinlemesine ele alacağım.


Yapay Zekanın 100 Günü'nün 13. Günü bu kadar.


Büyük teknolojide olup biten her şeyin ardındaki ikinci dereceden içgörülerden bahsettiğim Ortalamanın Üstünde adlı bir haber bülteni yazıyorum. Teknolojiyle ilgiliyseniz ve ortalama olmak istemiyorsanız abone olun .


Yapay zekanın 100 günüyle ilgili en son güncellemeler için beni Twitter ve LinkedIn'de takip edin. Teknolojiyle ilgileniyorsanız, buradaki teknoloji profesyonellerinden oluşan topluluğuma katılmak ilginizi çekebilir.


Ayrıca burada görünür.