wan22-service/skill/SKILL.md
yumoqing 769fc4968e feat: initial wan22 video generation service
- Wan2.2-TI2V-5B GPU 视频推理
- ahserver + longtasks 异步任务队列
- OpenAI 兼容 API: POST /api/submit, GET /api/task, GET /api/status
- 模型常驻内存,惰性加载
- 全局串行推理锁(GPU 安全)
- 支持 t2v/i2v/ti2v/s2v 四种任务类型
2026-06-09 22:00:22 +08:00

88 lines
2.7 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.

---
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)