モールスデコーダの並列推論
ONNX Runtime Web の `ort.env.wasm.proxy` と `numThreads` は軽い推論では効果が薄そう ということで独自にワーカー化して分散推論させるようなものにしてみた。動画だとメイン周波数 (シグナル履歴がでているやつ) で占有ワーカー1つ、ほかサブ周波数 (デコード結果だけでているやつ) が16本まで推論する。
↑ のエントリに書いた通りリアルタイム性としては余裕があるので、1つのSessionで複数の周波数のデコードを順次行う(コンカレント)のを、複数の Worker で同時に行う(パラレル)
- ワーカーごとに ONNX Runtime の Session を持つ (モデルのコピーをもつ)
- session 自体はステートレス
- ワーカー内で「スロット」という概念で特定の周波数のデコード状態を持つ
- attention とかもろもろ。外に出す必要がないのでワーカー内で閉じる
普通に実装するだけなら難しくないんだけど、クリックしたとき遡って再デコードという機能を入れた結果割と面倒くさい。結局再デコードを伴うという特殊性からメインの推論はこのワーカー分散の仕組みには入れず、単体で ort.env.wasm.proxy = true によるワーカー分離をしている。
関連エントリー
- ONNX Runtime Web の `ort.env.wasm.proxy` と `numThreads` は軽い推論では効果が薄そう 軽量なモデルの推論だと ONNX Runtime Web のマルチスレッド化の恩恵は受けれないという理解してるけど、どうするのが正解か考えて...
- WebAudio でブラウザで動く SDR をつくる 概要 無線機の出す I/Q 信号をサンプリングして 2ch (ステレオ) としてコンピュータに入力し、これを直接 WebAudio から扱っ...
- FIRフィルタの可視化 習作としてFIR (Finite Impulse Response) フィルタの可視化をつくってみた。 FIRフィルタのcoefficien...
- モールス(時系列データ)の機械学習 機械に機械学習のモデルを設計してもらう(何もわからない)の続きで、モールスの機械学習をちまちま諦めずにやってる。 PCEN (Per-Cha...
- モールスデコーダの続き RNN モールスデコーダの試作 | tech - 氾濫原 波形ではなくSFFTの結果を認識させる モールスで必要なのはキャリア周波数の周辺帯...