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