Criar um request CoreML genérico (coreml.new_model_request)
coreml.new_model_request carrega um modelo CoreML já compilado e cria um request genérico que não depende do Vision.
Ele é adequado para modelos de texto, modelos com entrada de tensor, modelos com várias entradas e saídas, modelos de embedding e qualquer modelo cuja “entrada não seja uma imagem comum”.
Se o modelo for um fluxo de reconhecimento de imagens e você quiser passar diretamente um objeto image para a inferência visual, prefira new_vision_request.
Se precisar preparar as features de entrada por conta própria, ou se as entradas do modelo incluírem MLMultiArray, tokens de texto ou várias entradas nomeadas, use esta interface.
Além disso, coreml.session(...) é um alias desta função.
Declaração
objeto_request_genérico, mensagem_de_erro = coreml.new_model_request(caminho_do_modelo_compilado)
ou
objeto_request_genérico, mensagem_de_erro = coreml.new_model_request({
compiled_model_path = caminho_do_modelo_compilado,
uses_cpu_only = usar_apenas_CPU,
compute_units = configuração_das_unidades_de_cálculo,
})
Parâmetros
-
compiled_model_pathTexto: caminho do diretório do modelo.mlmodelcjá compilado. -
uses_cpu_onlyBooleano opcional que define se a inferência deve usar somente a CPU por padrão; o padrão éfalse. -
compute_unitsTexto opcional, com efeito no iOS 12+. Aceita os seguintes valores:"all""cpu_only"ou"cpu""cpu_and_gpu"ou"gpu""cpu_and_neural_engine","ane"ou"neural_engine"(iOS 16+)
Quando
uses_cpu_only = true, a configuração CPUOnly é forçada com prioridade.
Valores retornados
-
objeto do request genérico
O objeto do request genérico; retornanilse a criação falhar. -
mensagem de erro
Texto; retornanilquando a criação é bem-sucedida e a mensagem de erro quando falha.
Observações
Esta função só está disponível em versões posteriores a 20260319
- Os recursos básicos são compatíveis com iOS 11+.
- As configurações relacionadas a
compute_unitsdependem do iOS 12+. - Se o modelo declarar uma image feature e você quiser passar
image_objectdiretamente como entrada para este request genérico, será necessário iOS 13+. - Ao passar os parâmetros de entrada, use um “mapa de nomes de entrada”, por exemplo
{ input_ids = ids }. - Os valores de entrada aceitam números, strings, booleanos, dicionários,
MLMultiArraye um objetoimagequando o modelo declarar uma feature de imagem. - Este objeto cuida somente da inferência do modelo; não faz pré-processamento de imagens nem tokenização de texto. Essas etapas devem ser preparadas na camada Lua.
- O mesmo objeto de request pode chamar
predict()/run()repetidamente; é adequado mantê-lo em cache em vez de recriá-lo a cada inferência. - Se um dispositivo antigo ou determinado modelo apresentar instabilidade no backend padrão, defina
uses_cpu_only = trueao criá-lo.
Verificação de tipo
Declaração
é_request_genérico = coreml.is_model_request(valor_a_verificar)
ou
é_request_genérico = coreml.is_session(valor_a_verificar)
Parâmetros
- valor a verificar
Valor cuja identidade como objeto de request genérico CoreML deve ser verificada.
Valor retornado
- é request genérico
Booleano: retornatruese for um request genérico; caso contrário, retornafalse.
Observações
coreml.is_session()ecoreml.is_model_request()são interfaces equivalentes.- É adequado para proteção de tipo ou validação de parâmetros em wrappers Lua genéricos.
- Se você já tiver explicitamente o valor retornado por
new_model_request(...)/session(...), normalmente não precisará chamá-la adicionalmente.
Exemplo
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])