Spaces:
Build error
Build error
hainc commited on
Commit ·
2445d45
1
Parent(s): d33d341
Improve Colab notebook: add environment check, better error handling, troubleshooting guide
Browse files- run_app_colab.ipynb +170 -31
run_app_colab.ipynb
CHANGED
|
@@ -31,7 +31,82 @@
|
|
| 31 |
"outputs": [],
|
| 32 |
"source": [
|
| 33 |
"# Cài đặt các thư viện cần thiết (đầy đủ dependencies)\n",
|
| 34 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
]
|
| 36 |
},
|
| 37 |
{
|
|
@@ -49,12 +124,24 @@
|
|
| 49 |
"source": [
|
| 50 |
"# Download app.py từ repository\n",
|
| 51 |
"import urllib.request\n",
|
|
|
|
| 52 |
"\n",
|
| 53 |
"# Download app.py từ Hugging Face Spaces\n",
|
| 54 |
"app_url = \"https://huggingface.co/spaces/hainguyen306201/banking2b/resolve/main/app.py\"\n",
|
| 55 |
-
"urllib.request.urlretrieve(app_url, \"app.py\")\n",
|
| 56 |
"\n",
|
| 57 |
-
"print(\"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
]
|
| 59 |
},
|
| 60 |
{
|
|
@@ -98,23 +185,43 @@
|
|
| 98 |
"outputs": [],
|
| 99 |
"source": [
|
| 100 |
"# Đọc và sửa app.py để chạy trên Colab\n",
|
| 101 |
-
"
|
| 102 |
-
" app_code = f.read()\n",
|
| 103 |
-
"\n",
|
| 104 |
-
"# Sửa demo.launch() để có share link cho Colab\n",
|
| 105 |
-
"# Tìm và thay thế phần launch\n",
|
| 106 |
"import re\n",
|
| 107 |
-
"
|
| 108 |
-
"
|
| 109 |
-
"
|
| 110 |
-
"
|
| 111 |
-
")\n",
|
| 112 |
-
"\n",
|
| 113 |
-
"
|
| 114 |
-
"
|
| 115 |
-
"print(\"
|
| 116 |
-
"
|
| 117 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
]
|
| 119 |
},
|
| 120 |
{
|
|
@@ -143,22 +250,54 @@
|
|
| 143 |
"cell_type": "markdown",
|
| 144 |
"metadata": {},
|
| 145 |
"source": [
|
| 146 |
-
"## Lưu ý\n",
|
| 147 |
"\n",
|
| 148 |
-
"
|
| 149 |
-
"-
|
| 150 |
-
"-
|
| 151 |
-
"-
|
| 152 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
"\n",
|
| 154 |
"## ⚡ Tối ưu hiệu suất đã được bật\n",
|
| 155 |
"\n",
|
| 156 |
-
"- **faster-whisper**: STT nhanh hơn 4-5x so với openai-whisper\n",
|
| 157 |
-
"- **
|
| 158 |
-
"- **
|
| 159 |
-
"- **
|
| 160 |
-
"- **
|
| 161 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 162 |
]
|
| 163 |
}
|
| 164 |
],
|
|
|
|
| 31 |
"outputs": [],
|
| 32 |
"source": [
|
| 33 |
"# Cài đặt các thư viện cần thiết (đầy đủ dependencies)\n",
|
| 34 |
+
"# Cài đặt tất cả packages cần thiết cho app\n",
|
| 35 |
+
"%pip install -q gradio>=5.42.0 transformers>=4.51.0 torch>=2.0.0 accelerate huggingface_hub faster-whisper edge-tts numpy scipy pydub bitsandbytes flash-attn optimum openai-whisper\n",
|
| 36 |
+
"\n",
|
| 37 |
+
"print(\"✅ Đã cài đặt tất cả dependencies!\")\n",
|
| 38 |
+
"print(\"\\n📦 Packages đã cài:\")\n",
|
| 39 |
+
"print(\" - gradio: UI framework\")\n",
|
| 40 |
+
"print(\" - transformers: Hugging Face transformers\")\n",
|
| 41 |
+
"print(\" - torch: PyTorch\")\n",
|
| 42 |
+
"print(\" - faster-whisper: STT nhanh (fallback: openai-whisper)\")\n",
|
| 43 |
+
"print(\" - edge-tts: Text-to-Speech\")\n",
|
| 44 |
+
"print(\" - accelerate: Model acceleration\")\n",
|
| 45 |
+
"print(\" - huggingface_hub: Hugging Face Hub\")\n",
|
| 46 |
+
"print(\" - numpy, scipy: Scientific computing\")\n",
|
| 47 |
+
"print(\" - pydub: Audio processing\")\n",
|
| 48 |
+
"print(\" - bitsandbytes: Quantization (optional)\")\n",
|
| 49 |
+
"print(\" - flash-attn: Flash Attention (optional)\")\n",
|
| 50 |
+
"print(\" - optimum: Optimization (optional)\")\n"
|
| 51 |
+
]
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"cell_type": "markdown",
|
| 55 |
+
"metadata": {},
|
| 56 |
+
"source": [
|
| 57 |
+
"## Bước 1.5: Kiểm tra GPU và môi trường\n"
|
| 58 |
+
]
|
| 59 |
+
},
|
| 60 |
+
{
|
| 61 |
+
"cell_type": "code",
|
| 62 |
+
"execution_count": null,
|
| 63 |
+
"metadata": {},
|
| 64 |
+
"outputs": [],
|
| 65 |
+
"source": [
|
| 66 |
+
"# Kiểm tra GPU và môi trường\n",
|
| 67 |
+
"import torch\n",
|
| 68 |
+
"import sys\n",
|
| 69 |
+
"\n",
|
| 70 |
+
"print(\"🔍 Kiểm tra môi trường...\")\n",
|
| 71 |
+
"print(f\"Python version: {sys.version}\")\n",
|
| 72 |
+
"print(f\"PyTorch version: {torch.__version__}\")\n",
|
| 73 |
+
"\n",
|
| 74 |
+
"# Kiểm tra GPU\n",
|
| 75 |
+
"if torch.cuda.is_available():\n",
|
| 76 |
+
" print(f\"\\n✅ GPU có sẵn!\")\n",
|
| 77 |
+
" print(f\" - GPU: {torch.cuda.get_device_name(0)}\")\n",
|
| 78 |
+
" print(f\" - GPU Memory: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.2f} GB\")\n",
|
| 79 |
+
" print(f\" - CUDA version: {torch.version.cuda}\")\n",
|
| 80 |
+
"else:\n",
|
| 81 |
+
" print(\"\\n⚠️ Không có GPU, app sẽ chạy trên CPU (chậm hơn)\")\n",
|
| 82 |
+
"\n",
|
| 83 |
+
"# Kiểm tra các packages quan trọng\n",
|
| 84 |
+
"print(\"\\n📦 Kiểm tra packages:\")\n",
|
| 85 |
+
"try:\n",
|
| 86 |
+
" import gradio\n",
|
| 87 |
+
" print(f\" ✅ gradio: {gradio.__version__}\")\n",
|
| 88 |
+
"except ImportError:\n",
|
| 89 |
+
" print(\" ❌ gradio: Chưa cài\")\n",
|
| 90 |
+
"\n",
|
| 91 |
+
"try:\n",
|
| 92 |
+
" import transformers\n",
|
| 93 |
+
" print(f\" ✅ transformers: {transformers.__version__}\")\n",
|
| 94 |
+
"except ImportError:\n",
|
| 95 |
+
" print(\" ❌ transformers: Chưa cài\")\n",
|
| 96 |
+
"\n",
|
| 97 |
+
"try:\n",
|
| 98 |
+
" from faster_whisper import WhisperModel\n",
|
| 99 |
+
" print(\" ✅ faster-whisper: Đã cài\")\n",
|
| 100 |
+
"except ImportError:\n",
|
| 101 |
+
" print(\" ⚠️ faster-whisper: Chưa cài (sẽ dùng openai-whisper)\")\n",
|
| 102 |
+
"\n",
|
| 103 |
+
"try:\n",
|
| 104 |
+
" import edge_tts\n",
|
| 105 |
+
" print(\" ✅ edge-tts: Đã cài\")\n",
|
| 106 |
+
"except ImportError:\n",
|
| 107 |
+
" print(\" ❌ edge-tts: Chưa cài\")\n",
|
| 108 |
+
"\n",
|
| 109 |
+
"print(\"\\n✅ Kiểm tra hoàn tất!\")\n"
|
| 110 |
]
|
| 111 |
},
|
| 112 |
{
|
|
|
|
| 124 |
"source": [
|
| 125 |
"# Download app.py từ repository\n",
|
| 126 |
"import urllib.request\n",
|
| 127 |
+
"import os\n",
|
| 128 |
"\n",
|
| 129 |
"# Download app.py từ Hugging Face Spaces\n",
|
| 130 |
"app_url = \"https://huggingface.co/spaces/hainguyen306201/banking2b/resolve/main/app.py\"\n",
|
|
|
|
| 131 |
"\n",
|
| 132 |
+
"print(\"📥 Đang download app.py...\")\n",
|
| 133 |
+
"try:\n",
|
| 134 |
+
" urllib.request.urlretrieve(app_url, \"app.py\")\n",
|
| 135 |
+
" \n",
|
| 136 |
+
" # Kiểm tra file đã download\n",
|
| 137 |
+
" if os.path.exists(\"app.py\"):\n",
|
| 138 |
+
" file_size = os.path.getsize(\"app.py\") / 1024 # KB\n",
|
| 139 |
+
" print(f\"✅ Đã download app.py thành công ({file_size:.1f} KB)\")\n",
|
| 140 |
+
" else:\n",
|
| 141 |
+
" print(\"❌ Lỗi: File app.py không tồn tại sau khi download\")\n",
|
| 142 |
+
"except Exception as e:\n",
|
| 143 |
+
" print(f\"❌ Lỗi khi download app.py: {e}\")\n",
|
| 144 |
+
" print(\"💡 Thử lại hoặc kiểm tra kết nối internet\")\n"
|
| 145 |
]
|
| 146 |
},
|
| 147 |
{
|
|
|
|
| 185 |
"outputs": [],
|
| 186 |
"source": [
|
| 187 |
"# Đọc và sửa app.py để chạy trên Colab\n",
|
| 188 |
+
"import os\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
| 189 |
"import re\n",
|
| 190 |
+
"\n",
|
| 191 |
+
"if not os.path.exists(\"app.py\"):\n",
|
| 192 |
+
" print(\"❌ Lỗi: File app.py không tồn tại. Vui lòng chạy cell download trước.\")\n",
|
| 193 |
+
"else:\n",
|
| 194 |
+
" print(\"📖 Đang đọc app.py...\")\n",
|
| 195 |
+
" with open('app.py', 'r', encoding='utf-8') as f:\n",
|
| 196 |
+
" app_code = f.read()\n",
|
| 197 |
+
" \n",
|
| 198 |
+
" print(\"🔧 Đang sửa app.py cho Colab...\")\n",
|
| 199 |
+
" # Sửa demo.launch() để có share link cho Colab\n",
|
| 200 |
+
" # Tìm và thay thế phần launch\n",
|
| 201 |
+
" app_code = re.sub(\n",
|
| 202 |
+
" r'demo\\.launch\\(\\s*server_name=\"127\\.0\\.0\\.1\",\\s*server_port=7860,\\s*share=False\\s*\\)',\n",
|
| 203 |
+
" 'demo.launch(server_name=\"0.0.0.0\", server_port=7860, share=True)',\n",
|
| 204 |
+
" app_code\n",
|
| 205 |
+
" )\n",
|
| 206 |
+
" \n",
|
| 207 |
+
" # Cũng sửa phần Spaces launch nếu có\n",
|
| 208 |
+
" app_code = re.sub(\n",
|
| 209 |
+
" r'demo\\.launch\\(\\s*show_api=False,\\s*show_error=True\\s*\\)',\n",
|
| 210 |
+
" 'demo.launch(server_name=\"0.0.0.0\", server_port=7860, share=True, show_api=False, show_error=True)',\n",
|
| 211 |
+
" app_code\n",
|
| 212 |
+
" )\n",
|
| 213 |
+
" \n",
|
| 214 |
+
" print(\"✅ Đã sửa app.py cho Colab\")\n",
|
| 215 |
+
" print(\"\\n🚀 Đang khởi động app...\")\n",
|
| 216 |
+
" print(\"⏳ Quá trình tải model có thể mất 5-10 phút, vui lòng đợi...\")\n",
|
| 217 |
+
" print(\"📝 Lưu ý:\")\n",
|
| 218 |
+
" print(\" - Model sẽ được tải từ Hugging Face\")\n",
|
| 219 |
+
" print(\" - Whisper model sẽ được tải tự động\")\n",
|
| 220 |
+
" print(\" - Sau khi tải xong, bạn sẽ thấy Gradio interface\")\n",
|
| 221 |
+
" print(\" - Click vào link 'Running on public URL' để truy cập app\\n\")\n",
|
| 222 |
+
" \n",
|
| 223 |
+
" # Chạy app\n",
|
| 224 |
+
" exec(app_code)\n"
|
| 225 |
]
|
| 226 |
},
|
| 227 |
{
|
|
|
|
| 250 |
"cell_type": "markdown",
|
| 251 |
"metadata": {},
|
| 252 |
"source": [
|
| 253 |
+
"## 📋 Lưu ý quan trọng\n",
|
| 254 |
"\n",
|
| 255 |
+
"### ⚡ Yêu cầu hệ thống\n",
|
| 256 |
+
"- **GPU**: Colab sẽ tự động sử dụng GPU nếu có (T4 hoặc A100)\n",
|
| 257 |
+
"- **Memory**: Model size ~1.7B parameters, cần ít nhất 4GB GPU memory\n",
|
| 258 |
+
"- **Internet**: Cần kết nối internet ổn định để tải model\n",
|
| 259 |
+
"\n",
|
| 260 |
+
"### ⏱️ Thời gian\n",
|
| 261 |
+
"- **Tải model**: 5-10 phút tùy thuộc vào kết nối internet\n",
|
| 262 |
+
"- **Khởi động app**: 1-2 phút sau khi tải model xong\n",
|
| 263 |
+
"- **Inference**: ~1-3 giây cho mỗi câu trả lời\n",
|
| 264 |
+
"\n",
|
| 265 |
+
"### 🔗 Truy cập app\n",
|
| 266 |
+
"- **Local URL**: App sẽ chạy trên `http://localhost:7860`\n",
|
| 267 |
+
"- **Public URL**: App sẽ tự động tạo public link (share=True)\n",
|
| 268 |
+
"- **Click vào link \"Running on public URL\"** để truy cập app từ bên ngoài\n",
|
| 269 |
+
"\n",
|
| 270 |
+
"### ⚠️ Cảnh báo\n",
|
| 271 |
+
"- **Session timeout**: Nếu Colab session bị ngắt, cần chạy lại từ đầu\n",
|
| 272 |
+
"- **GPU timeout**: Colab free có thể giới hạn thời gian sử dụng GPU\n",
|
| 273 |
+
"- **Memory**: Nếu hết memory, cần restart runtime\n",
|
| 274 |
"\n",
|
| 275 |
"## ⚡ Tối ưu hiệu suất đã được bật\n",
|
| 276 |
"\n",
|
| 277 |
+
"- ✅ **faster-whisper**: STT nhanh hơn 4-5x so với openai-whisper\n",
|
| 278 |
+
"- ✅ **SDPA Attention**: Tối ưu attention mechanism\n",
|
| 279 |
+
"- ✅ **Half precision (bfloat16)**: Tối ưu memory và tốc độ\n",
|
| 280 |
+
"- ✅ **CUDA optimizations**: Tối ưu cuDNN, cuBLAS\n",
|
| 281 |
+
"- ✅ **Memory optimization**: Tận dụng tối đa GPU RAM\n",
|
| 282 |
+
"\n",
|
| 283 |
+
"## 🐛 Troubleshooting\n",
|
| 284 |
+
"\n",
|
| 285 |
+
"### Lỗi \"Out of memory\"\n",
|
| 286 |
+
"- Restart runtime và chạy lại\n",
|
| 287 |
+
"- Giảm `max_tokens` trong settings\n",
|
| 288 |
+
"\n",
|
| 289 |
+
"### Lỗi \"Model not found\"\n",
|
| 290 |
+
"- Kiểm tra kết nối internet\n",
|
| 291 |
+
"- Đảm bảo đã đăng nhập Hugging Face (nếu model private)\n",
|
| 292 |
+
"\n",
|
| 293 |
+
"### Lỗi \"Whisper model not loaded\"\n",
|
| 294 |
+
"- Đợi thêm vài phút để model tải xong\n",
|
| 295 |
+
"- Kiểm tra log để xem lỗi chi tiết\n",
|
| 296 |
+
"\n",
|
| 297 |
+
"### App không phát audio\n",
|
| 298 |
+
"- Kiểm tra browser có cho phép autoplay không\n",
|
| 299 |
+
"- Thử refresh trang\n",
|
| 300 |
+
"- Kiểm tra console log để xem lỗi TTS\n"
|
| 301 |
]
|
| 302 |
}
|
| 303 |
],
|