尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

在 Xinference 中部署与调用 Wan2.2-TI2V-5B:多引擎文生视频 / 图生视频实战指南

在 Xinference 中部署与调用 Wan2.2-TI2V-5B:多引擎文生视频 / 图生视频实战指南 在 Xinference 中部署与调用 Wan2.2-TI2V-5B多引擎文生视频 / 图生视频实战指南【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inferenceWan2.2-TI2V-5B 是阿里通义万相Wan系列中一款面向 text2video 与 image2video 双能力的开源视频生成模型Xinference 将其作为内置built-in视频模型纳入统一推理 API支持diffusers与MLX两种引擎。本文将基于内置模型规格文档 wan2.2-ti2v-5b.rst结合 Xinference 视频模块的源码实现video/core.py、video/engine.py、video/diffusers.py、video/mlx_video.py与 REST API 路由api/routers/videos.py讲解如何一条命令完成模型启动、如何在 GPUdiffusers 引擎与 Apple SiliconMLX 引擎之间选择以及如何通过统一视频 API 完成文生视频与图生视频的调用。模型规格速览项目内容Model NameWan2.2-ti2v-5BModel FamilyWanAbilitiestext2video、image2videodiffusers 模型 IDWan-AI/Wan2.2-TI2V-5B-DiffusersMLX 模型 IDSceneWorks/wan2.2-ti2v-5b-mlx可用引擎diffusers、MLX其中Wan2.2-ti2v-5B这一模型名在 Xinference 的视频模型注册表中同时登记了两条规格见 video/model_spec.jsondiffusers 规格engine: diffusers、model_format: diffusersHugging Face 源为Wan-AI/Wan2.2-TI2V-5B-DiffusersModelScope 源为Wan-AI/Wan2.2-TI2V-5B-Diffusersrevision 为master默认torch_dtype为bfloat16并且该条规格标记为featured: trueMLX 规格engine: MLX、model_format: mlx、cache_name: Wan2.2-ti2v-5B-mlxHugging Face 源为SceneWorks/wan2.2-ti2v-5b-mlxModelScope 源为Xorbits/wan2.2-ti2v-5b-mlx并带有独立的缓存文件过滤规则config.json、model.safetensors、t5_encoder.safetensors、tokenizer.json、vae.safetensors。这也说明在 Xinference 中同一个模型名可以同时绑定多个引擎与多个下载源引擎的选择由--model-engine参数驱动下载源的选择由--download-hub参数驱动。一键启动CLI 命令与关键参数原文档给出的标准启动命令如下xinference launch --model-name Wan2.2-ti2v-5B --model-type video --model-engine diffusers命令拆解--model-name Wan2.2-ti2v-5B指定内置模型名Xinference 会从内置注册表video/model_spec.json解析出模型规格--model-type video声明模型类型为视频模型--model-engine diffusers显式选择 diffusers 引擎。引擎选择与默认行为从 video/core.py 的resolve_video_model_name_and_engine可以看出引擎解析逻辑当未显式传入model_engine时Xinference 会按注册顺序取该模型第一个可用引擎作为默认值在 video/engine.py 的register_builtin_video_engines中diffusers被注册为第一个引擎注释明确指出“The first registered engine remains the default for models with several runtimes, preserving the existing diffusers behavior for Wan models”——即对 Wan 系列模型默认引擎保持为diffusers若显式传入model_engine则通过大小写不敏感匹配确认该引擎是否可用不匹配时会报错Video model {model_name} cannot be run on engine {model_engine}.。因此在实际部署时# 显式选择 diffusers 引擎GPU / CUDA 环境 xinference launch --model-name Wan2.2-ti2v-5B --model-type video --model-engine diffusers # 显式选择 MLX 引擎Apple Silicon 环境需 Python 3.11 xinference launch --model-name Wan2.2-ti2v-5B --model-type video --model-engine MLX下载源download-hubXinference 支持auto、huggingface、modelscope、openmind_hub、csghub等下载源。在 video/core.py 的match_diffusion中auto模式会结合环境配置自动选择 ModelScope 或 Hugging Face若指定了不存在的源组合会抛出明确错误。国内网络环境可优先使用 ModelScopexinference launch --model-name Wan2.2-ti2v-5B --model-type video --model-engine diffusers --download-hub modelscope虚拟环境隔离从 video/core.py 可以看到Xinference 默认启用虚拟环境机制受XINFERENCE_ENABLE_VIRTUAL_ENV环境变量控制会依据模型规格中的virtualenv字段自动创建独立环境并安装依赖diffusers 规格依赖diffusers0.35.1、ftfy、imageio-ffmpeg、imageio等依赖由#engine#标记按引擎分流MLX 规格依赖mlx-video githttps://github.com/Blaizzy/mlx-video.git87db56a...固定 commit与系统 NumPy。这套机制使不同视频模型可以各自持有互不冲突的依赖版本避免“依赖地狱”。双引擎架构解析diffusers 引擎面向 NVIDIA GPU在 video/engine.py 中DiffusersVideoEngineModel声明了required_libs (diffusers,)其match逻辑为模型规格未指定引擎或引擎为diffusers即视为匹配。实际加载逻辑位于 video/diffusers.py对于model_family Wan的模型若具备text2video能力则加载WanPipeline若具备image2video能力则额外加载CLIPVisionModelimage_encoder子目录torch.float32与AutoencoderKLWanvae子目录组装WanImageToVideoPipeline。因此 Wan2.2-TI2V-5B 同时声明 text2video 与 image2video 两项能力在 diffusers 引擎下会走WanPipeline分支推理时仍可同时处理文本与图像条件。默认生成配置default_generate_config为空推理默认num_inference_steps 50、默认fps 10见 video/diffusers.py。MLX 引擎面向 Apple Silicon在 video/engine.py 中MLXVideoEngineModel有两个硬性前置检查必须是 Apple Silicon 平台platform.system() Darwin且platform.machine() arm64Python 版本必须 3.11Blaizzy/mlx-video的要求。match还要求模型名必须出现在MLX_VIDEO_MODEL_NAMES白名单中——Wan2.2-ti2v-5B已在该名单内video/engine.py。MLX 引擎的执行细节可参考 video/mlx_video.py所有 MLX 推理被固定到单线程ThreadPoolExecutor(max_workers1)上执行原因在类注释中说明MLX 的 GPU stream 是线程局部的thread-local加载阶段对 Wan 系列模型做了官方 checkpoint → mlx-video 原生布局的自动转换_prepare_wan_model/_convert_wan_model转换结果缓存在${模型路径}.mlx-video目录下并通过 manifest.xinference-mlx-video-conversion.json记录来源指纹与转换器版本二次加载时若未变化则直接复用MLX 规格的默认生成配置为width: 1280、height: 704、num_frames: 81、scheduler: unipc见 video/model_spec.json。通过 REST API 调用视频生成路由注册Xinference 在 api/routers/videos.py 注册了三个视频生成端点端点能力对应 API 方法POST /v1/video/generationstext2videocreate_videosPOST /v1/video/generations/imageimage2videocreate_videos_from_imagesPOST /v1/video/generations/flffirstlastframe2videocreate_videos_from_first_last_frame服务端实现位于 api/restful_api.py其中create_videos以 JSON body 接收TextToVideoRequestcreate_videos_from_images以 multipart form 上传图片文件。curl 示例文生视频text2videocurl -X POST http://localhost:9997/v1/video/generations \ -H Content-Type: application/json \ -d { model: wan2.2-ti2v-5B, prompt: A cat walking on the beach at sunset, cinematic lighting, n: 1 }图生视频image2video上传本地图片文件curl -X POST http://localhost:9997/v1/video/generations/image \ -F modelwan2.2-ti2v-5B \ -F prompta drone shot flying over a mountain lake \ -F image./input.png其中model字段对应启动时生成的模型 UID默认与--model-name同名可通过--model-uid自定义。使用 Xinference Python Client同步客户端RESTfulVideoModelHandleclient/restful/restful_client.py提供了text_to_video与image_to_video方法from xinference.client import Client client Client(http://localhost:9997) model client.get_model(wan2.2-ti2v-5B) # 文生视频 result model.text_to_video( promptA cat walking on the beach at sunset, cinematic lighting, n1, ) # result 为 VideoListdata 中每项含 url 或 b64_json # 图生视频image 可为本地路径或 bytes result model.image_to_video( image./input.png, prompta drone shot flying over a mountain lake, )参数说明与源码 docstring 一致promptstr或List[str]引导视频生成的提示词imagestr本地路径或bytes图片二进制用于图生视频n每个 prompt 生成的视频数量范围 110negative_prompt负面提示词可选response_formaturl或b64_json默认b64_json见 video/diffusers.py 与 video/mlx_video.py。其他可用参数在 diffusers 引擎下以下参数可透传给底层 pipelinevideo/diffusers.py 的load/ 生成方法支持加载参数scheduler如CogVideoXDDIMScheduler、torch_dtype、cpu_offload、sequential_cpu_offload、group_offload、compile_graphtorch.compile、layerwise_castFP8 逐层 cast、device_map多卡时自动balanced等生成参数num_inference_steps默认 50、fps默认 10、guidance_scale、seed、negative_prompt等。注意MLX 引擎的参数名与 diffusers 存在差异如steps、guide_scaleXinference 在 video/mlx_video.py 中做了guidance_scale→guide_scale的自动映射调用方无需关心。能力校验与错误处理Xinference 会根据模型声明的model_ability对请求做前置校验video/mlx_video.py传入图片但模型不具备image2video能力 → 报错无图片且模型不具备text2video能力 → 报错n 1或response_format非法 → 报错。对应地内置注册表校验逻辑位于 video/tests/test_video_engine.py如(Wan2.2-ti2v-5B, Xorbits/wan2.2-ti2v-5b-mlx)的 MLX 源映射断言可用于核对注册数据是否完整。小结与适用场景在 Xinference 中部署 Wan2.2-TI2V-5B 的完整路径为选择硬件NVIDIA GPU 环境使用--model-engine diffusersApple SiliconmacOS arm64、Python 3.11使用--model-engine MLX选择下载源国内网络可加--download-hub modelscope启动模型xinference launch --model-name Wan2.2-ti2v-5B --model-type video --model-engine 引擎其余依赖自动装入独立虚拟环境统一调用通过POST /v1/video/generations文生视频与POST /v1/video/generations/image图生视频或使用 Python Client 的text_to_video/image_to_video。该模型适合在统一的 Xinference 视频推理 API 下快速接入文生视频与图生视频工作流双引擎设计则让用户在同一套接口上自由切换 GPU 与 Apple Silicon 平台。【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表