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_pathKiểu chuỗi. Đường dẫn đến thư mục mô hình.mlmodelcđã biên dịch. -
uses_cpu_onlyKiể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_unitsKiể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ặcnilkhi thất bại. -
err
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 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,
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 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 = truekhi 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ềtruenếu giá trị là một đối tượng yêu cầu CoreML đa dụng.
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])