schappim/coreml-cli: uma interface de linha de comando nativa para trabalhar com modelos Apple Core ML no macOS

PUBLICIDADE

schappim/coreml-cli: uma interface de linha de comando nativa para trabalhar com modelos Apple Core ML no macOS

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 .mlmodel para otimizar .mlmodelc formatar
  • Metadados – Visualizar e gerenciar metadados do modelo
brew tap schappim/coreml-cli
brew install coreml-cli

Baixe 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.0

Visualize a estrutura do modelo, entradas, saídas e metadados:

coreml inspect MobileNetV2.mlmodel

Saí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 --json

Classifique uma imagem:

coreml predict MobileNetV2.mlmodel --input photo.jpg

Saí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 --json

Selecione 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 only

Processe um diretório de imagens:

coreml batch MobileNetV2.mlmodel --dir ./photos --out ./results --format csv

Saí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 8

Medir a latência de inferência:

coreml benchmark MobileNetV2.mlmodel --input sample.jpg

Saí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 50

Saída JSON para CI/CD:

coreml benchmark MobileNetV2.mlmodel --input sample.jpg --json > benchmark.json

Compilar .mlmodel para otimizar .mlmodelc:

coreml compile MobileNetV2.mlmodel

Saí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.mlmodel

Saí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çãoDescrição
--json, -jSaída no formato JSON
--device Dispositivo de computação: cpu, gpu, aneou all
--help, -hMostrar informações de ajuda
--versionMostrar versão

TipoExtensõesUsado para
Imagens.jpg, .jpeg, .png, .heicModelos de visão
Áudio.wavClassificação sonora
Texto.txtModelos de PNL
Tensores.jsonModelos 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
    fi

Para 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.json

Saí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 csv

CSV 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

Mais recentes

PUBLICIDADE

WP Twitter Auto Publish Powered By : XYZScripts.com