Domain Ml

作者 actionbook5c40d3ad7851無授權條款1.5K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫6 週前更新

Use when building ML/AI apps in Rust. Keywords: machine learning, ML, AI, tensor, model, inference, neural network, deep learning, training, prediction, ndarray, tch-rs, burn, candle, 机器学习, 人工智能, 模型推理

AI 產生的概覽

指導 Rust 機器學習與 AI 應用設計,涵蓋框架選擇、記憶體效率、GPU 批次處理與模型載入。

功能
此技能為在 Rust 中建置機器學習與 AI 應用提供領域限制與設計指引。它將大資料、GPU 加速、模型可攜性等領域規則對應到 Rust 設計影響,並推薦用於張量、ONNX 推論、ML 框架、PyTorch 綁定、資料處理與嵌入的 crate。它也提供推論伺服器與批次推論的程式碼模式,以及常見錯誤與相關技能表格。
適用情境
適用於在 Rust 中設計或實作 ML/AI 應用時,例如推論伺服器、批次預測流程或模型載入。在選擇 Rust 機器學習 crate,或處理記憶體、GPU 與可攜性限制時也適用。
執行需求
不附帶指令碼,僅為說明性內容。指引引用 ndarray、tract、candle、burn、tch-rs、polars 與 fastembed 等 Rust crate,並假定存在 Rust 專案,可能支援 GPU(CUDA/Metal)。

Machine Learning Domain

Layer 3: Domain Constraints

Domain Constraints → Design Implications

Domain RuleDesign ConstraintRust Implication
Large dataEfficient memoryZero-copy, streaming
GPU accelerationCUDA/Metal supportcandle, tch-rs
Model portabilityStandard formatsONNX
Batch processingThroughput over latencyBatched inference
Numerical precisionFloat handlingndarray, careful f32/f64
ReproducibilityDeterministicSeeded random, versioning

Critical Constraints

Memory Efficiency

RULE: Avoid copying large tensorsWHY: Memory bandwidth is bottleneckRUST: References, views, in-place ops

GPU Utilization

RULE: Batch operations for GPU efficiencyWHY: GPU overhead per kernel launchRUST: Batch sizes, async data loading

Model Portability

RULE: Use standard model formatsWHY: Train in Python, deploy in RustRUST: ONNX via tract or candle

Trace Down ↓

From constraints to design (Layer 2):

"Need efficient data pipelines"    ↓ m10-performance: Streaming, batching    ↓ polars: Lazy evaluation
"Need GPU inference"    ↓ m07-concurrency: Async data loading    ↓ candle/tch-rs: CUDA backend
"Need model loading"    ↓ m12-lifecycle: Lazy init, caching    ↓ tract: ONNX runtime

Use Case → Framework

Use CaseRecommendedWhy
Inference onlytract (ONNX)Lightweight, portable
Training + inferencecandle, burnPure Rust, GPU
PyTorch modelstch-rsDirect bindings
Data pipelinespolarsFast, lazy eval

Key Crates

PurposeCrate
Tensorsndarray
ONNX inferencetract
ML frameworkcandle, burn
PyTorch bindingstch-rs
Data processingpolars
Embeddingsfastembed

Design Patterns

PatternPurposeImplementation
Model loadingOnce, reuseOnceLock<Model>
BatchingThroughputCollect then process
StreamingLarge dataIterator-based
GPU asyncParallelismData loading parallel to compute

Code Pattern: Inference Server

rust
use std::sync::OnceLock;use tract_onnx::prelude::*;
static MODEL: OnceLock<SimplePlan<TypedFact, Box<dyn TypedOp>, Graph<TypedFact, Box<dyn TypedOp>>>> = OnceLock::new();
fn get_model() -> &'static SimplePlan<...> {    MODEL.get_or_init(|| {        tract_onnx::onnx()            .model_for_path("model.onnx")            .unwrap()            .into_optimized()            .unwrap()            .into_runnable()            .unwrap()    })}
async fn predict(input: Vec<f32>) -> anyhow::Result<Vec<f32>> {    let model = get_model();    let input = tract_ndarray::arr1(&input).into_shape((1, input.len()))?;    let result = model.run(tvec!(input.into()))?;    Ok(result[0].to_array_view::<f32>()?.iter().copied().collect())}

Code Pattern: Batched Inference

rust
async fn batch_predict(inputs: Vec<Vec<f32>>, batch_size: usize) -> Vec<Vec<f32>> {    let mut results = Vec::with_capacity(inputs.len());
    for batch in inputs.chunks(batch_size) {        // Stack inputs into batch tensor        let batch_tensor = stack_inputs(batch);
        // Run inference on batch        let batch_output = model.run(batch_tensor).await;
        // Unstack results        results.extend(unstack_outputs(batch_output));    }
    results}

Common Mistakes

MistakeDomain ViolationFix
Clone tensorsMemory wasteUse views
Single inferenceGPU underutilizedBatch processing
Load model per requestSlowSingleton pattern
Sync data loadingGPU idleAsync pipeline

Trace to Layer 1

ConstraintLayer 2 PatternLayer 1 Implementation
Memory efficiencyZero-copyndarray views
Model singletonLazy initOnceLock<Model>
Batch processingChunked iterationchunks() + parallel
GPU asyncConcurrent loadingtokio::spawn + GPU

Related Skills

WhenSee
Performancem10-performance
Lazy initializationm12-lifecycle
Async patternsm07-concurrency
Memory efficiencym01-ownership

來源與署名

來源:actionbook/rust-skills位於skills/domain-ml提交5c40d3a

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架