Model Weights
Trọng số model là các giá trị được học, giúp chuyển đầu vào của mạng thành dự đoán. Tìm hiểu cách huấn luyện xác định trọng số, các tệp trọng số và phương pháp nén.
Trọng số của model là các con số có thể học được bên trong mạng nơ-ron, biến đổi đầu vào thành dự đoán. Mỗi trọng số điều chỉnh tín hiệu truyền giữa hai đơn vị hoặc tạo thành một giá trị của bộ lọc tích chập; kết hợp lại, các trọng số mã hóa mọi thứ model đã học từ dữ liệu huấn luyện. Thuật ngữ này thường được dùng theo nghĩa rộng để chỉ tất cả tham số đã học của model, bao gồm cả bias và giá trị chuẩn hóa, như trong các cụm “trọng số pretrained” hoặc “model có trọng số mở”. Số lượng trọng số có thể chênh lệch nhiều bậc độ lớn: ResNet-50 có khoảng 25,6 triệu tham số, trong khi large language model có hàng tỷ tham số.
Cách quá trình huấn luyện thiết lập trọng số#
Mạng mới bắt đầu với các trọng số ngẫu nhiên nhỏ, được lấy mẫu theo những phương pháp như khởi tạo He, vốn điều chỉnh tỷ lệ giá trị ngẫu nhiên theo kích thước của từng layer để tín hiệu không biến mất hoặc bùng nổ khi truyền qua nhiều layer. Lúc này, dự đoán của model chỉ là nhiễu. Sau đó, quá trình huấn luyện lặp lại một chu trình cho mỗi batch dữ liệu: lượt truyền xuôi tạo ra dự đoán, hàm loss đánh giá sai số của dự đoán, lan truyền ngược tính toán mức đóng góp của từng trọng số vào sai số đó, rồi optimizer như stochastic gradient descent (SGD) hoặc optimizer Adam điều chỉnh từng trọng số để giảm sai số. Sau hàng triệu lần cập nhật nhỏ như vậy, các trọng số ổn định ở những giá trị tạo ra dự đoán chính xác và giữ nguyên trong quá trình suy luận.
Trọng số và các thuật ngữ liên quan#
- Bias: Trong một layer tính toán
y = Wx + b, các trọng sốWnhân với đầu vào, còn biasbcộng thêm một độ lệch. Nhờ đó, hàm kích hoạt của một đơn vị có thể dịch chuyển ngưỡng và tạo ra đầu ra khác không khi mọi đầu vào đều bằng không. Cả hai đều được học trong quá trình huấn luyện. - Siêu tham số: Các thiết lập như learning rate và batch size được chọn trước khi huấn luyện và kiểm soát cách các trọng số được học. Gradient descent không cập nhật các thiết lập này.
- Activation: Các đầu ra trung gian mà mạng tính toán cho một đầu vào cụ thể. Trọng số giữ nguyên với mọi đầu vào, còn activation được tính lại cho từng đầu vào.
- Weights & Biases: Nền tảng theo dõi thí nghiệm có tên gọi lấy cảm hứng từ hai loại tham số này.
Lưu và tải trọng số#
Trọng số đã huấn luyện được lưu vào file để có thể tải lại khi suy luận, chia sẻ hoặc dùng làm điểm khởi đầu cho transfer learning. Trong PyTorch, trọng số của model nằm trong state_dict và thường được lưu thành các file .pt. Những file này dùng định dạng pickle của Python, vốn có thể thực thi code khi được tải, vì vậy từ PyTorch 2.6, torch.load mặc định là weights_only=True. Định dạng safetensors chỉ lưu tensor thô, loại bỏ nguy cơ thực thi code và cho phép tải nhanh bằng ánh xạ bộ nhớ; đây là định dạng tiêu chuẩn trên Hugging Face. File ONNX đóng gói trọng số cùng đồ thị tính toán để các runtime khác có thể thực thi model.
Các checkpoint .pt của Ultralytics YOLO26 lưu trung bình trượt hàm mũ (EMA) của trọng số để làm mượt nhiễu giữa các bước, cùng với các tham số huấn luyện và kết quả theo từng epoch; mỗi lần chạy huấn luyện đều ghi best.pt và last.pt vào thư mục weights. Khi tải cùng một kiến trúc có và không có trọng số đã huấn luyện, ta có thể thấy tri thức của model nằm ở đâu:
from ultralytics import YOLO
# Same YOLO26n architecture with two different sets of weights
trained = YOLO("yolo26n.pt") # weights learned on COCO
untrained = YOLO("yolo26n.yaml") # randomly initialized weights
for name, model in [("trained", trained), ("untrained", untrained)]:
results = model("https://ultralytics.com/images/bus.jpg")
print(f"{name}: {len(results[0].boxes)} objects detected")Trọng số đã huấn luyện tìm được xe buýt và những người trong ảnh, trong khi bản sao có khởi tạo ngẫu nhiên của cùng mạng đó không phát hiện được gì.
Nén trọng số để triển khai#
Độ chính xác của trọng số quyết định kích thước file và dung lượng bộ nhớ của model; điều này đặc biệt quan trọng với các thiết bị edge AI. Lượng tử hóa model lưu trọng số ở độ chính xác thấp hơn; chuyển từ số dấu phẩy động 32-bit sang số nguyên 8-bit giúp giảm kích thước xuống còn một phần tư và tăng tốc suy luận trên phần cứng hỗ trợ số nguyên. Cắt tỉa loại bỏ các trọng số ít ảnh hưởng đến đầu ra, còn chưng cất tri thức huấn luyện model nhỏ hơn để bắt chước model lớn hơn. Để hình dung quy mô, một language model có 7 tỷ tham số cần khoảng 28 GB cho trọng số ở 32 bit, 14 GB ở 16 bit và 3,5 GB ở 4 bit.










