Gradient Descent in GPT-4 Training
Gradient Descent trong Huấn luyện GPT-4
Công ty nào đang ứng dụng Gradient Descent?
GPT-4 (mô hình ngôn ngữ lớn thế hệ thứ 4 của OpenAI) có hàng trăm tỉ tham số (parameter — giá trị mà mô hình học được). Để huấn luyện mô hình này, OpenAI cần một thuật toán có thể tìm giá trị tối ưu cho tất cả tham số cùng lúc — trong không gian có hàng trăm tỉ chiều.
Thuật toán đó là gradient descent (giảm gradient — di chuyển theo hướng giảm nhanh nhất của hàm mất mát). Cụ thể, OpenAI dùng biến thể AdamW (Adam with decoupled Weight decay — thuật toán tối ưu thích ứng kết hợp suy giảm trọng số) — tiêu chuẩn vàng cho huấn luyện Transformer — kết hợp lịch trình tốc độ học (learning rate schedule — cách thay đổi bước nhảy theo thời gian) để hội tụ ổn định.
Vấn đề công ty cần giải quyết
Bề mặt mất mát (loss surface — đồ thị hàm mất mát trong không gian tham số) của mô hình hàng trăm tỉ tham số cực kỳ phức tạp: đầy cực tiểu cục bộ (local minimum), điểm yên ngựa (saddle point), và vùng phẳng (plateau). SGD cơ bản (Stochastic Gradient Descent — giảm gradient ngẫu nhiên) có thể bị mắc kẹt hoặc dao động mãi không hội tụ.
Thêm vào đó, huấn luyện phân tán trên hàng ngàn GPU tạo ra thách thức đồng bộ: gradient tính trên mỗi GPU phải được tổng hợp chính xác, learning rate phải phối hợp để mô hình không phân kỳ (diverge — mất mát tăng thay vì giảm).
Cách Gradient Descent giải quyết vấn đề
Tính gradient trên mini-batch.Dữ liệu huấn luyện được chia thành các mini-batch (lô nhỏ — nhóm mẫu dữ liệu xử lý cùng lúc). Mỗi GPU xử lý một phần batch, tính gradient cục bộ (local gradient — hướng giảm mất mát dựa trên dữ liệu cục bộ). Gradient từ tất cả GPU được tổng hợp qua all-reduce (phép giao tiếp tập thể — tổng hợp kết quả từ nhiều GPU).
AdamW cập nhật tham số. AdamW duy trì hai trạng thái cho mỗi tham số: (1) momentum (trung bình động bậc 1 của gradient — giúp vượt qua vùng phẳng) và (2) ước lượng phương sai (trung bình động bậc 2 — tự điều chỉnh bước nhảy cho mỗi tham số). Đặc biệt, AdamW tách riêng weight decay (suy giảm trọng số — phạt giá trị lớn) khỏi gradient update, cải thiện generalization (khả năng tổng quát hóa — hoạt động tốt trên dữ liệu mới).
Learning rate warmup rồi decay (khởi động rồi suy giảm). Giai đoạn warmup: learning rate tăng tuyến tính từ gần 0 đến đỉnh (peak) trong khoảng 750 triệu token đầu tiên. Điều này tránh gradient quá lớn khi trọng số còn ngẫu nhiên. Sau đó, learning rate giảm dần theo cosine schedule (lịch trình cosine) xuống còn ~10% giá trị đỉnh. Peak learning rate cho LLM lớn thường trong khoảng 4×10^{-4} đến 6×10^{-4}.
Distributed training với ZeRO.Để tiết kiệm bộ nhớ, hệ thống dùng DeepSpeed ZeRO (Zero Redundancy Optimizer — tối ưu không dư thừa) chia trạng thái optimizer, gradient và tham số mô hình qua nhiều GPU. Mỗi GPU chỉ giữ một phần — giảm bộ nhớ gấp nhiều lần so với sao chép toàn bộ.
Gradient clipping giữ ổn định.Gradient được cắt ngưỡng (gradient clipping — giới hạn độ lớn gradient) để tránh bùng nổ gradient (exploding gradient — gradient quá lớn gây mất ổn định). Thường cắt ở norm = 1.0. Bước này đặc biệt quan trọng cho mô hình cỡ lớn với batch size hàng triệu token.
Con số thật
- AdamW dùng weight decay tách riêng, cải thiện generalization so với Adam chuẩn cho Transformer [1]
- Learning rate warmup trong ~750M token đầu, sau đó decay theo cosine xuống 10% giá trị đỉnh [2]
- Chinchilla (2022) chỉ ra: mô hình tối ưu cần ~20 token/tham số — gradient descent phải hiệu quả ở mọi bước [3]
- Peak learning rate cho LLM lớn nằm trong khoảng 4e-4 đến 6e-4 khi dùng AdamW [4]
Nếu không có Gradient Descent, app sẽ ra sao?
Nếu dùng SGD thuần thay AdamW, mô hình hàng trăm tỉ tham số sẽ cần tinh chỉnh learning rate thủ công cho từng nhóm tham số — gần như bất khả thi. AdamW tự thích ứng bước nhảy cho mỗi tham số, giúp huấn luyện ổn định hơn đáng kể.
Không có learning rate schedule (warmup + decay), mô hình dễ phân kỳ ở giai đoạn đầu hoặc hội tụ quá chậm ở giai đoạn sau. Không có gradient clipping, một batch “xấu” duy nhất có thể phá hỏng toàn bộ quá trình huấn luyện đã tốn hàng triệu đô-la tính toán.