ENVI-NMT — Transformer En→Vi tự viết từ đầu

Đồ á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

⚠️ ĐÂY KHÔNG PHẢI MODEL CỦA transformers

Khô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.

Cách tải và dùng

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))

Huấn luyện lại từ đầu

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

Bố cục repo này

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
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support