Talimat ayarlamalar için biçimlendirme
Talimatla uyarlanan (BT) modeller, hem eğitimde hem de çıkarım sırasında tüm talimat ayarı örneklerine ekstra bilgiler ekleyen belirli bir biçimleyici ile eğitilir. Biçimlendiricinin iki amacı vardır:
- Bir ileti dizisindeki sistem, kullanıcı veya asistan rolleri gibi rolleri belirtme.
- Bir konuşmadaki dönüşleri, özellikle de çok dönüşlü bir konuşmada betimlemek.
Aşağıda, Gemma tarafından kullanılan kontrol jetonları ve kullanım alanları belirtilmektedir. Kontrol jetonlarının jetonlayıcımızda ayrıldığını ve ona özel olduğunu unutmayın.
- Kullanıcının döneceğini belirtmek için kullanılan jeton:
user
- Model dönüşünü belirten jeton:
model
- Diyaloğun dönüşünün başlangıcını belirten jeton:
<start_of_turn>
- Diyaloğun dönüşünün sonunu belirten jeton:
<end_of_turn>
Aşağıda örnek bir iletişim kutusu verilmiştir:
<start_of_turn>user
knock knock<end_of_turn>
<start_of_turn>model
who is there<end_of_turn>
<start_of_turn>user
Gemma<end_of_turn>
<start_of_turn>model
Gemma who?<end_of_turn>
"<end_of_turn>\n"
jetonu dönüş ayırıcıdır ve istem öneki "<start_of_turn>model\n"
şeklindedir. Diğer bir deyişle, modele "Cramer Kuralı nedir?" gibi bir soru sormak isterseniz modeli aşağıdaki gibi sağlamanız gerekir:
"<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model"
Temel önceden eğitilmiş Gemma modellerini kendi verilerinizle hassaslaştırmak isterseniz eğitim ve çıkarım kullanım alanlarınız arasında tutarlı olduğu sürece kontrol jetonları için bu tür herhangi bir şemayı kullanabilirsiniz.
Sistem talimatları
Hem gözetimli ince ayar (SFT) hem de insan geri bildiriminden (RLHF) pekiştirmeli öğrenme için modeller sistem talimatlarıyla eğitilmedi. Bu nedenle, Gemma için alakalı biçimlendirme jetonları yalnızca <start_of_turn>
, <end_of_turn>
, user
ve model
şeklindedir. Örneğin:
<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model
Cramer's Rule is ...<end_of_turn>
FIM görevleri için biçimlendirme
CodeGemma 2B ve 7B varyantları, kod doldurma görevleri için özel olarak ayarlanmıştır.
Özellikle ortada doldurma (FIM) kodlama görevleri için model istemleri oluşturmanıza yardımcı olacak dört biçimlendirme denetimi jetonuyla eğitilmiştir.
Bağlam | Jeton |
---|---|
FIM öneki | `< |
FIM soneki | `< |
FIM ortası | `< |
Dosya ayırıcı | `< |
CodeGemma'nın kod doldurma işlemi yapması için imlecin konumunu ve etrafındaki bağlamı tanımlamak amacıyla FIM jetonlarını kullanın. Çok dosyalı bağlamlar için dosya ayırıcı jetonunu kullanın.
Örnek: FIM istemi oluşturma
Bu bölümde, FIM görevleri için nasıl istem oluşturacağınızı göstermek üzere Keras CodeGemma hızlı başlangıç kılavuzundaki örnek yeniden kullanılmıştır.
Aşağıdaki kodu göz önünde bulundurun:
import |⏎ # Line 1
if __name__ == '__main__':⏎ # Line 2
sys.exit(0) # Line 3
|
, kodun tamamlanması gereken imlecin konumunu gösterir. İmleçten önce bir boşluk olduğuna ve 1 ve 2. satırların sonunda satır başı karakteri olduğuna dikkat edin.
Önek ise
import
bir boşluk bırakın.
Sonek şu şekildedir:
⏎
if __name__ == '__main__':⏎
sys.exit(0)
başına yeni bir satır eklenir.
İstem şu şekilde oluşturulmalıdır:
<|fim_prefix|>import <|fim_suffix|>⏎
if __name == '__main__':⏎
sys.exit(0)<|fim_middle|>
Unutmayın:
- FIM jetonları ile önek ve son ek arasında fazladan boşluk olmamalıdır
- FIM orta jetonu, modelin bilgileri doldurmaya devam etmesini sağlamak için sonda olmalıdır.
- İmlecin dosyada bulunduğu yere veya modele ne kadar bağlam sağlamak istediğinize bağlı olarak önek veya sonek boş olabilir.
Model çıktısını anlama
Yukarıdaki örnek için model yanıtı şöyle olur:
<|fim_prefix|>import <|fim_suffix|>⏎
if __name__ == "__main__":\n sys.exit(0)<|fim_middle|>sys\n<|file_separator|>
Model, giriş istemini tekrarlar ve kod tamamlama sırasında sys
değerini sağlar.
FIM görevleri için CodeGemma modellerini kullanırken yanıt jetonlarını akışla aktarın ve akışı durdurmak ve sonuç olarak kullanılacak kodun tamamlanmasını sağlamak için sınırlayıcı olarak FIM veya dosya ayırıcı jetonlarını kullanın.