
2026/01/23 5:12
Show HN:Apple Core ML モデルを扱うためのCLI (Note: "Show HN" is a Hacker News title format; translated as 「Show HN」.)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
## Summary `coreml-cli` は、Xcode や Python スクリプトを使用せずに Apple Core ML モデルの検査・実行・ベンチマーク・コンパイル・メタデータ取得を可能にするネイティブ macOS コマンドラインツールです。 ### Core commands | Command | Purpose | |---------|---------| | `inspect` | モデルアーキテクチャとレイヤ詳細を表示 | | `predict` | 画像、音声、テキストまたはテンソル入力に対して単一推論を実行 | | `batch` | ディレクトリ内の多数入力を分類(csv/json 出力対応) | | `benchmark` | レイテンシとスループットを測定;平均/最小/最大/標準偏差/パーセンタイルを出力 | | `compile` | `.mlmodel` を最適化された `.mlmodelc` に変換;オプションで `--validate` | | `meta get` | モデルメタデータ(作者、説明、ライセンス、バージョン)取得 | ### Global flags - `--json / -j` – JSON 出力(CI/CD に便利)。 - `--device <cpu|gpu|ane|all>` – 実行ハードウェアを指定。 - `--help / -h`, `--version` – 標準 CLI ヘルプとバージョン情報。 ### Supported input types - **Images**: `.jpg`, `.jpeg`, `.png`, `.heic` - **Audio**: `.wav` - **Text**: `.txt` - **Tensors**: `.json` ### Installation - Homebrew: `brew tap schappim/coreml-cli && brew install coreml-cli` - GitHub Releases: macOS 用バイナリをダウンロード。 - From source (macOS 13+ with Swift 5.9+): リポジトリをクローンし、`swift build -c release` を実行。 ### Example usage ```bash # Inspect a model coreml inspect MobileNetV2.mlmodel # Run inference on GPU coreml predict MobileNetV2.mlmodel --input photo.jpg --device gpu # Batch classify with CSV output coreml batch MobileNetV2.mlmodel --dir ./photos --out ./results --format csv # Benchmark and get JSON for CI coreml benchmark MobileNetV2.mlmodel --json > bench.json # Compile for deployment coreml compile MobileNetV2.mlmodel --validate --output MobileNetV2c # Get metadata coreml meta get MobileNetV2.mlmodel
Impact
coreml-cli は、CPU、GPU、または Apple Neural Engine を直接ターミナルから使用して Core ML モデルを迅速にネイティブテストできるようにします。これによりデプロイサイクルが高速化され、Xcode 中心のワークフローへの依存が減少し、開発者・データサイエンティストおよび CI/CD パイプラインはモデル性能と品質を自動的に検証できます。
本文
coreml‑cli
macOS 上で Apple Core ML モデルを扱うためのネイティブなコマンドラインインターフェースです。
Xcode や Python を使わずに、Core ML モデルの検査・推論実行・ベンチマーク・管理が可能です。
機能
- Inspect – モデル構造、入力/出力、メタデータを表示
- Predict – 画像・テキスト・JSON データに対して推論を実行
- Batch – 複数ファイルを並列で処理
- Benchmark – 推論遅延とスループットを測定
- Compile –
を最適化された.mlmodel
形式へ変換.mlmodelc - Metadata – モデルメタデータの表示・管理
インストール
Homebrew(推奨)
brew tap schappim/coreml-cli brew install coreml-cli
バイナリをダウンロード
curl -L https://github.com/schappim/coreml-cli/releases/download/v1.0.0/coreml-1.0.0-macos.tar.gz -o coreml.tar.gz tar -xzf coreml.tar.gz sudo mv coreml /usr/local/bin/
ソースからビルド
(macOS 13+ と Swift 5.9+ が必要)
git clone https://github.com/schappim/coreml-cli.git cd coreml-cli swift build -c release sudo cp .build/release/coreml /usr/local/bin/
インストール確認
coreml --version # → coreml 1.0.0
使用方法
モデルの検査
coreml inspect MobileNetV2.mlmodel
出力例
Model: MobileNetV2 Size: 24.7 MB Compiled: No Inputs: image: image 224x224 BGRA32 Outputs: classLabel: string classLabelProbs: dictionary Metadata: Author: Original Paper: Mark Sandler, Andrew Howard... Description: Detects the dominant objects present in an image...
スクリプト用 JSON 出力:
coreml inspect MobileNetV2.mlmodel --json
推論実行
画像分類
coreml predict MobileNetV2.mlmodel --input photo.jpg
出力例
Input: photo.jpg Inference time: 1.66 ms Outputs: classLabel: golden retriever classLabelProbs: golden retriever: 0.8721, Labrador retriever: 0.0543...
結果をファイルへ保存
coreml predict MobileNetV2.mlmodel --input photo.jpg \ --output results.json --json
計算デバイスの選択
coreml predict MobileNetV2.mlmodel --device ane # Apple Neural Engine coreml predict MobileNetV2.mlmodel --device gpu # GPU coreml predict MobileNetV2.mlmodel --device cpu # CPUのみ
バッチ処理
画像ディレクトリを処理
coreml batch MobileNetV2.mlmodel --dir ./photos \ --out ./results --format csv
出力例
Found 100 input files Results written to: ./results/results.csv Processed 100 files in 892.45 ms Average inference time: 2.15 ms
並列度の制御
coreml batch MobileNetV2.mlmodel --dir ./photos \ --out ./results --concurrency 8
性能ベンチマーク
推論遅延を測定
coreml benchmark MobileNetV2.mlmodel --input sample.jpg
出力(抜粋)
Benchmark Results for: MobileNetV2 ================================================== Configuration: Device: all Iterations: 100 Warmup: 10 Latency (ms): Mean: 1.279 Min: 1.008 Max: 1.602 StdDev: 0.204 Percentiles (ms): P50: 1.200 P95: 1.523 P99: 1.589 Throughput: 781.86 inferences/sec
カスタムイテレーション
coreml benchmark MobileNetV2.mlmodel --input sample.jpg \ -n 500 --warmup 50
CI/CD 用 JSON 出力
coreml benchmark MobileNetV2.mlmodel --input sample.jpg --json > benchmark.json
モデルのコンパイル
を最適化された .mlmodel
に変換.mlmodelc
coreml compile MobileNetV2.mlmodel
出力例
Compilation successful! Source: /path/to/MobileNetV2.mlmodel Output: /path/to/MobileNetV2.mlmodelc Original size: 24.7 MB Compiled size: 24.5 MB
検証付き
coreml compile MobileNetV2.mlmodel --validate \ --output-dir ./compiled/
メタデータの表示
モデルメタデータ取得
coreml meta get MobileNetV2.mlmodel
出力(抜粋)
Metadata for: MobileNetV2.mlmodel Author: Original Paper: Mark Sandler, Andrew Howard... Description: Detects the dominant objects present in an image... License: Please see https://github.com/tensorflow/tensorflow... Version: 1.0
コマンドリファレンス
| コマンド | 説明 |
|---|---|
| モデル構造とメタデータを検査 |
| 単一入力に対して推論実行 |
| 複数入力をバッチ処理 |
| モデル性能をベンチマーク |
| 最適化形式へコンパイル |
| メタデータを表示 |
グローバルオプション
– JSON 形式で出力--json, -j
– 計算デバイス:--device <device>
,cpu
,gpu
, またはaneall
– ヘルプを表示--help, -h
– バージョン情報を表示--version
サポート入力タイプ
| タイプ | 拡張子 | 用途 |
|---|---|---|
| 画像 | , , , | Vision モデル |
| 音声 | | 音声分類 |
| テキスト | | NLP モデル |
| テンソル | | カスタムモデル |
例
画像分類パイプライン
#!/bin/bash MODEL="MobileNetV2.mlmodel" INPUT_DIR="./images" OUTPUT_DIR="./classifications" # バッチ分類実行 coreml batch "$MODEL" --dir "$INPUT_DIR" \ --out "$OUTPUT_DIR" --format csv # 結果表示 cat "$OUTPUT_DIR/results.csv"
性能比較
#!/bin/bash MODEL="MobileNetV2.mlmodel" INPUT="test.jpg" echo "CPU Only:" coreml benchmark "$MODEL" -i "$INPUT" --device cpu \ -n 50 --json | jq '.meanLatencyMs' echo "GPU:" coreml benchmark "$MODEL" -i "$INPUT" --device gpu \ -n 50 --json | jq '.meanLatencyMs' echo "Neural Engine:" coreml benchmark "$MODEL" -i "$INPUT" --device ane \ -n 50 --json | jq '.meanLatencyMs'
CI/CD 統合(GitHub Actions)
- name: Benchmark Model run: | coreml benchmark model.mlmodel -i test.jpg --json > benchmark.json - name: Check Performance Regression run: | LATENCY=$(jq '.meanLatencyMs' benchmark.json) if (( $(echo "$LATENCY > 10" | bc -l) )); then echo "Performance regression detected: ${LATENCY}ms" exit 1 fi
JSON テンソル入力
input.json を作成:
[5.1, 3.5, 1.4, 0.2]
推論実行:
coreml predict MyClassifier.mlmodel --input input.json
バッチ処理例:
mkdir json_samples echo '[5.1, 3.5, 1.4, 0.2]' > json_samples/sample1.json # ...他のサンプルを追加... coreml batch MyClassifier.mlmodel --dir json_samples \ --out json_results --format csv
要件
- macOS 13.0 以降
- Apple Silicon または Intel Mac
- Core ML モデル(
,.mlmodel
,.mlpackage
).mlmodelc
ライセンス
MIT License –
LICENSE を参照。
コントリビューション
貢献歓迎です! issue を開くか pull request を送信してください。
Swift Argument Parser で構築
Apple の Core ML フレームワークを使用