WebLLM:高性能のブラウザ内推論エンジン

2026/09/02 23:02

WebLLM:高性能のブラウザ内推論エンジン

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

WebLLM は、WebGPU を用いてハードウェアアクセラレーションを実現し、サーバーインフラの必要性を排除する高性能なブラウザ内 LLM 推論エンジンです。ストリーミング、JSON モード、シード設定、関数呼び出し(関数呼び出し機能は開発中)を含む標準的な OpenAI API 機能との完全な互換性を保ち、MLC フォーマットを通じて Llama 3/2、Phi 3/2/1.5、Gemma、Mistral、Qwen バリエーションなどのネイティブモデルをサポートします。インストールは柔軟で、npm、yarn、pnpm または jsdelivr.com からの直接 CDN インポートが可能です。モデルのロードには

CreateMLCEngine
ファクトリ関数が使用され、非同期ロードには適切なプログレスコールバックが必要です。また、
stream: true
を指定することでストリーミングチャットコンプリションをサポートし、出力をチャンクの AsyncGenerator として返します。パフォーマンスは、重い計算を専用 Web Workers または Service Workers にオフロードすることで最適化されており、モデルアーティファクト(設定、WASM、トークナイザー)の完全性検証には SHA-256/384/512 を用いた SRI ハッシュが使用されます。利用可能なキャッシュバックエンドオプションは 4 つあり、デフォルトはブラウザの Cache API です。また IndexedDB、OPFS、実験的な Cross-Origin Storage API 拡張機能も利用可能です。MLC フォーマットのカスタムモデルを統合するには、モデル重みへの URL と対応する WebAssembly ライブラリ (
model_lib
) を指定します。ソースコードからのビルドには Emscripten (emsdk) が必要で、推奨のワークアラウンドバージョンも用意されています。本プロジェクトは Apache TVM Unity で動作しており、CMU Catalyst、UW SAMPL、SJTU、OctoML、MLC コミュニティからの貢献を認めています。

本文

WebLLM: ハードウェアアクセラレーションを備えたブラウザ内 LLM インフェレンスエンジン

WebLLM は、WebGPU を用いて言語モデルの推論を直接 Web ブラウザに持ち込む高性能なエンジンです。サーバーなしで動作し、OpenAI API と完全互換性を確保しながらローカル環境のオープンソースモデルを利用できます。

概要と主な機能

  • ブラウザ内推論: サーバーサイド処理なしで、強力な LLM 演算を直接 Web ブラウザ内で実行可能。
  • OpenAI API 完全互換性: ストリーミング、JSON モード、logit レベルの制御など、あらゆる OpenAI アプリケーションにシームレスに統合可能。
  • 構造化 JSON 生成: 最先端の WebAssembly パートによる JSON モードサポートで、カスタム JSON スキーマでの出力が可能。
  • 豊富なモデルサポート: Llama, Phi, Gemma, Mistral, Qwen など多様な AI タスクに適したモデルをネイティブ対応。
  • カスタムモデル統合: MLC フォーマットのカスタムモデルを簡単に展開可能で、柔軟なモデル利用を実現。
  • プラグ&プレイ統合: NPM/Yarn パッケージマネージャーまたは CDN を介して容易に導入可能。
  • ストリーミング対応: チャットボットなどでのリアルタイム出力生成をサポート。
  • Web Worker & Service Worker 最適化: 計算を別スレッドへオフロードし、UI パフォーマンスを最大化。
  • Chrome Extension 対応: ブラウザ機能拡張の構築をサポート。

組み込みモデル

利用可能なモデルの詳細は MLC Models を参照してください。現在主なサポートモデルは以下の通りです:

  • Llama: Llama 3, Llama 2, Hermes-2-Pro-Llama-3
  • Phi: Phi 3, Phi 2, Phi 1.5
  • Gemma: Gemma-2B
  • Mistral: Mistral-7B-v0.3, Hermes-2-Pro-Mistral-7B など
  • Qwen (通義千問): Qwen2 0.5B, 1.5B, 7B

より多くのモデルが必要な場合は、Custom Models を確認するか、新規モデルの依頼を行います。

スタートガイド:インストールと設定

WebLLM はモジュラー設計であり、あらゆる UI コンポーネントに接続可能です。

インストール方法

パッケージマネージャー

npm install @mlc-ai/web-llm
# または
yarn add @mlc-ai/web-llm
pnpm install @mlc-ai/web-llm

JavaScript でのインポート:

import * as webllm from "@mlc-ai/web-llm";
// または必要なものだけ
import { CreateMLCEngine } from "@mlc-ai/web-llm";

CDN デリバリー (jsdelivr など)

import * as webllm from "https://esm.run/@mlc-ai/web-llm";
// または動的に
const webllm = await import("https://esm.run/@mlc-ai/web-llm");

MLCEngine の作成と使い方

エンジンインスタンスの作成

CreateMLCEngine()
を使用してエンジンを読み込みます。(注:初回実行時はモデルダウンロードにより時間がかかります)

import { CreateMLCEngine } from "@mlc-ai/web-llm";

const initProgressCallback = (initProgress) => {
  console.log(initProgress);
};

const selectedModel = "Llama-3.1-8B-Instruct-q4f32_1-MLC";

const engine = await CreateMLCEngine(
  selectedModel,
  { initProgressCallback: initProgressCallback }
);

別々の初期化と読み込みも可能:

import { MLCEngine } from "@mlc-ai/web-llm";

const engine = new MLCEngine({
  initProgressCallback: initProgressCallback,
});
await engine.reload(selectedModel);

キャッシュバックエンドポリシー設定

AppConfig.cacheBackend
で以下のいずれかのバックエンドを選択できます。

  1. "cache"
    : ブラウザキャッシュ API (デフォルト)
  2. "indexeddb"
    : ブラウザ IndexedDB
  3. "opfs"
    : ブラウザオリジンプライベートファイルシステム (OPFS)
  4. "cross-origin"
    : Chrome Cross-Origin Storage API 拡張バックエンド

例:

import { CreateMLCEngine, prebuiltAppConfig } from "@mlc-ai/web-llm";

const appConfig = { ...prebuiltAppConfig, cacheBackend: "opfs" };
const engine = await CreateMLCEngine("Llama-3.1-8B-Instruct-q4f32_1-MLC", {
  appConfig,
});

注意事項:

  • OPFS:
    appConfig.opfsAccessMode
    "async"
    (デフォルト)、
    "auto"
    、または
    "sync"
    に設定します。
  • Cross-Origin: 互換のある拡張機能のインストールが必要です。

チャット完了とストリーミング

非同期チャット生成

const messages = [
  { role: "system", content: "You are a helpful AI assistant." },
  { role: "user", content: "Hello!" },
];

const reply = await engine.chat.completions.create({
  messages,
});
console.log(reply.choices[0].message);

ストリーミング対応

stream: true
を指定することで、リアルタイムで出力を受け取れます。

const chunks = await engine.chat.completions.create({
  messages,
  stream: true, 
  stream_options: { include_usage: true },
});

let reply = "";
for await (const chunk of chunks) {
  reply += chunk.choices[0]?.delta.content || "";
  console.log(reply);
}

高度な使い方:ワーカーの活用

パフォーマンス最適化のため、重い計算を別のスレッド(Web Worker / Service Worker)へオフロードできます。

Dedicated Web Worker

// worker.ts
import { WebWorkerMLCEngineHandler } from "@mlc-ai/web-llm";
const handler = new WebWorkerMLCEngineHandler();
self.onmessage = (msg) => {
  handler.onmessage(msg);
};

Service Worker の活用

モデルのキャッシュ保持とオフライン動作を最適化します。

// sw.ts
import { ServiceWorkerMLCEngineHandler } from "@mlc-ai/web-llm";
new ServiceWorkerMLCEngineHandler();
console.log("Service Worker is ready");

Chrome Extension

examples/chrome-extension
など、拡張機能向けの完全なサンプルが用意されています。

OpenAI 完全互換性とセキュリティ

  • 関数呼び出し (開発中):
    tools
    tool_choice
    を使用した高度な機能への対応。
  • 完全性検証 (Integrity Verification): SRI ハッシュを使用して、ダウンロードされたモデルファイルの改ざんを検出可能。

完全性検証の設定例:

const appConfig = {
  model_list: [{
    model: "https://huggingface.co/mlc-ai/Llama-3.2...",
    integrity: {
      config: "sha256-<hash>",
      model_lib: "sha256-<hash>",
      tokenizer: { "tokenizer.json": "sha256-<hash>" },
      onFailure: "error", // "error" または "warn"
    },
  }],
};

SHA-256 ハッシュの生成コマンド:

openssl dgst -sha256 -binary <file> | openssl base64 -A | sed 's/^/sha256-/'

カスタムモデルの統合

MLC フォーマットのカスタムモデルを WebLLM で利用したい場合、以下の要素を用意してください。

  • model
    : モデルアーティファクト(ウェイトとメタデータ)への URL。
  • model_lib
    : 計算を加速するための WebAssembly ライブラリ (WASM) への URL。
const appConfig = {
  model_list: [{
    "model": "/url/to/my/llama",
    "model_id": "MyLlama-3b-v1-q4f32_0",
    "model_lib": "/url/to/myllama3b.wasm",
  }]
};

const engine = await CreateMLCEngine("MyLlama-3b...", { appConfig });

ソースコードからの構築 (開発者向け)

TVMjs のソース構築が必要な場合

npm パッケージが利用できない環境や、最新機能の検証時に必要です。

  1. Emscripten のインストール:
    emsdk
    を最新バージョン (
    3.1.56
    など) にインストールし、環境変数を設定してください。
  2. 依存関係の設定:
    tvm-unity
    リポジトリを
    --recursive
    フラグ付きでクローンします。
    git clone https://github.com/mlc-ai/relax 3rdparty/tvm-unity --recursive
    
  3. ビルド実行:
    npm install
    npm run build
    

TVMjs のソース構築手順 (詳細)

Emscripten インストール

  1. emsdk
    をインストールし、
    source path/to/emsdk_env.sh
    で環境を設定。
  2. emcc
    コマンドが動作するか確認。
    • 問題がある場合は
      emsdk install 3.1.56
      のような安定版を使用することを推奨します。

パッケージ構成の変更

package.json
内で以下のように変更を適用します:

  • "@mlc-ai/web-runtime"
    をローカルパス (
    file:./tvm_home/web
    ) に変更。
  • $TVM_SOURCE_DIR
    を定義していない場合は、
    relax
    リポジトリをクローンしてください。

再構築の確認

cd examples/get-started
rm -rf node_modules dist package-lock.json .parcel-cache
npm install
npm start

リンクと貢献

引用

@misc{ruan2026webllmhighperformanceinbrowserllm,
      title={WebLLM: A High-Performance In-Browser LLM Inference Engine},
      author={Charlie F. Ruan and Yucheng Qin and others},
      year={2026},
      eprint={2412.15803},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2412.15803},
}

同じ日のほかのニュース

一覧に戻る →

2026/09/03 0:12

Gemini 3.8 Flash および Gemini 3.8 Flash Cyber

## Japanese Translation: 現在のサマリーは物語的な流れに優れていますが、キーポイントリストに含まれる具体的な定量基準が不足しています。以下の改善版では、これらの特定のデータポイントを統合しつつ、読みやすさを維持しています: ## 改善されたサマリー: Google は Gemini 3.8 を導入し、**Gemini 3.8 Flash** と専門的な **Gemini 3.8 Flash Cyber** の 2 つのバリエーションを特徴としています。標準的な **Flash** バリエーションは、100 万入力トークンあたり$0.75、100 万出力トークンあたり$3.75(以前の価格と同様)で提供されており、推論能力において著しい飛躍を実現し、プロンプト注入に対する堅牢性を備えた HLE-Verified で 54.9% のスコアを達成しました。複雑なエンジニアリングタスク(DeepSWE)、法律・金融ベンチマークにおいて、より大きな最前線モデルを上回る性能を示しました。 **Flash Cyber** バリエーションは、新しい Fairwind プログラムを通じて認定されたセキュリティ専門家のみが利用でき、標準モデルに比べて許可された防衛者に対してより寛容な緩和措置を備えています。このバージョンは脆弱性発見においてかつてないスピードを発揮し、例えば重要な基盤的な欠陥を検出するのに通常必要だった数ヶ月に対して 2 時間未満で特定しました。また、Wiz や Collinear などが実施した内部ペネトレーションテストベンチマークにおいて、Flash Cyber は 20 のプログラミング言語にわたり 70% 以上の成功率を達成し、コストも大幅に低下(2.3 倍〜5.2 倍の削減)しました。さらに、Google のクラウド脆弱性研究チームは、Chrome の脆弱性に対してベストクラスの商用モデルよりも 2.6 倍多くの正しいパッチを生産したと報告しており、これにより効率的な脅威検出における新しい業界標準としての地位を確立しました。

2026/08/31 21:01

ImHex を使った未知のファイル形式のリバースエンジニアリング

## Japanese Translation: ここで詳述される主な成就是不動の ImHex 解析ツールを用いて、FEZ の独自バイナリセーブファイル形式を完全な構造定義へと逆工学するに至ったことである。JetBrains Rider を用いてゲームの .NET コンポーネントをデコンパイルすることで、研究者は `EasyStorage` ライブラリ内部にある特定のロジック、特にデータシリアライゼーションを担当する `PCKsaveDevice` コンポーネントを特定した。このコンポーネントは、Windows の FILETIME タイムスタンプとシリアライズされたゲームデータを含まれる 4096 バイトのバッファー内で動作する。このプロセスには、ImHex 内にカスタムのパターンを作成して複雑な内部レイアウト(7 ビット符号化文字列、`OneTimeTutorials` のようなキー値ペアのリスト、`LevelSaveData` のようなネスト構造、`ActorType` のような列挙体など)をマッピングする作業が含まれた。注目すべきは、FEZ のセーブファイルが OS 固有のパスに格納されながら暗号化も標準的なマジックヘッダーも含まず、今や完全にデコード可能になった点である。ImHex で設定された後、ユーザーは強調表示された Hex View を通じて生データを閲覧し、Pattern Data View を通じて編集可能な値を変更することができる。その結果、プレイヤーは公式のゲーム内ツールに依存せずにセーブファイルを独自に編集する能力を得る一方で、開発者はこのオープンな定義を用いて安全にゲーム状態を分析したり、バックアップユーティリティを作成したりできるようになる。なお、著者は秘密や終盤コンテンツに関する重いス ポイラーがあるため、FEZ をプレイしてから本文を読むことを推奨していることに注意されたい。

2026/09/03 7:36

Launch HN: ロナン・エックス(YC S26)– 個別最適化されたペプチドとGLP-1

## Japanese Translation: 本サービスは、GLP-1 減量治療を転換させ、硬直した標準プロトコルを、患者それぞれの唯一無二の医療歴および耐容性に合わせた、極めて個別化された医師主導のケア計画で置き換えます。吐き気や疲労などの副作用に対応せずにはいられない固定的なラベルアプローチとは異なり、本モデルは必要に応じてターゲッティングされたサポートを加え、耐容性と一貫性を向上させます。重要な安全機能として厳格な「失敗時に閉じる(fail-closed)」検証プロセスがあります:患者が選択した薬局(例:Elite Care Pharmacy LLC または別の希望薬局)の認可を受けた薬剤師は、調剤薬をリリースする前に、すべての詳細が特定の患者チャートと一致することを確認し、棚から決して取られないロット追跡可能な成分を使用します。これにより投与前の精密性が確保され、有効期限(beyond-use date)の制限とともに、リリース時に薬剤師の署名が含まれます。このプロセスは医師主導の権限チェーンに従い—医師が処方し、認可された薬剤師が検証してリリースする—with 何人も医師の判断を上回ることはできません。すべての工程には「失敗時に閉じる」ゲートが組み込まれており、検証が失敗した場合(例:処方がチャートと一致しないか、ロットが追跡できない場合)は注文が停止し、何も出荷されません。品質保証は完全に行間ごとのチェックに依存し、必要に応じて冷鏈要件を満たす温度感知包装、配送、トラッキングを使用します。調剤製剤は通常、現金払いによるブランド名のリスト価格よりもコストが低い傾向がありますが、実際のコストは計画、薬局、州によって異なります。これにより、ブランド医薬品と比較して長期的な持続可能性が向上します。なお、調剤薬は FDA の直接承認の枠外で運営され、ブランド版からの臨床試験データは直接的に適用できないことに注意が必要です。将来のリフィルは決して自動的ではなく、継続的な医師によるレビューを必要とするため、治療計画は患者の体が初期週間にわたって安定化するにつれて適応させることができます。本サービスは HIPAA 準拠とエンドツーエンド暗号化を維持し、ケア全体を通じて高水準のプライバシーを確保します。究極的には、このアプローチは業界を「ワンサイズフィッツオール」なラベルから、安価さ、安全性、品質保証、医療監督が個別化された検証と継続的な医師監督を通じてバランスされている厳格なシステムへとシフトさせます。

WebLLM:高性能のブラウザ内推論エンジン | そっか~ニュース