Zum Hauptinhalt springen

Allgemeinen CoreML-Inferenz-Request erstellen (coreml.new_model_request)

coreml.new_model_request lädt ein bereits kompiliertes CoreML-Modell und erstellt einen allgemeinen, von Vision unabhängigen Inferenz-Request.
Er eignet sich für Textmodelle, Modelle mit Tensor-Eingaben, Modelle mit mehreren Ein- und Ausgaben, Embedding-Modelle sowie alle Modelle, deren Eingabe kein gewöhnliches Bild ist.

Wenn das Modell selbst einen Bilderkennungsablauf darstellt und ein image-Objekt direkt für die Vision-Inferenz übergeben werden soll, sollte new_vision_request bevorzugt werden.
Wenn Eingabefeatures selbst vorbereitet werden müssen oder das Modell MLMultiArray, Text-Token oder mehrere benannte Eingaben erwartet, sollte diese Schnittstelle verwendet werden.

coreml.session(...) ist außerdem ein Alias dieser Funktion.

Deklaration

allgemeiner_inferenz_request, fehler = coreml.new_model_request(compiled_model_path)

oder

request, err = coreml.new_model_request({
compiled_model_path = compiled_model_path,
uses_cpu_only = nur_CPU_verwenden,
compute_units = compute_units,
})

Parameter

  • compiled_model_path Zeichenkette. Pfad zu einem kompilierten .mlmodelc-Modellverzeichnis.

  • uses_cpu_only Boolean, optional. Gibt an, ob standardmäßig nur die CPU verwendet wird; Standardwert ist false.

  • compute_units Zeichenkette, optional, wirksam ab iOS 12+. Unterstützte Werte:

    • "all"
    • "cpu_only" oder "cpu"
    • "cpu_and_gpu" oder "gpu"
    • "cpu_and_neural_engine", "ane" oder "neural_engine" (iOS 16+)

    Bei uses_cpu_only = true hat die CPUOnly-Konfiguration Vorrang.

Rückgabewerte

  • request
    Allgemeiner CoreML-Inferenz-Request; bei einem Fehler nil.

  • err
    Zeichenkette; bei Erfolg nil, bei einem Fehler die Fehlermeldung.

Hinweise

Diese Funktion ist in Versionen nach 20260319 verfügbar

  • Die Grundfunktionen sind ab iOS 11+ verfügbar.
  • Die Konfiguration von compute_units erfordert iOS 12+.
  • Wenn das Modell ein Image-Feature deklariert und image_object direkt als Eingabe an diesen allgemeinen Request übergeben werden soll, ist iOS 13+ erforderlich.
  • Eingaben müssen als nach Eingabenamen indizierte Tabelle übergeben werden, etwa { input_ids = ids }.
  • Eingabewerte können Zahlen, Zeichenketten, Booleans, Dictionaries, MLMultiArray und bei einem als Bildfeature deklarierten Modell auch image-Objekte sein.
  • Dieses Objekt führt nur die Modellinferenz aus; Bildvorverarbeitung und Text-Tokenisierung müssen in Lua vorbereitet werden.
  • Derselbe Request kann wiederholt mit predict() / run() verwendet und daher zwischengespeichert werden, statt ihn für jede Inferenz neu zu erstellen.
  • Wenn ältere Geräte oder bestimmte Modelle auf dem Standard-Backend instabil sind, kann beim Erstellen uses_cpu_only = true gesetzt werden.

Typprüfung

Deklaration

is_request = coreml.is_model_request(value)

oder

is_request = coreml.is_session(value)

Parameter

  • value
    Zu prüfender Wert.

Rückgabewert

  • is_request
    Boolean. true, wenn der Wert ein allgemeiner CoreML-Inferenz-Request ist, andernfalls false.

Hinweise

  • coreml.is_session() und coreml.is_model_request() sind gleichbedeutende Aliase.
  • Die Funktionen eignen sich zur Typabsicherung oder Argumentprüfung in allgemeinen Lua-Wrappern.
  • Wenn bereits bekannt ist, dass der Wert von new_model_request(...) / session(...) stammt, ist diese Prüfung normalerweise nicht nötig.

Beispiel

local compiled_model_path = XXT_HOME_PATH.."/models/demo_text.mlmodelc"

local req, err = coreml.new_model_request({
compiled_model_path = compiled_model_path,
uses_cpu_only = false,
compute_units = "all",
})
if not req then
error(err)
end

local out = assert(req:predict({
input_ids = ids,
}))

print(req:input_names())
print(req:output_names())
print(out[1])