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ặcnilkhi thất bại. -
thông báo lỗi
Kiểu chuỗi.nilkhi 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_unitsyê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_objectvà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,
MLMultiArrayvà đối tượngimagekhi 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 = truekhi 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ềtruenế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])