Skip to main content

Crate eegdino_rs

Crate eegdino_rs 

Source
Expand description

§eegdino-rs

Rust inference crate for the EEG-DINO foundation model, built on the Burn ML framework.

EEG-DINO learns robust EEG representations via hierarchical self-distillation on 9 000+ hours of EEG data. This crate provides a faithful port of the encoder architecture with verified numerical parity (NRMSE < 1e-6) against the original PyTorch implementation.

§Model sizes

VariantParamsd_modelHeadsLayersFFN dim
Small4.6 M200812512
Medium33 M51216161 024
Large201 M1 02416242 048

§Quick start (builder)

use eegdino_rs::prelude::*;
use burn::backend::NdArray;

type B = NdArray;

let encoder = EegDinoEncoder::<B>::builder()
    .weights("weights/eeg_dino_small.safetensors")
    .size(ModelSize::Small)
    .device(Default::default())
    .build()?;

let signal = vec![0.0f32; 19 * 2000];
let result = encoder.encode_raw(&signal, 1, 19, 2000)?;
// result.shape == [1, 191, 200]

§Batch encoding

let signals: Vec<Vec<f32>> = load_recordings();
// Single batched forward pass (fastest):
let result = encoder.encode_batch(&signals, 19, 2000)?;
// Or one-by-one:
let results = encoder.encode_many(&signals, 19, 2000);

§Backends

FeatureBackendNotes
ndarray (default)CPUMulti-threaded via Rayon + SIMD
blas-accelerateCPU + AccelerateRecommended on Apple Silicon
wgpuGPUMetal (macOS) / Vulkan (Linux)
wgpu-f16GPU f16Half-precision, 2x less memory

Re-exports§

pub use config::ModelConfig;
pub use config::ModelSize;
pub use error::EegDinoError;
pub use error::Result;
pub use inference::EegDinoEncoder;
pub use inference::EegDinoEncoderBuilder;
pub use inference::EncodingResult;
pub use inference::EegDinoClassifier;
pub use inference::ClassificationResult;
pub use inference::detect_model_size;
pub use model::encoder::EEGEncoder;
pub use model::classifier::ClassificationModel;
pub use model::embedding::EmbeddingCache;
pub use model::embedding::PatchEmbedding;

Modules§

config
error
Typed error type for the eegdino-rs public API.
inference
model
prelude
Convenience re-exports for common usage patterns.

Functions§

init_threads
Configure the Rayon thread pool. Call once before model use.