Model Registry
Model registry là danh mục có quản lý phiên bản về các model đã huấn luyện và metadata của chúng, ghi lại phiên bản nào được phê duyệt và phiên bản nào đang phục vụ production.
Model registry là danh mục các model học máy đã huấn luyện, được quản lý theo phiên bản. Mỗi mục lưu một artifact của model, chẳng hạn như tệp chứa trọng số model, cùng metadata cần thiết để xác minh độ tin cậy: lần chạy huấn luyện đã tạo ra artifact đó, phiên bản dữ liệu, các metric đánh giá như độ chính xác trung bình (mAP), schema đầu vào và đầu ra, chủ sở hữu và trạng thái phê duyệt. Thay vì chuyển các tệp trọng số qua lại, pipeline triển khai và ứng dụng truy vấn registry để lấy phiên bản được chỉ định tên hoặc phiên bản hiện được gắn nhãn production, nhờ vậy mỗi bản phát hành và mỗi lần rollback đều tham chiếu đến một model chính xác đã được ghi nhận. Trong hoạt động vận hành học máy (MLOps), registry nằm giữa theo dõi thử nghiệm và triển khai model. Các registry được sử dụng rộng rãi gồm Model Registry của MLflow, Amazon SageMaker Model Registry, Vertex AI Model Registry và Registry của Weights & Biases.
Cách thức hoạt động của model registry#
Model đã đăng ký có một tên, chẳng hạn defect-detector, và lưu giữ một chuỗi phiên bản. Mỗi phiên bản là bất biến sau khi đăng ký, vì vậy trọng số mới luôn trở thành phiên bản mới và phiên bản 7 luôn đại diện cho cùng một tập byte. Thông thường, một phiên bản ghi lại:
- Nguồn gốc: ID lần chạy, commit mã nguồn, phiên bản tập dữ liệu và model cha đã tạo ra model đó.
- Kết quả đánh giá: Các chỉ số validation, cùng độ trễ và mức sử dụng bộ nhớ được đo trên từng thiết bị mục tiêu.
- Chữ ký: Schema đầu vào và đầu ra dự kiến để yêu cầu có shape sai được phát hiện ngay.
- Thẻ model: Tài liệu về mục đích sử dụng, dữ liệu huấn luyện và các hạn chế đã biết.
- Trạng thái: Các thẻ và bí danh cho biết vị trí của phiên bản trong quy trình.
Ultralytics Platform lưu giữ loại hồ sơ này cho mọi lần chạy huấn luyện YOLO được lưu trữ trên nền tảng: trang model liệt kê model cha, phiên bản tập dữ liệu được ghim, Git commit, phiên bản ultralytics, siêu tham số, chỉ số cuối cùng và lệnh yolo train có thể tái lập; trường Custom Metadata chấp nhận một đối tượng JSON để theo dõi bản phát hành hoặc quản trị.
Các registry cũ chuyển từng phiên bản qua những giai đoạn cố định như Staging, Production và Archived. MLflow ngừng hỗ trợ các giai đoạn trong phiên bản 2.9.0 và thay bằng bí danh, tức các con trỏ có tên có thể thay đổi như @champion mà nhóm có thể chuyển giữa các phiên bản. Amazon SageMaker theo dõi trạng thái phê duyệt PendingManualApproval, Approved hoặc Rejected trên từng phiên bản. Đưa model lên môi trường sử dụng nghĩa là chuyển bí danh, còn khôi phục nghĩa là chuyển bí danh về phiên bản trước:
Registry cũng kiểm soát ai được phép thay đổi nội dung nào. Nhà khoa học dữ liệu có thể đăng ký phiên bản, người đánh giá được chỉ định có thể chuyển bí danh production, và mọi thay đổi đều được ghi vào nhật ký kiểm toán. Các nhóm thường kết nối những sự kiện này với hệ thống tự động hóa, để việc phê duyệt một phiên bản khởi chạy pipeline triển khai, còn cảnh báo giám sát model về trôi dạt dữ liệu khởi chạy quá trình huấn luyện lại, đăng ký ứng viên tiếp theo.
Registry của MLflow minh họa cách làm này chỉ với vài dòng mã. Script này huấn luyện một bộ phân loại scikit-learn nhỏ, đăng ký model, trỏ bí danh champion đến phiên bản mới và tải model qua bí danh, giống cách mã phục vụ model tìm model production hiện tại:
import mlflow
from mlflow import MlflowClient
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
# Keep runs and registered model versions in a local SQLite file
mlflow.set_tracking_uri("sqlite:///mlflow.db")
X, y = load_iris(return_X_y=True)
# Log a trained model inside a run, then register it as a new version
with mlflow.start_run():
model = LogisticRegression(max_iter=200).fit(X, y)
info = mlflow.sklearn.log_model(model, name="model")
version = mlflow.register_model(info.model_uri, "iris-classifier")
# Point the "champion" alias at this version; applications load the alias
MlflowClient().set_registered_model_alias("iris-classifier", "champion", version.version)
champion = mlflow.pyfunc.load_model("models:/iris-classifier@champion")
print(f"version {version.version}:", champion.predict(X[:3]))Trên cơ sở dữ liệu mới, script in ra version 1: [0 0 0], phiên bản đã đăng ký cùng các lớp dự đoán cho ba bông hoa đầu tiên. Chạy lại script sẽ đăng ký phiên bản 2, và cùng URI models:/iris-classifier@champion sẽ theo bí danh đến phiên bản đó mà không cần thay đổi mã tải model.
Registry model và các công cụ liên quan#
- Theo dõi thí nghiệm: Ghi lại mọi lần chạy huấn luyện, kể cả nhiều lần không bao giờ được sử dụng. Registry lưu giữ một số ít ứng viên đáng triển khai và liên kết từng phiên bản về lần chạy đã tạo ra nó.
- Lưu trữ đối tượng: Các bucket như Amazon S3 lưu trữ tệp. Registry bổ sung phiên bản, siêu dữ liệu và kiểm soát quyền truy cập, đồng thời thường chỉ lưu một con trỏ đến tệp trong bucket.
- Feature store: Quản lý phiên bản và cung cấp các đặc trưng đầu vào mà model sử dụng; bản thân model được lưu trong registry.
- Registry container: Lưu trữ các image Docker chạy model, vì vậy một lần triển khai thường chỉ định một tag image và một phiên bản model.
- Hugging Face Hub: Lưu trữ model công khai và riêng tư trong các repository Git có lịch sử commit và thẻ model trên trang chủ của từng repository, nhờ đó đóng vai trò registry cho các model có trọng số mở.










