Uma interface de linha de comando nativa para trabalhar com modelos Apple Core ML no macOS. Inspecione, execute inferência, compare e gerencie modelos Core ML sem Xcode ou Python.
- Inspecionar – Visualize a estrutura do modelo, entradas/saídas e metadados
- Prever – Execute inferência em imagens, texto ou dados JSON
- Lote – Processe vários arquivos com execução simultânea
- Referência – Medir a latência e a taxa de transferência de inferência
- Compilar – Converter
.mlmodelpara otimizar.mlmodelcformatar - Metadados – Visualizar e gerenciar metadados do modelo
brew tap schappim/coreml-cli
brew install coreml-cliBaixe a versão mais recente em GitHub Releases:
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/Requer macOS 13+ e 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.0Visualize a estrutura do modelo, entradas, saídas e metadados:
coreml inspect MobileNetV2.mlmodelSaída:
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...
Saída JSON para script:
coreml inspect MobileNetV2.mlmodel --jsonClassifique uma imagem:
coreml predict MobileNetV2.mlmodel --input photo.jpgSaída:
Input: photo.jpg
Inference time: 1.66 ms
Outputs:
classLabel: golden retriever
classLabelProbs: golden retriever: 0.8721, Labrador retriever: 0.0543...
Salve os resultados no arquivo:
coreml predict MobileNetV2.mlmodel --input photo.jpg --output results.json --jsonSelecione o dispositivo de computação:
coreml predict MobileNetV2.mlmodel --input photo.jpg --device ane # Apple Neural Engine
coreml predict MobileNetV2.mlmodel --input photo.jpg --device gpu # GPU
coreml predict MobileNetV2.mlmodel --input photo.jpg --device cpu # CPU onlyProcesse um diretório de imagens:
coreml batch MobileNetV2.mlmodel --dir ./photos --out ./results --format csvSaída:
Found 100 input files
Results written to: ./results/results.csv
Processed 100 files in 892.45 ms
Average inference time: 2.15 ms
Simultaneidade de controle:
coreml batch MobileNetV2.mlmodel --dir ./photos --out ./results --concurrency 8Medir a latência de inferência:
coreml benchmark MobileNetV2.mlmodel --input sample.jpgSaída:
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
Iterações personalizadas:
coreml benchmark MobileNetV2.mlmodel --input sample.jpg -n 500 --warmup 50Saída JSON para CI/CD:
coreml benchmark MobileNetV2.mlmodel --input sample.jpg --json > benchmark.jsonCompilar .mlmodel para otimizar .mlmodelc:
coreml compile MobileNetV2.mlmodelSaída:
Compilation successful!
Source: /path/to/MobileNetV2.mlmodel
Output: /path/to/MobileNetV2.mlmodelc
Original size: 24.7 MB
Compiled size: 24.5 MB
Com validação:
coreml compile MobileNetV2.mlmodel --validate --output-dir ./compiled/Obtenha metadados do modelo:
coreml meta get MobileNetV2.mlmodelSaída:
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
| Opção | Descrição |
|---|---|
--json, -j | Saída no formato JSON |
--device | Dispositivo de computação: cpu, gpu, aneou all |
--help, -h | Mostrar informações de ajuda |
--version | Mostrar versão |
| Tipo | Extensões | Usado para |
|---|---|---|
| Imagens | .jpg, .jpeg, .png, .heic | Modelos de visão |
| Áudio | .wav | Classificação sonora |
| Texto | .txt | Modelos de PNL |
| Tensores | .json | Modelos personalizados |
Pipeline de classificação de imagens
#!/bin/bash
# Classify all images in a folder and generate a report
MODEL="MobileNetV2.mlmodel"
INPUT_DIR="./images"
OUTPUT_DIR="./classifications"
# Run batch classification
coreml batch "$MODEL" --dir "$INPUT_DIR" --out "$OUTPUT_DIR" --format csv
# View results
cat "$OUTPUT_DIR/results.csv"#!/bin/bash
# Compare inference speed across compute devices
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'# GitHub Actions example
- 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
fiPara modelos que aceitam entradas de tensores numéricos (não imagens), você pode passar matrizes JSON:
Crie um arquivo de entrada JSON (input.json):
Previsão de execução:
coreml predict MyClassifier.mlmodel --input input.jsonSaída:
Input: input.json
Inference time: 0.12 ms
Outputs:
probabilities: [0.1377, 0.7100, 0.1522]
Processe em lote vários arquivos JSON:
# Create a directory with JSON input files
mkdir json_samples
echo '[5.1, 3.5, 1.4, 0.2]' > json_samples/sample1.json
echo '[6.7, 3.1, 4.7, 1.5]' > json_samples/sample2.json
echo '[5.9, 3.0, 5.1, 1.8]' > json_samples/sample3.json
echo '[4.6, 3.4, 1.4, 0.3]' > json_samples/sample4.json
# Run batch prediction
coreml batch MyClassifier.mlmodel --dir json_samples --out json_results --format csvCSV de saída (json_results/results.csv):
input_file,inference_time_ms,probabilities
sample1.json,0.27,"[0.1377, 0.7100, 0.1522]"
sample2.json,0.22,"[0.0613, 0.5931, 0.3456]"
sample3.json,0.29,"[0.0522, 0.5000, 0.4479]"
sample4.json,0.17,"[0.1406, 0.6825, 0.1769]"Isso é útil para modelos treinados em dados tabulares, incorporações ou qualquer entrada numérica que não seja de imagem.
- macOS 13.0 ou posterior
- Apple Silicon ou Intel Mac
- Modelos principais de ML (
.mlmodel,.mlpackageou.mlmodelc)
Licença MIT – consulte LICENÇA para obter detalhes.
Contribuições são bem-vindas! Abra um problema ou envie uma solicitação pull.
Fonte: theverge

