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_pathZeichenkette. Pfad zu einem kompilierten.mlmodelc-Modellverzeichnis. -
uses_cpu_onlyBoolean, optional. Gibt an, ob standardmäßig nur die CPU verwendet wird; Standardwert istfalse. -
compute_unitsZeichenkette, 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 = truehat die CPUOnly-Konfiguration Vorrang.
Rückgabewerte
-
request
Allgemeiner CoreML-Inferenz-Request; bei einem Fehlernil. -
err
Zeichenkette; bei Erfolgnil, 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_unitserfordert iOS 12+. - Wenn das Modell ein Image-Feature deklariert und
image_objectdirekt 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,
MLMultiArrayund bei einem als Bildfeature deklarierten Modell auchimage-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 = truegesetzt 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, andernfallsfalse.
Hinweise
coreml.is_session()undcoreml.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])