Hai Vấn Đề Ở Hai Đầu Quá Trình Huấn Luyện
Vấn Đề Giai Đoạn Đầu: Trọng Số Mới Không Thể Thực Hiện Bước Lớn
Tại bước 0, mọi trọng số bắt đầu như một số ngẫu nhiên nhỏ được lấy mẫu từ phân phối gần 0. Các kích hoạt vẫn gần 0. Gradient mang rất ít thông tin về giải pháp cuối cùng. Áp dụng tốc độ học đỉnh cho các gradient này & mô hình nhảy xa khỏi điểm khởi tạo theo các hướng không mã hóa cấu trúc có ý nghĩa.
ANDREA-120M v1 đã mắc sai lầm này. Không có warmup. Bước 1 sử dụng lr = 0.0003 trên trọng số được khởi tạo mới. Kết quả: mô hình rơi vào một vùng tham số xấu chỉ trong vài trăm bước. Các giá trị loss trông hợp lý; các mẫu sinh ra vòng lặp lặp lại ở bước 80K & không bao giờ phục hồi.
Vấn đề ở giai đoạn muộn: Các bước lớn không thể tinh chỉnh giải pháp
Đến bước 100K, mô hình đã học được cấu trúc thô. Gradient lúc này mang tín hiệu chi tiết: token nào cần điều chỉnh trọng số nhỏ, head attention nào cần cân bằng nhẹ. Áp dụng tốc độ học cao nhất ở giai đoạn này sẽ làm vượt quá mọi điều chỉnh tinh vi, gây dao động quanh điểm tối ưu mà không thể ổn định.
Hai vấn đề, hai đầu mút của quá trình huấn luyện. Một lịch trình, hai vùng: tăng dần nhẹ nhàng, sau đó giảm mượt mà.
Linear Warmup: 2000 bước đầu tiên
Công thức
ANDREA-120M v2 sử dụng linear warmup trong 2000 bước:
lr(t) = lr_scheduled(t) * min(1, (t + 1) / warmup_steps)
trong đó t là số bước (đánh số từ 0), warmup_steps = 2000, và lr_scheduled(t) là giá trị mà lịch biểu cosine sẽ đưa ra nếu bỏ qua giai đoạn warmup.
Đọc công thức:
- Tại t = 0: lr = lr_scheduled(0) min(1, 1/2000) = lr_scheduled(0) 0.0005. Bước đầu tiên rất nhỏ.
- Tại t = 1000: lr = lr_scheduled(1000) min(1, 1001/2000) = lr_scheduled(1000) 0.5. Nửa cường độ.
- Tại t = 2000: lr = lr_scheduled(2000) min(1, 2001/2000) = lr_scheduled(2000) 1.0. Cường độ đầy đủ.
- Khi t > 2000: hàm clamp giữ hệ số nhân ở mức 1, giai đoạn warmup không còn ảnh hưởng, chỉ còn cosine decay hoạt động.
Đường ramp tuyến tính từ 0 cho mô hình 2000 bước để hình thành các biểu diễn thô trước khi AdamW & gradient clipping nhận các cập nhật cường độ đầy đủ. Đến bước 2000, trọng số đã dịch chuyển đủ để lr đỉnh không đẩy chúng vào vùng xấu.
Tính LR Trong Giai Đoạn Warmup
Giảm Cosine Sau Warmup
Đường cong
Sau khi warmup kết thúc ở bước 2000, learning rate theo đường cong cosine từ giá trị đỉnh giảm về 0 trong các bước còn lại:
lr(t) = lr_min + (lr_peak - lr_min) 0.5 (1 + cos(pi * progress))
where progress = (t - warmup_steps) / (total_steps - warmup_steps). Tại progress = 0 (vừa qua giai đoạn warmup), cos(0) = 1, lr = peak. Tại progress = 1 (bước cuối cùng), cos(pi) = -1, lr = lr_min (thường là 0 hoặc một giá trị sàn rất nhỏ).
Tại sao dùng Cosine thay vì Linear hoặc Exponential?
Cosine decay bắt đầu chậm (đường cong gần như phẳng gần đỉnh), tăng tốc ở giữa, rồi chậm lại khi gần zero. Có ba lợi ích:
1. Đoạn plateau gần peak. Các bước ngay sau warmup vẫn nhận gần như toàn bộ lr, giúp mô hình có một khoảng dài với learning rate cao để xây dựng biểu diễn.
2. Chuyển tiếp mượt mà qua giai đoạn giữa. Không có sự thay đổi đột ngột mà AdamW phải xử lý.
3. Đạt plateau gần zero. Các bước cuối cùng nhận lr rất nhỏ để tinh chỉnh chi tiết, tương tự simulated annealing.
ANDREA-120M huấn luyện tổng cộng 200K bước; 198K trong số đó nằm trong vùng cosine decay sau 2000 bước warmup.
Warm Restart của ANDREA-12M tại Bước 25K
Điểm Plateau
ANDREA-12M được huấn luyện 60K bước với cosine decay từ lr = 0.0004 đỉnh. Khoảng bước 22K, loss đạt plateau với EMA ~2.4. Cosine decay đã giảm lr xuống ~0.00015. Bandit tiếp tục cung cấp dữ liệu đa dạng; mô hình ngừng cải thiện.
Chẩn đoán: lr đã giảm quá sâu khiến mô hình không thể thoát khỏi vùng cực tiểu hiện tại. Dữ liệu Hermes sắp được đưa vào chương trình học (bước 25K), mang theo 590K cuộc hội thoại mới. Mô hình cần năng lượng để hấp thụ cú sốc dữ liệu đó.
Khởi động lại
Tại bước 25K, lịch trình thực hiện một khởi động lại ấm: tăng đột biến lr từ 0.00015 (đã suy giảm) trở lại 0.0004 (đỉnh ban đầu), sau đó tiếp tục suy giảm cosine trong các bước còn lại.
Loshchilov & Hutter (2017) gọi kỹ thuật này là “SGDR” (stochastic gradient descent with warm restarts). Ý tưởng: lr cao cung cấp đủ năng lượng động học để thoát khỏi vùng cực tiểu cục bộ và khám phá các vùng lân cận; sau đó suy giảm cosine sẽ làm nguội dần để ổn định vào vùng cực tiểu tốt hơn.
Kết quả. Loss EMA giảm từ 2.40 xuống 2.10 trong 10K bước sau khi khởi động lại. Mô hình được xuất tại bước 43.6K với SMMA loss 2.0, thể hiện cấu trúc lượt Q&A mạch lạc.
ANDREA-120M v2 chọn KHÔNG sử dụng warm restart: với 200K bước huấn luyện và số lượng tham số lớn hơn nhiều, quá trình suy giảm mượt mà theo hàm số đơn điệu mang lại sự hội tụ ổn định hơn. Warm restart hiệu quả nhất khi quá trình huấn luyện ngắn và khi plateau xảy ra trùng với sự thay đổi dữ liệu đã biết.
Chẩn đoán lỗi của v1
Lựa chọn Lịch trình trong Thực hành
Các Hoạt động Liên quan
Ba anh em liên kết với Lịch trình Tốc độ Học:
- Hoạt động 10: AdamW. Giai đoạn warmup giúp AdamW có thời gian ổn định bias correction. Nếu không có warmup, hệ số nhân 10x ở bước 1 sẽ khuếch đại nhiễu trong gradient; khi có warmup, hệ số nhân sẽ tác động lên tín hiệu thực.
- Hoạt động 12: Gradient clipping. Việc clipping giới hạn L2 norm của gradient ở mức 1.0 TRƯỚC AdamW. Warmup làm giảm lr; clipping làm giảm g. Cùng nhau, chúng giữ các bước đầu an toàn ngay cả với các chương trình học dễ gây sốc.
- Hoạt động 22: Checkpointing. Một warm restart đòi hỏi nạp trạng thái optimizer (m, v, step counter) từ checkpoint, sau đó thay đổi lịch huấn luyện giữa chừng. ANDREA-12M minh họa việc restart tại bước 25K; phải mất hai lần thử mới hoàn thiện logic nạp trạng thái.
Lịch huấn luyện, optimizer và clipping tạo thành tam giác ổn định. Mất một đỉnh, ANDREA sẽ lặp lại sự sụp đổ ở phiên bản v1.