Skip to main content

Command Palette

Search for a command to run...

Lộ trình học NLP

Updated
26 min readView as Markdown

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(), custom nn.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-crfsuite train 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 allennlp hoặ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.py củ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 peft củ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-transformers encode 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.

  • 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.DPOTrainer fine-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-attn trê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.distributed trê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_geometric cà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 TransformerLens thự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.

Knowledge

Part 1 of 50