調整操作說明的格式
指示調整 (IT) 模型是以特定格式器訓練, 為所有指導調整範例加註加上額外資訊 訓練和推論時間格式轉換工具有兩種用途:
- 在對話中指定角色,例如「系統」、「使用者」或 assistant 角色。
- 輪流演練,特別是在多輪對話中。 對話。
下文會指定 Gemma 使用的控制權杖及其用途。注意事項 控制權杖保留供我們的符記化工具使用。
- 用於表示使用者輪換的符記:
user
- 用於表示模型輪轉的權杖:
model
- 用於表示對話開始的符記:
<start_of_turn>
- 用於表示對話回合結束的權杖:
<end_of_turn>
以下是對話範例:
<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"
為轉分隔符號,提示前置字串為
"<start_of_turn>model\n"
。這意味著您可以
以「Cramer's Rule?」之類的問題撰寫,應該改以
如下所示:
"<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model"
請注意,如要使用自己的模型 微調預先訓練的基礎 Gemma 模型 資料,您就可以對控制符記使用任何此類結構定義,只要保持一致 訓練與推論用例間的差異
系統指示
適用於監督式微調 (SFT) 和人類增強學習
(RLHF),我們未能以系統指示訓練模型。身為
結果,Gemma 唯一相關的格式符記是 <start_of_turn>
。
<end_of_turn>
、user
和model
。例如:
<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model
Cramer's Rule is ...<end_of_turn>
FIM 工作格式
CodeGemma 2B 和 70 億個變化版本 特別針對程式碼填入工作微調
具體而言,這些模型是以四個格式控制符記訓練而成,您可以 來協助建構用於中間填充 (FIM) 程式設計工作的模型提示。
背景資訊 | 權杖 |
---|---|
FIM 前置字元 | <|fim_prefix|> |
FIM 後置字元 | <|fim_suffix|> |
FIM 中間層 | <|fim_middle|> |
檔案分隔符 | <|file_separator|> |
使用 FIM 權杖定義遊標位置與周遭環境 以便用於 CodeGemma 執行程式碼使用檔案分隔符權杖 多檔案情境
範例 - 建構 FIM 提示
本節重複使用 Keras CodeGemma 中的範例 快速入門導覽課程 如何建構 FIM 任務的提示
請考慮使用以下程式碼:
import |⏎ # Line 1
if __name__ == '__main__':⏎ # Line 2
sys.exit(0) # Line 3
|
表示遊標的位置,也就是程式碼的位置
已完成請注意,遊標之前還有第 1 和 2 行
結尾是回車字元
前置字元是
import
並在結尾加上一個空格
後置字串為:
⏎
if __name__ == '__main__':⏎
sys.exit(0)
並在開頭加上新的一行
提示應建構為:
<|fim_prefix|>import <|fim_suffix|>⏎
if __name == '__main__':⏎
sys.exit(0)<|fim_middle|>
請注意:
- 所有 FIM 權杖與前置碼之間不應有多餘的空格 和字尾
- FIM 中間符記應在模型結尾處,以便讓模型繼續 填入中
- 前置字串或後置字串可能有空白,視遊標所在位置而定 或是您想提供模型的背景資訊程度 同時
瞭解模型輸出內容
上例的模型回應如下:
<|fim_prefix|>import <|fim_suffix|>⏎
if __name__ == "__main__":\n sys.exit(0)<|fim_middle|>sys\n<|file_separator|>
模型會重複輸入提示,並在完成程式碼時提供 sys
。
使用 CodeGemma 模型處理 FIM 工作時,串流回應符記和 使用 FIM 或檔案分隔符做為分隔符號,藉此停止串流及取得 。