$ cd ./series/cach-hoat-dong-cua-llm/
<- tất cả chuỗi bài

Cách hoạt động của LLM

Chuỗi bài đi từ kiến trúc Transformer đến các lớp hệ thống dựng bên trên nó. Mỗi phần đứng riêng được, nhưng đọc tuần tự thì thấy rõ vì sao từng khái niệm lại xuất hiện đúng ở chỗ đó.

./series/cach-hoat-dong-cua-llm/đang viết
bắt đầu từ phần 1 ->
tiến độ của bạn
0/ 16 phần đã đăng
total16 phần · ~568 phút
nextphần 1 — Transformer từ A đến Z: Hiểu nền tảng của LLM
  1. phần 12026-09-0247 phút
    Transformer từ A đến Z: Hiểu nền tảng của LLM

    Một mental model có hệ thống về Transformer: từ token và chi phí token tiếng Việt, qua Attention, residual, FFN và RoPE, tới ba họ kiến trúc, MoE và toàn bộ đường đi của inference.

  2. phần 22026-09-0530 phút
    Sử dụng Transformers: từ pipeline() đến triển khai LLM tối ưu

    pipeline() chỉ là một lớp abstraction mỏng. Bài này mở nó ra: tokenizer, model head, logits, padding và attention mask, rồi đi tiếp đến device, dtype, KV cache, continuous batching, quantization và cách chọn giữa vLLM, SGLang và llama.cpp khi TGI đã bị archive.

  3. phần 32026-09-0530 phút
    Fine-tuning một pretrained model: từ dữ liệu thô đến training loop

    Hai bài đầu nói về một model đã biết sẵn. Bài này nói về cách thay đổi những gì nó biết: split và rò rỉ dữ liệu, padding và chi phí thật của một tensor, cross-entropy, backpropagation, AdamW, learning-rate schedule, và cách đọc learning curve để phân biệt overfitting với underfitting.

  4. phần 42026-09-0532 phút
    Tokenization trong LLM: từ văn bản con người đọc được đến những con số model xử lý được

    Ba bài trước đều bắt đầu từ chỗ văn bản đã thành số. Bài này quay lại bước đó: normalization, pre-tokenization, subword segmentation, vocabulary và special token - lớp giao diện rời rạc quyết định context window, chi phí, và cả việc một ngôn ngữ có bị đánh thuế token hay không.

  5. phần 52026-09-0733 phút
    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.

  6. phần 62026-09-0732 phút
    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.

  7. phần 72026-09-0728 phút
    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ả.

  8. phần 82026-10-0228 phút
    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ũ.

  9. phần 92026-10-0235 phút
    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.

  10. phần 102026-10-0537 phút
    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.

  11. phần 112026-10-0538 phút
    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ó.

  12. phần 122026-10-0640 phút
    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.

  13. phần 132026-10-0840 phút
    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²).

  14. phần 142026-10-0941 phút
    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ả.

  15. phần 152026-10-1439 phút
    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.

  16. phần 162026-10-1938 phút
    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.

chuỗi bài