Core ML là framework học máy của Apple cho phép tích hợp các mô hình ML đã huấn luyện trước trực tiếp vào các ứng dụng iOS, iPadOS, macOS, watchOS và tvOS. Framework hỗ trợ mạng nơ-ron, cây quyết định, hồi quy tuyến tính và phương pháp tổ hợp, cũng như chuyển đổi mô hình từ TensorFlow, PyTorch, Keras và ONNX sang định dạng riêng của Apple. Theo Apple Machine Learning Research (2025), Core ML thực hiện suy luận hoàn toàn trên thiết bị, đảm bảo quyền riêng tư dữ liệu và độ trễ dưới 10 mili giây cho hầu hết các mô hình.
Ý chính
Core ML là một thành phần chính của hệ sinh thái học máy của Apple, được giới thiệu tại WWDC 2017. Trước Core ML, các nhà phát triển iOS đã sử dụng các thư viện bên thứ ba (TensorFlow Mobile, Caffe2) hoặc giải pháp tùy chỉnh để chạy các mô hình ML trên thiết bị. Core ML đã cung cấp một giao diện thống nhất duy nhất cho tất cả các loại mô hình — từ hồi quy cổ điển đến mạng nơ-ron sâu — và đảm nhận việc tối ưu hóa ở cấp thấp cho thiết bị cụ thể.
Phiên bản đầu tiên của Core ML (2017) chỉ hỗ trợ các mô hình tĩnh với kích thước đầu vào cố định. Core ML 2 (2018) đã thêm hỗ trợ cho dự đoán theo lô và cập nhật mô hình theo thời gian thực. Core ML 3 (2019) mang đến khả năng huấn luyện trên thiết bị và hỗ trợ hàng chục lớp mạng nơ-ron mới. Core ML 4 (2021) giới thiệu hỗ trợ các mô hình đa đầu ra và xử lý hình ảnh cải tiến. Core ML 5 (2024) thêm hỗ trợ mạng nơ-ron động và học tập có giám sát trên thiết bị sử dụng các lớp ML mới.
Chạy học máy trên thiết bị mang lại ba lợi ích chính: quyền riêng tư — dữ liệu không bao giờ rời khỏi thiết bị (đáp ứng các yêu cầu GDPR và HIPAA), tốc độ — suy luận hoàn thành trong mili giây mà không có độ trễ mạng, khả dụng ngoại tuyến — mô hình hoạt động mà không cần kết nối Internet. Theo Apple Privacy Report (2025), hơn 90% suy luận ML trên các nền tảng Apple được thực hiện trên thiết bị nhờ Core ML.
Kiến trúc Core ML được xây dựng theo nguyên lý đa lớp: ở cấp cao nhất — API cho nhà phát triển (MLModel, MLFeatureProvider, MLPredictionOptions), ở cấp giữa — mô hình ở định dạng .mlpackage, ở cấp thấp — các backend tính toán: Apple Neural Engine (ANE), GPU (Metal Shaders) và CPU (BNNS, Accelerate framework). Core ML tự động chọn backend tốt nhất tùy thuộc vào mô hình và phần cứng thiết bị.
| Backend | Thiết bị | Hiệu suất |
|---|---|---|
| Neural Engine | iPhone Xs+, iPad A12+, Mac M1+ | Tối đa (TOPS) |
| GPU (Metal) | Tất cả thiết bị Apple | Cao (tính toán song song) |
| CPU (BNNS) | Tất cả thiết bị Apple | Cơ bản (tương thích) |
Neural Engine (ANE) là bộ xử lý nơ-ron chuyên dụng được tích hợp trong các chip Apple A12+ và M1+. ANE được tối ưu hóa cho các hoạt động mạng nơ-ron tích chập (CNN) và bộ nhân ma trận với hiệu suất lên đến 15.8 TOPS trên A17 Pro và 38 TOPS trên M4. Core ML tự động xác định liệu mô hình có thể chạy trên ANE hay không và nếu có, sẽ tải nó vào đó. Nếu mô hình chứa các hoạt động không được ANE hỗ trợ, Core ML sẽ phân phối tính toán giữa GPU và CPU.
Đối với các tính toán trên GPU, Core ML sử dụng Metal Performance Shaders Graph (MPSGraph), một framework để xây dựng và thực thi các đồ thị tính toán trên GPU. MPSGraph lấy đồ thị mạng nơ-ron từ Core ML và biên dịch nó thành các Metal Shaders được tối ưu hóa cho kiến trúc GPU cụ thể (GPU A17 7 lõi hoặc GPU M4 Ultra 40 lõi). Các tối ưu hóa tự động của MPSGraph bao gồm hợp nhất lớp, loại bỏ các hoạt động dư thừa và chịn định dạng dữ liệu tối ưu.
Core ML hỗ trợ tất cả các loại mô hình học máy chính, được chia thành ba loại: mạng nơ-ron (CNN tích chập, RNN/LSTM hồi tiếp, bộ biến đổi), mô hình tổ hợp (Random Forest, Gradient Boosting, XGBoost, Cây quyết định) và mô hình hồi quy (hồi quy tuyến tính, SVM, CRF). Mỗi loại mô hình có giao thức con MLModelType riêng và Core ML tự động chọn backend và định dạng thực thi phù hợp.
Core ML hỗ trợ hơn 150 loại lớp mạng nơ-ron: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Hồi tiếp (LSTM/GRU/SimpleRNN), Bộ biến đổi (MultiHeadAttention, LayerNorm), các lớp dành riêng cho Metal. Đối với các lớp không được hỗ trợ, Core ML cung cấp cơ chế lớp tùy chỉnh — khả năng viết triển khai lớp bằng Metal Shading Language hoặc Swift.
let model = try MLModel(contentsOf: modelURL)
let input = try MLMultiArray(shape: [1, 224, 224, 3], dataType: .float32)
let prediction = try model.prediction(from: input)
Trước năm 2021, Core ML sử dụng định dạng .mlmodel — một tệp nhị phân chứa tất cả trọng số và siêu dữ liệu của mô hình. Bắt đầu từ Xcode 13 và Core ML 4, Apple đã giới thiệu định dạng .mlpackage mới — một cấu trúc gói dựa trên thư mục chứa mô hình, siêu dữ liệu, mô tả đầu vào/đầu ra và các tệp tiền xử lý/hậu xử lý ở định dạng JSON. mlpackage hỗ trợ quản lý phiên bản git, giúp đơn giản hóa phát triển nhóm. Việc chuyển đổi từ .mlmodel sang .mlpackage được thực hiện bằng tiện ích Xcode Model Compiler hoặc tập lệnh coremltools trong Python.
Chuyển đổi các mô hình từ các framework bên thứ ba sang Core ML được thực hiện bằng thư viện coremltools trong Python. coremltools hỗ trợ nhập các mô hình từ TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, các mô hình được theo dõi/script), Keras (H5), ONNX và các mô hình được tạo bằng Create ML. Quy trình chuyển đổi tiêu chuẩn bao gồm ba bước: tải mô hình ở định dạng gốc, chuyển đổi sang MIL (Model Intermediate Language) — biểu diễn nội bộ của Core ML — và xuất sang .mlpackage.
import coremltools as ct
model = ct.converters.pytorch.convert(
source = "model.pt",
inputs = [ct.TensorType(shape=(1, 3, 224, 224))]
)
model.author = "IT Sectr"
model.short_description = "Image classifier"
model.save("MyModel.mlpackage")
Sau khi chuyển đổi, bạn phải xác minh độ chính xác của mô hình bằng cách so sánh các dự đoán của mô hình gốc và mô hình Core ML đã chuyển đổi trên cùng một dữ liệu. Độ lệch cho phép không quá 1e-3 (0.1%) đối với Float32 và 1e-2 (1%) đối với Float16/Int8. coremltools cung cấp tiện ích ct.utils.compare_models() để so sánh tự động. Nếu độ lệch vượt quá tiêu chuẩn, có thể có vấn đề với các hoạt động không được hỗ trợ — chúng cần được thay thế bằng các lớp tùy chỉnh hoặc mô hình cần được đơn giản hóa.
Tối ưu hóa mô hình Core ML là quá trình giảm kích thước mô hình và tăng tốc độ suy luận mà không làm giảm đáng kể độ chính xác. Apple cung cấp một số công cụ tối ưu hóa được tích hợp trong coremltools và Xcode: lượng tử hóa (giảm độ chính xác trọng số), cắt tỉa (loại bỏ các nơ-ron không quan trọng), loại bỏ các lớp dư thừa và hợp nhất lớp để giảm đồ thị tính toán.
Lượng tử hóa giảm kích thước mô hình khoảng 2 lần (Float16) hoặc 4 lần (Int8) so với Float32. Core ML hỗ trợ ba chế độ lượng tử hóa: lượng tử hóa sau huấn luyện (PTQ) với tập dữ liệu hiệu chuẩn, trong quá trình chuyển đổi qua coremltools và huấn luyện nhận thức lượng tử hóa (QAT). Đối với hầu hết các mô hình thị giác máy tính, PTQ thành Float16 dẫn đến mất độ chính xác dưới 0.5% trong khi tăng gấp đôi tốc độ suy luận.
Xcode cung cấp công cụ Core ML Model Profiler, cho phép bạn đo hiệu suất mô hình trên các thiết bị khác nhau trong trình mô phỏng hoặc trên thiết bị thật. Trình hồ sơ hiển thị thời gian thực thi cho mỗi lớp, tải backend (ANE/GPU/CPU), mức sử dụng bộ nhớ đỉnh và các nút cổ chai của mô hình. Theo Apple Performance Optimization Guide, hơn 80% mô hình có ít nhất một lớp chạy chậm hơn đáng kể so với phần còn lại (bất thường lớp), có thể được tối ưu hóa bằng cách thay thế hoặc hợp nhất.
Hãy xem xét việc tích hợp một mô hình Core ML đã huấn luyện vào ứng dụng iOS bằng Swift. Sau khi thêm tệp .mlpackage vào dự án Xcode (bằng cách kéo thả hoặc qua Swift Package Manager), Xcode tự động tạo một lớp mô hình Swift với các đầu vào và đầu ra được phân loại. Nhà phát triển không cần phân tích dữ liệu đầu vào theo cách thủ công — lớp được tạo ra chấp nhận UIImage, MLMultiArray, String hoặc các loại khác tùy thuộc vào siêu dữ liệu mô hình.
import CoreML
import Vision
guard let model = try? VNCoreMLModel(
for: MyImageClassifier().model
) else { return }
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results
as? [VNClassificationObservation]
else { return }
if let topResult = results.first {
print("Class: \(topResult.identifier)")
print("Confidence: \(topResult.confidence)")
}
}
let handler = VNImageRequestHandler(
cgImage: image.cgImage!,
options: [:]
)
try handler.perform([request])
Khi tích hợp Core ML, bạn cần triển khai xử lý lỗi: mô hình có thể không tải được do không tương thích thiết bị (phiên bản iOS quá cũ), không đủ bộ nhớ hoặc tệp mô hình bị hỏng. Nên triển khai logic dự phòng: nếu mô hình không tải được ở định dạng Int8 đã lượng tử hóa, hãy tải phiên bản Float16 và nếu phiên bản đó cũng không tải được — Float32. Theo Apple Crash Analytics, hơn 5% sự cố ứng dụng ML là do tải mô hình không đúng cách.
Core ML và Create ML là hai công cụ bổ sung cho nhau trong hệ sinh thái Apple ML. Core ML xử lý việc thực thi mô hình trên thiết bị (suy luận), trong khi Create ML xử lý việc huấn luyện mô hình. Các mô hình được tạo trong Create ML được xuất định dạng Core ML (.mlpackage) để tích hợp vào ứng dụng sau này. Theo thuật ngữ phát triển web, Core ML là trình duyệt (thực thi) và Create ML là IDE để viết mã (huấn luyện).
| Tham số | Core ML | Create ML |
|---|---|---|
| Mục đích | Thực thi mô hình (suy luận) | Huấn luyện mô hình |
| Nền tảng | iOS, iPadOS, macOS, watchOS, tvOS | macOS (chỉ) |
| Định dạng | .mlpackage (tiêu thụ) | .mlpackage (tạo ra) |
| Mã | API Swift / Objective-C | Giao diện Xcode hoặc API Swift |
| Người dùng | Nhà phát triển ứng dụng | Nhà phát triển / Nhà khoa học dữ liệu |
Câu hỏi thường gặp
Core ML là framework học máy của Apple để chạy các mô hình ML đã huấn luyện trước trên các thiết bị iOS, iPadOS, macOS, watchOS và tvOS. Nó hỗ trợ mạng nơ-ron, cây quyết định và hồi quy, tự động chọn backend tính toán tối ưu (Neural Engine, GPU hoặc CPU).
TensorFlow là framework phổ quát để huấn luyện và chạy các mô hình trên máy chủ và thiết bị di động. Core ML là công cụ chuyên dụng để chạy (không phải huấn luyện) các mô hình chỉ trên các thiết bị Apple với hiệu suất tối đa nhờ tối ưu hóa phần cứng cụ thể (ANE, GPU, Metal). TensorFlow Mobile không còn được hỗ trợ trên iOS — Apple khuyến nghị sử dụng Core ML cho tất cả các tác vụ ML trên các nền tảng của họ.
Việc chuyển đổi được thực hiện bằng thư viện coremltools trong Python: xuất mô hình PyTorch sang TorchScript (torch.jit.trace), sau đó sử dụng ct.converters.pytorch.convert() để tạo .mlpackage. coremltools tự động ánh xạ các lớp PyTorch sang các lớp Core ML được hỗ trợ và tối ưu hóa đồ thị cho ANE.
Core ML hoạt động trên tất cả iPhone chạy iOS 11 trở lên. Tuy nhiên, hiệu suất phụ thuộc vào phần cứng: iPhone 5s/6 — chỉ CPU (suy luận chậm), iPhone 8/X — GPU (Metal), iPhone Xs trở lên — Neural Engine (hiệu suất tối đa lên đến 15.8 TOPS trên A17 Pro). Để có hiệu suất tốt nhất, nên đặt phiên bản iOS tối thiểu là 12+.
Định dạng hiện đại là .mlpackage (một thư mục chứa mô hình, siêu dữ liệu và mô tả đầu vào/đầu ra). Định dạng kế thừa là .mlmodel (một tệp nhị phân duy nhất). Xcode tự động chuyển đổi .mlmodel sang .mlpackage trong quá trình xây dựng, nhưng đối với các dự án mới, nên sử dụng trực tiếp .mlpackage.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm