ngocdang83 commited on
Commit
e692cf1
·
verified ·
1 Parent(s): 47ed9bb

feat(model): add HachimiMT-60-QT

Browse files
HachimiMT_Benchmark_Profile.ipynb CHANGED
@@ -136,7 +136,7 @@
136
  "# Đổi các biến ở đây rồi chạy lại cell benchmark bên dưới.\n",
137
  "import os\n",
138
  "\n",
139
- "MODEL = \"HachimiMT-60\" # HachimiMT-60, HachimiMT-30, MoxhiMT-60, MoxhiMT-30, MoxhiMT-30-QT, HirashibaMT-Medium, HirashibaMT-Tiny\n",
140
  "BEAM = 2 # 1 nhanh hơn, 2 thường cân bằng hơn\n",
141
  "CHUNK_MODE = \"sentence\" # sentence hoặc paragraph\n",
142
  "NORMALIZE = \"auto\" # auto, t2s, none\n",
 
136
  "# Đổi các biến ở đây rồi chạy lại cell benchmark bên dưới.\n",
137
  "import os\n",
138
  "\n",
139
+ "MODEL = \"HachimiMT-60\" # HachimiMT-60, HachimiMT-60-QT, HachimiMT-30, MoxhiMT-60, MoxhiMT-30, MoxhiMT-30-QT, HirashibaMT-Medium, HirashibaMT-Tiny\n",
140
  "BEAM = 2 # 1 nhanh hơn, 2 thường cân bằng hơn\n",
141
  "CHUNK_MODE = \"sentence\" # sentence hoặc paragraph\n",
142
  "NORMALIZE = \"auto\" # auto, t2s, none\n",
README_hachimimt_colab.md CHANGED
@@ -1,203 +1,206 @@
1
- <p align="center">
2
- <img src="assets/hachimimt-logo.png" alt="HachimiMT logo" width="180">
3
- </p>
4
-
5
- # HachimiMT — Dịch truyện Trung → Việt bằng AI, chạy miễn phí trên Colab / Kaggle
6
-
7
- > **Dịch truyện tiên hiệp / huyền huyễn / web-novel Trung → Việt** bằng mô hình
8
- > dịch máy neural (CTranslate2 INT8), cho ra văn **đọc trôi chảy như tiếng Việt
9
- > thật** — không phải "convert" sát từng chữ. Chạy ngay trên **Google Colab** hoặc
10
- > **Kaggle** với GPU miễn phí, hoặc cài về máy. Không cần tài khoản trả phí, không
11
- > cần card đồ họa ở nhà.
12
-
13
- [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Colab.ipynb)
14
- [![Open in Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://www.kaggle.com/kernels/welcome?src=https://github.com/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Kaggle.ipynb)
15
-
16
- 🌐 **Bản demo online (CPU, dùng ngay không cài gì):**
17
- [ngocdang83/HachimiMT-demo](https://huggingface.co/spaces/ngocdang83/HachimiMT-demo)
18
-
19
- ---
20
-
21
- ## HachimiMT là gì?
22
-
23
- HachimiMT (và biến thể MoxhiMT) là các **mô hình dịch máy chuyên cho truyện mạng
24
- Trung Quốc** — tiên hiệp, huyền huyễn, đô thị, khoa huyễn. Khác với từ điển thay
25
- chữ, đây là mạng neural Transformer (kiến trúc Marian) được huấn luyện riêng để
26
- **dịch nghĩa cả câu**, giữ giọng văn tiếng Việt tự nhiên, xử lý thành ngữ / điển cố
27
- / cú pháp Hán cổ tốt hơn cách convert truyền thống.
28
-
29
- Mô hình rất nhỏ (35–58 MB, lượng tử INT8) nên chạy nhanh kể cả trên GPU miễn phí
30
- của Colab/Kaggle — **một bộ truyện dài 2–3 triệu chữ Hán dịch xong trong khoảng 1
31
- phút** trên GPU. Notebook trong repo này đóng gói sẵn toàn bộ: bấm chạy → mở link →
32
- dán văn bản → tải bản dịch.
33
-
34
- ---
35
-
36
- ## So với QuickTranslator + Vietphrase
37
-
38
- QuickTranslator (QT) cùng bộ từ điển Vietphrase là cách đọc truyện Trung phổ biến
39
- nhất nhiều năm nay. HachimiMT **không thay thế hoàn toàn** QT — mỗi bên mạnh ở chỗ
40
- khác nhau. Chọn đúng theo nhu cầu:
41
-
42
- | | **QuickTranslator + Vietphrase** | **HachimiMT (notebook này)** |
43
- |---|---|---|
44
- | **Cách dịch** | Tra từ điển, thay chữ theo bảng | Mạng neural, dịch nghĩa cả câu |
45
- | **Văn đọc ra** | Sát từ gốc, đôi chỗ cứng / Hán-Việt thô | **Trôi chảy, tự nhiên như tiếng Việt** |
46
- | **Thành ngữ, điển cố, cú pháp Hán cổ** | Thường dịch chữ-đối-chữ, khó hiểu | Hiểu và diễn đạt lại mượt hơn |
47
- | **Chạy offline, tức thì** | ✅ Có, không cần mạng | ⚠️ Cần GPU (Colab/Kaggle) để nhanh; bản máy/CPU chậm hơn |
48
- | **Nhất quán tên riêng** | ✅ **Bạn pin tên trong từ điển → cố định mãi** | ⚠️ Tên hiếm có thể dịch lệch giữa các đoạn |
49
- | **Tùy biến từ điển** | ✅ Sửa, thêm, ghi đè thoải mái | ❌ Mô hình cố định, không sửa từ điển |
50
- | **Tốc độ** | Tức thì (tra bảng) | ~40.000 chữ/giây (Colab T4, beam 1) — rất nhanh, nhưng cần khởi động |
51
-
52
- **Tóm lại:**
53
- - Muốn **đọc nhanh, mượt, đỡ "lai Hán-Việt"** → HachimiMT thắng về độ trôi chảy.
54
- - Cần **offline tuyệt đối, dịch tức thì, hoặc kiểm soát chặt tên riêng / thuật ngữ
55
- bằng từ điển tự pin** → QuickTranslator vẫn là lựa chọn tốt.
56
- - Nhiều người dùng **cả hai**: HachimiMT để đọc trôi chảy, QT khi cần tra đúng một
57
- tên riêng cố định.
58
-
59
- > So sánh ở đây nói về **độ trôi chảy của văn dịch**, không khẳng định HachimiMT
60
- > "chính xác hơn" — ở khoản giữ tên riêng nhất quán, từ điển pin tay của QT vẫn có
61
- > lợi thế (xem mục [Hạn chế](#hạn-chế-cần-biết-trước)).
62
-
63
- ---
64
-
65
- ## Bắt đầu nhanh (3 cách)
66
-
67
- ### Cách 1 — Google Colab (dễ nhất, khuyên dùng)
68
-
69
- [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Colab.ipynb)
70
-
71
- 1. Bấm nút **Open In Colab** ở trên.
72
- 2. **Bật GPU trước** (rất nên — nhanh gấp nhiều lần):
73
- **`Runtime → Change runtime type → T4 GPU → Save`**
74
- *(Colab tiếng Việt: `Thời gian chạy → Thay đổi loại thời gian chạy → T4 GPU → Lưu`)*
75
- ⚠️ Chọn đúng **T4 GPU** — **KHÔNG** chọn **TPU** (CTranslate2 không chạy được TPU,
76
- sẽ rớt về CPU chậm).
77
- 3. **`Runtime → Run all`** (Ctrl+F9) — *tiếng Việt: `Thời gian chạy → Chạy tất cả`*.
78
- 4. Đợi cài đặt xong, cell cuối in ra một **link công khai `*.gradio.live`** → bấm
79
- vào để mở giao diện dịch.
80
-
81
- ### Cách 2 — Kaggle (có 2× GPU T4, nhanh hơn nữa)
82
-
83
- [![Open in Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://www.kaggle.com/kernels/welcome?src=https://github.com/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Kaggle.ipynb)
84
-
85
- 1. Bấm **Open in Kaggle** → Kaggle tạo notebook từ repo này (cần tài khoản Kaggle).
86
- 2. Phải xác minh số điện thoại để bật GPU; sau đó:
87
- **Settings (bên phải) → Accelerator → `GPU T4 x2`**, và **Internet → On**.
88
- ⚠️ **Tránh P100** (không hỗ trợ kiểu tính INT8 của mô hình) và **TPU**.
89
- 3. **`Run All`** → mở link `*.gradio.live` ở cell cuối.
90
-
91
- Kaggle T4×2 tận dụng **cả 2 GPU** nên vẫn nhanh nhất khi dịch file dài. Colab T4
92
- 1 GPU sau tối ưu `window=16` đã tiệm cận hơn: beam 2 chậm hơn Kaggle T4×2 khoảng
93
- 1,9×, còn so với Kaggle ép 1 GPU chỉ chậm hơn khoảng 14%.
94
-
95
- ### Cách 3 — Cài về máy (chạy offline bằng CPU)
96
-
97
- Tải gói chạy-máy từ Space rồi chạy bằng Python — không cần GPU, nhưng CPU chậm hơn
98
- GPU nhiều lần (xem mục Tốc độ). Hướng dẫn chi tiết nằm trong
99
- [bản demo HF Space](https://huggingface.co/spaces/ngocdang83/HachimiMT-demo)
100
- (mục "📦 Cài bản local").
101
-
102
- ---
103
-
104
- ## Tốc độ (đo thật)
105
-
106
- | Môi trường | Tốc độ đo thật | Bộ truyện 2,4 triệu chữ |
107
- |---|---|---|
108
- | **Colab T4 (1 GPU)** | ~40.000 chữ Hán/giây (beam 1) · ~28.000 (beam 2) | ~1 phút (beam 1) · ~1 phút 30 giây (beam 2) |
109
- | **Kaggle T4 × 2 (2 GPU)** | ~81.000 chữ/giây (beam 1) · ~54.000 (beam 2) | ~35 giây (beam 1) · ~52 giây (beam 2) cho 2,84M chữ |
110
- | **CPU (bản máy / demo)** | ~500 chữ/giây | chậm — chỉ nên dùng cho đoạn ngắn |
111
-
112
- > **GPU nhanh hơn CPU hàng chục lần.** Vì vậy luôn **bật GPU** trên Colab/Kaggle.
113
- > Bản demo HF Space chạy CPU dùng chung nên chỉ hợp dán thử vài đoạn; muốn dịch
114
- > nguyên bộ thì dùng Colab/Kaggle (GPU) hoặc cài về máy.
115
- >
116
- > *beam* càng cao dịch càng kỹ nhưng càng chậm; mặc định để 1–2 cho nhanh. Notebook
117
- > Colab đặt sẵn `HACHIMIMT_CT2_WINDOW_MULTIPLIER=16`, nhanh hơn window cũ khoảng
118
- > 25–31% trên T4 x1. Kaggle T4 x2 đặt window 8; nhờ auto multi-GPU, window hiệu dụng
119
- > là 32x để giữ cả hai GPU bận hơn trên file dài.
120
-
121
- ---
122
-
123
- ## Các mô hình có sẵn
124
-
125
- App cho chọn 7 mô hình; khi mở app sẵn chọn **HachimiMT-60**, đổi sang model khác
126
- bất cứ lúc nào (tự tải khi cần). Các mô hình **ngang hàng** — không có cái nào "tốt
127
- nhất" cho mọi trường hợp; mỗi cái ra giọng văn hơi khác và mạnh/yếu ở chỗ khác nhau:
128
-
129
- | Mô hình | Cỡ | Đặc điểm |
130
- |---|---|---|
131
- | **HachimiMT-60** | 57 MB | Bản 60M dòng HachimiMT — giọng văn của riêng nó |
132
- | **HachimiMT-30** | 35 MB | Bản 30M nhẹ trong nhóm Hachimi/Moxhi hợp máy yếu / cần tốc độ |
133
- | **MoxhiMT-60** | 58 MB | Bản 60M dòng MoxhiMTgiọng văn khác để đối chiếu |
134
- | **MoxhiMT-30** | 38 MB | Bản 30M dòng MoxhiMT — nhỏ, nhanh, giọng văn riêng |
135
- | **MoxhiMT-30-QT** | 38 MB | Bản MoxhiMT-30 đơn giản hóa ngôi xưng kiểu QT (`ta/ngươi/hắn/nàng`) |
136
- | **HirashibaMT-Medium** | 62 MB | Model tham khảo Hirashiba cỡ vừa, CT2 qua mirror |
137
- | **HirashibaMT-Tiny** | 17 MB | Model tham khảo rất nhẹ, phù hợp thử nhanh |
138
-
139
- > Không có model "đỉnh" tuyệt đối: ví dụ ở khoản **giữ tên riêng / xưng hô nhất
140
- > quán**, mấy bản kia lúc ổn định hơn HachimiMT-60; ngược lại HachimiMT-60 thể
141
- > hợp hơn ở đoạn khác. **Cách tốt nhất thử vài model trên cùng một đoạn truyện của bạn
142
- > rồi chọn cái hợp gu nhất.**
143
-
144
- Repo mô hình trên Hugging Face:
145
- [HachimiMT-60](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi) ·
146
- [HachimiMT-30](https://huggingface.co/ngocdang83/HachimiMT-30-zh-vi) ·
147
- [MoxhiMT-60](https://huggingface.co/DanVP/MoxhiMT-60) ·
148
- [MoxhiMT-30](https://huggingface.co/DanVP/MoxhiMT-30) ·
149
- [MoxhiMT-30-QT](https://huggingface.co/DanVP/MoxhiMT-30-QT) ·
150
- [HirashibaMT-Medium](https://huggingface.co/Moleys/hirashiba-mt-medium) ·
151
- [HirashibaMT-Tiny](https://huggingface.co/chi-vi/hirashiba-mt-tiny-zh-vi)
152
-
153
- ---
154
-
155
- ## Tính năng app
156
-
157
- - 📄 **Dán văn bản hoặc tải file `.txt`** (tự nhận mã GB18030 / Big5 / UTF-8, hỗ
158
- trợ cả phồn thể lẫn giản thể).
159
- - ⚙️ **Chọn hình** **beam** (đánh đổi tốc độ chất lượng).
160
- - 🈶 **Chuẩn hóa xưng Hán-Việt** (tùy chọn nâng cao, thử nghiệm): chuyển 哥哥/姐姐…
161
- sang ca ca / tỷ tỷ… theo văn phong tiên hiệp, nhận diện bối cảnh cổ trang vs hiện
162
- đại. Mặc định tắt bật khi cần.
163
- - 💾 **Xuất bản dịch ra `.txt`** để đọc offline.
164
- - ☁️ Trên Colab/Kaggle tự tạo **link công khai** chia sẻ được tạm thời.
165
-
166
- ---
167
-
168
- ## Hạn chế (cần biết trước)
169
-
170
- Để công bằng, đây những chỗ HachimiMT **chưa bằng** cách dịch cũ:
171
-
172
- - **Tên riêng hiếm thể dịch lệch giữa các đoạn.** hình nhỏ nên một số tên ít
173
- gặp có thể ra vài biến thể Hán-Việt khác nhau trong cùng truyện. Đây chính là chỗ
174
- **từ điển pin tay của QuickTranslator vẫn nhỉnh hơn** bạn cố định một tên là cố
175
- định mãi. (HachimiMT không cho sửa từ điển.)
176
- - **Cần GPU để nhanh.** CPU (bản máy / demo HF) chậm hơn nhiều lần; dịch nguyên bộ
177
- truyện trên CPU không thực tế.
178
- - ** hình cố định**, không tùy biến thuật ngữ / không thêm từ điển riêng.
179
- - hình nhỏ đôi khi vẫn có câu khó hiểu ở đoạn quá dài hoặc nội dung hiếm gặp.
180
-
181
- Nếu những điểm trên then chốt với bạn (đọc offline tuyệt đối, kiểm soát chặt
182
- thuật ngữ), hãy dùng kèm QuickTranslator. Còn nếu ưu tiên **đọc trôi chảy, ít lai
183
- Hán-Việt**, HachimiMTmột lựa chọn đáng thử.
184
-
185
- ---
186
-
187
- ## Liên kết
188
-
189
- - 🌐 Demo online (CPU): https://huggingface.co/spaces/ngocdang83/HachimiMT-demo
190
- - 🤖 Mô hình: [HachimiMT-60](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi) ·
191
- [HachimiMT-30](https://huggingface.co/ngocdang83/HachimiMT-30-zh-vi) ·
192
- [MoxhiMT-60](https://huggingface.co/DanVP/MoxhiMT-60) ·
193
- [MoxhiMT-30](https://huggingface.co/DanVP/MoxhiMT-30) ·
194
- [MoxhiMT-30-QT](https://huggingface.co/DanVP/MoxhiMT-30-QT) ·
195
- [HirashibaMT-Medium](https://huggingface.co/Moleys/hirashiba-mt-medium) ·
196
- [HirashibaMT-Tiny](https://huggingface.co/chi-vi/hirashiba-mt-tiny-zh-vi)
197
- - 📓 Notebook: [Colab](HachimiMT_Colab.ipynb) · [Kaggle](HachimiMT_Kaggle.ipynb)
198
-
199
- ---
200
-
201
- *HachimiMT là mô hình dịch máy neural Trung→Việt chuyên cho truyện mạng, mã nguồn
202
- mở trên Hugging Face. Repo này chỉ chứa notebook + hướng dẫn; bản dịch do mô hình
203
- sinh tự động và có thể cần biên tập lại trước khi xuất bản.*
 
 
 
 
1
+ <p align="center">
2
+ <img src="assets/hachimimt-logo.png" alt="HachimiMT logo" width="180">
3
+ </p>
4
+
5
+ # HachimiMT — Dịch truyện Trung → Việt bằng AI, chạy miễn phí trên Colab / Kaggle
6
+
7
+ > **Dịch truyện tiên hiệp / huyền huyễn / web-novel Trung → Việt** bằng mô hình
8
+ > dịch máy neural (CTranslate2 INT8), cho ra văn **đọc trôi chảy như tiếng Việt
9
+ > thật** — không phải "convert" sát từng chữ. Chạy ngay trên **Google Colab** hoặc
10
+ > **Kaggle** với GPU miễn phí, hoặc cài về máy. Không cần tài khoản trả phí, không
11
+ > cần card đồ họa ở nhà.
12
+
13
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Colab.ipynb)
14
+ [![Open in Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://www.kaggle.com/kernels/welcome?src=https://github.com/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Kaggle.ipynb)
15
+
16
+ 🌐 **Bản demo online (CPU, dùng ngay không cài gì):**
17
+ [ngocdang83/HachimiMT-demo](https://huggingface.co/spaces/ngocdang83/HachimiMT-demo)
18
+
19
+ ---
20
+
21
+ ## HachimiMT là gì?
22
+
23
+ HachimiMT (và biến thể MoxhiMT) là các **mô hình dịch máy chuyên cho truyện mạng
24
+ Trung Quốc** — tiên hiệp, huyền huyễn, đô thị, khoa huyễn. Khác với từ điển thay
25
+ chữ, đây là mạng neural Transformer (kiến trúc Marian) được huấn luyện riêng để
26
+ **dịch nghĩa cả câu**, giữ giọng văn tiếng Việt tự nhiên, xử lý thành ngữ / điển cố
27
+ / cú pháp Hán cổ tốt hơn cách convert truyền thống.
28
+
29
+ Mô hình rất nhỏ (35–58 MB, lượng tử INT8) nên chạy nhanh kể cả trên GPU miễn phí
30
+ của Colab/Kaggle — **một bộ truyện dài 2–3 triệu chữ Hán dịch xong trong khoảng 1
31
+ phút** trên GPU. Notebook trong repo này đóng gói sẵn toàn bộ: bấm chạy → mở link →
32
+ dán văn bản → tải bản dịch.
33
+
34
+ ---
35
+
36
+ ## So với QuickTranslator + Vietphrase
37
+
38
+ QuickTranslator (QT) cùng bộ từ điển Vietphrase là cách đọc truyện Trung phổ biến
39
+ nhất nhiều năm nay. HachimiMT **không thay thế hoàn toàn** QT — mỗi bên mạnh ở chỗ
40
+ khác nhau. Chọn đúng theo nhu cầu:
41
+
42
+ | | **QuickTranslator + Vietphrase** | **HachimiMT (notebook này)** |
43
+ |---|---|---|
44
+ | **Cách dịch** | Tra từ điển, thay chữ theo bảng | Mạng neural, dịch nghĩa cả câu |
45
+ | **Văn đọc ra** | Sát từ gốc, đôi chỗ cứng / Hán-Việt thô | **Trôi chảy, tự nhiên như tiếng Việt** |
46
+ | **Thành ngữ, điển cố, cú pháp Hán cổ** | Thường dịch chữ-đối-chữ, khó hiểu | Hiểu và diễn đạt lại mượt hơn |
47
+ | **Chạy offline, tức thì** | ✅ Có, không cần mạng | ⚠️ Cần GPU (Colab/Kaggle) để nhanh; bản máy/CPU chậm hơn |
48
+ | **Nhất quán tên riêng** | ✅ **Bạn pin tên trong từ điển → cố định mãi** | ⚠️ Tên hiếm có thể dịch lệch giữa các đoạn |
49
+ | **Tùy biến từ điển** | ✅ Sửa, thêm, ghi đè thoải mái | ❌ Mô hình cố định, không sửa từ điển |
50
+ | **Tốc độ** | Tức thì (tra bảng) | ~40.000 chữ/giây (Colab T4, beam 1) — rất nhanh, nhưng cần khởi động |
51
+
52
+ **Tóm lại:**
53
+ - Muốn **đọc nhanh, mượt, đỡ "lai Hán-Việt"** → HachimiMT thắng về độ trôi chảy.
54
+ - Cần **offline tuyệt đối, dịch tức thì, hoặc kiểm soát chặt tên riêng / thuật ngữ
55
+ bằng từ điển tự pin** → QuickTranslator vẫn là lựa chọn tốt.
56
+ - Nhiều người dùng **cả hai**: HachimiMT để đọc trôi chảy, QT khi cần tra đúng một
57
+ tên riêng cố định.
58
+
59
+ > So sánh ở đây nói về **độ trôi chảy của văn dịch**, không khẳng định HachimiMT
60
+ > "chính xác hơn" — ở khoản giữ tên riêng nhất quán, từ điển pin tay của QT vẫn có
61
+ > lợi thế (xem mục [Hạn chế](#hạn-chế-cần-biết-trước)).
62
+
63
+ ---
64
+
65
+ ## Bắt đầu nhanh (3 cách)
66
+
67
+ ### Cách 1 — Google Colab (dễ nhất, khuyên dùng)
68
+
69
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Colab.ipynb)
70
+
71
+ 1. Bấm nút **Open In Colab** ở trên.
72
+ 2. **Bật GPU trước** (rất nên — nhanh gấp nhiều lần):
73
+ **`Runtime → Change runtime type → T4 GPU → Save`**
74
+ *(Colab tiếng Việt: `Thời gian chạy → Thay đổi loại thời gian chạy → T4 GPU → Lưu`)*
75
+ ⚠️ Chọn đúng **T4 GPU** — **KHÔNG** chọn **TPU** (CTranslate2 không chạy được TPU,
76
+ sẽ rớt về CPU chậm).
77
+ 3. **`Runtime → Run all`** (Ctrl+F9) — *tiếng Việt: `Thời gian chạy → Chạy tất cả`*.
78
+ 4. Đợi cài đặt xong, cell cuối in ra một **link công khai `*.gradio.live`** → bấm
79
+ vào để mở giao diện dịch.
80
+
81
+ ### Cách 2 — Kaggle (có 2× GPU T4, nhanh hơn nữa)
82
+
83
+ [![Open in Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://www.kaggle.com/kernels/welcome?src=https://github.com/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Kaggle.ipynb)
84
+
85
+ 1. Bấm **Open in Kaggle** → Kaggle tạo notebook từ repo này (cần tài khoản Kaggle).
86
+ 2. Phải xác minh số điện thoại để bật GPU; sau đó:
87
+ **Settings (bên phải) → Accelerator → `GPU T4 x2`**, và **Internet → On**.
88
+ ⚠️ **Tránh P100** (không hỗ trợ kiểu tính INT8 của mô hình) và **TPU**.
89
+ 3. **`Run All`** → mở link `*.gradio.live` ở cell cuối.
90
+
91
+ Kaggle T4×2 tận dụng **cả 2 GPU** nên vẫn nhanh nhất khi dịch file dài. Colab T4
92
+ 1 GPU sau tối ưu `window=16` đã tiệm cận hơn: beam 2 chậm hơn Kaggle T4×2 khoảng
93
+ 1,9×, còn so với Kaggle ép 1 GPU chỉ chậm hơn khoảng 14%.
94
+
95
+ ### Cách 3 — Cài về máy (chạy offline bằng CPU)
96
+
97
+ Tải gói chạy-máy từ Space rồi chạy bằng Python — không cần GPU, nhưng CPU chậm hơn
98
+ GPU nhiều lần (xem mục Tốc độ). Hướng dẫn chi tiết nằm trong
99
+ [bản demo HF Space](https://huggingface.co/spaces/ngocdang83/HachimiMT-demo)
100
+ (mục "📦 Cài bản local").
101
+
102
+ ---
103
+
104
+ ## Tốc độ (đo thật)
105
+
106
+ | Môi trường | Tốc độ đo thật | Bộ truyện 2,4 triệu chữ |
107
+ |---|---|---|
108
+ | **Colab T4 (1 GPU)** | ~40.000 chữ Hán/giây (beam 1) · ~28.000 (beam 2) | ~1 phút (beam 1) · ~1 phút 30 giây (beam 2) |
109
+ | **Kaggle T4 × 2 (2 GPU)** | ~81.000 chữ/giây (beam 1) · ~54.000 (beam 2) | ~35 giây (beam 1) · ~52 giây (beam 2) cho 2,84M chữ |
110
+ | **CPU (bản máy / demo)** | ~500 chữ/giây | chậm — chỉ nên dùng cho đoạn ngắn |
111
+
112
+ > **GPU nhanh hơn CPU hàng chục lần.** Vì vậy luôn **bật GPU** trên Colab/Kaggle.
113
+ > Bản demo HF Space chạy CPU dùng chung nên chỉ hợp dán thử vài đoạn; muốn dịch
114
+ > nguyên bộ thì dùng Colab/Kaggle (GPU) hoặc cài về máy.
115
+ >
116
+ > *beam* càng cao dịch càng kỹ nhưng càng chậm; mặc định để 1–2 cho nhanh. Notebook
117
+ > Colab đặt sẵn `HACHIMIMT_CT2_WINDOW_MULTIPLIER=16`, nhanh hơn window cũ khoảng
118
+ > 25–31% trên T4 x1. Kaggle T4 x2 đặt window 8; nhờ auto multi-GPU, window hiệu dụng
119
+ > là 32x để giữ cả hai GPU bận hơn trên file dài.
120
+
121
+ ---
122
+
123
+ ## Các mô hình có sẵn
124
+
125
+ App cho chọn 8 mô hình; khi mở app sẵn chọn **HachimiMT-60**, đổi sang model khác
126
+ bất cứ lúc nào (tự tải khi cần). Các mô hình **ngang hàng** — không có cái nào "tốt
127
+ nhất" cho mọi trường hợp; mỗi cái ra giọng văn hơi khác và mạnh/yếu ở chỗ khác nhau:
128
+
129
+ | Mô hình | Cỡ | Đặc điểm |
130
+ |---|---|---|
131
+ | **HachimiMT-60** | 57 MB | Bản 60M dòng HachimiMT — giọng văn của riêng nó |
132
+ | **HachimiMT-60-QT** | 58 MB | Bản HachimiMT-60 đơn giản hóa ngôi xưng kiểu QT (`ta/ngươi/hắn/nàng`) |
133
+ | **HachimiMT-30** | 35 MB | Bản 30M nhẹ trong nhóm Hachimi/Moxhi hợp máy yếu / cần tốc độ |
134
+ | **MoxhiMT-60** | 58 MB | Bản 60M dòng MoxhiMT — giọng văn khác để đối chiếu |
135
+ | **MoxhiMT-30** | 38 MB | Bản 30M dòng MoxhiMT nhỏ, nhanh, giọng văn riêng |
136
+ | **MoxhiMT-30-QT** | 38 MB | Bản MoxhiMT-30 đơn giản hóa ngôi xưng kiểu QT (`ta/ngươi/hắn/nàng`) |
137
+ | **HirashibaMT-Medium** | 62 MB | Model tham khảo Hirashiba cỡ vừa, CT2 qua mirror |
138
+ | **HirashibaMT-Tiny** | 17 MB | Model tham khảo rất nhẹ, phù hợp thử nhanh |
139
+
140
+ > Không model "đỉnh" tuyệt đối: dụ khoản **giữ tên riêng / xưng hô nhất
141
+ > quán**, mấy bản kia lúc ổn định hơn HachimiMT-60; ngược lại HachimiMT-60 có thể
142
+ > hợp hơn đoạn khác. **Cách tốt nhất là thử vài model trên cùng một đoạn truyện của bạn
143
+ > rồi chọn cái hợp gu nhất.**
144
+
145
+ Repo mô hình trên Hugging Face:
146
+ [HachimiMT-60](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi) ·
147
+ [HachimiMT-60-QT](https://huggingface.co/ngocdang83/HachimiMT-60-QT) ·
148
+ [HachimiMT-30](https://huggingface.co/ngocdang83/HachimiMT-30-zh-vi) ·
149
+ [MoxhiMT-60](https://huggingface.co/DanVP/MoxhiMT-60) ·
150
+ [MoxhiMT-30](https://huggingface.co/DanVP/MoxhiMT-30) ·
151
+ [MoxhiMT-30-QT](https://huggingface.co/DanVP/MoxhiMT-30-QT) ·
152
+ [HirashibaMT-Medium](https://huggingface.co/Moleys/hirashiba-mt-medium) ·
153
+ [HirashibaMT-Tiny](https://huggingface.co/chi-vi/hirashiba-mt-tiny-zh-vi)
154
+
155
+ ---
156
+
157
+ ## Tính năng app
158
+
159
+ - 📄 **Dán văn bản hoặc tải file `.txt`** (tự nhận GB18030 / Big5 / UTF-8, hỗ
160
+ trợ cả phồn thể lẫn giản thể).
161
+ - ⚙️ **Chọn hình** **beam** (đánh đổi tốc độ chất lượng).
162
+ - 🈶 **Chuẩn hóa xưng Hán-Việt** (tùy chọn nâng cao, thử nghiệm): chuyển 哥哥/姐姐…
163
+ sang ca ca / tỷ tỷ… theo văn phong tiên hiệp, nhận diện bối cảnh cổ trang vs hiện
164
+ đại. Mặc định tắt bật khi cần.
165
+ - 💾 **Xuất bản dịch ra `.txt`** để đọc offline.
166
+ - ☁️ Trên Colab/Kaggle tự tạo **link công khai** chia sẻ được tạm thời.
167
+
168
+ ---
169
+
170
+ ## Hạn chế (cần biết trước)
171
+
172
+ Để công bằng, đây những chỗ HachimiMT **chưa bằng** cách dịch cũ:
173
+
174
+ - **Tên riêng hiếm thể dịch lệch giữa các đoạn.** hình nhỏ nên một số tên ít
175
+ gặp thể ra vài biến thể Hán-Việt khác nhau trong cùng truyện. Đây chính là chỗ
176
+ **từ điển pin tay của QuickTranslator vẫn nhỉnh hơn** bạn cố định một tên cố
177
+ định mãi. (HachimiMT không cho sửa từ điển.)
178
+ - **Cần GPU để nhanh.** CPU (bản máy / demo HF) chậm hơn nhiều lần; dịch nguyên bộ
179
+ truyện trên CPU không thực tế.
180
+ - **Mô hình cố định**, không tùy biến thuật ngữ / không thêm từ điển riêng.
181
+ - hình nhỏ đôi khi vẫn câu khó hiểu đoạn quá dài hoặc nội dung hiếm gặp.
182
+
183
+ Nếu những điểm trên then chốt với bạn (đọc offline tuyệt đối, kiểm soát chặt
184
+ thuật ngữ), hãy dùng kèm QuickTranslator. Còn nếu ưu tiên **đọc trôi chảy, ít lai
185
+ Hán-Việt**, HachimiMT là một lựa chọn đáng thử.
186
+
187
+ ---
188
+
189
+ ## Liên kết
190
+
191
+ - 🌐 Demo online (CPU): https://huggingface.co/spaces/ngocdang83/HachimiMT-demo
192
+ - 🤖 Mô hình: [HachimiMT-60](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi) ·
193
+ [HachimiMT-60-QT](https://huggingface.co/ngocdang83/HachimiMT-60-QT) ·
194
+ [HachimiMT-30](https://huggingface.co/ngocdang83/HachimiMT-30-zh-vi) ·
195
+ [MoxhiMT-60](https://huggingface.co/DanVP/MoxhiMT-60) ·
196
+ [MoxhiMT-30](https://huggingface.co/DanVP/MoxhiMT-30) ·
197
+ [MoxhiMT-30-QT](https://huggingface.co/DanVP/MoxhiMT-30-QT) ·
198
+ [HirashibaMT-Medium](https://huggingface.co/Moleys/hirashiba-mt-medium) ·
199
+ [HirashibaMT-Tiny](https://huggingface.co/chi-vi/hirashiba-mt-tiny-zh-vi)
200
+ - 📓 Notebook: [Colab](HachimiMT_Colab.ipynb) · [Kaggle](HachimiMT_Kaggle.ipynb)
201
+
202
+ ---
203
+
204
+ *HachimiMT là mô hình dịch máy neural Trung→Việt chuyên cho truyện mạng, mã nguồn
205
+ mở trên Hugging Face. Repo này chỉ chứa notebook + hướng dẫn; bản dịch do mô hình
206
+ sinh tự động và có thể cần biên tập lại trước khi xuất bản.*
hachimimt-local.zip CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:8fd3fcbc0f4876e9247120221e121f6e95976b4814eb01d76a92cabc1345a660
3
- size 128835
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0c9c2856a5bfa3d387ad09b7cd4d64dc2d3f1eb3451a5c9c50d54867359b049c
3
+ size 127199
src/app.py CHANGED
@@ -1978,8 +1978,8 @@ mục `hachimimt`, chạy `setup.bat` (cài thư viện + tải model mặc đ
1978
 
1979
  - **GPU NVIDIA**: app mặc định chạy CPU; có nút **“Cài torch để bật GPU”** ngay trong
1980
  app (tải ~2–3 GB, một lần) → nhanh hơn nhiều lần với văn bản dài.
1981
- - Các model tự tải từ Hugging Face lần đầu, sau đó chạy **offline**.
1982
- - Bản local mở khoá: chọn 7 model, dịch file `.txt`, không giới hạn CPU như Space.""",
1983
  elem_classes=["info-card"],
1984
  )
1985
 
 
1978
 
1979
  - **GPU NVIDIA**: app mặc định chạy CPU; có nút **“Cài torch để bật GPU”** ngay trong
1980
  app (tải ~2–3 GB, một lần) → nhanh hơn nhiều lần với văn bản dài.
1981
+ - Các model tự tải từ Hugging Face lần đầu, sau đó chạy **offline**.
1982
+ - Bản local mở khoá: chọn 8 model, dịch file `.txt`, không giới hạn CPU như Space.""",
1983
  elem_classes=["info-card"],
1984
  )
1985
 
src/translator.py CHANGED
@@ -75,10 +75,10 @@ class ModelConfig:
75
 
76
 
77
  MODELS: dict[str, ModelConfig] = {
78
- "HachimiMT-60": ModelConfig(
79
- label="HachimiMT-60",
80
- model_id="ngocdang83/HachimiMT-60-zh-vi",
81
- use_marian_class=True,
82
  generate_kwargs={
83
  "max_new_tokens": 300,
84
  # BỎ no_repeat_ngram_size=2 (đo 2026-06-26, entity-drift probe): cùng
@@ -95,12 +95,30 @@ MODELS: dict[str, ModelConfig] = {
95
  # cap = 1 chunk; chỉ dòng rất dài bị char-split nhỏ hơn, tự ghép lại 1 dòng).
96
  ct2_max_input_tokens=160,
97
  ct2_max_output_tokens=300,
98
- default_beam=2,
99
- ct2_size_mb=57,
100
- ),
101
- "HachimiMT-30": ModelConfig(
102
- label="HachimiMT-30",
103
- model_id="ngocdang83/HachimiMT-30-zh-vi",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  use_marian_class=False,
105
  generate_kwargs={
106
  "max_length": 512,
@@ -139,11 +157,11 @@ MODELS: dict[str, ModelConfig] = {
139
  ct2_size_mb=58,
140
  ct2_subdir="ct2-int8", # repo này dùng tên thư mục CT2 khác
141
  ),
142
- "MoxhiMT-30": ModelConfig(
143
- label="MoxhiMT-30",
144
- model_id="DanVP/MoxhiMT-30",
145
- use_marian_class=True,
146
- generate_kwargs={
147
  "max_new_tokens": 300,
148
  # BỎ no_repeat_ngram_size (đo 2026-06-26, entity-drift probe 72 câu):
149
  # =2 CẤM CỨNG tên 2-token lặp (vd [Mặc][Hoạ]) → decoder buộc viết lại
@@ -160,32 +178,32 @@ MODELS: dict[str, ModelConfig] = {
160
  # source cap short enough to split long entity-heavy paragraphs.
161
  ct2_max_input_tokens=160,
162
  ct2_max_output_tokens=512,
163
- default_beam=2,
164
- ct2_size_mb=38,
165
- ),
166
- "MoxhiMT-30-QT": ModelConfig(
167
- label="MoxhiMT-30-QT",
168
- model_id="DanVP/MoxhiMT-30-QT",
169
- use_marian_class=True,
170
- generate_kwargs={
171
- "max_new_tokens": 300,
172
- # QT-register variant: same 37M Marian family as MoxhiMT-30, but
173
- # targets are normalized toward ta/nguoi/han/nang. Keep the short
174
- # 30M input cap and DO NOT add no_repeat_ngram_size: 711d70e showed
175
- # no_repeat causes duplicate-name entity drift. repetition_penalty
176
- # was isolated as safe there. Default beam stays 1 because this model
177
- # is meant as a simple stable-pronoun option.
178
- "repetition_penalty": 1.2,
179
- },
180
- ct2_max_input_tokens=160,
181
- ct2_max_output_tokens=512,
182
- default_beam=1,
183
- ct2_size_mb=38,
184
- ),
185
- "HirashibaMT-Medium": ModelConfig(
186
- label="HirashibaMT-Medium",
187
- model_id="Moleys/hirashiba-mt-medium",
188
- use_marian_class=True,
189
  generate_kwargs={
190
  "max_new_tokens": 256,
191
  },
 
75
 
76
 
77
  MODELS: dict[str, ModelConfig] = {
78
+ "HachimiMT-60": ModelConfig(
79
+ label="HachimiMT-60",
80
+ model_id="ngocdang83/HachimiMT-60-zh-vi",
81
+ use_marian_class=True,
82
  generate_kwargs={
83
  "max_new_tokens": 300,
84
  # BỎ no_repeat_ngram_size=2 (đo 2026-06-26, entity-drift probe): cùng
 
95
  # cap = 1 chunk; chỉ dòng rất dài bị char-split nhỏ hơn, tự ghép lại 1 dòng).
96
  ct2_max_input_tokens=160,
97
  ct2_max_output_tokens=300,
98
+ default_beam=2,
99
+ ct2_size_mb=57,
100
+ ),
101
+ "HachimiMT-60-QT": ModelConfig(
102
+ label="HachimiMT-60-QT",
103
+ model_id="ngocdang83/HachimiMT-60-QT",
104
+ use_marian_class=True,
105
+ generate_kwargs={
106
+ "max_new_tokens": 300,
107
+ # QT-register variant: same 60M Marian family as HachimiMT-60, but
108
+ # targets are normalized toward ta/nguoi/han/nang. Keep the 60M
109
+ # decode profile and DO NOT add no_repeat_ngram_size: 711d70e showed
110
+ # no_repeat causes duplicate-name entity drift. repetition_penalty
111
+ # was isolated as safe there.
112
+ "repetition_penalty": 1.2,
113
+ },
114
+ ct2_max_input_tokens=160,
115
+ ct2_max_output_tokens=300,
116
+ default_beam=2,
117
+ ct2_size_mb=58,
118
+ ),
119
+ "HachimiMT-30": ModelConfig(
120
+ label="HachimiMT-30",
121
+ model_id="ngocdang83/HachimiMT-30-zh-vi",
122
  use_marian_class=False,
123
  generate_kwargs={
124
  "max_length": 512,
 
157
  ct2_size_mb=58,
158
  ct2_subdir="ct2-int8", # repo này dùng tên thư mục CT2 khác
159
  ),
160
+ "MoxhiMT-30": ModelConfig(
161
+ label="MoxhiMT-30",
162
+ model_id="DanVP/MoxhiMT-30",
163
+ use_marian_class=True,
164
+ generate_kwargs={
165
  "max_new_tokens": 300,
166
  # BỎ no_repeat_ngram_size (đo 2026-06-26, entity-drift probe 72 câu):
167
  # =2 CẤM CỨNG tên 2-token lặp (vd [Mặc][Hoạ]) → decoder buộc viết lại
 
178
  # source cap short enough to split long entity-heavy paragraphs.
179
  ct2_max_input_tokens=160,
180
  ct2_max_output_tokens=512,
181
+ default_beam=2,
182
+ ct2_size_mb=38,
183
+ ),
184
+ "MoxhiMT-30-QT": ModelConfig(
185
+ label="MoxhiMT-30-QT",
186
+ model_id="DanVP/MoxhiMT-30-QT",
187
+ use_marian_class=True,
188
+ generate_kwargs={
189
+ "max_new_tokens": 300,
190
+ # QT-register variant: same 37M Marian family as MoxhiMT-30, but
191
+ # targets are normalized toward ta/nguoi/han/nang. Keep the short
192
+ # 30M input cap and DO NOT add no_repeat_ngram_size: 711d70e showed
193
+ # no_repeat causes duplicate-name entity drift. repetition_penalty
194
+ # was isolated as safe there. Default beam stays 1 because this model
195
+ # is meant as a simple stable-pronoun option.
196
+ "repetition_penalty": 1.2,
197
+ },
198
+ ct2_max_input_tokens=160,
199
+ ct2_max_output_tokens=512,
200
+ default_beam=1,
201
+ ct2_size_mb=38,
202
+ ),
203
+ "HirashibaMT-Medium": ModelConfig(
204
+ label="HirashibaMT-Medium",
205
+ model_id="Moleys/hirashiba-mt-medium",
206
+ use_marian_class=True,
207
  generate_kwargs={
208
  "max_new_tokens": 256,
209
  },