Model Soups
Khám phá cách Model Soups cải thiện độ chính xác và độ bền bằng cách lấy trung bình các trọng số của các model Ultralytics YOLO. Tìm hiểu cách tăng hiệu suất mà không làm tăng độ trễ.
Model Soups đề cập đến một kỹ thuật học máy, trong đó trọng số của nhiều mạng nơ-ron, được tinh chỉnh từ cùng một base model tiền huấn luyện với các siêu tham số khác nhau, được tính trung bình với nhau để tạo ra một model đơn nhất và mạnh mẽ hơn. Cách tiếp cận này cho phép các nhà phát triển cải thiện độ chính xác tổng thể và khả năng tổng quát hóa mà không làm tăng chi phí tính toán trong quá trình suy luận (inference).
Khi tinh chỉnh một model, các chuyên gia thường thực hiện một đợt hyperparameter tuning (tinh chỉnh siêu tham số) quy mô rộng để tìm ra cấu hình đạt hiệu suất tốt nhất. Theo truyền thống, chỉ có một model tốt nhất được chọn, còn lại sẽ bị loại bỏ. Tuy nhiên, việc tạo ra một model soup giúp tận dụng các đặc trưng đa dạng mà tất cả các model trong đợt quét đã học được. Bằng cách lấy trung bình trực tiếp các model weights (trọng số model), mạng kết quả thường hoạt động vượt trội hơn so với model đơn lẻ tốt nhất, kết hợp hiệu quả các ưu điểm của chúng trong khi giảm thiểu overfitting (quá khớp). Quy trình này có hiệu suất cao và có thể được quản lý dễ dàng trong các môi trường cộng tác như Ultralytics Platform.
Link to this sectionCác ứng dụng trong thực tế#
Model Soups đặc biệt hiệu quả trong các kịch bản bị hạn chế về tài nguyên tính toán nhưng đòi hỏi độ chính xác và tính ổn định cao.
- Thị giác máy tính cho xe tự hành: Khi triển khai các hệ thống object detection (phát hiện đối tượng) trên xe tự lái, các model phải có khả năng tổng quát hóa trong nhiều điều kiện ánh sáng và thời tiết khác nhau. Bằng cách lấy trung bình nhiều model được huấn luyện với các kỹ thuật tăng cường dữ liệu và tốc độ học (learning rate) khác nhau, các kỹ sư tạo ra một soup cực kỳ ổn định, duy trì mức inference latency (độ trễ suy luận) thấp. Điều này đảm bảo tốc độ xử lý thời gian thực quan trọng cho autonomous navigation (điều hướng tự hành) không bị ảnh hưởng.
- Chẩn đoán y tế trên thiết bị di động: Trong các ứng dụng AI tại biên (edge AI), chẳng hạn như chạy image classification (phân loại ảnh) trên điện thoại thông minh để sàng lọc da liễu ban đầu, sức mạnh tính toán bị giới hạn nghiêm ngặt. Một model soup cung cấp độ chính xác được tăng cường cần thiết cho độ tin cậy lâm sàng, đồng thời đảm bảo cấu hình cuối cùng phù hợp để chạy trên các mobile edge devices (thiết bị biên di động) mà không làm hao pin hoặc cần kết nối đám mây.
Link to this sectionPhân biệt các khái niệm liên quan#
Để điều hướng trong bối cảnh deep learning optimization (tối ưu hóa học sâu), điều quan trọng là phải phân biệt Model Soups với các kỹ thuật tương tự:
- Model Ensemble (Hợp tập model): Kỹ thuật ensemble kết hợp các dự đoán (đầu ra) của nhiều model độc lập. Mặc dù điều này giúp cải thiện độ chính xác, nhưng nó yêu cầu phải chạy mọi model trong quá trình suy luận, làm tăng chi phí tính toán. Model Soups lấy trung bình các trọng số trước khi suy luận, giữ cho chi phí tính toán tương đương với một model đơn lẻ.
- Model Merging (Hợp nhất model): Đây là một thuật ngữ rộng hơn để chỉ việc kết hợp các model có thể đã được huấn luyện trên các tác vụ hoặc tập dữ liệu hoàn toàn khác nhau. Model Soups là một tập con cụ thể của quá trình hợp nhất, trong đó tất cả các model đều bắt nguồn từ cùng một pre-trained base architecture (kiến trúc cơ sở tiền huấn luyện) và được tinh chỉnh trên cùng một tác vụ mục tiêu.
Link to this sectionVí dụ về triển khai#
Việc tạo ra một uniform model soup bao gồm việc truy cập PyTorch state dictionary của nhiều model đã được huấn luyện và tính trung bình các tensor của chúng về mặt toán học. Dưới đây là ví dụ ngắn gọn về cách thực hiện điều này bằng cách sử dụng quy trình Ultralytics YOLO26 được hỗ trợ nguyên bản bởi PyTorch framework.
import torch
# Load the PyTorch state dictionaries from two fine-tuned YOLO26 models
model1 = torch.load("yolo26_run1.pt")["model"].state_dict()
model2 = torch.load("yolo26_run2.pt")["model"].state_dict()
# Create a uniform model soup by averaging the model weights
soup_dict = {key: (model1[key] + model2[key]) / 2.0 for key in model1.keys()}
# The resulting soup_dict can now be loaded into a new YOLO26 instanceBy leveraging this technique, computer vision practitioners can easily boost performance metrics like zero-shot learning capabilities and general robustness without sacrificing the deployment speed required for modern, edge-first AI architectures.






