
6,137 文字

みなさん、こんにちは。今回の動画では、Entropixという新しいプロジェクトについて説明させていただきます。
このプロジェクトは、smollmという非常に優れた小規模言語モデルをベースにしてます。
smollmは、5億パラメータ未満のモデルの中でも最高のもんやと思います。
すでにsmollmについては、さまざまなバリエーションや角度から詳しく取り上げてきましたんで、チャンネルを検索していただければ、たくさんの動画が見つかると思います。
今回の動画では、まずEntropixがどんなもんかを見ていきます。
その後、Google ColabのT4 GPUを使って無料版で実際にsmollmモデルと組み合わせて、どう動くかを確認していきます。
まず、Entropixがどういうもんか、できるだけ簡単に説明させていただきます。
Entropixは、エントロピーという概念を使って、テキストなどのコンテンツを理解し生成する能力を向上させることを目指してます。
エントロピーは簡単に言うと、不確実性やランダム性を測るもんです。
霧がかかった地平線をイメージしてもらえると、低エントロピーは明瞭さを、高エントロピーは不確実性を表します。
Entropixは、AIが生成したコンテンツの不確実な部分を特定するためにエントロピーを使おうとしてます。
その不確実な部分に計算リソースを集中させて、より一貫性のあるコンテンツを生成しようとしてるんです。
このプロジェクトは、人間のコミュニケーションからヒントを得てます。
人間のコミュニケーションでは、エントロピーと分散(Vエントロピーとも呼ばれます)が、不確実性などの微妙な手がかりを示すことがあります。
Entropixを使えば、AIモデルがより正確で関連性の高い結果を生み出せるようになる可能性があります。
Chain of Thoughtやanthropicのような高度なモデルと同じようなことを、より少ない計算力で実現できるかもしれません。
要するに、Entropixは、エントロピーを使ってAIのコンテンツ生成能力を洗練させ、コンテキストをより意識し、効率的にすることを探求してるんです。
エントロピーとVエントロピーの両方が、この深い調和の鍵となります。
これらは内なる世界のささやきのような、微妙なサインなんです。
これらを読み取ることを学ぶのは、新しい言語を学ぶようなもんです。可能性の言語、生成の言語やと言えるでしょう。
はい、これはGitHubのリポジトリから読んだ簡単な詩です。
Entropixの全体像を簡単に説明させていただきました。
GitHubのリポジトリに行って読んでみることを強くおすすめします。
非常に上手く書かれていて、個人的な触れ方もあってええと思います。
さて、それでは、Google Colabに移りましょう。
ノートブックを作成して、Playaさんのノートブックを使わせていただきます。
彼らに共有してくれたことに感謝します。
このノートブックへのリンクは、動画の説明欄に載せておきます。
これらのコマンドをコピー&ペーストすることについては心配せんでええです。
このノートブックには機械学習の内容がたくさん含まれてますが、
私たちの主な焦点は、このEntropixプロジェクトがsmollmのような非常に小さなモデルを使って、
推論をどれだけ一貫性のあるものにできるかを見ることです。
ベンチマークによっては、OpenAIのモデルやanthropicのClaude modelのようなクローズドソースのモデルと競合するほどの成果を上げてるんです。
さあ、確認してみましょう。
その前に、この動画のスポンサーであるAgent QLの皆さんに大きな感謝を捧げたいと思います。
Agent QLは、ウェブページからデータを素早く、簡単に、そしてスケーラブルに抽出するためのクエリ言語です。
PythonのSDKを使って、Playwrightを使用した本番環境でクエリを実行したり、
ブラウザベースのデバッガーを使って、任意のウェブページでリアルタイムにクエリを最適化したりできます。
Agent QLはかなり堅牢で、AIの力を使ってページ構造を分析し、探しているデータを見つけるのに役立ちます。
彼らのウェブサイトへのリンクも動画の説明欄に載せておきます。
それでは、Google Colabに移りましょう。
ランタイムに行って、ランタイムをT4 GPUに変更しましょう。
はい、それでは、いくつかの初期の前提条件をインストールしましょう。
tiktokeとtyroをインストールします。
Google Colabの良いところは、torchとtransformersがプリインストールされてることです。
だから、それらについて心配する必要はありません。
これらがインストールされるのを待って、先に進みましょう。
これら3つのライブラリがインストールされました。
tyroは単にPythonのCLIマネージャーで、tiktokeはトークン化ライブラリです。
blobfileは大きなバイナリファイルを扱うためのものです。
次に、インポートしましょう。これは時間がかからんはずです。インポートされるのを待ちましょう。
はい、完了しました。
次に、モデルIDを設定しましょう。
先ほど言ったように、ここではsmollmを使います。
わずか3億6000万パラメータだけです。
次に、設定を指定しましょう。まず貼り付けて、それから説明します。
このコードは、大規模言語モデルの設定を定義してます。
モデルアーキテクチャのパラメータを指定し、モデルパラメータを定義して、
それからLlama 10億パラメータのインスタンスを作成してます。
もちろん、クラスを定義した後です。これは単にクラスを定義しただけです。
次に、また一部のライブラリをインポートしましょう。
指定したモデルをダウンロードする必要があるからです。
ここで、torchやtransformersなどのライブラリを指定してるだけです。
先ほど言ったとおりです。
はい、それが終わりました。では、重みをダウンロードしましょう。
ここにコマンドを貼り付けます。
このコマンドは怖そうに見えますが、簡単に説明してみます。
このかなりの量のコードがしてることは、Hugging Faceのレイヤー名をこのカスタムレイヤー名に単純にマッピングしてるだけです。
特にこのsmollmモデル用です。
入力キーから「.weight」という接尾辞を削除し、
それからプレフィックスも削除して、Hugging Faceのレイヤー名をこのプロジェクトで必要なカスタム名に置き換えてます。
それだけです。
カスタムモデルアーキテクチャを事前学習済みモデルと一致させて、
それからHugging Faceから重みをダウンロードしてるんです。見てのとおりです。
実行してみましょう。少し時間がかかりますので、待ちましょう。
非常に小さなモデルで、見てのとおり724MBだけです。
かなり早く終わりました。
次に、重みをGPUデバイスにロードしましょう。
このコードをスクロールアップすると、何が起こってるかというと、
利用可能なデバイスがCPUかCUDAかをチェックしてるだけです。
それから、モデルの重みを構造化するために、layer_weightsとxfmr_weightsという2つの名前付きタプルを定義してます。
そして、JaxとNPを使って特定のディレクトリにあるnpyファイルから重みをロードしてます。
それから、重みをbfloat16データ型のPyTorchテンソルに変換して、選択したデバイスに移動させてます。
そして、重みをlayer_weightsとxfmr_weightsのインスタンスに整理してます。
これらの重みには、トークン、埋め込み、レイヤー正規化、出力の重み、
多くのフィードフォワードなどが含まれてます。
機械学習のごちゃごちゃに深入りしたくなければ、気にする必要はありません。
はい、それが完了しました。
もう一つ面白いのは、Playaさんがtiktokenトークナイザーにも変更を加えてることです。
彼らが修正した新しいものをダウンロードしましょう。
トークナイザーがダウンロードされました。
でも、使うためには、テキストのエンコードとデコードのためのカスタムトークナイザークラスを定義する必要があります。
ここにキャンセルして、ここに貼り付けます。はい、これです。
ここをスクロールアップすると、ライブラリをインポートして、
このカスタムトークナイザークラスを定義してるだけです。
これは、Hugging Faceの事前学習済みのトークナイザーFastをベースに構築されてます。
tokenizer.jsonからトークナイザーの設定をロードし、特殊トークンをサポートし、
テキストをトークンIDにエンコードし、トークンIDをテキストにデコードするメソッドを提供してます。
このクラスは、長い入力文字列を部分文字列に分割して処理することで、
最大トークン制限を超えないようにしてます。
これにより、NLPタスクの効率的な処理が保証されます。
ここにある関数で見てのとおりです。
実行してみましょう。そんなに時間はかからんはずです。
はい、完了しました。
次に、KVキャッシュクラスを指定しましょう。
ここで何が起こってるか説明してみます。上にスクロールしましょう。
ここでは、トランスフォーマーモデルでキーと値のペアをキャッシュし更新するために設計された、
PyTorchモジュールであるKVキャッシュクラスを定義してます。
ここでしてることは、bfloat16データ型を使ってゼロでKとVのテンソルを初期化し、
指定されたデバイス(MPS、CUDA、CPUなど)上のバッファーとして保存してます。
このクラスは、新しいキーと値のペアでキャッシュを更新したり、
シーケンス次元に沿って繰り返したり、キャッシュをクリアしたりするメソッドを提供してます。
このキャッシングメカニズムは、キーと値のペアを再利用することでトランスフォーマーモデルを最適化し、
注意機構の計算オーバーヘッドを削減します。
長距離の注意やキャッシングアプリケーションに適してます。
このclear関数でそれをしてるだけです。定義しましょう。
はい、それも完了しました。
次に、注意統計を定義しましょう。
ここに行くと、少し怖そうなコードに見えますが、
モデルの注意統計を定義または追跡してるだけです。
PyTorchを使用して、最適なデバイス(今回の場合はCUDA)を選択し、
エントロピーとエントロピーの分散(Vエントロピー)テンソルを
レイヤー数と注意ヘッド数とともに保存してます。
このクラスは、初期化、平均エントロピーと標準誤差の計算、
注意スコアに基づく統計の更新のためのメソッドを提供してます。
これにより、注意メカニズムの分析と監視が可能になり、
モデルの動作とパフォーマンスについての洞察が得られます。
ここでEntropicも活躍してます。
見てのとおり、かなり早くインストールされました。
それでは、これまでに作成したモデルに適用しましょう。
ここにコードを貼り付けます。
これらの重みやフィードやフォーマットについて心配する必要は本当にありません。
単純にサンプリングして、上で定義したものを初期化してるだけです。
これらはすべて背後で起こってることです。
でも、モデルのレイヤーレベルに実際にアクセスして、
これらのレイヤーやすべての重みをチェックする方法に興味があれば、
自由にそうしてください。
はい、これも実行しましょう。
これも再びエントロピーとVエントロピーをチェックしてます。はい、完了しました。
それでは、メイン関数をチェックしましょう。
ここでモデルにスケーリングを適用し、KVキャッシュで注意マスクを構築してます。
ここにコードを貼り付けます。
今のところ、このコードの細かい部分は気にしません。
このモデルを初期化しましょう。ここでモデルを初期化します。
少し時間がかかりますね。
これで、上で指定したすべてのものを使用してます。
はい、すべて完了しました。
それでは、ここでテキストを生成してみましょう。
「スペインの首都は何ですか?」と聞いてみます。
これで、Entropixがsmollmとともにどう動作するかがわかります。
ちょっと待ちましょう。
はい、「スペインの首都はマドリードです」と答えてくれました。
では、いくつか難しい質問を試してみましょう。
「9.9と9.11のどちらが大きいですか?」という質問は有名です。
OpenAIのモデルでさえ、このテストに何度も失敗してます。
おお、見てください。モデルは何が起こってるかを理解してますね。
「この質問は少しトリッキーですが」と言って、正しい答えを出してくれました。
これは非常に良いですね。推論を見てください。
そして、これがたった3億5000万パラメータという小さなモデルだということを忘れないでください。
別の質問をしてみましょう。
「”happy”という単語で終わる10個の文を書いてください」と聞いてみます。
どうなるか見てみましょう。
はい、これは失敗しましたね。次に進みましょう。
別のものを試してみましょう。
「volleyballという単語には”l”がいくつありますか?」と聞いてみます。
数えられるか見てみましょう。4つありますからね。面白いはずです。
モデルは完全に間違えてしまいました。volleyballの文字数を数えることさえできてないようです。
16じゃなくて10ですからね。まあ、いいでしょう。
別のものを試してみましょう。推論の質問です。
「バットとボールの合計が110ドルで、バットはボールより1ドル高いです。ボールの価格はいくらですか?」
正解は54.5ドルです。どうなるか見てみましょう。
見てください。最終的な答えは出してくれてませんが、正しくないように見えますね。
ボールの総コストがこれで…少し妄想してるようです。
まあ、それでも単純な質問に関しては十分良いと思います。
改善されてる部分もありますが、より難しい質問をし始めると失敗してしまいます。
でも、このコンセプトはとても興味深いと思います。
特に、エントロピーとVエントロピーを使って、こんな小さなモデルにより多くの知能をもたらすことを考えると、すごいことです。
もし、より大きなモデル、より高度なモデルを持てない場合に、
より多くの知能をもたらしたいなら、これが一つの方法かもしれません。
まだ研究の非常に初期の段階ですから、大きく改善されることを期待してます。
とても興味深いプロジェクトですね。引き続き注目していきたいと思います。
このノートブックへのリンクを動画の説明欄に載せておきます。
試してみて、どう思ったか教えてください。
コンテンツが気に入っていただけたら、チャンネルの登録をご検討ください。
すでに登録済みの方は、ネットワークで共有していただけると助かります。
ご視聴ありがとうございました。
コメント