ai-206Đọc toàn bộ đề miễn phí

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:

AITrung bình30 phút

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ủ đề

cosine-annealingwarmuplearning-rate-schedulellm-pretraining

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ước step theo công thức trên.
  • step(self) -> float: tăng biến đếm bước nội bộ current_step lê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ế.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.