Những gì Một Mô hình Ngôn ngữ Dự đoán
Một Động cơ Tiếp nối Xác suất
Một mô hình ngôn ngữ nhận một chuỗi các token & gán một phân phối xác suất cho token tiếp theo. Đưa vào the cat sat on the & nó xuất ra xác suất trên toàn bộ từ vựng: xác suất cao cho mat, floor, couch; xác suất thấp cho xylophone, Tuesday.
Lấy mẫu phân phối đó, thêm một token, & đưa lại: vòng lặp đó tạo văn bản từng token một. Tạo tự hồi quy, được đặt tên vì mỗi bước hồi quy trên đầu ra trước đó của chính nó.
Ba Con Số Xác Định Một Mô Hình Ngôn Ngữ
Kích thước từ vựng (V). Số lượng token riêng biệt mà mô hình có thể tạo ra. ANDREA-12M sử dụng 4.353 token; ANDREA-120M sử dụng 8.449.
Cửa sổ ngữ cảnh (T). Số lượng token vừa trong một lần forward pass. Các mô hình ANDREA sử dụng T = 1.024.
Số lượng tham số (P). Số lượng trọng số đã học nằm bên trong. 12M, 120M, & 480M đặt tên cho một họ theo P.
Một Gia Đình Ba Thành Viên
| Biến thể | d_model | Heads | Layers | Context | Params |
|---|---|---|---|---|---|
| ANDREA-12M | 384 | 12 | 6 | 1024 | 12.8M |
| ANDREA-120M | 768 | 12 | 12 | 1024 | ~120M |
| ANDREA-480M | 1536 | 24 | 16 | 1024 | ~480M |
Ba núm vặn mở rộng quy mô: d_model (chiều rộng của mọi vector nội bộ), n_layer (độ sâu của các khối transformer xếp chồng), n_head (các phép chiếu attention song song). Từ vựng & ngữ cảnh giữ nguyên trong toàn bộ họ.
Đọc Bảng Gia Đình
Tại Sao Nhỏ Bé Quan Trọng
Ràng buộc như Sự Giải phóng
Các mô hình ngôn ngữ lớn với hàng trăm tỷ tham số yêu cầu hàng nghìn GPU, tập dữ liệu độc quyền, & ngân sách doanh nghiệp. Ít người được huấn luyện một mô hình như vậy. Ít người được sửa chữa một mô hình như vậy.
Một mô hình ngôn ngữ nhỏ trên một GPU lật ngược điều đó. Bất kỳ ai có 4090 (hoặc 3060) đều có thể tái tạo ANDREA từ dữ liệu mở. Công thức huấn luyện cũng chính là thẻ mô hình. Mã mở, trọng số mở, dữ liệu mở; nguồn gốc đầy đủ trong 72 giờ tính toán.
Dung lượng vs Chất lượng
Các mô hình nhỏ hơn không thể ghi nhớ toàn bộ tập huấn luyện của chúng. ANDREA-12M, với 12.8M tham số, thiếu dung lượng để lưu trữ nội dung sự kiện; nó học cấu trúc lượt, phân phối từ vựng, & hình dạng phản hồi. ANDREA-120M, với dung lượng gấp 10 lần, học ghi nhớ sự kiện, tính mạch lạc đa đoạn, & độ rộng lĩnh vực (đã được xác minh qua chấm điểm bên ngoài ở mức 9.5/10 trên các mẫu sinh học & xử lý tín hiệu).
Thông điệp chính: dung lượng đặt ra một giới hạn trên. Chương trình học quyết định liệu giới hạn đó có được đạt tới hay không. Các hoạt động 14-23 bao quát chương trình học. [TITLE decoder_only/]
Ba Biến Thể Transformer
Encoder, Decoder, Cả Hai
Transformer gốc (Vaswani et al., 2017) đi kèm một encoder & một decoder, được ghép lại với nhau cho việc dịch. Ba dòng kiến trúc phát triển từ bài báo đó:
Chỉ Encoder (dòng BERT). Chú ý hai chiều, không có mặt nạ nhân quả. Tối ưu hóa cho phân loại, không phải sinh. Một token nhìn thấy cả quá khứ & tương lai của nó trong quá trình huấn luyện.
Encoder-decoder (T5, BART). Bộ mã hóa đọc đầu vào; bộ giải mã tạo đầu ra, chú ý đến bộ mã hóa qua cross-attention. Dùng cho dịch thuật, tóm tắt.
Decoder-only (GPT, ANDREA). Causal mask: mỗi token chỉ thấy quá khứ của nó. Được huấn luyện để dự đoán token tiếp theo. Sinh văn bản miễn phí; huấn luyện & suy luận dùng cùng forward pass.
Tại sao Decoder-Only Thắng trên Một GPU
Ba lý do:
1. Mục tiêu duy nhất. Dự đoán token tiếp theo hoạt động trên mọi văn bản. Không cần cặp nguồn/mục tiêu.
2. Đối xứng huấn luyện & suy luận. Cùng một lượt truyền xuôi, không có logic sinh đặc biệt.
3. Đơn giản bộ nhớ. Không có cross-attention; một ngăn xếp các lớp; một luồng kích hoạt.
ANDREA kế thừa lựa chọn decoder-only từ microGPT, vốn kế thừa từ nanoGPT, vốn kế thừa từ GPT-2. Dòng dõi vẫn chuẩn; những gì thay đổi nằm ở tokenization, hạ tầng huấn luyện, & chương trình học.
Tại sao Decoder-Only cho ANDREA
Những gì vừa với 24 GB
Bytes Per Parameter
RTX 4090 đi kèm 24 GB VRAM. Huấn luyện ANDREA-12M sử dụng 1.4 GB. ANDREA-120M sử dụng nhiều hơn đáng kể. Khoảng cách bắt nguồn từ một bài tập kế toán đơn giản: mỗi tham số xuất hiện nhiều lần trong bộ nhớ trong quá trình huấn luyện.
Đối với mỗi tham số, huấn luyện giữ:
- Chính trọng số (1× weight)
- Khoảnh khắc đầu tiên của Adam (m): cùng kích thước với trọng số (1× trọng số)
- Khoảnh khắc thứ hai của Adam (v): cùng kích thước với trọng số (1× trọng số)
- Gradient: cùng kích thước với trọng số (1× trọng số)
- Kích hoạt & tạm thời: ~2-4× trọng số (thay đổi theo batch & ngữ cảnh)
Tổng cộng: ~6-8× số lượng trọng số, tính bằng byte tùy thuộc vào độ chính xác.
Độ Chính Xác Nhân Lên Mọi Thứ
| Độ chính xác | Bytes/tham số | Tổng cho 120M trọng số | Ghi chú |
|---|---|---|---|
| FP32 | 4 | 480 MB | Tiêu chuẩn; an toàn nhất, chậm nhất |
| FP16 | 2 | 240 MB | cuBLAS, bộ nhớ giảm một nửa |
| FP8 E4M3 | 1 | 120 MB | Tensor cores, rủi ro NaN |
Nhân với 6-8× để có dấu chân đầy đủ trong quá trình huấn luyện. ANDREA-120M huấn luyện thoải mái ở FP16 (~2 GB cho trọng số + optimizer + grads); FP8 E4M3 giảm một nửa thời gian huấn luyện trên tensor cores RTX 4090.
Hoạt động 13 (grow_a_language_model_precision) đi sâu vào các sự đánh đổi độ chính xác FP một cách chi tiết.
Kích thước Trạng thái Optimizer của ANDREA-120M
Hai Mươi Lăm Hoạt Động
Hai Nửa
Khóa học này được chia rõ ràng. Nửa đầu bao gồm những gì microGPT đã dạy cho lĩnh vực: một transformer chạy trên một GPU. Nửa sau bao gồm đóng góp thực sự của ANDREA: một chương trình học có khả năng học hỏi.
Nửa 1: Một Transformer trên Một GPU (hoạt động 2-13)
| # | Hoạt Động | Nhịp |
|---|---|---|
| 2 | Bộ phân tách morpheme Harris | phân đoạn phân bố, từ vựng 256+N+1 |
| 3 | Căn chỉnh tokenizer-diet | điểm bão hòa, tại sao 12M lãng phí 63.6% |
| 4 | Embeddings & vị trí | tra cứu token + vị trí học được |
| 5 | Scaled dot-product attention | Q·Kᵀ/√d, mặt nạ nhân quả, softmax |
| 6 | Multi-head attention | chia head, chiếu song song |
| 7 | Khối Transformer | MLP, residuals, layer norm |
| 8 | Cross-entropy & perplexity | log-likelihood, SMMA loss |
| 9 | Backprop trong CUDA tùy chỉnh | quy tắc chuỗi qua microgpt_cuda.cu |
| 10 | AdamW | phân rã trọng số tách rời; tại sao Adam gốc thất bại |
| 11 | LR warmup + cosine decay | dốc tăng 2000 bước; tại sao đỉnh ngay lập tức phá hủy 120M |
| 12 | Gradient clipping | chuẩn L2 toàn cục; 3 nhân CUDA |
| 13 | FP32 / FP16 / FP8 E4M3 | đánh đổi độ chính xác; lõi tensor |
Nửa 2: Chương trình học Tự học (hoạt động 14-24)
| # | Hoạt động | Điểm nổi bật |
|---|---|---|
| 14 | Multi-armed bandits | UCB1, exploration vs exploitation |
| 15 | Điều khiển xúc xắc theo giai đoạn | 7/14/21/28/42 giai đoạn, xúc xắc 1d3/1d4 |
| 16 | Phân bổ phần thưởng & EMA | EMA mất mát theo nguồn, mở rộng 1000× |
| 17 | Giới hạn nguồn & phạt epoch | 1/(1+epochs) ngăn chặn học thuộc lòng |
| 18 | Thưởng phủ sóng | Theo dõi cấp tài liệu, 1.3× độ mới |
| 19 | Khởi động chương trình học | 7 nguồn chat/văn xuôi 20K bước đầu tiên |
| 20 | Lọc theo hình dạng, không phải ký tự | has_system_prompt_shape() |
| 21 | Dừng sớm có cổng coherence | bigram/trigram/word/char auto-halt |
| 22 | Checkpoint, tiếp tục, tín hiệu | format, SIGTERM/SIGUSR1, loss.json continuity |
| 23 | Kiểm tra mẫu & chấm điểm bên ngoài | đọc một run, lãnh thổ 9.5/10 |
| 24 | Từ microGPT đến ANDREA-120M | sụp đổ v1, sửa chữa v2, bản vá v2.5, đánh bóng v3 |
Cộng thêm một người bạn đồng hành: geometry_of_andrea xem mỗi lớp như hình học (không gian embedding, attention như phép chiếu, bề mặt loss, bandit như một đường đi trên simplex rời rạc).
Thứ tự gợi ý
Các hoạt động 2-13 xây dựng một transformer hoạt động. Bỏ qua đến phần 2 nếu bạn đã huấn luyện transformer trước đây; quay lại khi sự tò mò trỗi dậy.
Mỗi hoạt động độc lập càng nhiều càng tốt. Các tham chiếu toán học đề cập đến các hoạt động trước đó bằng tên (xem hoạt động 5: scaled dot-product attention). Các tham chiếu mã chỉ đến microgpt/microgpt_cuda.cu & microgpt/training_proxy.py trong ~/git/uncloseai-cli/.