简介:本文面向开发者与技术负责人,说明如何在 GPU 容器中部署全模态视频生成服务,并通过健康检查、HTTP 接口和 ffprobe 完成出片验证。文中给出资源清单、启动命令、接口示例和排错表,读者可按步骤复现,并判断不同分辨率与时长对显存的影响。
本文说明如何在一台配备 NVIDIA GPU 的容器环境中,启动一个支持文本、图像、音频和视频输入的全模态视频生成服务,并核对输出结果。完成后,你应能够:
本文以 1280x720、5 秒、单段生成作为起步配置。1920x1080 和 2K 输出需要更多显存,能否稳定运行取决于模型、镜像和参数,需要在你自己的环境中实测。文中出现的数字都是规划值,不是性能承诺。音频验证只适用于所用模型文档明确支持音频生成的情况。
文中的 <...> 占位符需要替换为你所用模型的官方名称、版本号和镜像地址。
适用场景如下:
以下场景需要额外审批或授权:
| 项目 | 最低要求(720p、5 秒验证) | 推荐要求(1080p 及以上) |
|---|---|---|
| GPU 显存 | 24 GB | 48 GB 或以上 |
| 系统内存 | 32 GB | 64 GB |
| 磁盘可用空间 | 200 GB(含权重与输出) | 500 GB 以上 |
| NVIDIA 驱动 | 不低于镜像内 CUDA 版本的要求 | 同左 |
| Docker | Docker Engine 20.10 或以上,已安装 NVIDIA Container Toolkit | 同左 |
| Python 环境 | 使用镜像内置版本 | 同左,不在宿主机混装 |
以上数值是规划值,实际以所用模型的官方文档为准。若显存不足,先降低分辨率或缩短时长,而不是升级依赖版本。
nvidia-smidocker info | grep -i runtime
预期结果:nvidia-smi 列出目标 GPU 和显存容量;docker info 的输出中包含 nvidia 运行时。
docker pull <镜像地址>:<版本标签>mkdir -p /data/models /data/outputs
权重需从模型官方渠道下载,并核对发布页给出的 SHA256 校验值:
sha256sum /data/models/<权重文件名>
校验值一致后再继续。不一致时删除文件并重新下载。
docker run -d --name omni-video \--gpus all \--shm-size=16g \-p 8080:8080 \-v /data/models:/models:ro \-v /data/outputs:/outputs \-e MODEL_PATH=/models/<权重目录> \-e OUTPUT_DIR=/outputs \<镜像地址>:<版本标签>
若镜像的默认入口已包含启动脚本,就不需要额外指定启动命令。首次启动需要加载权重,耗时可能达到数分钟,以日志为准。
docker logs -f omni-videoss -lntp | grep 8080
日志中应出现服务监听成功的提示,具体文本以镜像文档为准。8080 端口应处于 LISTEN 状态。
curl -s http://127.0.0.1:8080/health
预期返回 HTTP 200,且 JSON 中的 status 字段为 ok。接口路径以服务文档为准。
curl -X POST http://127.0.0.1:8080/v1/video/generate \-H "Content-Type: application/json" \-d '{"prompt": "夜晚的海边,海浪拍打礁石,镜头缓慢推进","resolution": "1280x720","duration_sec": 5,"fps": 24,"audio": true,"seed": 42}'
字段名以服务接口文档为准。固定 seed 便于复现同一结果。若接口为同步返回,响应体中会给出输出文件路径。若接口为异步返回,响应中会包含 task_id,可用下面的命令轮询状态:
curl -s http://127.0.0.1:8080/v1/tasks/<task_id>
按以下顺序验证:720p 与 5 秒通过后,再尝试 1080p,最后尝试 2K。每一步都记录显存峰值:
nvidia-smi --query-gpu=memory.used,memory.total --format=csv -l 2
按 Ctrl+C 结束监控。若某一步出现显存溢出,退回上一个通过的配置。
ls -lh /data/outputs
ffprobe -v error \-show_entries stream=codec_type,codec_name,width,height,channels,sample_rate \-show_entries format=duration \-of default=noprint_wrappers=1 /data/outputs/<文件名>.mp4
核对要点如下:
width 与 height 应与请求值一致。duration 应接