Crear un ejecutor CoreML general (coreml.new_model_request)
coreml.new_model_request carga un modelo CoreML ya compilado y crea un ejecutor general independiente de Vision. Es adecuado para modelos de texto, modelos con entrada tensorial, modelos con múltiples entradas y salidas, modelos de embeddings y cualquier modelo cuya entrada no sea una imagen normal.
Si el modelo forma parte de un flujo de reconocimiento de imágenes y quieres pasar directamente un objeto image, usa preferentemente new_vision_request. Si necesitas preparar tus propias características de entrada, o la entrada del modelo contiene MLMultiArray, tokens de texto o varias entradas con nombre, usa esta interfaz.
coreml.session(...) es también un alias de esta función.
Declaración
ejecutor_general, información_del_error = coreml.new_model_request(ruta_del_modelo_compilado)
o
ejecutor_general, información_del_error = coreml.new_model_request({
compiled_model_path = ruta_del_modelo_compilado,
uses_cpu_only = CPU,
compute_units = configuración_de_unidades_de_cómputo,
})
Parámetros
-
compiled_model_path
Ruta del directorio del modelo.mlmodelcya compilado, de tipo texto. -
uses_cpu_only
Booleano opcional: si se usa únicamente la CPU de forma predeterminada; predeterminadofalse. -
compute_units
Texto opcional, efectivo en iOS 12+. Admite los valores siguientes:"all""cpu_only"o"cpu""cpu_and_gpu"o"gpu""cpu_and_neural_engine","ane"o"neural_engine"(iOS 16+)
Cuando
uses_cpu_only = true, se fuerza preferentemente la configuración CPUOnly de la CPU.
Valor de retorno
-
ejecutor_general
Objeto ejecutor general; si falla la creación, devuelvenil. -
información_del_error
Texto: en caso de creación correcta devuelvenil; si falla, devuelve la información del error.
Descripción
Disponible en versiones posteriores a 20260319
- La capacidad básica es compatible con iOS 11+.
- La configuración de
compute_unitsdepende de iOS 12+. - Si el modelo declara una característica de imagen y quieres pasar directamente
image_objecta esta solicitud general, necesitas iOS 13+. - Los parámetros de entrada deben usar una tabla de asignación por nombre, por ejemplo
{ input_ids = ids }. - Los valores de entrada admiten números, cadenas, booleanos, diccionarios,
MLMultiArrayy objetosimagecuando el modelo declara una característica de imagen. - Este objeto solo realiza la inferencia del modelo; no prepara imágenes ni tokeniza texto. Esos pasos deben prepararse en Lua.
- Puedes reutilizar el mismo objeto ejecutor con
predict()/run(); es preferible guardarlo en caché en vez de crearlo para cada inferencia. - Si un dispositivo antiguo o algún modelo es inestable con el backend predeterminado, establece
uses_cpu_only = trueal crearlo.
Comprobar el tipo
Declaración
es_ejecutor_general = coreml.is_model_request(valor_a_comprobar)
o
es_ejecutor_general = coreml.is_session(valor_a_comprobar)
Parámetros
- valor_a_comprobar
Valor cuya naturaleza de objeto ejecutor general CoreML se quiere comprobar.
Valor de retorno
- es_ejecutor_general
Booleano: devuelvetruesi lo es yfalseen caso contrario.
Descripción
coreml.is_session()ycoreml.is_model_request()son interfaces equivalentes.- Son útiles para proteger tipos o validar parámetros en encapsulados Lua generales.
- Si ya tienes el valor devuelto por
new_model_request(...)/session(...), normalmente no necesitas llamarlas.
Ejemplo
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])