Learn more about Search Results Jinjaテンプレート文字列

チャットテンプレート:静かなパフォーマンスキラーへの終止符

チャットモデルを幽霊がさまよっている – 不正なフォーマットの幽霊が! 要約 チャットモデルは、会話を単一のトークン可能な文字列に変換するための非常に異なるフォーマットで訓練されています。訓練されたフォーマットとは異なるフォーマットを使用すると、通常は重大な無音のパフォーマンス低下を引き起こしますので、訓練時に使用されたフォーマットとの一致は非常に重要です!Hugging Faceのトークナイザには、モデルが訓練されたチャット形式を保存するために使用できるchat_template属性があります。この属性には、会話履歴を正しくフォーマットされた文字列に変換するためのジンジャーテンプレートが含まれています。コードでチャットテンプレートを作成および適用する方法については、技術文書をご覧ください。 導入 もしも、🤗Transformersライブラリに詳しいのであれば、おそらく以下のようなコードを書いたことがあるはずです: tokenizer = AutoTokenizer.from_pretrained(checkpoint)model = AutoModel.from_pretrained(checkpoint) トークナイザとモデルを同じチェックポイントからロードすることで、モデルが期待する方法で入力がトークン化されることが保証されます。異なるモデルのトークナイザを選ぶと、入力のトークナイズは完全に異なる可能性があり、その結果としてモデルのパフォーマンスに重大な損傷が生じます。これをdistribution shift(分布シフト)と呼びます – モデルは一つの分布(訓練時に使用されたトークナイゼーション)のデータを学習しており、突然完全に異なる分布にシフトしたということです。 モデルを微調整するか、推論に直接使用する場合、分布シフトを最小限に抑え、与えた入力を可能な限り訓練時と似たものにすることは常に良いアイデアです。通常の言語モデルでは、これを行うのは比較的容易です – トークナイザとモデルを同じチェックポイントからロードするだけで準備完了です。 しかし、チャットモデルの場合は少し異なります。これは、「チャット」とは1つのテキスト文字列だけでシンプルにトークナイズできるものではなく、メッセージのシーケンスであり、各メッセージにはrole(役割)とcontent(メッセージの実際のテキスト)が含まれています。最も一般的なのは、ユーザーから送信されたメッセージに対しては「user」、モデルが書いた応答には「assistant」、さらにオプションで会話の開始時に与えられる高レベルの指示には「system」の役割を持たせることです。 もしもこれが少し抽象的に感じられる場合、以下の例のチャットをご覧ください: [ {"role":…

Find the right Blockchain Investment for you

Web 3.0 is coming, whether buy Coins, NFTs or just Coding, everyone can participate.

Advertising with us