Métodos del objeto ejecutor CoreML general
coreml_model_request_object es el objeto ejecutor devuelto por coreml.new_model_request(...)/coreml.session(...). Envía al modelo las características de entrada preparadas y devuelve los resultados organizados por nombre de salida.
Sus responsabilidades son:
- Enviar inferencias
- Leer resultados asíncronos
- Consultar la firma de entradas y salidas
- Consultar la configuración de ejecución de la solicitud actual
No tokeniza texto, preprocesa imágenes ni realiza posprocesamiento de negocio; esos pasos deben organizarse en Lua.
Disponible en versiones posteriores a 20260319
Métodos de inferencia
:predict(inputs[, opts])
resultado, información_del_error = ejecutor_general:predict(mapa_de_entradas)
o
enviado, información_del_error = ejecutor_general:predict(mapa_de_entradas, {
async = es_asíncrono,
multi_array_output = "table" o "MLMultiArray",
uses_cpu_only = CPU,
})
Ejecuta una inferencia para una sola muestra.
inputsdebe ser una tabla organizada por nombre de entrada.- En modo síncrono devuelve directamente una tabla de resultados.
- En modo asíncrono devuelve
true; después usa:is_done()y:results(). multi_array_outputcontrola si las salidasMLMultiArrayse conservan como tensores nativos o se convierten en tablas Lua.uses_cpu_onlysolo afecta a esta inferencia y no modifica la configuración predeterminada del objeto.
:run(inputs[, opts])
run() es un alias de predict() y se comporta exactamente igual.
:predict_batch(batch_inputs[, opts])
resultados_por_lotes, información_del_error = ejecutor_general:predict_batch({
{ input_ids = ids1 },
{ input_ids = ids2 },
}, {
async = false,
multi_array_output = "MLMultiArray",
})
Ejecuta una inferencia por lotes. Necesita iOS 12+.
batch_inputsdebe ser una matriz cuyos elementos sean tablas de entrada organizadas por nombre.- En modo síncrono devuelve una matriz de resultados; cada elemento sigue las reglas de salida de una muestra.
- En modo asíncrono devuelve
true; después recupera el resultado con:results(). - Los campos de
optsson los mismos que enpredict().
:run_batch(batch_inputs[, opts])
run_batch() es un alias de predict_batch() y se comporta exactamente igual.
:results([opts])
resultado, información_del_error = ejecutor_general:results()
o
resultado, información_del_error = ejecutor_general:results({
multi_array_output = "table" o "MLMultiArray",
})
Lee el resultado de la inferencia asíncrona más reciente.
- Si la llamada asíncrona más reciente fue
predict(), devuelve una tabla de una muestra. - Si fue
predict_batch(), devuelve una matriz de resultados por lotes. multi_array_outputreutiliza de forma predeterminada la configuración de la última inferencia.- Si la tarea no ha terminado, devuelve
nil, "not yet". - Si no hay un resultado correcto disponible, devuelve
nil, "unknown".
:is_done()
terminado = ejecutor_general:is_done()
Comprueba si terminó la última inferencia asíncrona. Solo tiene sentido después de predict(..., { async = true }) o predict_batch(..., { async = true }).
Configuración de ejecución y metadatos
:metadata()
metadatos = ejecutor_general:metadata()
Devuelve los metadatos incluidos en el modelo, útiles para depuración, encapsulación genérica o presentación de información.
:uses_cpu_only()
CPU = ejecutor_general:uses_cpu_only()
Devuelve la configuración predeterminada CPUOnly guardada al crear esta solicitud.
:compute_units()
configuración_de_unidades_de_cómputo = ejecutor_general:compute_units()
Devuelve la cadena compute_units registrada actualmente.
- En iOS 12+, devuelve la cadena en minúsculas registrada al crearla.
- Los valores habituales son
"all","cpu_only","cpu","cpu_and_gpu","gpu","cpu_and_neural_engine","ane"y"neural_engine". - Si se creó con
uses_cpu_only = true, devuelve"cpu_only". - En iOS 11 devuelve
nil.
Métodos de firma de entradas y salidas
:input_count() / :output_count()
Devuelve el número de características de entrada y salida.
:input_features() / :output_features()
Devuelve una tabla de descripciones de características indexada por nombre.
Los campos actuales son:
typeoptional- Para características
multi_array, tambiénshapeydata_type.
:input_info(name_or_index) / :output_info(name_or_index)
Lee la información de una característica individual por nombre o por índice basado en 1.
- Los campos son básicamente los mismos que en
input_features()/output_features(). - Añade
name. - El acceso por índice usa el mismo orden que
input_names()/output_names().
:input_names() / :output_names()
Devuelve listas estables y ordenadas de nombres de entrada y salida.
- Los nombres se ordenan lexicográficamente.
- El orden de
output_names()coincide con el de los índices numéricos del resultado de la inferencia síncrona.
:class_labels()
Devuelve las etiquetas de clase declaradas por el modelo. Necesita iOS 14+.
Ciclo de vida y comprobación de tipo
:close()
Destruye el estado subyacente de la solicitud. No deben llamarse otros métodos después del cierre.
:is_model_request() / :is_session()
Interfaces de comprobación de tipo del objeto; son alias equivalentes.
Notas
predict()/run()siempre devuelve una tabla.- El resultado admite índices numéricos y nombres de salida.
predict_batch()/run_batch()devuelve una matriz por lotes; cada elemento admite ambos tipos de acceso.- En un ejecutor general nuevo,
MLMultiArrayse conserva de forma predeterminada como tensor nativo, lo que facilita el posprocesamiento. - Para ver el contenido o mantener compatibilidad con scripts antiguos, pasa explícitamente
multi_array_output = "table".
Ejemplo de acceso:
out[1]
out.text_features
batch_out[1].text_features
Ejemplo
local req = assert(coreml.new_model_request(XXT_HOME_PATH.."/models/demo.mlmodelc"))
local out = assert(req:predict({
input_ids = ids,
}, {
multi_array_output = "MLMultiArray",
}))
print(out[1])
print(out.text_features)
print(req:output_names())