jpskill.com
🛠️ 開発・MCP コミュニティ

domain-ml

Rustで機械学習やAIアプリケーションを開発する際に、テンソル計算、モデル推論、ニューラルネットワーク構築などを効率的に行い、学習や予測を支援するSkill。

📜 元の英語説明(参考)

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, 机器学习, 人工智能, 模型推理

🇯🇵 日本人クリエイター向け解説

一言でいうと

Rustで機械学習やAIアプリケーションを開発する際に、テンソル計算、モデル推論、ニューラルネットワーク構築などを効率的に行い、学習や予測を支援するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o domain-ml.zip https://jpskill.com/download/9258.zip && unzip -o domain-ml.zip && rm domain-ml.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9258.zip -OutFile "$d\domain-ml.zip"; Expand-Archive "$d\domain-ml.zip" -DestinationPath $d -Force; ri "$d\domain-ml.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して domain-ml.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → domain-ml フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

機械学習ドメイン

レイヤー 3: ドメイン制約

ドメイン制約 → 設計への影響

ドメインルール 設計制約 Rust の影響
大量のデータ 効率的なメモリ Zero-copy, streaming
GPU アクセラレーション CUDA/Metal サポート candle, tch-rs
モデルの移植性 標準フォーマット ONNX
バッチ処理 レイテンシよりもスループット バッチ推論
数値精度 Float の扱い ndarray, careful f32/f64
再現性 決定性 Seeded random, versioning

重要な制約

メモリ効率

RULE: 大きなテンソルのコピーを避ける
WHY: メモリ帯域幅がボトルネック
RUST: References, views, in-place ops

GPU 使用率

RULE: GPU 効率のためのバッチ処理
WHY: カーネル起動ごとの GPU オーバーヘッド
RUST: Batch sizes, async data loading

モデルの移植性

RULE: 標準モデルフォーマットを使用する
WHY: Python で学習し、Rust でデプロイする
RUST: ONNX via tract or candle

トレースダウン ↓

制約から設計へ (レイヤー 2):

"効率的なデータパイプラインが必要"
    ↓ m10-performance: Streaming, batching
    ↓ polars: Lazy evaluation

"GPU 推論が必要"
    ↓ m07-concurrency: Async data loading
    ↓ candle/tch-rs: CUDA backend

"モデルのロードが必要"
    ↓ m12-lifecycle: Lazy init, caching
    ↓ tract: ONNX runtime

ユースケース → フレームワーク

ユースケース 推奨 理由
推論のみ tract (ONNX) 軽量、移植性
学習 + 推論 candle, burn Pure Rust, GPU
PyTorch モデル tch-rs ダイレクトバインディング
データパイプライン polars 高速、遅延評価

主要な Crate

目的 Crate
テンソル ndarray
ONNX 推論 tract
ML フレームワーク candle, burn
PyTorch バインディング tch-rs
データ処理 polars
埋め込み fastembed

デザインパターン

パターン 目的 実装
モデルのロード 一度だけ、再利用 OnceLock<Model>
バッチ処理 スループット Collect then process
ストリーミング 大量のデータ Iterator-based
GPU 非同期 並列処理 Data loading parallel to compute

コードパターン: 推論サーバー

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())
}

コードパターン: バッチ推論

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
}

よくある間違い

間違い ドメイン違反 修正
テンソルのクローン メモリの浪費 ビューを使用する
シングル推論 GPU の利用不足 バッチ処理
リクエストごとにモデルをロード 遅い シングルトンパターン
同期データロード GPU アイドル 非同期パイプライン

レイヤー 1 へのトレース

制約 レイヤー 2 パターン レイヤー 1 実装
メモリ効率 Zero-copy ndarray views
モデルのシングルトン 遅延初期化 OnceLock<Model>
バッチ処理 チャンク化されたイテレーション chunks() + parallel
GPU 非同期 並行ロード tokio::spawn + GPU

関連スキル

いつ 参照
パフォーマンス m10-performance
遅延初期化 m12-lifecycle
非同期パターン m07-concurrency
メモリ効率 m01-ownership
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Machine Learning Domain

Layer 3: Domain Constraints

Domain Constraints → Design Implications

Domain Rule Design Constraint Rust Implication
Large data Efficient memory Zero-copy, streaming
GPU acceleration CUDA/Metal support candle, tch-rs
Model portability Standard formats ONNX
Batch processing Throughput over latency Batched inference
Numerical precision Float handling ndarray, careful f32/f64
Reproducibility Deterministic Seeded 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 Case Recommended Why
Inference only tract (ONNX) Lightweight, portable
Training + inference candle, burn Pure Rust, GPU
PyTorch models tch-rs Direct bindings
Data pipelines polars Fast, lazy eval

Key Crates

Purpose Crate
Tensors ndarray
ONNX inference tract
ML framework candle, burn
PyTorch bindings tch-rs
Data processing polars
Embeddings fastembed

Design Patterns

Pattern Purpose Implementation
Model loading Once, reuse OnceLock<Model>
Batching Throughput Collect then process
Streaming Large data Iterator-based
GPU async Parallelism Data 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

Mistake Domain Violation Fix
Clone tensors Memory waste Use views
Single inference GPU underutilized Batch processing
Load model per request Slow Singleton pattern
Sync data loading GPU idle Async pipeline

Trace to Layer 1

Constraint Layer 2 Pattern Layer 1 Implementation
Memory efficiency Zero-copy ndarray views
Model singleton Lazy init OnceLock<Model>
Batch processing Chunked iteration chunks() + parallel
GPU async Concurrent loading tokio::spawn + GPU

Related Skills

When See
Performance m10-performance
Lazy initialization m12-lifecycle
Async patterns m07-concurrency
Memory efficiency m01-ownership