Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
zhanghandong avatar

Domain Ml

  • 586 installs
  • 1.3k repo stars
  • Updated May 24, 2026
  • zhanghandong/rust-skills

This is a copy of domain-ml by actionbook - installs and ranking accrue to the original listing.

Domain ML is a Rust skills layer that applies machine learning domain constraints and patterns for efficient inference and training code using crates like candle, tch-rs, burn, and ndarray.

About

Domain ML is a Layer 3 domain-constraints skill from zhanghandong/rust-skills for building ML and AI applications in Rust. It activates on keywords including machine learning, tensor, model inference, neural networks, deep learning, ndarray, tch-rs, burn, and candle. The skill maps domain rules to Rust design implications: large data requires zero-copy and streaming, GPU acceleration maps to candle and tch-rs, model portability uses ONNX, and batch processing prioritizes throughput with batched inference. Developers reach for Domain ML when writing Rust inference or training code and need framework-specific memory, GPU, and portability patterns rather than Python-centric ML guidance.

  • Translates 7 core ML domain rules into concrete Rust design constraints
  • Guides zero-copy memory handling, batched GPU inference, and ONNX portability
  • Maps high-level constraints to specific crates: ndarray, tch-rs, burn, candle, polars
  • Includes critical rules for memory efficiency, numerical precision, and reproducibility
  • Provides traceable Layer 3 → Layer 2 decision paths for ML application architecture

Domain Ml by the numbers

  • 586 all-time installs (skills.sh)
  • +5 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/zhanghandong/rust-skills --skill domain-ml

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs586
repo stars1.3k
Security audit3 / 3 scanners passed
Last updatedMay 24, 2026
Repositoryzhanghandong/rust-skills

How do you build efficient ML inference code in Rust?

Apply Rust-specific machine learning constraints and patterns when creating efficient inference or training code.

Who is it for?

Rust developers building ML inference or training pipelines who need domain-specific memory, GPU, and ONNX patterns instead of Python ML defaults.

Skip if: Python PyTorch or TensorFlow projects, frontend-only ML UIs, or general Rust code with no tensor, model, or inference requirements.

When should I use this skill?

A developer builds ML or AI features in Rust mentioning tensors, inference, candle, tch-rs, burn, ndarray, or ONNX model loading.

What you get

Rust ML code with zero-copy patterns, GPU-backed inference setup, ONNX integration, and batched throughput-oriented designs.

  • Rust inference code
  • GPU acceleration setup

By the numbers

  • References 4 Rust ML crates: candle, tch-rs, burn, and ndarray

Files

SKILL.mdMarkdownGitHub ↗

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 tensors
WHY: Memory bandwidth is bottleneck
RUST: References, views, in-place ops

GPU Utilization

RULE: Batch operations for GPU efficiency
WHY: GPU overhead per kernel launch
RUST: Batch sizes, async data loading

Model Portability

RULE: Use standard model formats
WHY: Train in Python, deploy in Rust
RUST: 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

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

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

Related skills

FAQ

Which Rust ML crates does Domain ML reference?

Domain ML references candle, tch-rs, burn, and ndarray for Rust machine learning work. GPU acceleration maps to candle and tch-rs, while model portability uses ONNX standard formats.

What Rust patterns does Domain ML enforce for large ML data?

Domain ML enforces zero-copy and streaming patterns for large ML datasets in Rust. Batch processing designs prioritize throughput over single-request latency using batched inference approaches.

Is Domain Ml safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Data Science & MLagentsllmautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.