Pular para o conteúdo principal

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_path Texto: caminho do diretório do modelo .mlmodelc já compilado.

  • uses_cpu_only Booleano opcional que define se a inferência deve usar somente a CPU por padrão; o padrão é false.

  • compute_units Texto 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; retorna nil se a criação falhar.

  • mensagem de erro
    Texto; retorna nil quando 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_units dependem do iOS 12+.
  • Se o modelo declarar uma image feature e você quiser passar image_object diretamente 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, MLMultiArray e um objeto image quando 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 = true ao 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: retorna true se for um request genérico; caso contrário, retorna false.

Observações

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