Saltar al contenido principal

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 .mlmodelc ya compilado, de tipo texto.

  • uses_cpu_only
    Booleano opcional: si se usa únicamente la CPU de forma predeterminada; predeterminado false.

  • 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, devuelve nil.

  • información_del_error
    Texto: en caso de creación correcta devuelve nil; 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_units depende de iOS 12+.
  • Si el modelo declara una característica de imagen y quieres pasar directamente image_object a 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, MLMultiArray y objetos image cuando 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 = true al 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: devuelve true si lo es y false en caso contrario.

Descripción

  • coreml.is_session() y coreml.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])