Core ML Model Conversion: mi ez, szakaszok és konvertálási módszerek

Szerző: IT Sectr Megjelenés: 2026-07-17 Olvasási idő: 6 perc

A Core ML Model Conversion a betanított gépi tanulási modellek átalakítási folyamata a népszerű keretrendszerekből a Core ML (.mlmodel) formátumba, amely az Apple eszközökön történő végrehajtásra van optimalizálva. A konvertálás azért szükséges, mert a PyTorch, a TensorFlow és más keretrendszerek saját formátumokat használnak, amelyek nem kompatibilisek a Core ML Runtime-tal. A coremltools documentation, 2025 szerint a könyvtár támogatja a konvertálást PyTorch, TensorFlow 1.x és 2.x, Keras, ONNX, scikit-learn és libsvm rendszerekből. A coremltools automatikusan helyettesíti a nem támogatott műveleteket egyenértékűekkel, megtartva a modell numerikus pontosságát.

Főbb pontok

  • Core ML Model Conversion — ML modellek átalakítása .mlmodel formátumba Apple eszközökön történő végrehajtáshoz.
  • Fő eszköz — coremltools, egy nyílt forráskódú Python könyvtár az Apple-től.
  • PyTorch, TensorFlow, Keras, ONNX és scikit-learn támogatottak.
  • A folyamat magában foglalja a gráf követését, a műveletek cseréjét és a pontosság ellenőrzését.
  • Konvertálás után a modell FP16 vagy INT8 formátumba kvantálható a gyorsítás érdekében.

Mi az a Core ML Model Conversion

Core ML Model Conversion egy betanított gépi tanulási modell átalakítási folyamata az eredeti keretrendszer formátumából a .mlmodel formátumba, amely érthető a Core ML Runtime számára Apple eszközökön. Konvertálás nélkül a PyTorch-ban vagy TensorFlow-ban betanított modell nem tölthető be és hajtható végre közvetlenül iOS-en vagy macOS-en.

A konvertálási folyamat magában foglalja a számítási gráf fordítását: az eredeti keretrendszer minden egyes operátora (Conv2D, BatchNorm, ReLU) a megfelelő Core ML operátorra van leképezve. Ha nincs közvetlen helyettesítő, a coremltools összetett műveleteket vagy egyedi rétegeket használ. Az Apple ML Research szerint a könyvtár több mint 200 operátort fed le különböző keretrendszerekből.

Konvertálás után a modell .mlmodel csomagformátumban kerül mentésre, amely tartalmazza a gráf protobuf leírását, a súlyokat bináris formában és a metaadatokat. Ezt a fájlt ezután mlmodelc formátumba fordítják a célkészüléken történő végrehajtáshoz.

Támogatott keretrendszerek és formátumok

A coremltools 7.x verziója hat forrásból támogatja a konvertálást. PyTorch — torch.jit.trace vagy torch.export útján, TensorFlow 2.x — SavedModel és Keras H5 útján, TensorFlow 1.x — frozen graph .pb útján. Az ONNX esetében egy köztes ábrázolást használnak, amelyet aztán Core ML formátumba fordítanak.

Keretrendszer-kompatibilitási mátrix

KeretrendszerBemeneti formátumcoremltools API
PyTorchTorchScript, torch.exportCTConverter / convert()
TensorFlow 2.xSavedModel, Keras H5convert()
TensorFlow 1.xFrozen .pbconvert()
ONNX.onnxonnx_to_coreml()
scikit-learn.pkl / Pipelineconverters.sklearn.convert()
Keras.h5 / .kerasconvert()

Konvertálási eszközök: coremltools

A coremltools — az Apple hivatalos nyílt forráskódú Python könyvtára, amely a pip install coremltools segítségével érhető el. A könyvtár egységes API-t biztosít a konvertáláshoz az összes támogatott keretrendszerből, valamint utófeldolgozási eszközöket: kvantálás, pontosság-ellenőrzés és gráfvizualizáció.

A modell telepítése és alap konvertálása PyTorch-ból:

python
import coremltools as ct
import torch
import torchvision

model = torchvision.models.resnet18(pretrained=True)
model.eval()

example_input = torch.rand(1, 3, 224, 224)
traced_model = torch.jit.trace(model, example_input)

mlmodel = ct.convert(
    traced_model,
    source="pytorch",
    inputs=[ct.ImageType(shape=example_input.shape)]
)
mlmodel.save("ResNet18.mlmodel")

A TensorFlow-ból történő konvertáláshoz használja a SavedModel forrásként. A coremltools automatikusan meghatározza a bemeneti és kimeneti tenzorokat a signature_def alapján:

python
import coremltools as ct

mlmodel = ct.convert(
    "saved_model_dir",
    source="tensorflow",
    @minimum_deployment_target=ct.target.iOS16
)
mlmodel.save("MyTFModel.mlmodel")

A modell konvertálásának szakaszai

A konvertálási folyamat négy szakaszból áll. Az első szakaszban a coremltools betölti az eredeti modellt és követést (tracing) vagy gráf vizsgálatot végez. PyTorch esetén a torch.jit.trace-t használják, amely mintabemeneti adatokat futtat át a modellen és rögzíti a műveletek sorrendjét.

A második szakaszban operátor leképezés (operator mapping) történik. Az eredeti gráf minden egyes operátora egy Core ML operátorhoz van rendelve. Ha nincs közvetlen helyettesítő, a coremltools az operátort támogatott operátorok sorozatára bontja. A coremltools dokumentációja szerint a PyTorch operátorok lefedettsége meghaladja a 95%-ot a tipikus architektúráknál.

Harmadik szakasz — gráf optimalizálás. A coremltools műveletek összevonását (pl. conv + batch norm), felesleges átalakítások eltávolítását és operátorok átrendezését végzi a hatékonyság növelése érdekében. Negyedik szakasz — szerializálás .mlmodel formátumba a súlyok és metaadatok megőrzésével.

Tipikus problémák és megoldásaik

A leggyakoribb probléma a konvertálás során a nem támogatott műveletek. Ha a modell olyan operátort tartalmaz, amely hiányzik a Core ML-ből, a coremltools hibát jelez a művelet nevével. Megoldás — cserélje ki az operátort a támogatottak egyenértékű kombinációjára, vagy implementáljon egyedi réteget a custom layer API segítségével.

Második probléma — dimenziók eltérése. A PyTorch az NCHW formátumot használja, míg a Core ML alapértelmezés szerint NHWC-t. A coremltools automatikusan beilleszti a transzpozíciót, de néha a tengelyek sorrendje helytelenül kerül meghatározásra. Ellenőrizze a bemeneti és kimeneti dimenziókat a konvertálási naplókban, és szükség esetén adja meg az input_features-t a helyes nevekkel.

Harmadik probléma — pontosságvesztés kvantálás után. FP16 vagy INT8 palettával történő konvertáláskor a modell pontossága csökkenhet. A coremltools biztosítja a ct.models.CompiledModel segédprogramot az eredeti és a konvertált modell kimeneteinek összehasonlításához ugyanazon bemeneti adatokon. Ha az eltérés meghaladja az 1%-ot, használja a kvantálást FP16 palettával kalibrálás nélkül, vagy mondjon le a kvantálásról.

Példák konvertálásra PyTorch-ból és TensorFlow-ból

Példa a MobileNetV3 modell konvertálására PyTorch-ból a bemeneti adatok típusának és a minimális iOS verziónak megadásával. Használja a ct.ImageType-t a képek automatikus normalizálásához:

python
import coremltools as ct
import torchvision

model = torchvision.models.mobilenet_v3_small(
    pretrained=True
)
model.eval()
example = torch.rand(1, 3, 224, 224)
traced = torch.jit.trace(model, example)

mlmodel = ct.convert(
    traced,
    source="pytorch",
    inputs=[ct.ImageType(
        shape=example.shape,
        scale=1.0/255.0,
        bias=[0, 0, 0]
    )],
    @minimum_deployment_target=ct.target.iOS16
)

# Mentés .mlmodel formátumba későbbi Xcode fordításhoz
mlmodel.save("MobileNetV3.mlmodel")

Példa konvertálásra TensorFlow Keras-ból FP16 kvantálással. Adja meg a minimum_deployment_target paramétert az FP16 támogatás bekapcsolásához Apple A13 és újabb eszközökön:

python
import coremltools as ct
from tensorflow import keras

keras_model = keras.applications.EfficientNetB0(
    weights="imagenet"
)

mlmodel = ct.convert(
    keras_model,
    source="tensorflow",
    @minimum_deployment_target=ct.target.iOS17
)

# Súlyok kvantálása FP16-ra 2x méretcsökkentésért
mlmodel_fp16 = ct.models.neural_network.quantization_utils.quantize_weights(
    mlmodel, 16
)
mlmodel_fp16.save("EfficientNetB0_fp16.mlmodel")

Gyakran ismételt kérdések

Konvertálható-e a modell forráskódhoz való hozzáférés nélkül?

Igen, ha a modell TorchScript, SavedModel vagy ONNX formátumban van mentve. A coremltools betölti ezeket a formátumokat forráskód igénye nélkül, és a számítási gráf alapján végzi a konvertálást.

Hogyan tudhatom meg, hogy mely műveletek nem támogatottak a Core ML-ben?

A coremltools megjeleníti a nem támogatott műveletek listáját a naplóban konvertálás közben. Használja a ct.utils.get_coreml_operations() függvényt az elérhető Core ML operátorok teljes listájának lekéréséhez.

Mi az a kvantálási paletta a coremltools-ban?

A kvantálási paletta paraméterek halmaza a modell súlyainak tömörítéséhez: fp16, int8 vagy palettization. A coremltools támogatja a 8-bites, 16-bites palettát és a LUT-kvantálást különböző bitmélységekkel.

Szükséges-e fordítás a konvertálás után?

Igen, a .mlmodel fájlt mlmodelc formátumba kell fordítani az eszközön történő végrehajtás előtt. A fordítás automatikusan történik az Xcode-ban az építés során vagy az eszközön az MLModel.compile(at:) segítségével.

Hogyan ellenőrizhető a konvertált modell pontossága?

Használja a ct.models.CompiledModel függvényt az eredeti és a konvertált modell kimeneteinek összehasonlításához. Adja meg ugyanazokat a bemeneti adatokat, és hasonlítsa össze az eredményeket MSE vagy cosine similarity mértékkel.

Összefoglalás

  • Core ML Model Conversion — ML modellek átalakítási folyamata .mlmodel formátumba Apple eszközökön történő végrehajtáshoz.
  • Fő eszköz — coremltools, amely támogatja a PyTorch, TensorFlow, Keras, ONNX és scikit-learn rendszereket.
  • A konvertálás magában foglalja a gráf követését, operátor leképezést, optimalizálást és szerializálást.
  • A nem támogatott műveletek egyenértékű kombinációkkal helyettesíthetők vagy custom layer API segítségével implementálhatók.
  • Konvertálás után elérhető FP16 és INT8 kvantálás a méret csökkentésére és a következtetés gyorsítására.
  • Bevezetés előtt ellenőrizze a modell pontosságát a ct.models.CompiledModel segítségével.
  • Tervezze meg a konvertálási pipeline-t a CI/CD részeként a modellek automatikus frissítéséhez az alkalmazásban.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is