{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": "# HachimiMT — Dịch Trung → Việt (Google Colab)\n\nChạy app dịch truyện **HachimiMT / MoxhiMT** (CTranslate2) ngay trên Colab — tận dụng **CPU/GPU miễn phí** của Google, không cần cài gì trên máy.\n\n> ## ⚡ BẬT GPU TRƯỚC (rất nên) — nhanh gấp NHIỀU LẦN\n> Menu **`Runtime → Change runtime type → T4 GPU`** → `Save`, **rồi** mới Run all.\n> (Colab tiếng Việt: **`Thời gian chạy → Thay đổi loại thời gian chạy → T4 GPU → Lưu`**.)\n>\n> ⚠️ **Chọn đúng `T4 GPU`** — KHÔNG chọn **TPU** (v5e-1...). CTranslate2 chỉ chạy GPU NVIDIA/CPU, **không dùng được TPU**: chọn TPU thì app rớt về CPU (chậm), phí tài nguyên.\n>\n> App tự nhận GPU và notebook đã tối ưu window cho T4. **GPU T4 dịch ~40.000 chữ Hán/giây ở beam 1** hoặc **~28.000 chữ/giây ở beam 2** (đo thật) — cả bộ truyện dài **2,4 triệu chữ khoảng 1–1,5 phút**. CPU chậm hơn nhiều lần. GPU miễn phí, bật là dùng.\n\n**Cách dùng:** sau khi bật GPU, `Runtime → Run all` (Ctrl+F9) — tiếng Việt: `Thời gian chạy → Chạy tất cả`. Cell cuối in ra một **link công khai** (`*.gradio.live`) — bấm vào đó để mở giao diện dịch.\n\nMã nguồn: tải từ 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, ~60 KB)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "import urllib.request, zipfile, os, shutil\n\nZIP_URL = \"https://huggingface.co/spaces/ngocdang83/HachimiMT-demo/resolve/main/hachimimt-local.zip\"\nurllib.request.urlretrieve(ZIP_URL, \"hachimimt-local.zip\")\n# Xóa bản giải nén cũ trước (nếu chạy lại) — tránh file/module cũ còn sót\n# khi zip mới đã bỏ bớt, dẫn tới chạy code lai.\nshutil.rmtree(\"hachimimt\", ignore_errors=True)\nwith zipfile.ZipFile(\"hachimimt-local.zip\") as z:\n z.extractall(\".\")\nprint(\"Đã 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 dòng đỏ `ERROR: pip's dependency resolver ... google-adk ... starlette ... incompatible` — **đây là cảnh báo vô hại**, do gói `google-adk` Colab cài sẵn (app không dùng tới). Thư viện app vẫn cài xong, **cứ chạy tiếp cell dưới**." }, { "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. Để dừng: bấm nút ⏹ stop của cell." ] }, { "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.\nos.environ[\"HACHIMIMT_SHARE\"] = \"1\"\n# Tối ưu cho Colab T4 x1: benchmark thực tế cho thấy window=16 nhanh hơn window=4 ~25–31%.\nos.environ.setdefault(\"HACHIMIMT_BATCH_SIZE\", \"96\")\nos.environ.setdefault(\"HACHIMIMT_CT2_BATCH_TYPE\", \"tokens\")\nos.environ.setdefault(\"HACHIMIMT_CT2_WINDOW_MULTIPLIER\", \"16\")\nos.environ.setdefault(\"HACHIMIMT_INTER_THREADS\", \"1\")\nsys.path.insert(0, os.path.abspath(\"hachimimt/src\"))\n\n# Báo rõ đang chạy GPU hay CPU (để biết đã bật GPU chưa).\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})\")\n print(\"⚙️ Colab speed config: batch=96, batch_type=tokens, window=16, inter=1\")\nelse:\n print(\"⚠️ Đang chạy CPU (chậm ~50× GPU). Bật GPU: Runtime → Change runtime type → \"\n \"T4 GPU → Save (tiếng Việt: Thời gian chạy → Thay đổi loại thời gian chạy → \"\n \"T4 GPU → Lưu), rồi Run all lại.\\n\"\n \" Lưu ý: chọn T4 GPU, KHÔNG chọn TPU — app không dùng được TPU, sẽ rớt về CPU.\")\n\n# Chạy app.\nimport app\napp.main()" } ], "metadata": { "colab": { "name": "HachimiMT — Dịch Trung Việt", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }