MCPcopy
hub / github.com/mil-tokyo/webdnn

github.com/mil-tokyo/webdnn @v2.0.0 sqlite

repository ↗ · DeepWiki ↗ · release v2.0.0 ↗
1,249 symbols 2,794 edges 193 files 8 documented · 1%
README

WebDNN

English

WebDNN version 2のα版です。WebDNN 1.xとの大きな違いは、入力としてONNX形式のモデルのみを受け付ける点です。Pythonによる前処理なしで、ONNXモデルを直接Webブラウザで読み込むことが可能です。さらに、オフラインでのモデル最適化を行うことも可能です。

Version 1.x

対応バックエンド(高速化技術)

モダンブラウザのほとんどで、WebGLが使用可能。

  • WebGPU
  • Chrome Canary搭載版。
  • iOS13に搭載のWebGPUは廃止予定のWSL言語によるシェーダを必要とするため非対応。
  • WebGL
  • WebGL2が使用可能な場合は使用する。WebGL1のみ対応のSafariにも対応。
  • WebAssembly

開発環境セットアップ

node.js 14, python 3.6以降, emscripten 2.0以降が動作する環境が必要です。

yarn
python setup.py develop

ビルド

yarn build:all

ビルド成果物 - dist/webdnn.js - 最適化されていないONNXモデルを読み込むことができるライブラリ - dist/webdnn-core.js - WebDNNにより最適化されたモデルを読み込むことができるライブラリ

基本的な使い方

dist/webdnn.js<script>タグでロードすることで、グローバルにWebDNNオブジェクトが追加される。ONNXモデルmodel_directory/model.onnxが存在すると仮定し、形状[1, 2]のテンソルを入力として実行する。

const runner = await WebDNN.load("model_directory/");
const inputDataArray = new Float32Array([5.1, -2.3]);
const inputTensor = new WebDNN.CPUTensor([1, 2], "float32", inputDataArray);
const [outputTensor] = await runner.run([inputTensor]);

console.log(outputTensor.data);  // Float32Array

動作する最小限の完全なコードはexample/minimumを参照。

テスト

テスト対象のONNXモデルおよび、入出力テンソルの生成

pip install -r requirements.test.txt
python test/model_test/make_models.py

Webブラウザ上での実行

yarn server

Webブラウザでhttp://localhost:8080/test/model_test/runner/standard.htmlを開き、テストしたいバックエンドにチェックを入れ、Testボタンをクリックすることでテストが実行される。

モデルの最適化を含めたテストを行う場合は、

python test/model_test/make_models.py --optimize

http://localhost:8080/test/model_test/runner/optimized.html

を使用する。ただし、make_models.pyの実行時間が長くかかる。

Extension points exported contracts — how you extend this code

Runner (Interface)
(no doc) [73 implementers]
src/descriptor_runner/interface/core/runner.ts
WebDNNLoggingAdapter (Interface)
(no doc) [5 implementers]
src/descriptor_runner/logging.ts
BackendContext (Interface)
(no doc) [4 implementers]
src/descriptor_runner/interface/core/backendContext.ts
Tensor (Interface)
(no doc) [4 implementers]
src/descriptor_runner/interface/core/tensor.ts
WebGLTensor (Interface)
(no doc) [3 implementers]
src/descriptor_runner/interface/backend/webgl/webglTensor.ts

Core symbols most depended-on inside this repo

dump
called by 108
test/model_test/make_models.py
emptyTensor
called by 94
src/descriptor_runner/interface/core/backendContext.ts
shaderGenTensorNDGetUniformItem
called by 45
src/descriptor_runner/operators/webgl/shaderHelper.ts
set
called by 43
src/descriptor_runner/core/inputProxy.ts
shaderGenTensorNDGet
called by 42
src/descriptor_runner/operators/webgl/shaderHelper.ts
runKernel
called by 42
src/descriptor_runner/interface/backend/wasm/wasmContext.ts
initialize
called by 37
src/descriptor_runner/interface/core/operator.ts
shaderGenHeader
called by 33
src/descriptor_runner/operators/webgl/shaderHelper.ts

Shape

Method 591
Function 310
Class 308
Interface 38
Enum 2

Languages

TypeScript75%
Python25%

Modules by API surface

test/model_test/make_models.py159 symbols
src/descriptor_runner/logging.ts32 symbols
src/descriptor_runner/backend/webgl/webglContextImpl.ts31 symbols
src/descriptor_runner/operators/cpu/operators/standard/dynamicunary.ts29 symbols
src/descriptor_runner/operators/cpu/operators/standard/pad11.ts23 symbols
example/benchmark/make_models.py23 symbols
src/descriptor_runner/interface/backend/webgl/webglContext.ts15 symbols
src/descriptor_runner/backend/webgl/webglTensorImpl.ts15 symbols
src/descriptor_runner/backend/wasm/wasmContextImpl.ts15 symbols
src/descriptor_runner/interface/backend/webgpu/webgpuContext.ts14 symbols
src/descriptor_runner/core/runnerImpl.ts14 symbols
src/graph_transpiler/webdnn/model.py13 symbols

Dependencies from manifests, versioned

@types/pako1.0.1 · 1×
@typescript-eslint/eslint-plugin4.23.0 · 1×
@webgpu/glslang0.0.15 · 1×
@webgpu/types0.0.45 · 1×
eslint7.26.0 · 1×
onnx-proto4.0.4 · 1×
pako2.0.3 · 1×
prettier2.3.0 · 1×
ts-loader8.0.17 · 1×

For agents

$ claude mcp add webdnn \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact