$ tree ./blog/./gen-ai/llm-fundamentals/

Đề mục cách hoạt động của llm

Nền tảng bên dưới mọi LLM: token, attention, kiến trúc Transformer và đường đi của một câu trả lời.

<- tất cả bài viết
hiển thị 1-12 / 16 bàitrang 1 / 2
012026-10-19

Vì sao LLM sai và đo nó thế nào: hallucination, calibration, benchmark và LLM-as-judge

Trong SimpleQA, GPT-4o-mini trả lời sai 90,5% số câu và chỉ từ chối 0,9%. Bài này giải thích vì sao đó không phải lỗi ngẫu nhiên: fact chỉ xuất hiện một lần trong dữ liệu là nơi model calibrated buộc phải bịa, và phần lớn benchmark chấm đúng/sai nên thưởng cho việc đoán. Sau đó là calibration và các cách lấy độ tự tin, bốn thành phần của một con số benchmark (năng lực, phần đã nhìn thấy, độ nhạy với cách hỏi, nhiễu), contamination nhìn từ phía người đo, và thiên kiến của LLM-as-judge. Code đo calibration của Qwen3-0.6B trên 200 câu MMLU, mô phỏng hai luật chấm điểm, và tính error bar cho phép so sánh hai model.

#llm./gen-ai/llm-fundamentals/
38 phút
022026-10-14

Reasoning model và test-time compute: khi nào "nghĩ lâu hơn" thì đáng

DeepSeek-R1-Zero tăng từ 15,6% lên 71,0% ở AIME 2024 chỉ nhờ RL với reward đúng/sai, và câu trả lời tự dài ra trong lúc train. Bài này giải thích vì sao viết ra các bước trung gian giúp model tính được nhiều hơn, ba cách tiêu compute lúc trả lời (sinh nhiều lần, nghĩ một chuỗi dài, tìm kiếm có chấm điểm từng bước), bên trong GRPO và vì sao một nhóm toàn đúng không dạy được gì, cuộc tranh luận RL dạy cái mới hay chỉ chọn lọc cái có sẵn, và giá thật của thinking tokens. Code chạy Qwen3-0.6B bật và tắt thinking trên GSM8K, mô phỏng pass@k và bầu đa số, và tính advantage GRPO bằng PyTorch thuần.

#llm./gen-ai/llm-fundamentals/
39 phút
032026-10-09

Mixture of Experts và các kiến trúc thay thế: router, expert và Mamba

DeepSeek-V3 có 671B tham số nhưng mỗi token chỉ chạy khoảng 37B, còn Qwen3-Next xếp ba layer Gated DeltaNet trên mỗi layer attention. Bài này mở hộp router: nó chọn expert thế nào, vì sao để tự nhiên thì nó dồn hết vào vài expert, và ba cách cân bằng tải từ auxiliary loss đến bias không cần loss. Sau đó bài tính lại roofline cho MoE, rồi đi sang hướng còn lại: thay attention bằng một state cố định, vì sao model thuần SSM yếu ở việc nhớ chính xác, và vì sao hybrid thắng. Code đếm tham số của chín model thật từ header safetensors, viết một layer MoE bằng PyTorch thuần, và chứng minh ba cách tính một SSM cho cùng kết quả.

#llm./gen-ai/llm-fundamentals/
41 phút
042026-10-08

Inference ở quy mô lớn: KV cache, prefill và decode

Decode một token ở batch 1 làm khoảng 1 FLOP cho mỗi byte đọc vào, trong khi RTX 2080 Ti cần gần 90 FLOP mỗi byte mới dùng hết compute. Bài này lấy con số đó làm trục: mọi kỹ thuật phục vụ LLM, từ batching, GQA, PagedAttention đến FlashAttention và speculative decoding, đều trả lời một câu hỏi duy nhất: đọc ít byte hơn cho mỗi token, hoặc làm nhiều việc hơn cho mỗi byte đã đọc. Bài tính KV cache từ config.json của năm model thật, viết lại online softmax bằng PyTorch thuần, và chỉ ra context dài đắt chủ yếu ở bộ nhớ chứ không phải ở O(n²).

#llm./gen-ai/llm-fundamentals/
40 phút
052026-10-06

Fine-tuning tiết kiệm: LoRA, QLoRA và quantization

Full fine-tuning một model 8B cần khoảng 128 GB chỉ cho model states. Bài này tách con số đó ra từng phần rồi chỉ ra LoRA cắt phần nào, quantization cắt phần nào. Bài đo SVD của ΔW giữa Qwen2.5 base và Instruct, gắn LoRA bằng PEFT, train QLoRA thật trên một RTX 2080 Ti 11 GB, tự dựng bảng NF4 và so INT8, INT4, NF4 trên văn bản tiếng Anh và tiếng Việt. Ý xuyên suốt: hai núm vặn, mỗi núm cắt một phần bộ nhớ, và cái giá phải đo trên chính tác vụ của mình.

#llm./gen-ai/llm-fundamentals/
40 phút
062026-10-05

Post-training: từ base model đến assistant

Base model dự đoán token rất giỏi nhưng không biết trả lời câu hỏi. Bài này chạy cùng một câu hỏi qua base model và instruct model, in ra chat template và loss mask của SFT, dẫn từng bước từ Bradley–Terry tới mục tiêu reward trừ KL rồi tới loss DPO, tính loss DPO trên một model thật, và đặt pipeline của Llama 2, Llama 3, Tülu 3 cạnh nhau. Ý xuyên suốt: post-training gần như không thêm tri thức, nó định hình cách model dùng tri thức đã có.

#llm./gen-ai/llm-fundamentals/
38 phút
072026-10-05

Pretraining: next-token prediction và scaling laws

Toàn bộ pretraining chỉ tối ưu một thứ: cross-entropy của token kế tiếp. Bài này tính loss, perplexity và bits-per-byte trên một model thật, đọc lại scaling laws của Kaplan và Chinchilla cùng các bản sửa sau đó, tính tay ngân sách compute của Llama 3 rồi đối chiếu với số Meta công bố, giải thích vì sao bộ nhớ buộc ta phải chia model lên nhiều GPU, và cách nhận ra một lần train đang hỏng.

#llm./gen-ai/llm-fundamentals/
37 phút
082026-10-02

Bên trong một Transformer block: FFN, residual stream và normalization

Attention chỉ là một nửa của Transformer block, và còn không phải nửa nặng hơn. Bài này đi qua nửa còn lại: residual stream như một bus chung, FFN như bộ nhớ key–value, GELU và SwiGLU, LayerNorm, RMSNorm và chỗ đặt norm, rồi đếm tham số và FLOPs của Llama 3.1 8B để thấy vì sao con số FFN ≈ 2/3 đã cũ.

#transformer./gen-ai/llm-fundamentals/
28 phút
092026-10-02

Từ logits đến câu trả lời: decoding và sampling

Model chỉ trả ra logits, còn việc chọn token là của bước decoding. Bài này đọc source của Hugging Face Transformers và vLLM để xem logits đi qua những bước nào và theo thứ tự nào, chạy temperature, top-k, top-p, min-p trên một model thật, giải thích repetition penalty và constrained decoding cho JSON, rồi trả lời vì sao temperature 0 vẫn chưa chắc ra cùng một câu trả lời.

#llm./gen-ai/llm-fundamentals/
35 phút
102026-09-07

Attention và Self-Attention: cơ chế khiến một token hiểu được ngữ cảnh

Từ bank trong river bank và bank account có cùng một vector ở cửa vào model, nhưng nghĩa thì khác hẳn. Bài này đi qua cơ chế sửa chuyện đó - tra cứu mềm bằng Query, Key, Value; bốn bước của scaled dot-product attention; mask; multi-head; và cái giá bậc hai mà context dài phải trả.

#attention./gen-ai/llm-fundamentals/
28 phút
112026-09-07

Dataset cho LLM: từ dữ liệu thô đến những training sample model thật sự đọc

Một trang web không phải training sample. Một cuốn sách cũng không. Bài này đi hết quãng đường ở giữa - thu thập, trích xuất, chuẩn hoá, lọc, dedup, decontaminate, trộn domain, tokenize, cắt chuỗi - để thấy vì sao dataset không phải công việc phụ bên ngoài model, mà là một phần của chính bài toán xây LLM.

#dataset./gen-ai/llm-fundamentals/
33 phút
122026-09-07

Embedding trong LLM: từ token ID đến vector mà Transformer tính toán được

Token ID 8812 không lớn hơn ID 13, cũng không gần ID 8813. Nó chỉ là một chỗ ngồi được đánh số. Bài này đi qua chặng biến những số nguyên vô nghĩa đó thành các vector có cấu trúc - phép tra bảng, không gian học được từ phân bố, thông tin vị trí, residual stream, và đường quay ngược về vocabulary.

#embedding./gen-ai/llm-fundamentals/
32 phút