Lộ trình học NLP
PHA 0 - Nền tảng Toán & Công cụ (Ngày 1-5)
Ngày 1: Đại số tuyến tính cho NLP
Mục tiêu: Thao tác thành thạo vector/ma trận - nền tảng của mọi embedding và attention sau này.
Nội dung:
Lý thuyết: vector space, dot product, norm, ma trận nhân ma trận, eigenvalue/eigenvector, SVD.
Thực hành: NumPy - broadcasting,
np.dot,np.linalg.svd, dựng ma trận co-occurrence tay.
Mini-Project: Viết hàm tính cosine similarity giữa các vector từ đầu, không dùng
sklearn.
Ngày 2: Xác suất, Entropy & Tối ưu hóa
Mục tiêu: Hiểu nền tảng thống kê cho language model và loss function.
Nội dung:
Lý thuyết: phân phối xác suất, Bayes, entropy, cross-entropy, KL-divergence; gradient descent, SGD, learning rate.
Thực hành: cài đặt gradient descent cho hồi quy tuyến tính bằng NumPy thuần.
Mini-Project: Tự tính cross-entropy loss tay cho 1 batch dự đoán, so khớp với
torch.nn.CrossEntropyLoss.
Ngày 3: PyTorch nền tảng
Mục tiêu: Làm chủ tensor ops và autograd - công cụ chính xuyên suốt syllabus.
Nội dung:
Lý thuyết: computational graph, autograd, chain rule trong backprop.
Thực hành:
torch.Tensor,requires_grad,.backward(), customnn.Module.
Mini-Project: Cài đặt 1 layer Linear + activation từ đầu bằng tensor thô, kiểm tra gradient bằng
torch.autograd.gradcheck.
Ngày 4: Ngôn ngữ học đại cương
Mục tiêu: Có vốn khái niệm ngôn ngữ học để hiểu các bài toán NLP đặt ra.
Nội dung:
Lý thuyết: hình vị học (morphology), cú pháp (syntax), ngữ nghĩa (semantics), ngữ dụng (pragmatics), POS, dependency parsing, constituency parsing.
Thực hành: dùng spaCy để visualize dependency tree, so sánh với phân tích tay.
Mini-Project: Tự phân tích cú pháp tay 5 câu tiếng Việt, đối chiếu với VnCoreNLP.
Ngày 5: Tiền xử lý văn bản
Mục tiêu: Nắm vững các bước chuẩn hóa văn bản trước khi vào mô hình.
Nội dung:
Lý thuyết: tokenization, stemming (Porter Stemmer - thuật toán chi tiết) vs lemmatization, stop words, case folding.
Thực hành: tự cài đặt Porter Stemmer bằng Python; so sánh kết quả với
nltk.PorterStemmer.
Mini-Project: Xây pipeline tiền xử lý hoàn chỉnh cho 1 corpus tiếng Anh và 1 corpus tiếng Việt, so sánh khác biệt.
PHA 1 - NLP Cổ Điển (Ngày 6-12)
Ngày 6: Bag of Words & TF-IDF
Mục tiêu: Hiểu và tự cài đặt biểu diễn văn bản dạng đếm.
Nội dung:
Lý thuyết: BoW, công thức TF-IDF đầy đủ (term frequency, inverse document frequency, các biến thể smoothing).
Thực hành: tự cài đặt TF-IDF từ đầu bằng NumPy, so khớp với
sklearn.TfidfVectorizer.
Mini-Project: Xây search engine đơn giản xếp hạng tài liệu bằng TF-IDF + cosine similarity.
Ngày 7: N-gram Language Model & Smoothing
Mục tiêu: Hiểu mô hình ngôn ngữ thống kê và các kỹ thuật làm mượt xác suất.
Nội dung:
Lý thuyết: n-gram probability, Laplace smoothing, Good-Turing (hiểu trực giác), Kneser-Ney (hiểu trực giác, không cần chứng minh sâu), perplexity.
Thực hành: cài đặt bigram/trigram model + Laplace smoothing bằng Python thuần.
Mini-Project: Tính perplexity của 1 corpus test với model đã train, so sánh smoothing khác nhau.
Ngày 8: Hidden Markov Model (HMM)
Mục tiêu: Hiểu generative sequence model và thuật toán Viterbi.
Nội dung:
Lý thuyết: transition/emission probability, Viterbi algorithm, Forward-Backward algorithm (nắm ý tưởng, không cần đào quá sâu công thức).
Thực hành: tự cài đặt Viterbi decoder bằng NumPy cho bài toán POS tagging.
Mini-Project: POS Tagger bằng HMM cho corpus tiếng Anh, đánh giá accuracy.
Ngày 9: Conditional Random Fields (CRF)
Mục tiêu: Hiểu khác biệt discriminative vs generative qua CRF vs HMM (mức tổng quan, không đi sâu tối ưu hóa).
Nội dung:
Lý thuyết: feature function, tại sao CRF mạnh hơn HMM khi có nhiều feature phụ thuộc ngữ cảnh.
Thực hành: dùng
sklearn-crfsuitetrain CRF cho NER, thiết kế feature set.
Mini-Project: So sánh HMM vs CRF trên cùng 1 tập NER, phân tích lỗi.
Ngày 10: POS Tagging & NER ứng dụng cổ điển
Mục tiêu: Củng cố kỹ năng ứng dụng mô hình chuỗi cổ điển.
Nội dung:
Lý thuyết: BIO/BIOES tagging scheme, feature engineering cho sequence labeling.
Thực hành: xây pipeline NER hoàn chỉnh bằng CRF.
Mini-Project: NER cho văn bản tiếng Việt đơn giản (tên người, địa danh) bằng CRF + feature thủ công.
Ngày 11: Evaluation Metrics cơ bản
Mục tiêu: Biết đánh giá đúng cách các bài toán classification/sequence labeling. (bổ sung theo feedback)
Nội dung:
Lý thuyết: Accuracy, Precision, Recall, F1, confusion matrix, macro vs micro average.
Thực hành: tự cài đặt Precision/Recall/F1 từ đầu, so khớp
sklearn.metrics.
Mini-Project: Viết báo cáo đánh giá đầy đủ cho model NER ở Ngày 10.
Ngày 12: Review & Mini-Project tổng hợp NLP cổ điển
Mục tiêu: Tổng hợp toàn bộ pha 1 thành 1 hệ thống hoàn chỉnh.
Nội dung:
Lý thuyết: ôn tập liên hệ TF-IDF, N-gram, HMM, CRF - khi nào dùng gì.
Thực hành: refactor toàn bộ code các ngày trước thành 1 pipeline module hóa.
Mini-Project: Text Classification (spam/ham hoặc sentiment) hoàn toàn bằng công cụ cổ điển (TF-IDF + Logistic Regression), báo cáo metrics đầy đủ.
PHA 2 - Word Embeddings (Ngày 13-18)
Ngày 13: Distributional Hypothesis & One-hot vs Dense
Mục tiêu: Hiểu động lực chuyển từ sparse sang dense representation.
Nội dung:
Lý thuyết: distributional hypothesis, hạn chế one-hot (sparse, không ngữ nghĩa), khái niệm embedding space.
Thực hành: visualize embedding không gian 2D bằng PCA/t-SNE cho 1 bộ embedding có sẵn.
Mini-Project: So sánh trực quan one-hot vs pretrained embedding qua t-SNE plot.
Ngày 14: Word2Vec - CBOW & Skip-gram
Mục tiêu: Hiểu kiến trúc dự đoán ngữ cảnh của Word2Vec.
Nội dung:
Lý thuyết: kiến trúc CBOW, kiến trúc Skip-gram, hàm mục tiêu softmax đầy đủ.
Thực hành: cài đặt Skip-gram cơ bản (chưa negative sampling) bằng PyTorch.
Mini-Project: Train Skip-gram trên corpus nhỏ, kiểm tra top-k từ gần nghĩa nhất.
Ngày 15: Negative Sampling & Hierarchical Softmax
Mục tiêu: Hiểu kỹ thuật tối ưu hóa giúp Word2Vec scale được.
Nội dung:
Lý thuyết: công thức negative sampling, phân phối unigram^0.75, hierarchical softmax với cây Huffman.
Thực hành: nâng cấp Skip-gram Ngày 14 thêm negative sampling từ đầu.
Mini-Project: Kiểm tra word analogy task (king - man + woman ≈ queen) trên model tự train.
Ngày 16: GloVe
Mục tiêu: Hiểu cách tiếp cận count-based kết hợp global statistics.
Nội dung:
Lý thuyết: ma trận co-occurrence, hàm mục tiêu weighted least squares - dẫn công thức, so sánh với Word2Vec.
Thực hành: dùng pretrained GloVe vectors, phân tích không gian embedding.
Mini-Project: So sánh chất lượng embedding Word2Vec tự train vs GloVe pretrained trên word similarity benchmark.
Ngày 17: FastText & Subword Embeddings
Mục tiêu: Giải quyết vấn đề out-of-vocabulary (OOV).
Nội dung:
Lý thuyết: character n-gram, cách tổng hợp subword vectors thành word vector.
Thực hành: train FastText, kiểm tra embedding cho từ chưa từng thấy (OOV).
Mini-Project: So sánh xử lý từ hiếm/lỗi chính tả giữa Word2Vec và FastText.
Ngày 18: ELMo & Contextual Embeddings (bổ sung)
Mục tiêu: Hiểu bước chuyển từ static embedding sang contextual embedding.
Nội dung:
Lý thuyết: kiến trúc biLM (bidirectional LSTM LM) của ELMo, tại sao 1 từ có nhiều vector tùy ngữ cảnh, vị trí lịch sử giữa Word2Vec và BERT.
Thực hành: dùng
allennlphoặc pretrained ELMo, lấy embedding cùng 1 từ trong 2 câu khác nghĩa, so sánh cosine similarity.
Mini-Project: Chứng minh bằng thực nghiệm rằng ELMo cho vector khác nhau với từ đa nghĩa (VD: "bank") trong 2 ngữ cảnh khác nhau, còn Word2Vec thì không.
PHA 3 - Deep Learning Nền Tảng (Ngày 19-25)
Ngày 19: Neural Network cơ bản & Backpropagation
Mục tiêu: Tự tay dẫn và cài đặt backprop cho mạng đơn giản.
Nội dung:
Lý thuyết: feedforward network, activation (sigmoid/tanh/ReLU/GELU), backprop chain rule tính tay cho 1 layer.
Thực hành: cài đặt forward + backward pass thủ công bằng NumPy (không dùng autograd).
Mini-Project: Train mạng 2 layer trên bài toán phân loại nhị phân toy, so khớp gradient tay với
torch.autograd.
Ngày 20: Recurrent Neural Network (RNN)
Mục tiêu: Hiểu cơ chế xử lý chuỗi tuần tự.
Nội dung:
Lý thuyết: công thức forward pass RNN, hidden state qua thời gian.
Thực hành: cài đặt RNN cell từ đầu bằng PyTorch tensor thô (không dùng
nn.RNN).
Mini-Project: Char-level RNN sinh văn bản đơn giản.
Ngày 21: Backpropagation Through Time & Vanishing Gradient
Mục tiêu: Hiểu tại sao RNN thất bại với chuỗi dài.
Nội dung:
Lý thuyết: BPTT - dẫn công thức, chứng minh toán học vanishing/exploding gradient.
Thực hành: thực nghiệm đo norm gradient qua các timestep trên RNN dài.
Mini-Project: Vẽ biểu đồ gradient norm theo timestep, minh họa vanishing gradient thực tế.
Ngày 22: LSTM - Internals chi tiết
Mục tiêu: Hiểu cách LSTM giải quyết vanishing gradient.
Nội dung:
Lý thuyết: forget/input/output gate, cell state, "constant error carousel".
Thực hành: tự cài đặt LSTM cell từ đầu bằng tensor thô, so khớp output với
nn.LSTM.
Mini-Project: So sánh gradient norm LSTM vs RNN trên cùng chuỗi dài (Ngày 21).
Ngày 23: GRU
Mục tiêu: Hiểu kiến trúc gọn hơn LSTM.
Nội dung:
Lý thuyết: update gate, reset gate, so sánh số tham số với LSTM.
Thực hành: cài đặt GRU cell từ đầu.
Mini-Project: Benchmark tốc độ train & accuracy LSTM vs GRU trên cùng bài toán.
Ngày 24: Sequence-to-Sequence (Seq2Seq)
Mục tiêu: Hiểu kiến trúc encoder-decoder cho bài toán sinh chuỗi.
Nội dung:
Lý thuyết: context vector cố định, vấn đề bottleneck, teacher forcing.
Thực hành: xây Seq2Seq LSTM cho dịch máy đơn giản (Anh-Việt tập nhỏ).
Mini-Project: Đánh giá chất lượng dịch bằng BLEU thủ công (điểm đến sẽ học sâu ở Ngày 63).
Ngày 25: Attention Mechanism (Bahdanau & Luong)
Mục tiêu: Hiểu bước đệm dẫn tới Transformer.
Nội dung:
Lý thuyết: additive attention (Bahdanau), multiplicative/dot-product attention (Luong), khái niệm Query/Key/Value khởi nguồn.
Thực hành: thêm attention layer vào Seq2Seq Ngày 24.
Mini-Project: So sánh BLEU score Seq2Seq có attention vs không attention.
PHA 4 - Transformer Internals (Ngày 26-34)
Ngày 26: Self-Attention
Mục tiêu: Hiểu tuyệt đối chi tiết cơ chế self-attention.
Nội dung:
Lý thuyết: công thức
softmax(QK^T/√d_k)V, vì sao chia √d_k (ổn định gradient).Thực hành: tự cài đặt self-attention từ ma trận thô bằng NumPy, không dùng
nn.MultiheadAttention.
Mini-Project: In shape tensor ở từng bước Q/K/V để kiểm chứng hiểu đúng luồng dữ liệu.
Ngày 27: Multi-Head Attention
Mục tiêu: Hiểu vì sao nhiều head giúp học nhiều loại quan hệ.
Nội dung:
Lý thuyết: chia head, concat, linear projection cuối.
Thực hành: mở rộng self-attention Ngày 26 thành multi-head, so khớp
nn.MultiheadAttention.
Mini-Project: Visualize attention weight của từng head trên 1 câu, phân tích head nào học pattern gì.
Ngày 28: Positional Encoding
Mục tiêu: Hiểu cách Transformer đưa thông tin thứ tự vào mô hình không tuần tự.
Nội dung:
Lý thuyết: sinusoidal encoding - dẫn công thức, tại sao dùng sin/cos.
Thực hành: cài đặt positional encoding từ đầu, visualize ma trận encoding.
Mini-Project: Thực nghiệm bỏ positional encoding, quan sát mô hình mất khả năng phân biệt thứ tự từ.
Ngày 29: LayerNorm, Residual Connection, Feed-Forward Network
Mục tiêu: Hiểu các thành phần "phụ trợ" nhưng thiết yếu của mỗi Transformer block.
Nội dung:
Lý thuyết: LayerNorm vs BatchNorm (vì sao Transformer dùng LayerNorm), vai trò residual connection với mạng sâu, FFN 2 lớp.
Thực hành: lắp ráp 1 Transformer block hoàn chỉnh (attention + FFN + residual + norm).
Mini-Project: Thực nghiệm train có/không residual connection trên mạng 12 layer, so sánh độ hội tụ.
Ngày 30: Kiến trúc Transformer - Tự cài đặt
Mục tiêu: Ráp toàn bộ thành 1 Transformer encoder-decoder hoàn chỉnh.
Nội dung:
Lý thuyết: encoder stack, decoder stack, masked self-attention (causal masking).
Thực hành: viết Transformer nhỏ từ đầu chỉ bằng tensor ops, cài đặt causal mask tam giác.
Mini-Project: Train trên bài toán "copy task" (chuỗi input = output) để kiểm chứng model học đúng.
Ngày 31: Byte Pair Encoding (BPE)
Mục tiêu: Tự cài đặt thuật toán tokenizer quan trọng nhất hiện nay.
Nội dung:
Lý thuyết: thuật toán merge từng bước của BPE.
Thực hành: tự cài đặt BPE từ đầu (đọc corpus, học merge rules, encode/decode).
Mini-Project: Train BPE tokenizer trên corpus tiếng Việt, phân tích vocab học được có hợp lý không.
Ngày 32: WordPiece, SentencePiece, Unigram LM Tokenizer
Mục tiêu: Phân biệt các họ tokenizer khác BPE.
Nội dung:
Lý thuyết: WordPiece (dùng likelihood thay vì tần suất), SentencePiece (xử lý không cần whitespace pre-tokenize), Unigram LM tokenizer.
Thực hành: so sánh output tokenize cùng 1 câu tiếng Việt/Trung giữa 4 loại tokenizer.
Mini-Project: Đo compression rate (số token/câu) của từng tokenizer trên cùng corpus đa ngôn ngữ.
Ngày 33: BERT Internals
Mục tiêu: Hiểu kiến trúc encoder-only và pretraining objective.
Nội dung:
Lý thuyết: Masked Language Modeling (MLM), Next Sentence Prediction, [CLS]/[SEP], segment embeddings.
Thực hành: đọc source code
modeling_bert.pycủa HuggingFace, đối chiếu với lý thuyết.
Mini-Project: Fine-tune BERT cho text classification, so sánh với pipeline TF-IDF (Ngày 12).
Ngày 34: GPT & T5 Internals
Mục tiêu: Hiểu decoder-only và encoder-decoder text-to-text.
Nội dung:
Lý thuyết: causal LM (GPT), text-to-text framework (T5), so sánh encoder-only vs decoder-only vs encoder-decoder - khi nào dùng loại nào.
Thực hành: đọc source code
modeling_gpt2.py; thửnanoGPT(Karpathy) để hiểu implementation tối giản.
Mini-Project: Cài đặt lại 1 phần nanoGPT, train trên corpus nhỏ, sinh văn bản.
PHA 5 - NLP Tiếng Việt (Ngày 35-37)
Ngày 35: Đặc thù tiếng Việt & Word Segmentation
Mục tiêu: Hiểu vì sao tiếng Việt cần xử lý riêng.
Nội dung:
Lý thuyết: syllable vs word (VD "sinh viên đại học" = 6 âm tiết nhưng 3 từ), ảnh hưởng tới tokenization, bài toán word segmentation.
Thực hành: dùng VnCoreNLP tách từ, so sánh với tách âm tiết đơn thuần.
Mini-Project: Đo ảnh hưởng của word segmentation sai lên kết quả TF-IDF/embedding cho 1 đoạn văn tiếng Việt.
Ngày 36: PhoBERT & Pretrained Models tiếng Việt
Mục tiêu: Làm quen hệ sinh thái pretrained model tiếng Việt.
Nội dung:
Lý thuyết: kiến trúc PhoBERT (RoBERTa-based, train trên corpus tiếng Việt đã word-segmented), so sánh với mBERT/XLM-R.
Thực hành: fine-tune PhoBERT cho sentiment analysis tiếng Việt.
Mini-Project: So sánh accuracy PhoBERT vs mBERT trên cùng tập dữ liệu tiếng Việt.
Ngày 37: ViT5 & Vietnamese Tokenizer thực hành
Mục tiêu: Ứng dụng mô hình sinh văn bản tiếng Việt.
Nội dung:
Lý thuyết: kiến trúc ViT5 (T5-based cho tiếng Việt), cách tokenizer xử lý dấu thanh điệu.
Thực hành: dùng ViT5 cho tóm tắt văn bản tiếng Việt.
Mini-Project: Xây pipeline tóm tắt tin tức tiếng Việt end-to-end bằng ViT5.
PHA 6 - Pretraining & Fine-tuning (Ngày 38-42)
Ngày 38: Pretraining Objectives
Mục tiêu: Hiểu các cách "dạy" mô hình từ dữ liệu không nhãn.
Nội dung:
Lý thuyết: MLM, Causal/Autoregressive LM, Permutation LM (XLNet), Denoising objectives (BART, T5 span corruption).
Thực hành: implement MLM masking logic từ đầu (chọn 15% token, 80/10/10 rule).
Mini-Project: Viết data collator cho MLM pretraining từ đầu.
Ngày 39: Fine-tuning đầy đủ
Mục tiêu: Hiểu cách transfer learning hoạt động trong NLP.
Nội dung:
Lý thuyết: full fine-tuning vs feature extraction, catastrophic forgetting.
Thực hành: fine-tune full model vs freeze-backbone, so sánh kết quả.
Mini-Project: Thực nghiệm catastrophic forgetting - fine-tune model trên task A rồi B, đo lại performance task A.
Ngày 40: PEFT - LoRA
Mục tiêu: Hiểu kỹ thuật fine-tune hiệu quả tham số quan trọng nhất hiện nay.
Nội dung:
Lý thuyết: công thức
W + BA, tại sao rank thấp vẫn hiệu quả.Thực hành: tự cài đặt LoRA layer từ đầu, gắn vào 1 Linear layer có sẵn.
Mini-Project: Fine-tune model bằng LoRA tự cài đặt, so sánh số tham số train được với full fine-tuning.
Ngày 41: Adapters, Prompt Tuning & Quantization
Mục tiêu: Mở rộng bộ công cụ PEFT.
Nội dung:
Lý thuyết: Adapters, Prefix Tuning, Prompt Tuning; nguyên lý quantization int8/int4, QLoRA.
Thực hành: dùng thư viện
peftcủa HuggingFace áp nhiều kỹ thuật, so sánh.
Mini-Project: Benchmark memory usage & accuracy giữa full fine-tune, LoRA, QLoRA trên cùng model.
Ngày 42: Scaling Laws
Mục tiêu: Hiểu quan hệ giữa quy mô mô hình, dữ liệu và hiệu năng.
Nội dung:
Lý thuyết: Chinchilla scaling laws, emergent abilities khi scale.
Thực hành: đọc và tóm tắt paper Chinchilla, vẽ lại biểu đồ loss vs compute.
Mini-Project: Viết báo cáo phân tích trade-off giữa tăng data vs tăng tham số cho 1 ngân sách compute giả định.
PHA 7 - Sentence Embeddings & Retrieval (Ngày 43-45)
Ngày 43: SBERT & SimCSE
Mục tiêu: Hiểu cách tạo embedding cấp câu chất lượng cao.
Nội dung:
Lý thuyết: kiến trúc Siamese network của SBERT, contrastive learning trong SimCSE.
Thực hành: dùng
sentence-transformersencode câu, đo cosine similarity.
Mini-Project: Xây hệ thống tìm câu tương tự (semantic search) trên tập FAQ nhỏ bằng SBERT.
Ngày 44: E5 & BGE - Embedding Models hiện đại
Mục tiêu: Làm quen embedding model thế hệ mới dùng cho retrieval/RAG.
Nội dung:
Lý thuyết: contrastive pretraining quy mô lớn, instruction-tuned embeddings (query prefix).
Thực hành: benchmark SBERT vs E5 vs BGE trên MTEB-style task nhỏ.
Mini-Project: So sánh retrieval accuracy 3 model embedding trên tập QA tự tạo.
Ngày 45: BM25, DPR, ColBERT & Hybrid Search
Mục tiêu: Hiểu các phương pháp retrieval trước khi vào RAG nâng cao.
Nội dung:
Lý thuyết: BM25 (sparse, dựa TF-IDF cải tiến), DPR (dense retrieval 2 tháp), ColBERT (late interaction).
Thực hành: cài đặt BM25 từ đầu; kết hợp BM25 + dense retrieval thành hybrid search.
Mini-Project: So sánh recall@k giữa BM25 thuần, dense thuần, và hybrid trên cùng tập tài liệu.
PHA 8 - LLM Hiện Đại Internals (Ngày 46-52)
Ngày 46: RMSNorm & RoPE
Mục tiêu: Hiểu 2 thành phần thay thế LayerNorm/sinusoidal encoding trong LLM hiện đại.
Nội dung:
Lý thuyết: RMSNorm đơn giản hóa LayerNorm ra sao; RoPE - dẫn công thức rotation, so với sinusoidal encoding.
Thực hành: cài đặt RoPE từ đầu, kiểm chứng tính chất "relative position" của nó.
Mini-Project: Visualize rotation của RoPE trên không gian 2D cho các vị trí khác nhau.
Ngày 47: SwiGLU, GQA & MQA
Mục tiêu: Hiểu các tối ưu kiến trúc cho LLM lớn.
Nội dung:
Lý thuyết: SwiGLU activation; Grouped-Query Attention và Multi-Query Attention - tối ưu KV cache.
Thực hành: cài đặt GQA từ MHA đã có (Ngày 27), đo giảm memory KV cache.
Mini-Project: Benchmark tốc độ inference MHA vs GQA vs MQA trên cùng input length.
Ngày 48: Mixture of Experts (MoE)
Mục tiêu: Hiểu kiến trúc sparse activation giúp scale mô hình hiệu quả.
Nội dung:
Lý thuyết: router network, top-k expert selection, load balancing loss.
Thực hành: cài đặt 1 MoE layer đơn giản (4 expert, top-2 routing) từ đầu.
Mini-Project: So sánh FLOPs sử dụng thực tế của MoE layer vs dense layer cùng số tham số.
Ngày 49: RLHF - Reward Model & PPO
Mục tiêu: Hiểu quy trình alignment cổ điển của ChatGPT-style model.
Nội dung:
Lý thuyết: thu thập preference data, train reward model, PPO fine-tuning policy.
Thực hành: đọc source code
trl(HuggingFace) phần PPOTrainer.
Mini-Project: Train reward model đơn giản trên tập preference toy (so sánh 2 response, chọn cái tốt hơn).
Ngày 50: DPO - Direct Preference Optimization
Mục tiêu: Hiểu phương pháp alignment đơn giản hơn RLHF.
Nội dung:
Lý thuyết: công thức DPO, tại sao loại bỏ được reward model + PPO riêng biệt.
Thực hành: dùng
trl.DPOTrainerfine-tune model nhỏ trên tập preference.
Mini-Project: So sánh độ phức tạp cài đặt & kết quả giữa RLHF pipeline và DPO trên cùng bài toán.
Ngày 51: KV Cache & Sampling Strategies
Mục tiêu: Hiểu cơ chế inference thực tế của LLM.
Nội dung:
Lý thuyết: KV cache - tại sao cần cho autoregressive generation; greedy, beam search, top-k, top-p (nucleus), temperature.
Thực hành: tự cài đặt KV cache thủ công cho model GPT nhỏ (Ngày 34), đo tốc độ có/không cache.
Mini-Project: So sánh chất lượng output với các chiến lược sampling khác nhau trên cùng prompt.
Ngày 52: FlashAttention & Sparse/Sliding Window Attention
Mục tiêu: Hiểu tối ưu hóa attention cho context dài.
Nội dung:
Lý thuyết: vấn đề O(n²) của attention; FlashAttention - nguyên lý tiling, không vật liệu hóa ma trận attention đầy đủ; sliding window, sparse attention.
Thực hành: benchmark memory usage attention thường vs
flash-attntrên sequence dài.
Mini-Project: Viết báo cáo so sánh throughput/memory giữa attention chuẩn và FlashAttention trên các độ dài context khác nhau.
PHA 9 - RAG (Ngày 53-55)
Ngày 53: Kiến trúc RAG cơ bản (Naive RAG)
Mục tiêu: Ráp pipeline RAG hoàn chỉnh đầu tiên.
Nội dung:
Lý thuyết: chunking strategies (fixed-size, semantic chunking), embedding + vector DB, FAISS internals (IVF, HNSW - cách index ANN hoạt động).
Thực hành: xây pipeline RAG với FAISS + embedding model (Ngày 44).
Mini-Project: RAG QA system trên bộ tài liệu nội bộ (VD: tài liệu công ty/môn học).
Ngày 54: Reranking & Hybrid RAG
Mục tiêu: Cải thiện chất lượng retrieval bằng reranking.
Nội dung:
Lý thuyết: cross-encoder vs bi-encoder, 2-stage retrieval (retrieve nhiều → rerank top-k).
Thực hành: thêm cross-encoder reranker vào pipeline Ngày 53.
Mini-Project: Đo cải thiện MRR/nDCG trước và sau khi thêm reranking.
Ngày 55: Agentic RAG & GraphRAG
Mục tiêu: Hiểu các kiến trúc RAG thế hệ mới.
Nội dung:
Lý thuyết: Agentic RAG (LLM tự quyết định truy vấn nhiều bước), GraphRAG (xây knowledge graph từ corpus rồi truy vấn).
Thực hành: thử framework GraphRAG (Microsoft) trên corpus nhỏ.
Mini-Project: So sánh chất lượng trả lời câu hỏi multi-hop giữa Naive RAG và GraphRAG.
PHA 10 - Distributed Training (Ngày 56-59)
Ngày 56: Data Parallelism & DDP
Mục tiêu: Hiểu cách scale training trên nhiều GPU cơ bản nhất.
Nội dung:
Lý thuyết: Data Parallelism, all-reduce gradient,
DistributedDataParallel(DDP) của PyTorch.Thực hành: chạy training script với
torch.distributedtrên (giả lập) nhiều process.
Mini-Project: Viết training loop DDP tối giản, đo speedup so với single-GPU (hoặc mô phỏng).
Ngày 57: Model, Tensor & Pipeline Parallelism
Mục tiêu: Hiểu cách chia model quá lớn cho 1 GPU.
Nội dung:
Lý thuyết: Model Parallelism (chia layer), Tensor Parallelism (chia trong 1 layer), Pipeline Parallelism (chia theo stage + micro-batch).
Thực hành: đọc kiến trúc tensor parallelism trong Megatron-LM.
Mini-Project: Vẽ sơ đồ minh họa luồng dữ liệu cho 1 model 4 layer chia trên 2 GPU theo pipeline parallelism.
Ngày 58: ZeRO & FSDP
Mục tiêu: Hiểu kỹ thuật giảm memory redundancy khi train model lớn.
Nội dung:
Lý thuyết: ZeRO stage 1/2/3 (partition optimizer state, gradient, parameter), Fully Sharded Data Parallel (FSDP) của PyTorch.
Thực hành: cấu hình FSDP cho 1 model vừa, so sánh memory usage với DDP.
Mini-Project: Benchmark memory footprint DDP vs FSDP trên cùng model size.
Ngày 59: DeepSpeed & Megatron-LM tổng quan
Mục tiêu: Làm quen framework production cho train LLM quy mô lớn.
Nội dung:
Lý thuyết: kiến trúc DeepSpeed (tích hợp ZeRO), Megatron-LM (tensor + pipeline parallelism kết hợp).
Thực hành: đọc config mẫu DeepSpeed, thử train model nhỏ với DeepSpeed.
Mini-Project: Viết báo cáo so sánh khi nào dùng FSDP thuần vs DeepSpeed vs Megatron-LM.
PHA 11 - Production NLP & Serving (Ngày 60-63)
Ngày 60: LLM Serving - vLLM, TGI, Triton
Mục tiêu: Hiểu cách serve LLM hiệu quả ở production.
Nội dung:
Lý thuyết: continuous batching, PagedAttention (vLLM), so sánh vLLM/TGI/Triton Inference Server.
Thực hành: deploy 1 model nhỏ bằng vLLM, gọi API test.
Mini-Project: Benchmark throughput/latency serving bằng vLLM vs HuggingFace
generate()thường.
Ngày 61: Deployment - FastAPI, Docker, Kubernetes
Mục tiêu: Đóng gói và triển khai NLP service thực tế.
Nội dung:
Lý thuyết: kiến trúc REST API cho model serving, containerization, khái niệm cơ bản Kubernetes (pod, deployment, service).
Thực hành: viết FastAPI wrap quanh model, đóng gói Docker image.
Mini-Project: Deploy API NLP (VD: sentiment analysis) hoàn chỉnh bằng FastAPI + Docker, viết Dockerfile + docker-compose.
Ngày 62: Monitoring & Observability
Mục tiêu: Hiểu cách theo dõi hệ thống NLP/LLM khi chạy thật.
Nội dung:
Lý thuyết: latency, throughput, hallucination tracking; OpenTelemetry, Langfuse cho LLM observability.
Thực hành: tích hợp logging cơ bản + Langfuse vào API Ngày 61.
Mini-Project: Xây dashboard đơn giản theo dõi latency & tỉ lệ lỗi của API NLP.
Ngày 63: NLP Evaluation
Mục tiêu: Đánh giá đúng chất lượng model sinh văn bản và LLM. (mở rộng từ Ngày 11 theo feedback)
Nội dung:
Lý thuyết: BLEU, ROUGE, METEOR (cho generation/translation/summarization), BERTScore (dựa embedding); MT-Bench, AlpacaEval, Arena-style evaluation cho LLM.
Thực hành: tự cài đặt BLEU từ đầu; dùng
evaluate(HuggingFace) tính ROUGE/BERTScore.
Mini-Project: Đánh giá toàn diện model dịch máy Ngày 24-25 bằng BLEU + đánh giá model tóm tắt Ngày 37 bằng ROUGE.
PHA 12 - Graph-based NLP (Ngày 64-65)
Ngày 64: Graph Neural Networks cơ bản
Mục tiêu: Hiểu cách NLP không chỉ là sequence mà còn là graph.
Nội dung:
Lý thuyết: message passing, GCN (Graph Convolutional Network) cơ bản, dependency graph như 1 graph input.
Thực hành: dùng
torch_geometriccài đặt 1 GCN đơn giản.
Mini-Project: Áp GNN cho bài toán phân loại quan hệ dựa trên dependency graph của câu.
Ngày 65: Knowledge Graph & Relation/Information Extraction
Mục tiêu: Ứng dụng graph vào bài toán trích xuất thông tin.
Nội dung:
Lý thuyết: triple (subject, relation, object), knowledge graph construction, relation extraction models.
Thực hành: xây knowledge graph nhỏ từ 1 tập văn bản bằng relation extraction pipeline.
Mini-Project: Trích xuất triple từ bài báo, visualize knowledge graph bằng
networkx.
PHA 13 - AI Agents & Tool Use (Ngày 66-67)
Ngày 66: Kiến trúc Agent & Function Calling
Mục tiêu: Hiểu cách LLM tương tác với công cụ bên ngoài.
Nội dung:
Lý thuyết: ReAct pattern (reasoning + acting), function calling/tool use API, planning loop.
Thực hành: xây agent đơn giản gọi 1-2 tool (VD: calculator, search) bằng function calling.
Mini-Project: Agent trả lời câu hỏi cần tra cứu real-time bằng cách gọi tool search.
Ngày 67: Multi-Agent & Tool Use Frameworks
Mục tiêu: Làm quen hệ thống multi-agent.
Nội dung:
Lý thuyết: kiến trúc multi-agent (orchestrator + sub-agent), so sánh framework (LangGraph, AutoGen - mức tổng quan).
Thực hành: xây 2 agent hợp tác giải 1 task (VD: 1 agent research, 1 agent viết báo cáo).
Mini-Project: Hệ thống multi-agent hoàn chỉnh giải 1 bài toán end-to-end (research + summarize + report).
PHA 14 - Interpretability (Ngày 68-70)
Ngày 68: Probing Classifiers & Attention Visualization
Mục tiêu: Hiểu cách "nhìn vào bên trong" model đã train.
Nội dung:
Lý thuyết: probing classifier (train classifier nhỏ trên hidden state để kiểm tra thông tin được encode), attention visualization.
Thực hành: train probing classifier kiểm tra layer nào của BERT encode thông tin POS tốt nhất.
Mini-Project: Viết báo cáo layer-wise probing cho 1 model pretrained.
Ngày 69: Activation Patching & Circuit Analysis
Mục tiêu: Tiếp cận mechanistic interpretability hiện đại.
Nội dung:
Lý thuyết: activation patching (thay activation từ 1 run sang run khác để đo ảnh hưởng), khái niệm circuit trong model.
Thực hành: dùng thư viện
TransformerLensthực hiện activation patching trên model nhỏ.
Mini-Project: Tìm 1 "circuit" đơn giản (VD: circuit xử lý số nhiều/số ít) trong GPT-2 nhỏ.
Ngày 70: Sparse Autoencoders & Tổng kết
Mục tiêu: Hiểu hướng nghiên cứu mới nhất về giải thích được biểu diễn nội bộ của LLM.
Nội dung:
Lý thuyết: Sparse Autoencoders (SAE) để tách monosemantic features từ polysemantic neurons.
Thực hành: đọc paper "Towards Monosemanticity" (Anthropic), thử SAE có sẵn trên model nhỏ nếu có công cụ.
Mini-Project (Capstone): Chọn 1 trong các hướng đã học (Transformer internals/LLM serving/RAG/interpretability) làm 1 project tổng hợp cuối khóa, viết report đầy đủ từ lý thuyết đến thực nghiệm.