また会えて嬉しいよ｡
冒険の3週目､ 3日目をスタートさせるにあたり､ ええと､ 今回は物事がより深くなりそうだ｡
我々は､ Face Transformersライブラリを抱きしめるための低レベルのAPIに入るために､ 腕まくりをするつもりだ｡
そしていつものように､ フロンティアモデルに対してコードを書くことも､ AIアシスタントを構築することも､ パイプラインを使用することもできることを簡単に覚えておいてほしい｡
パイプライン
前回やったことは､ Hugging Faceから入手可能なオープンソースの推論タスクを幅広く利用する簡単な方法だ｡
今日､ 私たちはもっと低いレベルにいる｡
先ほど申し上げたように､ パイプラインよりも低いレベルでトランスフォーマーとやりとりする方法の一部として､
トークナイザーとモデルがあります｡
そして､ それが今日私たちがやろうとしていることだ｡
まずはトーケナイザーから｡
テキストとトークンの間の翻訳をモデル別に学び､ チャット・テンプレートというものを理解するつもりです｡
非常に重要な瞬間だ｡
ええと､ まず､ ハギング・フェイスのトークナイザーと呼ばれるオブジェクトを紹介すると､
これはテキスト（文字列）とトークン（数値のリスト）の変換を行うオブジェクトです｡
ええと､ 簡単に言うと2つの機能がある｡
エンコードとデコードについて知っておくべき2つのこと｡
エンコードすると文字列からトークンになり､ デコードすると元に戻る｡
そして私たちはそれを見ることになる｡
もちろん､ ちょっとしたニュアンスや手間のかかることはあるが､ 基本的にはそれだけだ｡
トークナイザーにはボキャブラリーがあり､ 1文字､ 2文字､ 3文字､ 4文字など､ トークンを構成するさまざまな文字の断片がすべて含まれています｡
そして､ このような文字の断片を含むこともできる｡
スペシャル・トークンと呼ばれるものが含まれることもある｡
特別なトークンとは､ 文の始まりやアシスタントとのチャットの始まりなど､
モデルに何かを伝えるためのトークンです｡
前にも言ったように､ ニューラルネットワーク・アーキテクチャをどのように訓練すればいいのか､
特定のトークンが文頭などを表すと期待できるようにニューラルネットワーク・アーキテクチャをどのように構築すればいいのか､
と考えているのなら､ どうすればいいのだろう？
そして､ 魔法のような答えはない｡
単純にトレーニングに尽きる｡
もし学習データの中で､ その特別なトークンがその目的に使われている例を十分に見ていれば､ それがその特別なトークンの目的であることを学習する｡
しかし､ 一般的に言って､ ある特定のタイプのトークンを他のトークンよりも期待するような､
またトークナイザーを期待するような基本的なものは､ アーキテクチャにはない｡
これに加えて､ テキストをトークンにマッピングし､ ボキャブラリーを持つことも､ チャットテンプレートと呼ばれるものがある｡
少なくとも､ 特定のタイプのモデルについては､ これからわかるだろう｡
そして､ システム・メッセージやユーザー・メッセージなどのメッセージ・セットを､ トークン・セットに変換する方法を知っている｡
そしてそれは､ 実際の例を見ればすべて理解できるだろう｡
だから､ ハギング・フェイスのすべてのモデル､ すべてのオープン・ソース・モデルには､ それ自身のトークナイザーが関連付けられている｡
モデルがどのようにトレーニングされたかに依存するので､ モデルに適用される一般的なトークナイザーは1つだけではありません｡
しかし､ 重要なのは､ モデルが学習されたときにどのトークナイザーが使われたかということだ｡
それはいずれやってみるべき実験かもしれない｡
そんなことをしたら､ すぐに非生産的な実験になってしまう｡
というわけで､ 今日は llama 3 のトークナイザを見てみましょう｡ ラルマの象徴的なモデル群である「1」が道を切り開いた｡
申し訳ない｡
からだ｡
ラルマより
メータより
それがオープンソースモデルへの道を開いた｡
マイクロソフトのファイ3というモデルを見てみよう｡
アリババ・クラウドの強豪であり､ さまざまな指標で業界をリードしているクイン2を再び見てみよう｡
スター・コーダー2と呼ばれる､ コードを生成するためのモデルだ｡
そのトークナイザーを見て､ 違いを確認する｡
ええと､ この2つが似たようなグラフィックなのは､ ラマ3. 1とファイ3は極めてよく似ている｡
Quantuもよく似ていますが､ 英語だけでなく中国語にも力を入れています｡
Star Coder 2は､ もちろんコーディングに関するものだ｡
それでは､ Google Colabに移動し､ トークン化を行います｡