Knowledge Distillation
Tìm hiểu cách knowledge distillation chuyển giao intelligence từ teacher lớn sang student nhỏ gọn. Tối ưu Ultralytics YOLO26 để triển khai edge nhanh và hiệu quả.
Chưng cất tri thức là một kỹ thuật tinh vi trong học máy, trong đó một mạng nơ-ron nhỏ gọn, được gọi là "student", được huấn luyện để tái tạo hành vi và hiệu năng của một mạng lớn hơn, phức tạp hơn, được gọi là "teacher". Mục tiêu chính của quy trình này là tối ưu hóa model, cho phép các nhà phát triển chuyển các năng lực dự đoán của những kiến trúc cồng kềnh sang các model nhẹ, phù hợp để triển khai trên phần cứng có tài nguyên hạn chế. Bằng cách nắm bắt thông tin phong phú được mã hóa trong các dự đoán của teacher, student thường đạt độ chính xác cao hơn đáng kể so với khi chỉ được huấn luyện trên dữ liệu thô, qua đó thu hẹp khoảng cách giữa hiệu năng cao và tính hiệu quả.
Cơ chế chuyển giao tri thức#
Trong học có giám sát truyền thống, các model được huấn luyện bằng "nhãn cứng" từ dữ liệu huấn luyện, trong đó một hình ảnh được phân loại dứt khoát (ví dụ: 100% là "chó" và 0% là "mèo"). Tuy nhiên, một model teacher được huấn luyện trước tạo ra đầu ra thông qua hàm softmax, hàm này gán xác suất cho tất cả các lớp. Các phân phối xác suất này được gọi là "nhãn mềm" hoặc "tri thức đen tối".
Ví dụ, nếu một model teacher phân tích hình ảnh một con sói, model này có thể dự đoán 90% là sói, 9% là chó và 1% là mèo. Phân phối này cho thấy sói có các đặc điểm hình ảnh tương đồng với chó, một ngữ cảnh mà nhãn cứng bỏ qua. Trong quá trình chưng cất, student tối thiểu hóa một hàm mất mát, chẳng hạn như độ phân kỳ Kullback-Leibler, để căn chỉnh các dự đoán của mình với nhãn mềm của teacher. Phương pháp này, được phổ biến qua nghiên cứu của Geoffrey Hinton, giúp student khái quát hóa tốt hơn và giảm hiện tượng quá khớp trên các tập dữ liệu nhỏ hơn.
Các ứng dụng trong thực tế#
Chưng cất tri thức đóng vai trò then chốt trong những ngành mà tài nguyên tính toán khan hiếm nhưng hiệu năng cao là yêu cầu bắt buộc.
- AI biên và thị giác di động: Việc chạy các tác vụ phát hiện đối tượng phức tạp trên smartphone hoặc thiết bị IoT đòi hỏi các model có độ trễ suy luận thấp. Các kỹ sư chưng cất những mạng khổng lồ thành các kiến trúc thân thiện với thiết bị di động như YOLO26 (cụ thể là các biến thể nano hoặc small). Điều này cho phép các ứng dụng thời gian thực như nhận diện khuôn mặt hoặc bộ lọc thực tế tăng cường hoạt động mượt mà mà không làm tiêu hao thời lượng pin.
- Xử lý ngôn ngữ tự nhiên (NLP): Các mô hình ngôn ngữ lớn (LLMs) hiện đại cần đến những cụm GPU quy mô lớn để vận hành. Chưng cất cho phép các nhà phát triển tạo ra những phiên bản nhỏ hơn, nhanh hơn của các model này nhưng vẫn giữ được các năng lực cốt lõi về mô hình hóa ngôn ngữ. Nhờ đó, việc triển khai các chatbot và trợ lý ảo có khả năng phản hồi nhanh trên phần cứng tiêu dùng tiêu chuẩn hoặc các phiên bản cloud đơn giản hơn trở nên khả thi.
Phân biệt các thuật ngữ tối ưu hóa liên quan#
Điều quan trọng là phải phân biệt chưng cất tri thức với các chiến lược nén khác, vì chúng điều chỉnh model theo những cách khác nhau về bản chất.
- Học chuyển giao: Kỹ thuật này bao gồm việc sử dụng một model được huấn luyện trước trên một tập dữ liệu benchmark quy mô lớn và điều chỉnh model đó cho một tác vụ mới, cụ thể (ví dụ: fine-tune một model phân loại hình ảnh tổng quát để phát hiện các bất thường y tế). Ngược lại, chưng cất tập trung vào việc nén cùng một tri thức vào một dạng nhỏ hơn thay vì thay đổi lĩnh vực.
- Cắt tỉa model: Cắt tỉa loại bỏ về mặt vật lý các kết nối hoặc nơ-ron dư thừa khỏi một mạng đã được huấn luyện để làm cho mạng trở nên thưa. Chưng cất thường bao gồm việc huấn luyện một kiến trúc student nhỏ hơn, hoàn toàn riêng biệt, từ đầu dưới sự hướng dẫn của teacher.
- Lượng tử hóa model: Lượng tử hóa làm giảm độ chính xác của các trọng số trong model (ví dụ: từ số dấu phẩy động 32-bit xuống số nguyên 8-bit) để tiết kiệm bộ nhớ và tăng tốc tính toán. Đây thường là bước cuối trong triển khai model, tương thích với các engine như TensorRT hoặc OpenVINO, đồng thời có thể kết hợp với chưng cất để đạt hiệu quả tối đa.
Triển khai student model#
Trong một quy trình thực tế, trước tiên bạn chọn một kiến trúc nhẹ để làm student. Nền tảng Ultralytics có thể được sử dụng để quản lý các tập dữ liệu và theo dõi các thử nghiệm huấn luyện của những model hiệu quả này. Dưới đây là ví dụ về việc khởi tạo một model YOLO26 nhỏ gọn, lý tưởng để triển khai ở edge và làm mạng student:
from ultralytics import YOLO
# Load a lightweight YOLO26 nano model (acts as the student)
# The 'n' suffix denotes the nano version, optimized for speed
student_model = YOLO("yolo26n.pt")
# Train the model on a dataset
# In a custom distillation loop, the loss would be influenced by a teacher model
results = student_model.train(data="coco8.yaml", epochs=5, imgsz=640)





