Có một repo Python đang được chú ý trên GitHub: BaruqueRodrigues/llm-legislativo. Nó làm hai việc gộp lại trong một pipeline: dựng corpus văn bản lập pháp Brazil quy mô lớn từ dữ liệu chính thức của Câmara dos Deputados và Senado Federal, rồi train một transformer causal từ đầu bằng PyTorch thuần. Không dùng pretrained weights, không gọi API đóng, không dùng Hugging Face Trainer.
Con số đáng để ý: hơn 360 GiB dữ liệu gốc, hơn 930.000 tài liệu và phiên bản văn bản (dự luật, PLP, PEC, tu chính, báo cáo, biên bản), tokenizer Byte-Level BPE với vocab 8.192 token, và một lần train hoàn chỉnh trên A100 chạy 173.209 bước, khoảng 20 giờ, tiêu thụ 1.246.588.497 token. Điểm trên tập test độc lập theo protocol byte_nll_v1 là 0,729 nats/byte, tức 1,052 bits/byte.
Nó giải quyết chuyện gì cụ thể
Văn bản lập pháp Brazil nằm rải rác trong các file TAR nén, PDF scan, file số hóa lẫn lộn. Ai muốn làm NLP trên domain luật thì thường phải tự đi mò, tự cắt, tự dedup, và dễ dính data leakage giữa train với test vì các phiên bản của cùng một dự luật rất giống nhau. Repo này xử lý đúng cái đau đó. Tác giả mô tả pipeline chia làm 6 tầng: thu thập dữ liệu (R + API, download idempotent, kiểm SHA-256), trích xuất và OCR (PDFKit + Apple Vision trên macOS cho trang scan), curate và dựng graph (dedup chính xác, passage containment, dùng igraph tìm connected component để gom “family” văn bản), chia split 80/10/10 đảm bảo không rò rỉ giữa các bản của cùng một dự luật, tokenize, rồi train.
Cái “family graph” này là điểm mình thấy thông minh. Dự luật được sửa, lấy ý kiến, ra báo cáo, ra văn bản cuối. Nếu chia ngẫu nhiên theo file thì bản sửa ở tập train có thể gần trùng với bản test. Gom theo connected component trước khi split thì tránh được chuyện đó. Đây là thứ nhiều project nghiên cứu bỏ qua.
Vì sao nó đang hot
413 sao cho một repo mới tạo ngày 2026-10-13, cùng ngày cập nhật. Con số này với dân ML Việt Nam nghe không lớn, nhưng đặt cạnh một repo không có topics, không có chiến dịch marketing rầm rộ, lại train model trên GPU Colab A100 thì nó đáng để dừng lại xem. Cái thu hút dev là tính “from scratch”: nhiều người dùng transformers quen tay, nhưng rất ít người tự implement multi-head causal self-attention, weight tying, gradient accumulation chính xác bằng PyTorch thuần rồi train ra một model có metrics công bố. Repo này làm đúng cái đó, kèm code inference tự chứa.
Thêm nữa, toàn bộ artifact được đẩy lên Hugging Face Hub công khai: 1 model safetensors và 5 dataset (corpus pretraining dạng Parquet, corpus raw Câmara 311+ GiB, corpus text Câmara 21.947 lô, corpus raw Senado 53+ GiB, corpus text Senado). Với người làm nghiên cứu pháp lý hoặc Portuguese NLP, đây là tài nguyên khó kiếm.
Cài và chạy thử
README chưa cung cấp block cài đặt pip đầy đủ dạng copy-paste trong phần rút gọn mình có, nên đây là các bước tối thiểu dựa trên những gì README nêu rõ: clone repo, cài PyTorch, và kéo model từ Hugging Face về chạy inference. Các lệnh dưới giữ nguyên cách gọi tên trong tài liệu:
git clone https://github.com/BaruqueRodrigues/llm-legislativo
cd llm-legislativo
Model và tokenizer nằm ở repo Hub BaruqRodrigues/llm-legislativo, format safetensors, kèm config, tokenizer và code inference độc lập. Bạn có thể tải trực tiếp:
# tải model weights và tokenizer từ Hugging Face Hub
# repo: BaruqRodrigues/llm-legislativo
# file chính: model.safetensors
Dataset pretraining đã curate thì ở repo riêng:
# repo dataset: BaruqRodrigues/corpus-legislativo-pretraining
# định dạng: Apache Parquet, chia sẵn split train/val/test
Phần training lại từ đầu cần GPU và code pipeline trong repo gốc (R, Swift/macOS cho OCR, Python cho tokenize/train). Bước OCR chỉ chạy được trên macOS vì dùng PDFKit và Apple Vision, đây là ràng buộc môi trường cần biết trước.
Ai nên dùng, dùng vào việc gì
Rõ ràng nhất là người làm NLP tiếng Bồ Đào Nha, đặc biệt domain pháp luật và chính trị. Bạn có thể dùng corpus có sẵn để train embedding, thử classifier phân loại dự luật theo chủ đề, hoặc build search engine ngữ nghĩa trên văn bản quốc hội mà không phải đi xin dữ liệu.
Nhóm thứ hai là dev muốn học cách viết transformer từ số 0. Đọc code model trong repo là cách học thực tế hơn đọc paper. Phần “acumulação exata de gradientes” (bù trừ chính xác loss theo số target hợp lệ, chia cho tổng N, để sequence có padding không làm lệch gradient) là chi tiết implementation mà tutorial thường bỏ qua.
Nhóm thứ ba là dân MLOps/reproducibility. Toàn bộ checkpoint có SHA-256, có manifest cho từng file raw, split deterministic. Làm lại thí nghiệm và đối chiếu hash được.
So với lựa chọn khác
Nếu chỉ cần model tiếng Bồ Đào Nha để dùng ngay thì có các model pretrained phổ biến trên Hugging Face, tiện hơn nhiều vì đã train trên corpus lớn hơn vài bậc. Còn nếu cần đúng dữ liệu lập pháp Brazil đã dedup theo family, repo này hiếm đối thủ trực tiếp. Mình không biết project nào khác công bố pipeline đầy đủ từ TAR gốc đến model theo cách này, nên không dám so sánh bừa.
Ưu, nhược và mấy lưu ý
Ưu điểm rõ: tính minh bạch cao, mọi bước có thể kiểm chứng; license MIT cho code, dataset public; pipeline tách tầng rành mạch nên có thể chỉ lấy phần curate hoặc chỉ lấy model.
Nhược điểm cũng có. Model chỉ 8.192 vocab và 1,25 tỷ token xem qua, quy mô này nhỏ so với model thương mại, chất lượng sinh văn bản tiếng Bồ Đào Nha chắc chắn không so được với model lớn. Đừng kỳ vọng nó thay ChatGPT. Metric byte_nll_v1 cũng là protocol tự định nghĩa, khó so trực tiếp với perplexity của model khác trên benchmark chuẩn.
Ràng buộc OCR trên macOS là vấn đề thực nếu bạn muốn tái tạo toàn bộ pipeline trên Linux. Tài liệu khá dày nhưng nặng kỹ thuật, người mới sẽ vướng. Repo mới tạo, chưa có cộng đồng đông để hỏi khi kẹt, và chưa rõ tốc độ maintain ra sao. License MIT là an toàn cho thương mại, nhưng dữ liệu gốc từ cơ quan nhà nước Brazil thì nên kiểm tra lại điều khoản sử dụng gốc nếu dùng cho sản phẩm đóng.
Một điểm nữa: cùng ngày tạo và cập nhật, con số 413 sao tăng nhanh. Với mình đó là tín hiệu tốt nhưng cũng là lời nhắc đọc kỹ code trước khi đưa vào production. Chưa có nhiều người ngoài chạy lại toàn bộ pipeline để xác nhận các con số.
Đáng để clone về đọc phần model và tải dataset Parquet xem thử. Nếu bạn làm gì đó liên quan đến văn bản lập pháp, corpus 930.000 tài liệu kèm split chống leakage sẵn sàng dùng là lý do đủ để mở repo BaruqueRodrigues/llm-legislativo lên xem.
