- Wan2.2-TI2V-5B GPU 视频推理 - ahserver + longtasks 异步任务队列 - OpenAI 兼容 API: POST /api/submit, GET /api/task, GET /api/status - 模型常驻内存,惰性加载 - 全局串行推理锁(GPU 安全) - 支持 t2v/i2v/ti2v/s2v 四种任务类型
88 lines
2.7 KiB
Markdown
88 lines
2.7 KiB
Markdown
---
|
||
name: wan22-video-generation
|
||
description: Wan2.2-TI2V-5B 视频生成服务 — OpenAI 兼容 API,基于 ahserver + longtasks 异步任务队列,模型常驻 GPU 内存
|
||
tags: [wan22, video-generation, ai-compute, gpu, ahserver, longtasks]
|
||
---
|
||
|
||
# Wan22 Video Generation Service
|
||
|
||
Wan2.2-TI2V-5B 视频生成服务,部署在 GPU 服务器 (ymq@opencomputing.net) 上。
|
||
|
||
## 架构
|
||
|
||
```
|
||
User/Hermes → Sage llmage/uapi → wan22-service (port 8079) → GPU 推理
|
||
```
|
||
|
||
独立 ahserver 应用,通过 longtasks + Redis 管理异步视频生成任务。
|
||
|
||
## 关键文件
|
||
|
||
| 文件 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| 主入口 | `~/wan22-service/ah.py` | ahserver + Wan22Tasks 初始化 |
|
||
| 提任务 | `~/wan22-service/app/api/submit/index.dspy` | POST /api/submit |
|
||
| 查状态 | `~/wan22-service/app/api/task/index.dspy` | GET /api/task?task_id=xxx |
|
||
| 推理执行 | `~/wan22-service/workers/generate.py` | 惰性加载 Wan22,进程内推理 |
|
||
| Wan22 类 | `~/wan22-service/workers/wan22_wrapper.py` | OpenAI 风格封装 |
|
||
| 配置文件 | `~/wan22-service/conf/config.json` | 端口 8079, Redis, filesroot |
|
||
| 启动脚本 | `~/wan22-service/start.sh` | WAN22_GPU_ID=2 |
|
||
|
||
## API 接口
|
||
|
||
### 提交任务
|
||
```bash
|
||
curl -X POST http://<server>:8079/api/submit \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"prompt":"A cinematic street at dawn, blue-grey tones","size":"1280*720","frame_num":81}'
|
||
```
|
||
|
||
### 查询状态
|
||
```bash
|
||
curl "http://<server>:8079/api/task?task_id=xxx"
|
||
```
|
||
|
||
### 下载视频
|
||
```bash
|
||
curl -o output.mp4 "http://<server>:8079/idfile?path=task_id.mp4"
|
||
```
|
||
|
||
## 设计要点
|
||
|
||
1. **串行推理锁**: `_GLOBAL_INFER_LOCK` (threading.Lock) 保证 GPU 安全
|
||
2. **模型常驻**: Wan22 实例惰性初始化,首次任务加载后跨任务复用
|
||
3. **异步队列**: longtasks (Redis) worker_cnt=1,一次处理一个任务
|
||
4. **支持任务类型**: t2v / i2v / ti2v / s2v
|
||
|
||
## 管理
|
||
|
||
```bash
|
||
ssh ymq@opencomputing.net
|
||
cd ~/wan22-service
|
||
./start.sh # 启动 (后台, nohup)
|
||
./stop.sh # 停止 (kill pid)
|
||
tail -f wan22-service.log # 查看日志
|
||
```
|
||
|
||
## Sage 集成
|
||
|
||
通过 Sage 的 llmage + uapi 方式接入:
|
||
|
||
```sql
|
||
-- 注册 uapi provider
|
||
INSERT INTO uapiprovider (...) VALUES ('wan22', 'Wan2.2', 'http://wan22.internal:8079');
|
||
|
||
-- 注册 API endpoint
|
||
INSERT INTO uapi (providerid, apiname, path, ...) VALUES ('wan22', 'video_generations', '/api/submit', ...);
|
||
|
||
-- 注册 llm 模型
|
||
INSERT INTO llm (model, ...) VALUES ('wan2.2-ti2v-5b', ...);
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
- GPU OOM 时:减少 frame_num (最小 17) 或换小分辨率
|
||
- task 未完成时返回 `PENDING` 状态,需轮询
|
||
- 任务最长超时 3600 秒 (stuck_seconds)
|
||
- 已完成任务保留 24 小时 (max_age_hours)
|