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 从公开仓库中收录这些内容。

举报或申请下架