{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": "# HachimiMT — Dịch Trung → Việt (Kaggle, GPU T4 miễn phí)\n\nChạy app dịch truyện **HachimiMT / MoxhiMT** (CTranslate2) trên Kaggle — GPU T4 miễn phí (~30 giờ/tuần), không cần cài gì trên máy.\n\n## ⚡ Trước khi chạy — bật GPU + Internet\n1. **`Settings → Accelerator → GPU T4 x2`** (app tự dùng các GPU CUDA khả dụng; T4 x2 thường nhanh hơn 1 T4 khi văn bản đủ dài).\n2. **`Settings → Internet → on`** (BẮT BUỘC — để tải code + model và tạo link công khai).\n3. Rồi **`Run All`**.\n\n> ⚠️ **Chọn `GPU T4 x2`** — **KHÔNG chọn `GPU P100`**: P100 (kiến trúc cũ) không hỗ trợ kiểu tính `int8_float16` của model nên app sẽ rớt về CPU (chậm ~50×). Cũng **không chọn TPU** (CTranslate2 không dùng được TPU).\n\n### 🚀 Tốc độ đo thật (T4 x2, cả bộ truyện 2,44 triệu chữ Hán)\n| Chế độ | Tốc độ | Cả bộ truyện 2,44M chữ |\n|---|---|---|\n| **Beam 2** (mặc định, chất lượng) | ~42.000 chữ Hán/giây | ~58 giây |\n| **Beam 1** (nhanh hơn ~1,25×) | ~52.000 chữ Hán/giây | ~47 giây |\n\n> Beam thấp dịch nhanh hơn nhưng chất lượng nhỉnh kém hơn chút (chọn Beam trong giao diện). 1 GPU T4 (vd Colab) đạt ~27.000 chữ/giây — T4 x2 nhanh hơn ~1,5×.\n\nCell cuối in ra **link công khai** (`*.gradio.live`) — bấm vào đó để mở giao diện dịch.\n\nMã nguồn: HF Space [ngocdang83/HachimiMT-demo](https://huggingface.co/spaces/ngocdang83/HachimiMT-demo)." }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Tải mã nguồn app (từ HF Space, ~75 KB)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import urllib.request, zipfile, os, shutil\n", "\n", "ZIP_URL = \"https://huggingface.co/spaces/ngocdang83/HachimiMT-demo/resolve/main/hachimimt-local.zip\"\n", "urllib.request.urlretrieve(ZIP_URL, \"hachimimt-local.zip\")\n", "shutil.rmtree(\"hachimimt\", ignore_errors=True) # xóa bản cũ nếu chạy lại\n", "with zipfile.ZipFile(\"hachimimt-local.zip\") as z:\n", " z.extractall(\".\")\n", "print(\"Đã tải + giải nén:\", sorted(os.listdir(\"hachimimt\")))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Cài thư viện (CTranslate2 + Gradio + tokenizer) — ~1 phút\n", "\n", "> Nếu thấy vài dòng đỏ `ERROR: pip's dependency resolver ...` về gói Kaggle cài sẵn — **vô hại**, cứ chạy tiếp." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!pip install -q -r hachimimt/requirements.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Chạy app — đợi link `*.gradio.live` hiện ra rồi bấm vào\n", "\n", "Lần dịch đầu sẽ tự tải model (~57 MB) từ Hugging Face." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "import os, sys\n\n# Bật link share công khai (gradio.live) — app đọc cờ này (cần Internet=on).\nos.environ[\"HACHIMIMT_SHARE\"] = \"1\"\n# Kaggle T4 x2 đồng cấu hình: cho app tự dùng cả 2 GPU nếu có.\nos.environ[\"HACHIMIMT_AUTO_ALL_GPUS\"] = \"1\"\nsys.path.insert(0, os.path.abspath(\"hachimimt/src\"))\n\n# Báo rõ đang chạy GPU hay CPU.\nfrom hardware import detect_hardware_profile\n_hw = detect_hardware_profile()\nif _hw.has_cuda:\n print(f\"✅ Đang dùng GPU: {_hw.gpu_name} — nhanh! ({_hw.summary})\")\nelse:\n print(\"⚠️ Đang chạy CPU (chậm ~50× GPU). Kiểm tra:\\n\"\n \" • Settings → Accelerator → GPU T4 x2 (KHÔNG chọn P100 — không tương thích, \"\n \"sẽ rớt CPU)\\n\"\n \" • Settings → Internet → on\\n\"\n \" rồi Run All lại.\")\n\nimport app\napp.main()" } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 4 }