Google Colabへようこそ｡
トーケナイザーの素晴らしい世界を探検してみよう｡
それで､ ええと､ まず最初にすることは､ 輸入をすることだ｡
そして､ それが終わった後､ ここでこの発言に触れたい｡
前回のビデオでこのことを言い忘れたが､ あのコラボに追加したので､ とにかく見つけて私の説明を読んでほしい｡
ええと､ Huggingfaceにログインしたことがないなら､ Colabにログインする必要があるかもしれない｡
そのためのコードがこれだ｡
まず最初に､ まだ抱き顔のアカウントを作成していない場合は､ 抱き顔のアカウントが必要です｡
無料だ｡
それは素晴らしいことで､ 決して後悔することはない｡
そこで､ huggingfaceにサインアップし､ 設定に移動して新しいAPIトークンを作成する｡
自分に書く許可を与える｡
今は必要ないだろうが､ 将来は必要になるだろう｡
そして戻ってきたら､ このColabのキーセクションに行き､ 新しいシークレットを追加する｡
secretにはHFアンダースコア・トークンを､ valueにはあなたのトークンを指定する｡
そして､ シークレットからHFトークンを取得するこのコードを実行し､ ここでインポートしたログイン・メソッドを呼び出すだけです｡
そして､ そのログイン方法はハグ顔にログインする｡
すぐに実行しよう｡
そして完成した｡
そして､ そこに権利があると書いてあるのがわかるだろう｡
さて､ トーケナイザーの話をしよう......まずはファンタスティックなラマ3から｡ 1､ メタの象徴的なモデルで､ オープンソースモデルへの道を開いた｡
さて､ llama 3を使っているとき｡ 1､ metaはまず利用規約にサインする必要がある｡
その方法は､ ここにリンクされているハギング・フェイスのモデル・ページにアクセスすることだ｡
そのページの一番上には､ サインするために必要なことがとてもシンプルに書かれている｡
メールアドレスは､ あなたのハグする顔のアカウントと一致しているのがベストです｡
つまり､ 素早く物事を成し遂げるということだ｡
実際､ 数分で承認されるはずだ｡
土曜の深夜に一度だけ行ったこともある｡
とても早く承認されたよ｡
ただ､ 彼らが本当にボールを持っているからなのか､ それともすべて自動化されているのかはわからないが､
実に素早い｡
万が一､ この署名規約が何か邪悪なものだと思われるかもしれないが､ 細かい字を読めば､ それはあなたがレンマ3を使うつもりがないことを確認するためのものなのだ｡
1悪意はなく､
善意がある｡
だから､ サインすることに何の問題もないはずだ｡
そうすれば､ ラマ3のすべてのバリエーションにアクセスできるようになる｡ 1.
一つのサインで､ 家族全員に適用されるんだ｡
もし､ llama 3や2のような古いllama 3モデルを使いたいのであれば､ そのモデルのファミリーの契約書にサインする必要がある｡
もし､ 何らかの理由で承認されたくなかったり､ すぐに承認されなかったりした場合は､
後日､ 私たちが開始するときにスキップすればいい｡
それか､ 私が3人分プレーするのを見ることもできる｡ 1､ そして､ 他のトークナイザーを使い始めたら､ また戻ってくることができる｡
しかし､ トークナイザーの作成はこの1行だけだ｡
Hugging faceにはオート・トークナイザーというクラスがあり､ この特定のモデルに必要なトークナイザーのサブクラスを作成する｡
あまり心配する必要はない｡
オート・トークナイザーは､ pre-trainedからクラス・メソッドを呼び出します｡ つまり､ 事前に訓練されたモデルがあるので､
そのためのトークナイザーを作成してほしいということです｡
それが名前だ｡
これが私たちが使っているモデルだ｡
それは､ ハグする顔のハブから直接取ることができるものだ｡
メタ・ラマのメタ・ラマ3だ｡ 180億ドル
このトークナイザーを持ち込むと､ モデルの一部であるコードが存在する可能性がある｡
そして､ メタの正体を知っていると言っているんだ｡
私たちはこれが問題ないことを知っていますから､ 信頼してください｡
それを含まなくても､ 問題なく機能する｡
ただ警告を与えるだけだ｡
だから､ もし醜い警告を出したくないのであれば､ そう書いておいてくれ｡
オーケー｡
それで次にすることは､ テキストを使うことだ｡
LLMのエンジニアにトーケナイザーの動きを見せるのが楽しみです｡ テキストを文字列として受け取り､ トーケナイザーを呼び出してそのテキストをドット・エンコードします｡
そして､ その結果のトークンを印刷する｡
それがこれだ｡
とてもシンプルなことなんだ｡
単なる数字の羅列だ｡
それ以上のことはない｡
トークンには何の不思議もない｡
ただの数字だ｡
そして､ この数字はそのテキストを表している｡
何人いるか見てみよう｡
では､ まず､ 私たちが渡したテキストに何文字あったかを言ってみよう｡
そのテキストには61の文字がある｡
これでトークンの数を数えることができる｡
大まかに言って､ トークンに何文字が対応するかという経験則を覚えていますか？
平均すると4人だ｡
大体ね｡
経験則では､ 通常の英語､ または英語をたくさん使う場合は､ 4文字程度を1トークンとする｡
だから61通を期待している｡
トークンは15枚程度を想定している｡
何が出てくるか見てみよう｡
15トークン
これでよし｡
このテキストにちょうど15トークン｡
トークンをテキストに戻すために､ このデコードを行うことができる｡
だから､ 原文を再現することを期待している｡
そして私たちが手にするのは､ 似ているようで少し違うものだ｡
おわかりのように､ 返ってくるのは期待通りのテキストである｡
しかし､ その前面には新しいものがある｡ このおかしなもの､ 角度のついた括弧で囲まれたテキストは､ less
thanとgreater thanの記号で始まる｡
これは何だ？
これはスペシャル・トークンと呼ばれるもので､ ハイライトしたものはすべて1つのトークンにマッピングされます｡
実際､ このトークン､ 128,000トークンは特別なトークンで､ プロンプトのテキストの始まりであることをモデルに示している｡
だから､ LMに特別な指示を出すために使うんだ｡
さて､ 皆さんはこう思うかもしれない｡
ということは､ 何らかの方法でトランスフォーマーのアーキテクチャを設定し､ そのようなトークンを期待するようにしなければならないということですか？
ええと､ そして､ おそらくあなたは今､ とても快適だと思いますが､ 答えはノーです｡
そういう意味ではない｡
ええと､ これはどういう意味かというと､ トレーニング中に見たすべてのトレーニング例の中で､ このように設定されていたということだ｡
トレーニングの例は､ この特別なトークンから始まる｡
だから､ それを期待したトレーニングで慣れてきたんだ｡
そして､ 最高品質のアウトプットを確実にするためには､ 同じアプローチを再現する必要がある｡
ええと､ 推論時に新しいプロンプトを入力するとき｡
というわけで､ お分かりいただけただろうか｡
バッチデコードの方法もある｡
トークンを使ってこれを実行すると､ 1つの文字列の代わりに､ それぞれの文字列が1つのトークンを表す､
小さな文字列のセットが返ってくる｡
だから､ この最初のトークンがここになったんだ｡
そして､ それがどのように機能しているかを確認するために､ フォロースルーすることができる｡
ええと､ ここから注目すべきことがいくつかある｡
そのひとつは､ ほとんどの場合､ 単語がトークンにマッピングされることだ｡
1つのトークンにマッピングされる文字数は4文字よりはるかに多いのですが､ 一般的な単語なので､
ボキャブラリーに入っています｡
GPTトークナイザーと同じように､ 単語の前にあるスペースもトークンの一部です｡
So and so amは言葉の始まりで､ Amという文字はただのamとは違うトークンであり､ もっと複雑なものの中にある可能性のある文字の断片である｡
また､ Tokenizersのようなものが､ 単語トークンとISAの2つのトークンに分割されたことにもお気づきだろう｡
ISAの語尾は面白いね｡
それはトークン化の一部なんだ｡
もうひとつ注意しなければならないのは､ 大文字と小文字が区別されるということだ｡
だから､ 大文字のTがついたトークンがそこにあるのがわかるだろう｡
最後に､ トークナイザー・ドット・ボキャブについて触れておこう｡
tokenizer dot vocabを実行すると､ ええと､ これが表示されます｡
言葉の断片と数字の完全な対応付けの辞書である｡
そして､ ここにはかなり曖昧なものがあるのがわかるだろう｡
非常に多くのトークンが用意されており､ 中には異なる言語や異なる目的で使用される､
かなり奇妙なトークンも含まれている｡
だから､ 3文字や4文字の枠を超え､ さまざまなものを目にすることになる｡
A ええと､ かなりたくさん印刷されています｡
ええと､ この辞書をスクロールしていくと､ 他のものが出てきます｡
ここに戻ってこい｡
印刷もできるし､ コメントもできる｡
ええと､ 追加されたボキャブラリーと呼ばれるもので､ さっき言った特別なトークンです｡
申し訳ないが､ 一番上にあるのは､ LMに合図を送るために使われる､
語彙に予約されている特別なトークンだ｡
本文の冒頭｡
本文終わり｡
ちょっと遠慮がちに...｡
そしてスタートヘッダ､ ID､ ヘッダ｡
そして他にもいくつかある｡
そしてパイソンのタグ｡
明らかに特別な何かがある｡
どんな理由であれ､ これらの特別なトークンを語彙に含め､ トレーニング中に提供することは､
推論を行う際や､ テキストを生成するためにモデルを実行する際に､ これらのトークンを使ってモデルに物事を示すことができるため､ 有用であると認識されています｡
分かった｡
まあ､ これはラマ3モデルでちょっと遊んだだけだ｡
ええと､ ラマ3｡ 1トークナイザー｡
また戻ってきたら､ 特にチャットに適用される方法を見てみよう｡
それから､ 他のトークナイザーも使ってみよう｡
それではまた｡