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

Domain Ml

  • 1.2k installs
  • 1.3k repo stars
  • Updated May 24, 2026
  • actionbook/rust-skills

domain-ml is a Rust skill defining ML domain constraints for tensors, GPU inference, and ONNX portability.

About

The domain-ml skill defines Layer 3 domain constraints for machine learning and AI applications in Rust. Rules map large data to zero-copy streaming, GPU acceleration to candle and tch-rs, model portability to ONNX, batch processing to throughput-focused inference, numerical precision to careful f32 and f64 handling, and reproducibility to seeded randomness and versioning. Critical constraints forbid copying large tensors unnecessarily, require batched GPU operations to amortize kernel launch overhead, and emphasize deterministic pipelines where reproducibility matters. Key crates include ndarray, candle, tch-rs, and burn with patterns tracing down to companion concurrency and lifecycle skills for async data loading and resource management in inference services.

  • Zero-copy tensor handling to avoid memory bandwidth bottlenecks.
  • GPU batching for candle and tch-rs inference efficiency.
  • ONNX support for portable model deployment.
  • Reproducibility via seeded random and model versioning.
  • Traces ML constraints to concurrency and lifecycle companion skills.

Domain Ml by the numbers

  • 1,209 all-time installs (skills.sh)
  • +49 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #247 of 2,066 Data Science & ML skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
From the docs

What domain-ml says it does

RULE: Avoid copying large tensors
SKILL.md
npx skills add https://github.com/actionbook/rust-skills --skill domain-ml

Add your badge

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

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

What Rust patterns satisfy ML memory, GPU, and reproducibility requirements?

Apply Rust ML domain constraints for tensor memory, GPU batching, and ONNX portability.

Who is it for?

Rust developers building inference services or training pipelines in ML domains.

Skip if: Skip for non-ML Rust services without tensor or model workloads.

When should I use this skill?

User builds Rust ML apps mentioning inference, tensors, candle, or ONNX.

What you get

Constraint-backed ML designs using ndarray, candle, tch-rs, and batched inference.

  • ML component design constraints
  • Crate and ONNX integration guidance

By the numbers

  • References four Rust ML stacks: ndarray, candle, tch-rs, and burn
  • Documents ONNX as the standard portability format in constraint tables

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

Forks & variants (1)

Domain Ml has 1 known copy in the catalog totaling 586 installs. They canonicalize to this original listing.

How it compares

Use Domain ML for Rust-specific ML architecture; use Python ML skills when the stack remains PyTorch-first without Rust services.

FAQ

Why avoid copying large tensors?

Memory bandwidth is the bottleneck; use references, views, and in-place ops.

Which crates support GPU?

candle and tch-rs per the documented GPU utilization constraints.

How is reproducibility handled?

Seeded random sources and explicit model versioning in pipelines.

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.

This week in AI coding

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

unsubscribe anytime.