F5-TTS-THAI / DEPLOYMENT_GUIDE.md
pythonlearnreal's picture
Upload folder using huggingface_hub
106478e verified
# 🚀 คู่มือการ Deploy F5-TTS Thai WebUI
## วิธีการ Deploy ไป Hugging Face Spaces
### ขั้นตอนที่ 1: เตรียม Account และ Repository
1. **สร้าง Hugging Face Account** (ถ้ายังไม่มี)
- ไปที่ https://huggingface.co/join
- สร้าง account ฟรี
2. **สร้าง Space ใหม่**
- ไปที่ https://huggingface.co/new-space
- ตั้งชื่อ Space (เช่น `f5-tts-thai`)
- เลือก SDK: **Gradio**
- เลือก Hardware: **CPU basic** (ฟรี) หรือ **GPU** (ต้องเสียเงิน)
### ขั้นตอนที่ 2: Upload โค้ด
**วิธีที่ 1: ใช้ Git (แนะนำ)**
```bash
# Clone repository ที่สร้างจาก HF Spaces
git clone https://huggingface.co/spaces/YOUR_USERNAME/f5-tts-thai
cd f5-tts-thai
# คัดลอกไฟล์จากโปรเจ็กต์ของคุณ
cp -r /path/to/F5-TTS-THAI/src .
cp /path/to/F5-TTS-THAI/app.py .
cp /path/to/F5-TTS-THAI/requirements.txt .
# สร้าง README.md จาก README_DEPLOYMENT.md
cp /path/to/F5-TTS-THAI/README_DEPLOYMENT.md README.md
# Commit และ push
git add .
git commit -m "Initial deployment"
git push
```
**วิธีที่ 2: อัปโหลดผ่าน Web Interface**
1. ไปที่ Space ที่คุณสร้าง
2. คลิก "Files and versions"
3. อัปโหลดไฟล์ทีละไฟล์:
- `app.py`
- `requirements.txt`
- `README.md` (จาก README_DEPLOYMENT.md)
- โฟลเดอร์ `src/` ทั้งหมด
### ขั้นตอนที่ 3: ตรวจสอบการ Deploy
1. **รอการ Build**
- Hugging Face จะ build app อัตโนมัติ
- ดู logs ได้ที่ "Logs" tab
2. **ทดสอบ App**
- เมื่อ build สำเร็จ จะแสดง URL ของ app
- ทดสอบ functionality ต่างๆ
### ขั้นตอนที่ 4: Configuration ขั้นสูง
**เปิดใช้งาน GPU (ต้องเสียเงิน)**
```yaml
# ใน README.md header
---
title: F5-TTS Thai
emoji: 🎤
colorFrom: blue
colorTo: purple
sdk: gradio
sdk_version: 4.44.0
app_file: app.py
pinned: false
license: mit
python_version: 3.10
hardware: gpu-t4-small # เปลี่ยนจาก cpu-basic
---
```
**ปรับแต่ง Environment Variables**
ใน Space settings เพิ่ม variables:
- `CUDA_VISIBLE_DEVICES=0` (สำหรับ GPU)
- `TRANSFORMERS_CACHE=/tmp` (เพื่อประหยัด storage)
## วิธีการ Deploy ไป Gradio.app
### ขั้นตอนที่ 1: สร้าง Account
1. ไปที่ https://gradio.app
2. สร้าง account และ login
### ขั้นตอนที่ 2: Deploy
```bash
# ติดตั้ง gradio
pip install gradio
# Upload app
python app.py --share
```
## การ Optimize สำหรับ Production
### 1. ลดขนาด Model
```python
# ใน config.py เปลี่ยนเป็น
DEFAULT_MODEL_BASE = "hf://VIZINTZOR/F5-TTS-THAI/model_650000_FP16.pt" # ใช้ FP16
```
### 2. เพิ่ม Caching
```python
# ใน model_manager.py
@lru_cache(maxsize=1)
def get_cached_model():
return load_model(...)
```
### 3. ปรับแต่ง Memory Usage
```python
# ใน app.py
import torch
torch.set_num_threads(2) # ลด CPU threads
```
### 4. เพิ่ม Error Handling
```python
# ใน app.py
import gc
import torch
def cleanup_memory():
gc.collect()
if torch.cuda.is_available():
torch.cuda.empty_cache()
```
## Troubleshooting
### ปัญหา: Out of Memory
**แก้ไข:**
```python
# ใช้โมเดล FP16
# ลด NFE steps
# เพิ่ม memory cleanup
```
### ปัญหา: Slow Loading
**แก้ไข:**
```python
# Pre-load models
# ใช้ model caching
# ปรับ CPU/GPU settings
```
### ปัญหา: Import Errors
**แก้ไข:**
```python
# ตรวจสอบ requirements.txt
# เพิ่ม try-except สำหรับ imports
# ใช้ fallback interface
```
## การ Monitor และ Maintain
### 1. ดู Logs
```bash
# ดู logs ของ HF Spaces
# Monitor memory usage
# ตรวจสอบ error rates
```
### 2. Update App
```bash
# git pull latest changes
# test locally first
# deploy gradually
```
### 3. Scale Up/Down
```bash
# เปลี่ยน hardware specs
# ปรับ concurrent users
# optimize model loading
```
## Security Considerations
### 1. Input Validation
```python
def validate_audio_input(audio_file):
# ตรวจสอบขนาดไฟล์
# ตรวจสอบรูปแบบไฟล์
# จำกัดความยาวเสียง
```
### 2. Rate Limiting
```python
import time
from functools import wraps
def rate_limit(calls_per_minute=10):
# implement rate limiting
```
### 3. Content Filtering
```python
def filter_inappropriate_content(text):
# กรองเนื้อหาที่ไม่เหมาะสม
# ตรวจสอบ spam
```
## Cost Optimization
### Free Tier (CPU)
- **ข้อจำกัด**: ช้า, memory จำกัด
- **เหมาะสำหรับ**: demo, testing
### GPU Tier (T4/A10G)
- **ราคา**: ~$0.60-3.00/ชั่วโมง
- **เหมาะสำหรับ**: production, fast inference
### Tips ประหยัดค่าใช้จ่าย
1. ใช้ CPU สำหรับ development
2. เปิด GPU เฉพาะเวลาที่ต้องการ
3. ใช้ auto-shutdown
4. Monitor usage regularly
## สรุป
การ deploy F5-TTS Thai WebUI ไป cloud platforms ทำได้ง่ายและมีหลายทางเลือก:
**Hugging Face Spaces**: ง่าย, มี free tier
**Gradio.app**: รวดเร็ว, เหมาะสำหรับ quick demos
**Cloud Platforms**: AWS, GCP, Azure สำหรับ enterprise
เลือกตามความต้องการและงบประมาณของคุณ! 🚀