Talimat ayarlama için biçimlendirme
Talimata göre ayarlanmış (BT) modeller, özel bir biçimleyici ile eğitilir. tüm talimat ayarlama örneklerine ek bilgi verir. Hem de ve çıkarım süresini takip edebilirsiniz. Biçimlendiricinin iki amacı vardır:
- Bir ileti dizisindeki sistem, kullanıcı veya Asistan rolleriyle ilgili daha fazla bilgi edinin.
- Özellikle çok dönüşlü olduğunda, sohbetteki dönüşleri tanımlama yardımcı olur.
Aşağıda, Gemma tarafından kullanılan kontrol jetonları ve bunların kullanım alanları belirtilmektedir. Not ve jeton oluşturucumuza özel olması gerekir.
- Kullanıcının dönüşünü belirten jeton:
user
- Model dönüşünü belirten jeton:
model
- Diyalog dönüşünün başladığını gösteren jeton:
<start_of_turn>
- İletişim kutusu dönüşünün sonunu belirten jeton:
<end_of_turn>
Aşağıda örnek bir diyalog örneği 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ı, istem öneki ise
"<start_of_turn>model\n"
. Bu, modelin yalnızca bir açılış sayfasına
"Kramer'in Kuralı nedir?" gibi bir soruyla,
modelimiz şu şekildedir:
"<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model"
Temel önceden eğitilmiş Gemma modellerinde kendi olması koşuluyla, kontrol jetonları için bu tür herhangi bir şemayı ve çıkarım kullanım alanlarınız arasında paylaştırır.
Sistem talimatları
Hem gözetimli ince ayar (SFT) hem de insandan pekiştirmeli öğrenme için
geribildirim (RLHF) olarak ayarlanırsa modeller, sistem talimatlarıyla eğitilmemiştir. Kullanıcı
Sonuç olarak, Gemma için yalnızca <start_of_turn>
biçimlendirme jetonları kullanılabilir,
<end_of_turn>
, user
ve model
. Ö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ı özellikle kod doldurma görevleri için ayarlanmıştır.
Özel olarak, tablodaki dört biçimlendirme kontrolü jetonuyla .
Bağlam | Jeton |
---|---|
FIM öneki | <|fim_prefix|> |
FIM soneki | <|fim_suffix|> |
FIM orta | <|fim_middle|> |
Dosya ayırıcı | <|file_separator|> |
İmlecin konumunu ve etrafındaki bağlamı tanımlamak için FIM jetonlarını kullanın kod doldurma işlemi yapmasına olanak tanır. Dosya ayırıcı jetonunu şunun için kullan: çok dosyalı bağlamları kullanır.
Örnek - FIM istemi oluşturma
Bu bölümde, buradaki Keras CodeGemma göstermek için FIM görevleri için nasıl istem oluşturacağınızı anlatacağız.
Şu kodu kullanabilirsiniz:
import |⏎ # Line 1
if __name__ == '__main__':⏎ # Line 2
sys.exit(0) # Line 3
|
, kodun bulunması gereken imlecin konumunu gösterir.
tamamlandı. İmleçten önce bir boşluk olduğuna ve 1. ve 2. satırların
sonda satır başı karakteri olmalıdır.
Bu durumda önek şöyle olur:
import
bir boşluk olmalıdır.
Sonek şöyledir:
⏎
if __name__ == '__main__':⏎
sys.exit(0)
yeni bir satır olur.
İ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 arasında fazladan boşluk olmamalıdır ve sonek
- Devam etmek için modele ön hazırlık yapmak amacıyla FIM orta jetonu en sonda olmalıdır doldurmak
- İmlecin bulunduğu yere bağlı olarak önek veya sonek boş olabilir veya modele ne kadar bağlam bilgisi sağlamak istediğinizi şununla:
Model çıkışı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 olarak sys
sağlar.
FIM görevleri için CodeGemma modellerini kullanırken yanıt jetonlarını akışla aktarma ve ayırıcı olarak FIM veya dosya ayırıcı jetonları kullanarak akışı durdurup gösterir.