본문으로 건너뛰기

범용 CoreML 추론기 생성 (coreml.new_model_request)

coreml.new_model_request는 컴파일된 CoreML 모델을 불러와 Vision에 의존하지 않는 범용 추론기를 생성합니다.
텍스트 모델, 텐서 입력 모델, 다중 입력·다중 출력 모델, Embedding 모델 및 입력이 일반 이미지 한 장이 아닌 모든 모델에 적합합니다.

모델 자체가 이미지 인식 파이프라인이고 image 객체를 직접 전달해 시각 추론을 수행하려면 new_vision_request를 우선 사용하십시오.
입력 특성을 직접 준비해야 하거나 모델 입력에 MLMultiArray, 텍스트 token, 여러 이름 있는 입력이 포함된다면 이 인터페이스를 사용하십시오.

또한 coreml.session(...)은 이 함수의 별칭입니다.

선언

범용 추론기 객체, 오류 정보 = coreml.new_model_request(컴파일된 모델 경로)

또는

범용 추론기 객체, 오류 정보 = coreml.new_model_request({
compiled_model_path = 컴파일된 모델 경로,
uses_cpu_only = CPU만 사용할지 여부,
compute_units = 연산 장치 설정,
})

매개변수

  • compiled_model_path 문자열형. 컴파일이 완료된 .mlmodelc 모델 디렉터리 경로입니다.

  • uses_cpu_only 불리언형 선택 매개변수. 기본적으로 CPU만 사용해 추론할지 여부이며 기본값은 false입니다.

  • compute_units 문자열형 선택 매개변수. **iOS 12+**에서 적용되며 다음 값을 지원합니다.

    • "all"
    • "cpu_only" 또는 "cpu"
    • "cpu_and_gpu" 또는 "gpu"
    • "cpu_and_neural_engine", "ane" 또는 "neural_engine" (iOS 16+)

    uses_cpu_only = true이면 CPUOnly 구성을 우선하여 강제로 사용합니다.

반환값

  • 범용 추론기 객체
    범용 추론기 객체이며 생성에 실패하면 nil을 반환합니다.

  • 오류 정보
    문자열형. 생성에 성공하면 nil, 실패하면 오류 정보를 반환합니다.

설명

이 함수는 20260319 이후 버전에서 사용할 수 있습니다.

  • 기본 기능은 **iOS 11+**를 지원합니다.
  • compute_units 관련 구성은 **iOS 12+**가 필요합니다.
  • 모델이 image feature를 선언하고 이 범용 request에 image_object를 직접 입력으로 전달하려면 **iOS 13+**가 필요합니다.
  • 입력 매개변수는 { input_ids = ids }와 같은 입력 이름 매핑 테이블 형식으로 전달해야 합니다.
  • 입력값으로 숫자, 문자열, 불리언, 딕셔너리, MLMultiArray를 지원하며, 모델이 이미지 특성을 선언한 경우 image 객체도 지원합니다.
  • 이 객체는 모델 추론만 담당하며 이미지 전처리나 텍스트 토큰화는 수행하지 않습니다. 이러한 단계는 Lua 계층에서 직접 준비해야 합니다.
  • 같은 추론기 객체에서 predict() / run()을 반복 호출할 수 있으므로 매번 다시 생성하지 않고 캐시해 반복 사용하는 데 적합합니다.
  • 오래된 기기 또는 일부 모델이 기본 백엔드에서 불안정하다면 생성 시 uses_cpu_only = true로 설정할 수 있습니다.

유형 확인

선언

범용 추론기 여부 = coreml.is_model_request(확인할 값)

또는

범용 추론기 여부 = coreml.is_session(확인할 값)

매개변수

  • 확인할 값
    CoreML 범용 추론기 객체인지 확인할 값입니다.

반환값

  • 범용 추론기 여부
    불리언형. 범용 추론기이면 true, 아니면 false를 반환합니다.

설명

  • coreml.is_session()coreml.is_model_request()는 같은 의미의 인터페이스입니다.
  • 범용 Lua 래퍼에서 유형 보호 또는 매개변수 검증에 사용하기 적합합니다.
  • 이미 new_model_request(...) / session(...)의 반환값임이 확실하다면 일반적으로 추가 호출할 필요가 없습니다.

예제

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])