Chuyển tới nội dung chính

Tạo yêu cầu CoreML đa dụng (coreml.new_model_request)

coreml.new_model_request tải một mô hình CoreML đã biên dịch và tạo đối tượng yêu cầu đa dụng không phụ thuộc vào Vision.
Hàm phù hợp với mô hình văn bản, mô hình đầu vào tensor, mô hình nhiều đầu vào / nhiều đầu ra, mô hình embedding và mọi mô hình có đầu vào không chỉ là một ảnh thông thường đi qua Vision.

Nếu mô hình chủ yếu là quy trình nhận dạng ảnh và bạn muốn truyền trực tiếp một đối tượng image vào quy trình Vision, hãy ưu tiên new_vision_request. Nếu cần tự chuẩn bị đặc trưng đầu vào, hoặc mô hình yêu cầu MLMultiArray, ID token hay nhiều đầu vào có tên, đây là API phù hợp.

coreml.session(...) là bí danh của hàm này.

Khai báo

request, err = coreml.new_model_request(compiled_model_path)

hoặc

request, err = coreml.new_model_request({
compiled_model_path = compiled_model_path,
uses_cpu_only = use_cpu_only,
compute_units = compute_units,
})

Tham số

  • compiled_model_path Kiểu chuỗi. Đường dẫn đến thư mục mô hình .mlmodelc đã biên dịch.

  • uses_cpu_only Kiểu boolean, không bắt buộc. Theo mặc định có chỉ sử dụng CPU hay không. Mặc định là false.

  • compute_units Kiểu chuỗi, không bắt buộc. Có hiệu lực trên iOS 12 trở lên. Các giá trị được hỗ trợ:

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

    Khi uses_cpu_only = true, chế độ chỉ dùng CPU được ưu tiên.

Giá trị trả về

  • request
    Đối tượng yêu cầu CoreML đa dụng, hoặc nil khi thất bại.

  • err
    Kiểu chuỗi. nil khi thành công; thông báo lỗi khi thất bại.

Lưu ý

Hàm này khả dụng trong các phiên bản phát hành sau 20260319

  • Khả năng cơ bản có trên iOS 11 trở lên
  • Cấu hình compute_units yêu cầu iOS 12 trở lên
  • Nếu mô hình khai báo đặc trưng ảnh và bạn muốn truyền trực tiếp image_object vào yêu cầu đa dụng này, cần iOS 13 trở lên
  • Phải truyền đầu vào dưới dạng bảng có khóa là tên đầu vào, ví dụ { input_ids = ids }
  • Giá trị đầu vào có thể là số, chuỗi, boolean, từ điển, MLMultiArray và đối tượng image khi mô hình khai báo đầu vào đặc trưng ảnh
  • Đối tượng này chỉ chạy suy luận mô hình. Cần chuẩn bị riêng bước tiền xử lý ảnh và tách token văn bản trong Lua
  • Có thể tái sử dụng cùng một đối tượng yêu cầu cho nhiều lần gọi predict() / run()
  • Nếu thiết bị cũ hoặc một số mô hình không ổn định trên backend mặc định, có thể đặt uses_cpu_only = true khi tạo

Kiểm tra kiểu

Khai báo

is_request = coreml.is_model_request(value)

hoặc

is_request = coreml.is_session(value)

Tham số

  • value
    Giá trị bất kỳ cần kiểm tra.

Giá trị trả về

  • is_request
    Kiểu boolean. Trả về true nếu giá trị là một đối tượng yêu cầu CoreML đa dụng.

Lưu ý

  • coreml.is_session()coreml.is_model_request() là hai bí danh tương đương
  • Hữu ích trong các trình bao Lua dùng chung để bảo vệ kiểu và xác thực đối số
  • Nếu đã biết giá trị đến từ new_model_request(...) / session(...), thông thường không cần kiểm tra này

Ví dụ

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