Huấn luyện mô hình AI (AI model training) là quá trình truyền tải tri thức và cấu trúc ngôn ngữ từ dữ liệu thô vào các tham số của mạng nơ-ron thông qua các giai đoạn tính toán khổng lồ.
Về bản chất, đây không phải là một bước đơn lẻ mà là một pipeline kỹ thuật nhiều tầng, trong đó mục tiêu duy nhất là tối ưu hóa hàng tỷ trọng số (weights) bên trong kiến trúc mạng sao cho chúng dự đoán xác suất của dữ liệu chính xác nhất. Quá trình này ngốn một lượng tài nguyên tính toán kinh khủng, vì nó chạy liên tục trong nhiều tháng trên các cụm GPU lớn để biến những dòng văn bản rời rạc thành một hệ thống có khả năng suy luận.
Trong thực tế vận hành, việc huấn luyện mô hình AI bao gồm ba giai đoạn chính: tiền huấn luyện (pre-training) để học kiến trúc ngôn ngữ, tinh chỉnh (fine-tuning) để định hướng nhiệm vụ, và căn chỉnh (alignment) để đảm bảo an toàn. Mỗi giai đoạn đều yêu cầu những thuật toán tối ưu hóa khác nhau và sự kiểm soát gắt gao về chất lượng dữ liệu. Nhìn từ ghế của người làm hệ thống, tôi thấy đây trước hết là bài toán cân bằng giữa hiệu suất tính toán, băng thông bộ nhớ và độ chính xác của hàm mất mát (loss function), ba thứ hiếm khi cùng tốt một lúc.

Huấn luyện mô hình AI là gì?
Huấn luyện mô hình AI, đặc biệt là các dòng LLM (Large Language Model) hiện nay, hầu hết dựa trên kiến trúc Transformer Decoder. Đây là một mạng nơ-ron sâu vận hành theo cơ chế tự chú ý (self-attention). Mô hình nhận vào một chuỗi token, tức văn bản thô đã được ánh xạ thành các vector embedding cố định, sau đó tính các ma trận Q (Query), K (Key) và V (Value) để xác định mối quan hệ giữa các từ trong ngữ cảnh. Một vấn đề nhức nhối là chi phí tính toán của self-attention tăng theo bình phương độ dài ngữ cảnh (quadratic scaling), khiến việc quản lý bộ nhớ GPU luôn là cơn ác mộng khi xử lý các chuỗi văn bản dài.

Cốt lõi của quá trình này là bài toán dự đoán token tiếp theo (next-token prediction), trong đó mô hình cố gắng đoán xem từ nào sẽ xuất hiện tiếp theo dựa trên phân phối xác suất trên toàn bộ từ điển. Khi dự đoán sai, thuật toán lan truyền ngược (backpropagation) sẽ được kích hoạt để tính đạo hàm của hàm mất mát (thường là Cross-Entropy) so với từng trọng số trong mạng, sau đó cập nhật chúng bằng các bộ tối ưu như Adam. Cứ như thế, sau hàng tỷ lượt lặp, mô hình dần "vỡ" ra các quy luật ngữ pháp và kiến thức thế giới ẩn trong dữ liệu, và điều tôi vẫn thấy khó tin là một trò đoán chữ tầm thường như vậy lại đủ để dựng nên toàn bộ chuyện đó.
Tuy nhiên, đừng nhầm tưởng huấn luyện chỉ là quăng dữ liệu vào máy rồi đợi, bởi vì đây là một pipeline đa tầng. Chúng ta bắt đầu từ một mô hình thô (base model) chỉ biết nối chữ, sau đó qua tinh chỉnh có giám sát (Supervised Fine-Tuning, SFT) để biết nghe lời, và cuối cùng là căn chỉnh (alignment) để biết cư xử. Nếu không quản lý tốt các checkpoint hay gặp lỗi phần cứng giữa chừng, công sức chạy máy cả tháng trời có thể đổ sông đổ bể vì hiện tượng hội tụ kém hoặc mô hình bị "vỡ" trọng số.
Dữ liệu huấn luyện đến từ đâu và được làm sạch thế nào?
Dữ liệu là "nhiên liệu" nhưng cũng là nguồn cơn của mọi rắc rối. Chúng ta thường lấy dữ liệu từ Common Crawl, Wikipedia, các kho học thuật như arXiv, PubMed hoặc các bộ dữ liệu đã lọc như OSCAR và C4. Tuy nhiên, dữ liệu thô từ internet chứa đầy rác, mã độc và lỗi encoding. Để xử lý đống "hỗn độn" này ở quy mô hàng Terabyte, chúng ta không thể dùng CPU thuần túy mà phải dùng các công cụ gia tốc GPU như NVIDIA NeMo Curator, tận dụng thư viện RAPIDS (cuDF, cuML) để tăng tốc xử lý trên đa GPU, nghĩa là phải huy động cả một dàn GPU chỉ để dọn rác trước khi được phép bắt đầu huấn luyện.

Quy trình làm sạch dữ liệu thường chạy qua các trạm kiểm soát nghiêm ngặt:
- Sửa lỗi Unicode và nhận diện ngôn ngữ: Xử lý các ký tự lỗi mã hóa (mojibake) và dùng classifier để tách dữ liệu theo từng ngôn ngữ. Nếu bước này làm ẩu, tokenization sau này sẽ bị lỗi, dẫn đến việc mô hình sinh ra những ký tự vô nghĩa.
- Lọc Heuristic: Sử dụng các quy tắc về độ dài văn bản, tỷ lệ lặp lại n-gram để loại bỏ nội dung rác hoặc văn bản do máy tự sinh. Các đội xử lý dữ liệu thường đặt các ngưỡng (threshold) khắt khe về tỷ lệ ký tự đặc biệt để đảm bảo văn bản đủ "sạch".
- Deduplication (Khử trùng lặp): Đây là bước cực kỳ tốn compute. Có 3 cấp độ: exact (khớp tuyệt đối bằng mã băm), fuzzy (dùng thuật toán MinHash/LSH để tìm các văn bản gần giống nhau), và semantic (dùng embedding để loại bỏ các đoạn trùng lặp về ý nghĩa dù cách viết khác nhau). Việc để dữ liệu trùng lặp sẽ khiến mô hình bị overfitting, lặp lại câu chữ như một cái máy hỏng.
- Lọc chất lượng dựa trên mô hình: Dùng các classifier nhẹ như fastText hoặc các mô hình BERT-style để chấm điểm. Những văn bản có điểm thấp (nội dung rác, quảng cáo) sẽ bị loại thẳng tay.
- Xử lý PII (Thông tin cá nhân): Che giấu số an sinh xã hội, địa chỉ email, tên riêng để đảm bảo quyền riêng tư. Đây là bước bắt buộc để mô hình không "lỡ miệng" tiết lộ dữ liệu nhạy cảm trong lúc chat.
Tiền huấn luyện: mô hình học gì từ hàng nghìn tỷ token?
Giai đoạn tiền huấn luyện (pre-training) là nơi mô hình thực hiện học không giám sát (unsupervised learning) trên quy mô lớn nhất. Theo định luật Chinchilla, để tối ưu hóa tính toán, số lượng tham số và số lượng token huấn luyện cần tăng cùng nhịp. Chẳng hạn, một mô hình 70B tham số cần ít nhất 1,4 nghìn tỷ token (tỷ lệ 20 token/tham số). Nhưng thực tế hiện nay, các mô hình "frontier" đang trở nên cực kỳ thâm dụng dữ liệu (data intensive), vượt xa tỷ lệ Chinchilla để ép hiệu suất tối đa từ một bộ tham số cố định.

Trong quá trình này, mô hình sử dụng cơ chế masked self-attention, nghĩa là khi học dự đoán từ tiếp theo, các token ở tương lai sẽ bị che đi (mask), buộc mô hình chỉ được phép dựa vào ngữ cảnh quá khứ. Nếu không có lớp mặt nạ này, mạng nơ-ron sẽ "nhìn trộm" được đáp án và hàm loss sẽ giảm rất đẹp, dẫn đến việc mô hình không học được gì cả. Kết quả của giai đoạn này là một base model có khả năng nối chữ cực tốt nhưng lại chưa biết thực hiện mệnh lệnh.
Về mặt vận hành, pre-training là cuộc chiến của sự ổn định, vì bạn phải giữ cho các cụm hàng nghìn chip H100 chạy liên tục không đứt đoạn. Chỉ cần một con GPU trong cụm bị lỗi Xid error hoặc nghẽn mạng InfiniBand là toàn bộ quá trình huấn luyện có thể bị treo. Vì vậy, việc lưu checkpoint định kỳ và khả năng phục hồi nhanh (checkpoint resume) mới là kỹ năng sống còn của kỹ sư hệ thống AI trong giai đoạn này, và theo tôi nó quan trọng hơn hẳn chuyện ngồi dò hyperparameter.
Tinh chỉnh có giám sát biến mô hình thô thành trợ lý ra sao?
Base model sau khi học xong hàng nghìn tỷ token vẫn chỉ là một kẻ biết nhiều nhưng chưa biết dùng. Nếu bạn hỏi nó "Cách nấu phở", nó có thể trả lời bằng một danh sách các câu hỏi về ẩm thực khác thay vì đưa ra công thức. Để giải quyết, chúng ta cần Supervised Fine-Tuning (SFT), tức là dùng các cặp dữ liệu prompt-response chất lượng cao do con người viết mẫu để dạy mô hình cách phản hồi đúng trọng tâm. Quy mô ở đây khiêm tốn đến bất ngờ, bởi vì bộ dữ liệu của InstructGPT chỉ gồm khoảng 13.000 prompt được thuê người viết câu trả lời mẫu, còn một hướng khác là gom hàng chục bộ dữ liệu công khai sẵn có rồi viết lại thành dạng hỏi đáp.

Vì các mô hình hiện nay quá lớn (hàng trăm tỷ tham số), việc tinh chỉnh toàn bộ trọng số là bất khả thi về mặt chi phí. Do đó, các kỹ sư thường dùng kỹ thuật LoRA (Low-Rank Adaptation), vốn đóng băng toàn bộ trọng số gốc (thường ở định dạng FP16 hoặc BF16) và chỉ huấn luyện hai ma trận hạng thấp nhỏ hơn rất nhiều, trong đó tích của chúng đóng vai trò là phần điều chỉnh (delta) cho mô hình. Đặc biệt, kỹ thuật QLoRA còn đẩy giới hạn đi xa hơn bằng cách nén trọng số gốc xuống 4-bit NormalFloat (NF4), cho phép tinh chỉnh các mô hình 70B chỉ trên một vài GPU phổ thông, và chính nó đã kéo việc tinh chỉnh ra khỏi sân chơi độc quyền của các phòng lab lớn.
SFT giúp mô hình biết làm theo lệnh (instruction following), nhưng nó chưa giải quyết được triệt để vấn đề "ngoan cố" hoặc ảo giác (hallucination). Mô hình có thể vẫn trả lời rất tự tin những thông tin sai lệch hoặc vi phạm các chuẩn mực an toàn mà không hay biết. Đó là lý do tại sao chúng ta cần thêm một bước nữa: căn chỉnh (alignment).
RLHF, DPO và GRPO dạy mô hình cách cư xử như thế nào?
Căn chỉnh là giai đoạn "dạy dỗ" mô hình về hành vi, và quy trình truyền thống nhất là RLHF (Reinforcement Learning from Human Feedback). Nó bao gồm việc huấn luyện một reward model (RM) dựa trên xếp hạng của con người thông qua mô hình Bradley-Terry, sau đó dùng thuật toán PPO (Proximal Policy Optimization) để tối ưu hóa mô hình AI sao cho nhận được điểm cao nhất từ RM. Vấn đề là mô hình rất giỏi tìm kẽ hở, nên để nó không học cách lấy điểm cao mà vẫn làm dở nhiệm vụ (reward hacking), chúng ta phải dùng hình phạt KL divergence để giữ mô hình mới không đi quá xa so với mô hình SFT ban đầu.

Hiện nay, nhiều đội bắt đầu chuyển sang DPO (Direct Preference Optimization) vì nó nhàn hơn hẳn. DPO loại bỏ hoàn toàn cái reward model phiền phức, thay vào đó nó dùng toán học log-ratio để huấn luyện trực tiếp trên dữ liệu ưu tiên, tức các cặp câu trả lời tốt và xấu. Đổi lại, DPO ổn định hơn về mặt toán học và không đòi hỏi tinh chỉnh các siêu tham số phức tạp của PPO.
Một kỹ thuật mới nổi khác là GRPO (Group Relative Policy Optimization), được thiết kế để tăng khả năng suy luận (reasoning). GRPO không dùng bộ phê bình (critic model) tốn kém bộ nhớ, mà thay vào đó nó bắt mô hình tạo ra một nhóm (group) nhiều câu trả lời cho cùng một prompt, sau đó so sánh các câu trả lời này với nhau trong cùng nhóm để lấy mức trung bình làm baseline. Cách này giúp mô hình tự học được các bước tư duy (chain-of-thought) hiệu quả hơn, cực kỳ hữu ích cho các bài toán giải toán hay viết code mà không làm phình to hạ tầng tính toán.
Làm sao biết một mô hình đã được huấn luyện tốt?
Đánh giá mô hình AI không chỉ là nhìn vào hàm loss đang giảm mà phải qua các benchmark thực tế. Một số bài kiểm tra tiêu chuẩn bao gồm:
- MMLU: Đo kiến thức tổng quát qua 57 chủ đề từ luật đến toán học.
- GSM8K/MATH: Đo khả năng suy luận toán học đa bước.
- HumanEval/MBPP: Đo khả năng viết code Python thực tế.
- Chatbot Arena: Hệ thống Elo rating dựa trên đánh giá mù của con người, và theo tôi đây vẫn là thước đo đáng tin nhất về độ "khôn" của một chatbot.
- HLE (Humanity's Last Exam): Một benchmark mới cực khó với các câu hỏi chuyên gia. Hiện tại, ngay cả những mô hình mạnh nhất vẫn đạt điểm khá thấp ở đây, cho thấy khoảng cách lớn giữa AI và chuyên gia con người trong suy luận chuyên sâu.
Cái bẫy lớn nhất của cả mảng đánh giá là ô nhiễm dữ liệu (data contamination). Do dữ liệu huấn luyện quá lớn, các câu hỏi trong benchmark có thể đã bị lọt vào tập train từ lúc nào không ai biết, và khi đó mô hình đạt điểm cao nhờ học thuộc lòng chứ không phải do thực lực suy luận. Vì vậy, phần lớn thời gian của kỹ sư đánh giá không dành cho việc chạy benchmark, mà dành cho việc lọc trùng lặp giữa tập benchmark và tập huấn luyện.

Huấn luyện một mô hình tốn kém đến mức nào?
Sức mạnh tính toán (compute) chính là đơn vị tiền tệ của ngành AI bây giờ, và nó đang lạm phát nhanh, vì compute để huấn luyện các mô hình hàng đầu đang tăng 4–5 lần mỗi năm. Nếu nhìn vào các con số thực tế, bạn sẽ thấy sự khủng khiếp: GPT-3 tốn khoảng 3e23 FLOP, GPT-4 lên tới 2e25 FLOP, và Gemini Ultra chạm ngưỡng 5e25 FLOP. Để chạy được lượng phép tính này, bạn cần hàng chục nghìn GPU H100 chạy ròng rã nhiều tháng.
Chi phí đâu chỉ nằm ở tiền mua chip, mà còn ở tiền vận hành hạ tầng, bởi vì một cụm GPU lớn tiêu thụ điện năng tương đương một thành phố nhỏ và yêu cầu hệ thống tản nhiệt cực kỳ phức tạp. Ngoài ra, thời gian cũng là một chi phí đắt đỏ mà không ai ghi vào hóa đơn, vì trong lúc bạn huấn luyện mô hình suốt 3–4 tháng, đối thủ có thể đã ra mắt một kiến trúc mới hiệu quả hơn. Do đó, việc tối ưu hóa pipeline huấn luyện để bào từng chút FLOP thừa là ưu tiên hàng đầu của mọi đội ngũ AI hệ thống.
Bạn có nên tự huấn luyện mô hình không?
Lời khuyên thực dụng cho bạn: nếu không có trong tay một GPU cluster khổng lồ và ít nhất 1.000 tỷ token dữ liệu chất lượng, đừng bao giờ mơ đến chuyện tự build một base model từ đầu, bởi vì đó là trò chơi đốt tiền của các gã khổng lồ. Việc tự huấn luyện một mô hình yếu kém chỉ tốn tài nguyên công ty mà không mang lại giá trị thực tế nào khi so với các mô hình mã nguồn mở hàng đầu.
Lộ trình khôn ngoan nhất cho hầu hết doanh nghiệp gọn trong hai nhánh. Nếu bạn muốn mô hình nắm bắt kiến thức nội bộ, hãy dùng RAG (Retrieval-Augmented Generation), vì đây là cách rẻ nhất, nhanh nhất và dễ kiểm soát nguồn tin nhất. Nếu cần mô hình tuân thủ một định dạng dữ liệu đặc thù hoặc phong cách riêng, hãy lấy một base model xịn về và tinh chỉnh bằng LoRA/QLoRA trên dữ liệu chuyên ngành của mình, việc này chỉ tốn vài GPU và vài ngày chạy máy.

Phép thử đơn giản nhất trước khi bàn tiếp là một câu hỏi về dữ liệu: bạn có bao nhiêu token dữ liệu sạch? Nếu chưa trả lời được bằng một con số cụ thể, thì câu trả lời cho câu hỏi ở tiêu đề vẫn là chưa.
Tài liệu tham khảo
- Training and fine-tuning large language models — RBC Borealis
- Mastering LLM Techniques: Text Data Processing — NVIDIA Technical Blog
- Training Compute-Optimal Large Language Models
- Illustrating Reinforcement Learning from Human Feedback (RLHF) — Hugging Face
- Supervised Fine-Tuning — Hugging Face LLM Course
- A Technical Deep Dive into the Essential Stages of Modern Large Language Model Training, Alignment, and Deployment — MarkTechPost
- Training compute of frontier AI models grows by 4-5x per year — Epoch AI
- 30 LLM evaluation benchmarks and how they work — Evidently AI
- Training open-weight models is becoming more data intensive — Epoch AI