Spaces:
Running
Running
feat(space): add MoxhiMT-30-QT and rebuild zip
Browse files- HachimiMT_Benchmark_Profile.ipynb +1 -1
- README_hachimimt_colab.md +203 -194
- hachimimt-local.zip +2 -2
- src/app.py +2 -2
- src/translator.py +19 -0
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, 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-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,194 +1,203 @@
|
|
| 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 |
-
[](https://colab.research.google.com/github/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Colab.ipynb)
|
| 14 |
-
[](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
|
| 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 |
-
[](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 |
-
[](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
|
| 126 |
-
bất cứ lúc nào (tự tải khi cần).
|
| 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
|
| 133 |
-
| **MoxhiMT-60** | 58 MB | Bản 60M dòng MoxhiMT — giọ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 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
>
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
[
|
| 146 |
-
|
| 147 |
-
--
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
-
|
| 152 |
-
|
| 153 |
-
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
--
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
- **
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
---
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
[](https://colab.research.google.com/github/ngocdang8311/hachimimt-colab/blob/master/HachimiMT_Colab.ipynb)
|
| 14 |
+
[](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 |
+
[](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 |
+
[](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 MoxhiMT — giọ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 có lúc ổn định hơn HachimiMT-60; ngược lại HachimiMT-60 có thể
|
| 141 |
+
> 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
|
| 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 mô hình** và **beam** (đánh đổi tốc độ ↔ chất lượng).
|
| 160 |
+
- 🈶 **Chuẩn hóa xưng hô 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 là những chỗ HachimiMT **chưa bằng** cách dịch cũ:
|
| 171 |
+
|
| 172 |
+
- **Tên riêng hiếm có thể dịch lệch giữa các đoạn.** Mô 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 |
+
- **Mô hình cố định**, không tùy biến thuật ngữ / không thêm từ điển riêng.
|
| 179 |
+
- Mô 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 là 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**, HachimiMT là mộ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.*
|
hachimimt-local.zip
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8fd3fcbc0f4876e9247120221e121f6e95976b4814eb01d76a92cabc1345a660
|
| 3 |
+
size 128835
|
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 |
-
-
|
| 1982 |
-
- Bản local mở khoá: chọn
|
| 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 7 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
|
@@ -163,6 +163,25 @@ MODELS: dict[str, ModelConfig] = {
|
|
| 163 |
default_beam=2,
|
| 164 |
ct2_size_mb=38,
|
| 165 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
"HirashibaMT-Medium": ModelConfig(
|
| 167 |
label="HirashibaMT-Medium",
|
| 168 |
model_id="Moleys/hirashiba-mt-medium",
|
|
|
|
| 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",
|