Model Merging
Khám phá cách model merging kết hợp nhiều model đã được huấn luyện sẵn thành một. Tìm hiểu cách hợp nhất trọng số Ultralytics YOLO26 để tăng hiệu suất mà không bị trễ thêm.
Hợp nhất mô hình (model merging) là một kỹ thuật sáng tạo trong machine learning (ML), kết hợp các tham số (trọng số) đã học của nhiều mô hình được đào tạo trước thành một mô hình thống nhất duy nhất. Khác với các thiết lập đa mô hình truyền thống, việc hợp nhất sẽ trực tiếp kết hợp các model weights trong không gian tham số. Điều này cho phép các chuyên gia kết hợp kiến thức chuyên môn từ nhiều mô hình đã được tinh chỉnh (fine-tuned) trên các tác vụ hoặc tập dữ liệu khác nhau mà không phải chịu chi phí về bộ nhớ và tính toán khi chạy đồng thời nhiều mô hình.
Bằng cách áp dụng các phép toán trực tiếp lên trọng số, hợp nhất mô hình duy trì kiến trúc của một mạng đơn lẻ. Điều này đặc biệt có giá trị khi triển khai các pipeline computer vision (CV) tiên tiến lên các thiết bị biên (edge devices), nơi việc giảm inference latency và tiết kiệm bộ nhớ là rất quan trọng.
Link to this sectionPhân biệt Hợp nhất mô hình#
Việc phân biệt hợp nhất mô hình với các khái niệm liên quan như Model Ensemble và Transfer Learning là rất hữu ích.
- Hợp nhất mô hình so với Model Ensemble: Một ensemble giữ các mạng riêng biệt, chạy từng mạng trong quá trình suy luận (inference) và lấy trung bình kết quả đầu ra của chúng. Điều này làm tăng độ chính xác nhưng cũng nhân rộng chi phí tính toán. Hợp nhất mô hình kết hợp các trọng số thực tế trước khi suy luận, tạo ra một mô hình duy nhất không yêu cầu thêm tài nguyên tính toán khi runtime.
- Hợp nhất mô hình so với Transfer Learning: Transfer learning liên quan đến việc lấy một mô hình cơ sở và huấn luyện thêm trên một tập dữ liệu mới. Hợp nhất mô hình không yêu cầu fine-tuning bổ sung; nó sử dụng các phép toán để kết hợp các mô hình đã được huấn luyện sẵn.
Link to this sectionCác kỹ thuật phổ biến#
Các nhà nghiên cứu đã phát triển một số phương pháp để kết hợp trọng số hiệu quả mà không phá hủy các khả năng nền tảng của mạng, như đã được khám phá trong các academic research on arXiv gần đây.
- Weight Averaging: Phương pháp đơn giản nhất, lấy trung bình trọng số từ nhiều mô hình có cùng kiến trúc.
- Task Arithmetic: Một kỹ thuật trong đó "các vector tác vụ" (sự khác biệt giữa một mô hình đã tinh chỉnh và mô hình cơ sở của nó) được cộng hoặc trừ để kết hợp hoặc loại bỏ các hành vi cụ thể.
- TIES-Merging: Một phương pháp nâng cao giúp giải quyết sự can thiệp giữa các tham số bằng cách cắt tỉa các giá trị dư thừa và chọn các dấu nhất quán trên các mô hình, từ đó bảo toàn hiệu suất trên các tác vụ đa dạng.
Link to this sectionCác ứng dụng trong thực tế#
Hợp nhất mô hình rất hiệu quả để xây dựng các hệ thống tổng quát mà không cần phải huấn luyện lại từ đầu.
- Autonomous Vehicles: Một chiếc xe tự lái có thể sử dụng mô hình cơ sở Ultralytics YOLO26. Các kỹ sư có thể huấn luyện độc lập một phiên bản mô hình để phát hiện các chuyển động nhỏ của người đi bộ và một mô hình khác để đọc các biển báo giao thông phức tạp. Việc hợp nhất hai mô hình này tạo ra một trình phát hiện duy nhất, hiệu năng cao, xử lý đồng thời cả hai tác vụ mà không làm tăng gấp đôi thời gian suy luận.
- AI in Healthcare: Trong chẩn đoán hình ảnh y tế, các bệnh viện nghiên cứu khác nhau có thể tinh chỉnh mô hình trên các tập dữ liệu địa phương chuyên biệt (ví dụ: một cho bản quét MRI và một cho bản quét CT) do luật bảo mật dữ liệu nghiêm ngặt. Bằng cách hợp nhất các mô hình một cách an toàn, các nhà nghiên cứu có thể tạo ra một công cụ chẩn đoán toàn diện tận dụng được lợi thế từ các phân phối dữ liệu đa dạng.
Link to this sectionVí dụ: Lấy trung bình trọng số đơn giản#
Bạn có thể dễ dàng thực hiện hợp nhất mô hình cơ bản bằng PyTorch. Ví dụ sau minh họa cách lấy trung bình các từ điển trạng thái (state dictionaries) của hai mô hình có cấu trúc giống hệt nhau.
import torch
# Load the weights (state dicts) from two identical architectures
weights_a = torch.load("yolo26_task1.pt")["model"].state_dict()
weights_b = torch.load("yolo26_task2.pt")["model"].state_dict()
# Perform simple weight averaging
merged_weights = {k: (weights_a[k] + weights_b[k]) / 2.0 for k in weights_a.keys()}
# Save the newly merged model weights
torch.save({"model": merged_weights}, "yolo26_merged.pt")Đối với các nhóm muốn đơn giản hóa quy trình phức tạp gồm gán nhãn dữ liệu, huấn luyện và triển khai, Ultralytics Platform cung cấp giao diện trực quan để quản lý các dự án vision AI từ đầu đến cuối một cách dễ dàng.






