Files
AI_A4000/video_worker/README.md
2026-04-07 00:37:39 +08:00

195 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Local Video Worker
一个本地单机视频生成 Worker提供最小化 HTTP API接收任务、按模式路由模型、单任务串行执行、输出统一结果目录。
## 1. 项目说明
- 目标:边缘执行节点,不是完整平台。
- 路由规则:
- `preview` -> `LTX-Video`
- `refine` -> `HunyuanVideo-1.5`
- 状态机:`PENDING` / `RUNNING` / `SUCCEEDED` / `FAILED`
- 当前后端是可执行骨架:
- 已实现懒加载、参数透传、输出规范、日志与错误处理
- 真实模型推理请替换 `app/backends/ltx_backend.py``app/backends/hunyuan_backend.py``TODO` 位置
## 2. 环境准备
- Python 3.10+
- ffmpeg
- NVIDIA GPU + CUDA可选健康检查会显示可用性
## 3. WSL + CUDA 检查方法
在 WSL Ubuntu 内执行:
```bash
nvidia-smi
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'no gpu')"
```
## 4. 安装命令
### WSL / Linux
```bash
cd video_worker
bash scripts/install_wsl_env.sh
cp .env.example .env # 若脚本未自动生成
```
### Windows PowerShell
```powershell
cd video_worker
.\scripts\install_windows_env.ps1
```
## 5. 启动命令
### WSL / Linux
```bash
cd video_worker
bash scripts/run_server.sh
```
### Windows
```powershell
cd video_worker
.\scripts\run_server.ps1
```
或:
```bat
scripts\run_server.bat
```
## 6. 调用示例
创建任务:
```bash
curl -X POST http://127.0.0.1:8000/generate \
-H "Content-Type: application/json" \
-d '{
"prompt": "a lonely man walking in a rainy neon street, cinematic, handheld camera",
"negative_prompt": "blurry, deformed face, extra limbs, flicker",
"quality_mode": "preview",
"duration_sec": 5,
"width": 832,
"height": 480,
"fps": 16,
"steps": 8,
"seed": 123456
}'
```
轮询状态:
```bash
curl http://127.0.0.1:8000/tasks/<task_id>
curl http://127.0.0.1:8000/tasks/<task_id>/result
```
烟雾测试:
```bash
cd video_worker
. .venv/bin/activate # Windows: .\.venv\Scripts\Activate.ps1
python scripts/smoke_test.py
```
## 7. 目录说明
```text
video_worker/
├─ app/
│ ├─ main.py
│ ├─ api.py
│ ├─ schemas.py
│ ├─ settings.py
│ ├─ task_manager.py
│ ├─ model_router.py
│ ├─ gpu_worker.py
│ ├─ task_store.py
│ ├─ backends/
│ │ ├─ base.py
│ │ ├─ ltx_backend.py
│ │ └─ hunyuan_backend.py
│ └─ utils/
│ ├─ files.py
│ ├─ ffmpeg_utils.py
│ ├─ image_utils.py
│ └─ logger.py
├─ models/
│ ├─ ltx/
│ └─ hunyuan/
├─ outputs/
├─ runtime/
│ ├─ tasks.db
│ └─ logs/
├─ scripts/
│ ├─ install_wsl_env.sh
│ ├─ install_windows_env.ps1
│ ├─ run_server.sh
│ ├─ run_server.ps1
│ ├─ run_server.bat
│ ├─ migrate_db.py
│ └─ smoke_test.py
├─ requirements.txt
├─ .env.example
└─ README.md
```
## 8. API 说明
- `POST /generate`
- 创建任务并入队
- `GET /tasks/{task_id}`
- 查询任务状态
- `GET /tasks/{task_id}/result`
- 查询结果路径或错误
- `GET /health`
- 服务状态、CUDA、GPU 名称、模型加载状态
参数限制:
- `duration_sec`: 1~5
- `width`: <= 832
- `height`: <= 480
- `fps`: <= 24
- `quality_mode`: `preview``refine`
## 9. 常见问题
- `ffmpeg not found`
- WSL: `sudo apt-get install -y ffmpeg`
- Windows: 安装 ffmpeg 并加入 PATH
- `torch.cuda.is_available() == False`
- 检查驱动、CUDA、WSL GPU 直通是否正常
- 任务失败
- 查看 `outputs/{task_id}/run.log`
- 查看 `/tasks/{task_id}/result` 返回的 `error`
## 10. 已知限制
- 当前后端默认输出演示视频(可执行骨架),未内置完整真实模型权重加载
- 单进程单 worker 串行执行,不支持多卡并行
- SQLite 用于单机场景
## 迁移支持(数据库)
项目内置 schema version 迁移:
- 启动服务时自动执行迁移
- 也可手动执行:
```bash
python scripts/migrate_db.py
```
迁移记录存储在 `schema_migrations` 表,便于后续版本升级与跨环境迁移。