6 年間の開発期間を経て、WebGPU はほとんどの主要な Web ブラウザでリリースされようとしています。これは非常に大きなことです。Web アプリケーションは、コンピューティング シェーダーの容量が追加され、GPU にほぼネイティブにアクセスできるようになりました。
WebGPT は、トランスフォーマー モデルのバニラ JS および HTML 実装であり、概念実証および教育リソースとして意図されています。 WebGPT は最大 500 M パラメータのモデルで動作することがテストされていますが、さらなるテスト/最適化によりさらに多くのパラメータをサポートできる可能性があります。
2020 M1 Mac: f32 精度の 5M パラメーターで 3ms/トークン。
2020 M1 Mac: f32 精度の 117M パラメータで 30ms/トークン。
2020 M1 Mac: f32 精度の 3 億 7,700 万パラメータで 70 ミリ秒/トークン。
2020 M1 Mac: f32 精度の 775M パラメータで 120ms/トークン。
1.5B は動作していますが不安定で、非効率のため 1 トークンあたり 1000 ミリ秒程度にとどまっています。
WebGPT は HTML + JS ファイルのセットだけなので、実行は非常に簡単です。 WebGPU はまだリリース中であるため、互換性のあるブラウザで開く必要があります。 WebGPU は現在 Chrome v113 で利用できますが、適切な機能を確保する最も簡単な方法は Chrome Canary または Edge Canary をインストールすることです。
2 つの異なるモデルを含めました。おもちゃの GPT シェイクスピア モデル (これはひどく訓練されていません (笑)) と GPT-2 117M です。これらのモデルを実行する方法の詳細については、main.js を参照してください。カスタム モデルをインポートする場合は、misc/conversion_scripts を参照してください。
WebGPT を試してみたい場合は、デモ Web サイト (KMeans.org) にアクセスしてください。ウェイトをリモートでロードすると大幅に時間がかかるため、通常はリポジトリをクローンしてローカルで実行することをお勧めします。
注: リポジトリのクローンを作成した後、 Git LFS を使用してモデル ファイルをダウンロードする必要があります。
このプロジェクトを開始したとき、トランスフォーマーがどのように機能するのか、トランスフォーマーの実装方法 (GPU や matmul カーネル、WebGPU、さらに言えばトークン化) もまったく分かりませんでした。そのため、ニューラル ネットワークに関する Andrej Karpathy のシリーズと GPT をゼロから構築することは非常に貴重でした。Andrej の Youtube。また、nanoGPT リポジトリのコードもいくつか使用しました: nanoGPT。
LatitudeGames の Javascript での OpenAI の GPT-3 トークナイザーの実装である GPT-3-Encoder からコピーしました。