- Wan2.2-TI2V-5B GPU 视频推理 - ahserver + longtasks 异步任务队列 - OpenAI 兼容 API: POST /api/submit, GET /api/task, GET /api/status - 模型常驻内存,惰性加载 - 全局串行推理锁(GPU 安全) - 支持 t2v/i2v/ti2v/s2v 四种任务类型
2.7 KiB
2.7 KiB
| name | description | tags | ||||||
|---|---|---|---|---|---|---|---|---|
| wan22-video-generation | Wan2.2-TI2V-5B 视频生成服务 — OpenAI 兼容 API,基于 ahserver + longtasks 异步任务队列,模型常驻 GPU 内存 |
|
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 接口
提交任务
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}'
查询状态
curl "http://<server>:8079/api/task?task_id=xxx"
下载视频
curl -o output.mp4 "http://<server>:8079/idfile?path=task_id.mp4"
设计要点
- 串行推理锁:
_GLOBAL_INFER_LOCK(threading.Lock) 保证 GPU 安全 - 模型常驻: Wan22 实例惰性初始化,首次任务加载后跨任务复用
- 异步队列: longtasks (Redis) worker_cnt=1,一次处理一个任务
- 支持任务类型: t2v / i2v / ti2v / s2v
管理
ssh ymq@opencomputing.net
cd ~/wan22-service
./start.sh # 启动 (后台, nohup)
./stop.sh # 停止 (kill pid)
tail -f wan22-service.log # 查看日志
Sage 集成
通过 Sage 的 llmage + uapi 方式接入:
-- 注册 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)