Downloads · 30 days
0
mgbao/envi-nmt-scratch-transformer
envi-nmt-scratch-transformer is a translation model from mgbao. Use it when you need text moved from one language to another. The card lists the license as mit.
Đồ án môn học. Toàn bộ kiến trúc do nhóm tự cài bằng PyTorch thuần — không dùng nn.Transformer, nn.MultiheadAttention, F.scaleddotproductattention, nn.LayerNorm hay nn.RMSNorm.
Downloads · 30 days
0
Access
Public
Updated Sep 11, 2026
Repo size
98.4 GB
Likes
0
Public
Click a slice to open those files.
.pt9.2 GB · 100%
From the Hugging Face model README
Đồ án môn học. Toàn bộ kiến trúc do nhóm tự cài bằng PyTorch thuần — không dùng
nn.Transformer, nn.MultiheadAttention, F.scaled_dot_product_attention,
nn.LayerNorm hay nn.RMSNorm.
| Kiến trúc | Transformer Encoder–Decoder, 47.955.968 tham số |
| Chuẩn hóa | RMSNorm, Pre-Norm |
| Feed-forward | SwiGLU (d_ff 688) |
| Mã hóa vị trí | RoPE (chỉ cho self-attention) |
| Dữ liệu | IWSLT 2015 En-Vi, 131.339 cặp câu |
| Tokenizer | BPE 32k dùng chung En+Vi |
| Seed | 42 |
transformersKhông dùng được AutoModel.from_pretrained(...). Kiến trúc là mã tự viết của nhóm
nên phải có src/nmt/ mới dựng lại được mô hình.
git clone https://github.com/giabaomaidev/bku-project
cd bku-project
pip install -r requirements.txt
from huggingface_hub import hf_hub_download
import sys; sys.path.insert(0, "src")
from nmt.utils import nap_config
from nmt.model.transformer import TransformerNMT
from nmt.training.checkpoint import nap_checkpoint
from nmt.data import nap_tokenizer
REPO = "mgbao/envi-nmt-scratch-transformer"
# Tokenizer PHẢI lấy đúng bản này. Tự train lại sẽ ra token ID khác và mô hình
# nạp vào cho ra rác mà không báo lỗi gì.
duong_dan_tok = hf_hub_download(REPO, "artifacts/tokenizer/tokenizer.json")
duong_dan_ck = hf_hub_download(REPO, "checkpoints/iwslt_base_v1_seed42/tot_nhat.pt")
cfg = nap_config("configs/base.yaml")
model = TransformerNMT(cfg)
thong_tin = nap_checkpoint(duong_dan_ck, model, map_location="cpu")
model.eval()
print(thong_tin) # buoc, epoch, loss_dev, che_do
Dịch thử:
import torch
from nmt.inference.search import greedy_search
tok = nap_tokenizer(duong_dan_tok)
ids = torch.tensor([tok.encode("I love machine translation.").ids])
mask = torch.ones(1, 1, 1, ids.size(1), dtype=torch.bool)
ket_qua = greedy_search(model, ids, mask, bos_id=2, eos_id=3, do_dai_toi_da=128)
print(tok.decode(ket_qua[0].tolist(), skip_special_tokens=True))
python scripts/prepare_data.py --config configs/base.yaml
python scripts/train_tokenizer.py --config configs/base.yaml
python scripts/train.py --config configs/base.yaml --seed 42 --tu-dau
checkpoints/<tên lượt chạy>/moi_nhat.pt bản mới nhất, để chạy tiếp
checkpoints/<tên lượt chạy>/tot_nhat.pt bản tốt nhất theo loss dev
logs/<tên lượt chạy>/metrics.csv đường loss
configs/<tên lượt chạy>.yaml cấu hình đã gộp của lượt đó
artifacts/tokenizer/tokenizer.json DÙNG CHUNG cho mọi lượt
smoke/... smoke test, KHÔNG phải kết quả thật