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

Tạo đối tượng suy luận tổng quát CoreML (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 suy luận tổng quát 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​

đối tượng suy luận tổng quát, thông báo lỗi = coreml.new_model_request(đường dẫn mô hình đã biên dịch)

hoặc

đối tượng suy luận tổng quát, thông báo lỗi = coreml.new_model_request({
compiled_model_path = đường dẫn mô hình đã biên dịch,
uses_cpu_only = có chỉ dùng CPU hay không,
compute_units = cấu hình đơn vị tính toán,
})

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ề​

  • đối tượng suy luận tổng quát
    Đối tượng suy luận tổng quát CoreML, hoặc nil khi thất bại.

  • thông báo lỗi
    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 đối tượng suy luận tổng quát 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 suy luận tổng quát 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​

có phải đối tượng suy luận tổng quát hay không = coreml.is_model_request(giá trị cần kiểm tra)

hoặc

có phải đối tượng suy luận tổng quát hay không = coreml.is_session(giá trị cần kiểm tra)

Tham số​

  • giá trị cần kiểm tra
    Giá trị cần kiểm tra xem có phải là đối tượng suy luận tổng quát CoreML hay không.

Giá trị trả về​

  • có phải đối tượng suy luận tổng quát hay không
    Kiểu boolean. Trả về true nếu đúng, nếu không trả về false.

Lưu ý​

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