ZUNA-RS — Rustで走るEEG用ファンデーションモデル

AI/ML

概要

zuna-rsは、ZyphraのZUNA masked-diffusionオートエンコーダをRustへ丸ごと移植したプロジェクトです。Burn MLフレームワークを用いており、FIFファイルの読み込み、EEG信号の前処理、そしてモデル推論までを純粋なRust実装で完結させます。これによりPythonやPyTorchのランタイムに依存せず、組み込み用途や高性能なRustベースの推論環境での活用が容易になります。READMEの抜粋にもあるとおり、ネイティブFIFリーダーはMNEより大幅に高速化されている点が目を引きます。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 2
  • ファイル数: 13
  • メインの言語: Rust

主な特徴

  • 完全Rust実装: FIF読み込み、EEG前処理、モデル推論をPythonやPyTorchなしで実行可能。デプロイ先の自由度が高い。
  • Burn MLフレームワーク採用: Rustエコシステム内でのディープラーニング推論を支援するBurnを用いてモデルを動作させる。
  • 高速なFIF読み込み: READMEによればネイティブ実装のopen_raw()がMNE比で約46倍の高速性を実現しているとされ、大きなデータセット処理で有利。
  • ZUNAモデル互換: ZyphraのZUNA masked-diffusion autoencoderをターゲットにしており、EEGの表現学習や生成的復元タスクに適用可能。

技術的なポイント

zuna-rsは「データ入手→前処理→推論」の3ステージをRustで完結させる点が最大の技術的特色です。FIF形式のネイティブリーダー(exgモジュール)を実装することでI/Oのボトルネックを低減し、メモリレイアウトやバッファ操作を明示的に制御して高速化を図っています。前処理パイプラインはリサンプリング、フィルタリング、アーティファクト除去といったEEG特有の処理をBurnのTensor表現へと整形し、モデル入力に適合させます。モデル推論部分では、PyTorch由来の重みやアーキテクチャをBurn互換の形に変換してロードし、masked-diffusion型のオートエンコーダをRustで実行。ランタイム依存を減らすことで組み込みや低レイテンシ推論環境での運用が見込めます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file — ビルド生成物や一時ファイルの除外設定
  • Cargo.lock: file — 依存解決のロックファイル
  • Cargo.toml: file — パッケージ定義と依存関係(Burnやndarray等)
  • LICENSE: file — ライセンス情報
  • README.md: file — プロジェクト概要と使用例(抜粋あり)
  • src/: directory — Rustソースコード。本体ロジック(FIFリーダー、前処理、モデルロード/推論)を含む
  • examples/ や scripts/: directory(存在する場合) — 推論やデータ読み込みの実例や補助スクリプト
  • models/ または weights/: directory(ある場合) — Hugging Face等から変換した重みファイルの配置想定
  • tests/: directory(ある場合) — ユニット/統合テスト

…他 8 ファイル

プロジェクトはCargoによる標準的なRustワークフローを採用しており、Burnフレームワークと組み合わせたモデル変換・ロードの仕組みが中心です。READMEにはパイプラインのフローチャートやopen_raw()の性能比較などが記載されています。

まとめ

Rustで完結するEEG推論スタックの試みとして有望。学習済みモデルの移植や組み込み利用に向く。

リポジトリ情報:

READMEの抜粋:

zuna-rs

ZUNA EEG Foundation Model — fully Rust inference pipeline.

zuna-rs ports the ZUNA masked-diffusion autoencoder (Zyphra/ZUNA) entirely to Rust using the Burn ML framework. All three stages — FIF reading, EEG preprocessing, and model inference — run without Python or PyTorch.