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

2.7 KiB
Raw Blame History

name description tags
wan22-video-generation Wan2.2-TI2V-5B 视频生成服务 — OpenAI 兼容 API基于 ahserver + longtasks 异步任务队列,模型常驻 GPU 内存
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 接口

提交任务

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"

设计要点

  1. 串行推理锁: _GLOBAL_INFER_LOCK (threading.Lock) 保证 GPU 安全
  2. 模型常驻: Wan22 实例惰性初始化,首次任务加载后跨任务复用
  3. 异步队列: longtasks (Redis) worker_cnt=1一次处理一个任务
  4. 支持任务类型: 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)