ngxson/wllama
WebAssembly binding for llama.cpp - Enabling on-browser LLM inference
解決する課題
wllamaは、バックエンドサーバーや専用のGPUを必要とせずに、Webブラウザ上で直接大規模言語モデル(LLM)を実行する方法を提供します。強力なC++実装であるllama.cppとWebアプリケーションの間のギャップを、WebAssembly(Wasm)バインディングを提供することで埋めます。
仕組み
このプロジェクトはllama.cppをWebAssemblyにコンパイルし、ブラウザがモデルの推論ロジックを実行できるようにします。複数の実行パスをサポートしています:
- WebGPU: モデルレイヤーをGPUにオフロードし、パフォーマンスを大幅に向上させます。
- Wasm SIMD: GPUが利用できない場合に、SIMD命令を使用してCPU上で推論を実行し、効率を確保します。
- Web Workers: 推論をワーカー・スレッド内で実行することで、生成中にブラウザのユーザーインターフェースがフリーズせず、応答性を維持します。
巨大なモデルファイルを扱うために、wllamaはモデルを小さなチャンクに分割して読み込むことができ、ブラウザのメモリ制限(ArrayBufferの制限)を回避し、並列ダウンロードを可能にします。
対象ユーザー
TypeScriptやJavaScriptを使用して、ローカルでプライベートかつサーバーレスなLLM機能をフロントエンドアプリケーションに統合したいWeb開発者。
ハイライト
- OpenAI互換API: OpenAIのリクエスト/レスポンス形式に慣れている開発者にとって統合が容易です。
- ハードウェアアクセラレーション: WebGPUとWasm SIMDの両方をサポートし、パフォーマンスを最適化します。
- マルチモーダル機能: マルチモーダルモデル向けに画像および音声ファイルの入力をサポートします。
- ツール呼び出し: モデルが外部ツールと対話できるようにします。
- 並列モデル読み込み: 大きなGGUFモデルを分割して並列に読み込むことで、速度を向上させ、2GBのファイルサイズ制限を回避します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch