Mở hộp đen của mô hình ngôn ngữ lớn: token, một bước sinh chữ, vì sao token đầu tiên chậm, huấn luyện, phục vụ nhiều người, từ mô hình tới ứng dụng, và harness quanh agent hiện nay (skills, subagent, MCP, hooks), kèm thí nghiệm chạy được.
Mô hình ngôn ngữ không đọc chữ mà đọc số. Từ byte UTF-8 của tiếng Việt, tự viết một tokenizer BPE, mở tokenizer của GPT-4, GPT-4o, Qwen và DeepSeek, rồi đo xem tiếng Việt tốn bao nhiêu token và điều đó ảnh hưởng tới giá, tốc độ và cách stream ra sao.
Viết lại Qwen2.5 bằng khoảng 70 dòng PyTorch: embedding, attention, RoPE, MLP, rồi nạp trọng số thật và cho ra đúng từng token như transformers. Kèm temperature, top-p, repetition penalty, và vì sao vòng sinh chữ chậm dần.
Vì sao token đầu tiên đến chậm còn các token sau đều đều, KV cache làm gì, và vì sao khi sinh chữ, thứ giới hạn tốc độ là băng thông bộ nhớ chứ không phải sức tính. Thêm KV cache vào GPT tự viết, đo, và thử số thực 16-bit.
Trọng số của mô hình từ đâu ra? Huấn luyện một GPT 3 triệu tham số trên Wikipedia tiếng Việt trong một phút bằng CPU: dữ liệu, tokenizer, hàm loss, vòng lặp huấn luyện, xem chữ dần thành hình, và đo mô hình như một thuật toán nén.
Một bản mô hình phục vụ nhiều người thế nào: batching cho 16 người gần như giá của một, continuous batching cho slot trống vào ngay, KV cache quyết định bao nhiêu người vừa bộ nhớ, và lượng tử hóa từ 32 xuống 8, 4, 3, 2 bit thì mất gì.
Một ứng dụng LLM là văn bản bao quanh mô hình. Cho Qwen gọi công cụ, viết vòng lặp agent, rồi trả lời câu hỏi về chính các bài viết trên trang này bằng RAG với BM25, kèm những chỗ mô hình nhỏ làm sai và cái giá của mỗi kỹ thuật.
Vòng lặp agent 20 dòng ở bài 6 và một công cụ như Claude Code khác nhau ở phần bao quanh: harness. Tự viết một MCP server theo đặc tả 2026-07-28, đo xem skills, subagent và định nghĩa công cụ tốn bao nhiêu ngữ cảnh, và dùng hooks làm hàng rào thật.