Gemma biçimlendirme ve sistem talimatları

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:

  1. Bir ileti dizisindeki sistem, kullanıcı veya Asistan rolleriyle ilgili daha fazla bilgi edinin.
  2. Ö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ğlamJeton
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.