Tự Xây Dựng Mô Hình Ngôn Ngữ Nhỏ (Tiny LLM) Với Python: Hiểu Rõ Tokenization, Attention và Inference
Bài viết hướng dẫn cách xây dựng mô hình ngôn ngữ nhỏ sử dụng Python chưa đến 300 dòng, giúp hiểu sâu về cơ chế Tokenization, Attention và quá trình tạo văn bản. Đồng thời giới thiệu phương pháp kiểm thử AI API bằng Apidog giúp tăng độ tin cậy trong tích hợp và phát triển ứng dụng.

Tự Xây Dựng Mô Hình Ngôn Ngữ Nhỏ (Tiny LLM) Với Python: Hiểu Rõ Tokenization, Attention và Inference
Bài viết chia sẻ cách xây dựng một mô hình ngôn ngữ nhỏ (LLM nhỏ) sử dụng Python với chưa đến 300 dòng code, giúp các nhà phát triển hiểu rõ cơ chế hoạt động của các thành phần như tokenizer, attention, và quá trình tạo văn bản (inference). Ngoài ra, bài viết cũng giới thiệu cách sử dụng công cụ Apidog để kiểm thử API AI hiệu quả, tối ưu hóa việc tích hợp và phát triển các ứng dụng AI.
Tại sao lại quan tâm đến mô hình ngôn ngữ nhỏ?
Rất nhiều nhà phát triển hiện nay xem mô hình ngôn ngữ như một “hộp đen” – đưa input vào, nhận output ra mà không biết rõ bên trong hoạt động thế nào. Điều này đôi khi gây khó khăn khi gặp lỗi hoặc muốn tùy chỉnh sâu.
Mô hình ví dụ trong bài là GuppyLM, một Transformer có 8.7 triệu tham số, viết hoàn toàn bằng Python trong một file duy nhất, và có thể được huấn luyện nhanh trên GPU phổ thông. Mục tiêu là giúp bạn hiểu cách hoạt động nội tại của LLM thay vì cố cạnh tranh với những mô hình khổng lồ như GPT-4.
Các đặc trưng của LLM “nhỏ”
- Kích thước từ 1 triệu đến vài chục triệu tham số (ví dụ: GuppyLM 8.7M, nanoGPT 124M)
- Ưu điểm: dễ huấn luyện trên laptop, tiện sửa lỗi và tùy chỉnh source code, rất phù hợp để học tập
- Hạn chế: năng lực suy luận còn đơn giản, chưa phù hợp với việc tạo ra văn bản dài hoặc phức tạp cao
- Điểm mấu chốt: giá trị của LLM nhỏ nằm ở khả năng hiểu cơ chế hoạt động, chứ không phải ở chất lượng kết quả đầu ra
Những thành phần chính trong mô hình ngôn ngữ
Bộ phân tách token (Tokenizer)
- Chuyển chuỗi văn bản thành các ID số nguyên, ví dụ
"Hello, world!"thành[15496, 11, 995, 0] - Số token nhiều hơn đồng nghĩa với chi phí tính toán và độ trễ tăng
- Mô hình lớn như GPT-4 sử dụng kỹ thuật Byte Pair Encoding (BPE), trong khi LLM nhỏ có thể dùng kiểu phân tách cấp ký tự
Lớp embedding
- Chuyển token ID thành vector có thể học được
- Thêm thông tin vị trí (positional embedding) để mô hình nhận biết thứ tự trong chuỗi đầu vào
Khối Transformer
- Self-attention: mỗi token tham chiếu đến các token khác trong chuỗi để hiểu bối cảnh
- Feed-forward network: mạng nơ-ron đa tầng (MLP) trong từng khối để xử lý thêm thông tin
- Ví dụ GuppyLM dùng 6 attention heads và 6 layers
Lớp đầu ra (Output head)
- Lớp linear để dự đoán token tiếp theo với chiều kích bằng kích thước từ điển
- Áp dụng softmax để chọn token theo xác suất trong quá trình sinh văn bản
Cách triển khai Tiny LLM trong Python
Bài viết trình bày đầy đủ code dùng PyTorch để tạo mô hình, bao gồm:
- Định nghĩa cấu trúc self-attention đa đầu
- Các block transformer nối tiếp
- Embedding token và position
- Lớp output dự đoán token tiếp theo
Mô hình có kích thước khoảng 1.2 triệu tham số, đủ nhỏ để chạy và huấn luyện trên laptop hoặc GPU phổ thông.
Vòng lặp huấn luyện
- Dữ liệu vào là tensor chứa token IDs, input được lấy là chuỗi token ngoại trừ token cuối cùng
- Target là chuỗi token hợp lệ dịch sang phải 1 vị trí
- Dùng AdamW tối ưu, tính loss cross-entropy và cập nhật tham số
- In loss định kỳ để theo dõi quá trình
Sinh văn bản (Inference)
- Chuỗi token đầu vào được đưa vào mô hình
- Sinh ra token mới theo phương pháp sampling kết hợp top-k và điều chỉnh bằng temperature để kiểm soát độ ngẫu nhiên
- Sinh dần từng token mới, cắt ngắn chuỗi đầu vào về độ dài max context phù hợp
Bài học về hành vi của AI API
- Temperature và sampling là cơ chế điều chỉnh xác suất token, không phải phép màu
- Context window là giới hạn thực tế về số token mô hình nhớ được, token cũ sẽ bị loại bỏ nếu vượt quá
- Streaming token tương đương với tạo token từng bước, không khác gì kiến trúc thường
- Việc tạo ra output có cấu trúc phức tạp rất khó vì cần chọn đúng token tại từng bước, thường phải dựa vào thư viện bổ trợ để giới hạn phân phối xác suất
Kiểm thử tích hợp AI API với Apidog
- Dùng Test Scenario tại endpoint như
/v1/chat/completions - Thiết lập các assertion cho các trường dữ liệu như
finish_reasonhaytotal_tokens - Mô phỏng phản hồi multi-turn để kiểm tra ứng dụng xử lý tốt các lần gọi nối tiếp
- Sử dụng Smart Mock để giả lập trường hợp đặc biệt như timeout, lọc nội dung
- Thực hiện test mà không tiêu tốn credits API thật
Các kỹ thuật nâng cao
Quantization
- Giảm độ chính xác số (float32 → int8/int4) để tiết kiệm RAM và tăng tốc, thường giảm tới 4-8 lần bộ nhớ tiêu thụ mà gần như không ảnh hưởng chất lượng
KV Cache
- Bộ nhớ đệm key và value của token trước đó trong inference
- Giúp tính toán attention nhanh hơn khi sinh từng token mới, tối ưu cho streaming
Tiny LLM và API production: áp dụng khi nào?
| Trường hợp sử dụng | Tiny LLM | API production |
|---|---|---|
| Hiểu cơ chế mô hình | Tốt nhất | Quá mức cần thiết |
| Prototype app | Chưa đủ chất lượng | Tốt nhất |
| Dữ liệu cá nhân, nhạy cảm | Tùy chọn tốt | Tùy nhà cung cấp |
| Triển khai offline/edge | Có thể | Không thể |
| Chi phí thấp, số lượng lớn | Có thể nhưng đánh đổi | Đắt khi mở rộng |
| Nhiệm vụ reasoning phức tạp | Không làm được | Cần thiết |
Hầu hết nhà phát triển nên dùng API cho sản xuất, đồng thời chạy thử Tiny LLM để hiểu sâu bên trong. Hai hướng này không đối nghịch mà bổ trợ cho nhau.
Kết luận
Việc xây dựng LLM nhỏ chỉ mất một vài ngày cuối tuần nhưng sẽ mang lại cái nhìn sâu sắc về cách hoạt động của các mô hình LLM hiện đại, từ GuppyLM cho đến GPT-4. Đây là kiến thức giá trị giúp debug, tùy chỉnh sampling và thiết kế test assertion cho AI API hiệu quả hơn.
Bạn có thể bắt đầu với GuppyLM, tùy biến bộ dữ liệu và xem kỹ vòng lặp tạo văn bản để hiểu hơn cách hoạt động production thực tế. Công cụ như Apidog cũng giúp bạn nâng cao chất lượng kiểm thử AI API như backend thông thường.
Hỏi đáp
LLM nhỏ cần bao nhiêu tham số để tạo câu có ý nghĩa?
Khoảng 10 triệu đến 50 triệu tham số với bộ dữ liệu phù hợp sẽ tạo ra câu có ngữ cảnh và ý nghĩa; dưới 1 triệu tham số thường sinh output không mạch lạc. GuppyLM 8.7M có thể dùng cho hội thoại ngắn trong phạm vi chủ đề đã huấn luyện.
Có thể chạy LLM nhỏ mà không dùng GPU không?
Có thể, các mô hình dưới 100 triệu tham số có thể chạy inference trên CPU, dù tốc độ chậm hơn. Mô hình 1.2 triệu tham số như ví dụ trong bài có thể chạy nhanh trên laptop.
Nên dùng bộ dữ liệu nào để huấn luyện?
Ở cấp độ phân tách ký tự, có thể dùng Project Gutenberg, Wikipedia hoặc bất kỳ corpus văn bản nào. GuppyLM sử dụng tập hội thoại 60.000 đoạn trên HuggingFace. Với mô hình tạo mã nguồn, dùng The Stack hoặc CodeParrot.
Sự khác biệt giữa temperature và top-k sampling?
Temperature điều chỉnh độ “phẳng” hoặc “nhọn” của phân phối logits, điều khiển mức độ ngẫu nhiên. Top-k sampling giới hạn việc chọn token chỉ trong số k token có xác suất cao nhất trước khi áp softmax. Hai kỹ thuật thường dùng phối hợp để kiểm soát đầu ra.
Tại sao LLM đôi khi lặp lại?
Mô hình gán xác suất cao cho các token xuất hiện gần đây trong context. Các API thường có tham số repetition_penalty để giảm hiện tượng lặp này.
Thời gian huấn luyện LLM nhỏ mất bao lâu?
Mô hình ví dụ có thể huấn luyện trong khoảng 2 giờ trên GPU phổ biến như RTX 3060. Các mô hình lớn hơn (trên 100M tham số) cần nhiều GPU và thời gian hàng ngày.
Có thể chuyển từ LLM nhỏ sang API production không?
Có thể xuất mô hình dạng GGUF để chạy với llama.cpp hoặc llama-server, tạo endpoint tương thích OpenAI API. Bạn có thể dùng Apidog để thử nghiệm.
Làm sao mô hình xử lý context window vượt quá training window?
Các kỹ thuật như RoPE, sliding window và retrieval-augmented generation giúp mở rộng context hiệu quả mà không làm thay đổi cấu trúc Transformer chính.
Hy vọng bài viết giúp bạn có cái nhìn toàn diện và thực tiễn về cách xây dựng và ứng dụng mô hình ngôn ngữ nhỏ, đồng thời kỹ thuật kiểm thử API AI mạnh mẽ.
Bài viết liên quan

Phần mềm
Anthropic ra mắt Claude Opus 4.7: Nâng cấp mạnh mẽ cho lập trình nhưng vẫn thua Mythos Preview
16 tháng 4, 2026

Công nghệ
Qwen3.6-35B-A3B: Quyền năng Lập trình Agentic, Nay Đã Mở Cửa Cho Tất Cả
16 tháng 4, 2026

Công nghệ
Spotify thắng kiện 322 triệu USD từ nhóm pirate Anna's Archive nhưng đối mặt với bài toán thu hồi
16 tháng 4, 2026
