Gemma biçimlendirme ve sistem talimatları

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:

  1. Bir ileti dizisindeki sistem, kullanıcı veya asistan rolleri gibi rolleri belirtme.
  2. 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.