Cài đặt Cosine Annealing Learning Rate Scheduler với Linear Warmup cho LLM
Trong tiền huấn luyện mô hình ngôn ngữ lớn (như GPT-3, Chinchilla, Llama 3), chiến lược điều chỉnh learning rate thống trị là Linear Warmup kết hợp Cosine Annealing Decay:
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: vanilla-sgd-learning-rate-schedule.
Nội dung đề bài
Mô tả bài toán
Trong tiền huấn luyện mô hình ngôn ngữ lớn (như GPT-3, Chinchilla, Llama 3), chiến lược điều chỉnh learning rate thống trị là Linear Warmup kết hợp Cosine Annealing Decay:
Cho tốc độ học cơ sở ηmax, tốc độ học cực tiểu ηmin, tổng số bước T, và số bước khởi động Twarmup:
- Pha Linear Warmup (t ≤ Twarmup):
ηt = ηmin + (ηmax - ηmin) · tTwarmup (Ở bước t=0, η0 = ηmin; ở bước t=Twarmup, ηt = ηmax).
- Pha Cosine Decay (Twarmup < t ≤ T):
progress = t - TwarmupT - Twarmup ηt = ηmin + 12 (ηmax - ηmin) ( 1 + cos(π · progress) )
- Pha Post-Training (t > T):
ηt = ηmin
Hãy cài đặt lớp CosineWarmupScheduler:
__init__(self, base_lr: float, warmup_steps: int, total_steps: int, min_lr: float = 0.0):- Kiểm tra điều kiện: 0 ≤ min_lr < base_lr, 0 < warmup_steps < total_steps. Nếu vi phạm, raise
ValueError. get_lr(self, step: int) -> float: tính và trả về learning rate tại bướcsteptheo công thức trên.step(self) -> float: tăng biến đếm bước nội bộcurrent_steplên 1 và trả về learning rate mới.
Input
- Lớp
CosineWarmupScheduler(base_lr,warmup_steps,total_steps,min_lr): Khởi tạo đối tượng với các tham số, trọng số hoặc cấu hình tương ứng.
Output
- Các phương thức của
CosineWarmupScheduler: Trả về kết quả tính toán hoặc cập nhật trạng thái nội bộ của đối tượng.
Ràng buộc
- Thời gian chạy tối đa: 6000ms.
- Giới hạn bộ nhớ: 512MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
sched = CosineWarmupScheduler(base_lr=1.0, warmup_steps=100, total_steps=1000, min_lr=0.1)Output
<solution.CosineWarmupScheduler object at 0x0000021F6C688D10>Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
sched = CosineWarmupScheduler(base_lr=0.01, warmup_steps=10, total_steps=100, min_lr=0.001)
lr_seq = [sched.step() for _ in range(100)]Output
[0.0019000000000000002, 0.0028000000000000004, 0.0037, 0.004600000000000001, 0.0055000000000000005, 0.0064, 0.0073, 0.008200000000000002, 0.0091, 0.010000000000000002, 0.009997258721585932, 0.00998903822616921, 0.00997534852915723, 0.0099562063093370... (truncated)Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
