Xinference 中使用 SenseNova-U1.5-8B-MoT 进行文生图与图像编辑的实战指南
2026/9/16 11:23:54 网站建设 项目流程

Xinference 中使用 SenseNova-U1.5-8B-MoT 进行文生图与图像编辑的实战指南

【免费下载链接】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

SenseNova-U1.5-8B-MoT 是 Xinference 内置支持的统一多模态图像模型,同时具备文生图(text2image)与图像编辑(image2image)两种能力。本文基于 Xinference 仓库内该模型的官方文档(sensenova-u1.5-8b-mot.rst)与对应源码实现,完整介绍如何通过xinference launch一行命令启动模型,并通过 OpenAI 兼容的/v1/images/generations/v1/images/edits接口完成高质量图像生成与多参考图编辑,同时深入解析底层生成参数、尺寸约束与引擎调度原理。

模型基本档案

SenseNova-U1.5-8B-MoT 在 Xinference 内置模型目录中的注册信息如下:

  • Model Name(模型名):SenseNova-U1.5-8B-MoT
  • Model Family(模型族):sensenova_u1
  • Abilities(能力):text2image(文生图)、image2image(图像编辑)
  • Available ControlNet(可用 ControlNet):
  • Model ID(模型标识):sensenova/SenseNova-U1.5-8B-MoT

以上信息完整记录在 Xinference 的图片内置模型规格文件 model_spec.json 中。该文件对模型的定位做了更详细的描述:SenseNova-U1.5-8B-MoT 是一个原生统一多模态模型,专注于高质量文生图以及单参考、多参考图编辑,在文本与布局渲染、复杂指令遵循、视觉控制以及原生 4K 分辨率生成方面表现更强(此描述来自仓库内置模型规格,非性能断言)。

从模型源的配置看,该模型同时登记了 HuggingFace 与 ModelScope 两个下载源:

Model IDRevision
HuggingFacesensenova/SenseNova-U1.5-8B-MoTmain
ModelScopeSenseNova/SenseNova-U1.5-8B-MoTmaster

启动时 Xinference 会自动从可用源下载权重,无需手工指定下载地址。

一键启动模型

按照官方文档给出的方式,只需执行下面这条命令即可启动该模型:

xinference launch --model-name SenseNova-U1.5-8B-MoT --model-type image

其中--model-name指定内置模型名,--model-type image表明这是一个图像类模型,Xinference 会自动将其路由到 image 类型的能力通道。启动完成后,可以通过xinference list查看已加载模型及其自动生成的model_uid,后续所有 API 调用都需要使用该model_uid作为请求中的model字段。

除了命令行,还可以使用 Python RESTful 客户端以编程方式启动,对应接口为 restful_client.py 中的launch_model

from xinference.client import Client client = Client("http://localhost:9997") model_uid = client.launch_model( model_name="SenseNova-U1.5-8B-MoT", model_type="image", ) print(model_uid)

launch_model支持的常用参数还包括model_uid(自定义实例标识)、n_gpu(默认"auto"None表示纯 CPU)、gpu_idx(指定 GPU 序号)以及model_path(本地权重路径,便于离线部署)等。

默认加载与生成配置

在模型启动阶段,Xinference 会根据model_spec.json中的default_model_config自动套用默认加载参数:

"default_model_config": { "torch_dtype": "bfloat16", "device_map": "auto" }

即默认以bfloat16精度加载权重,并由accelerate自动分配设备映射。同时内置的默认生成配置为:

"default_generate_config": { "cfg_scale": 4.0, "cfg_norm": "none", "timestep_shift": 3.0, "num_steps": 50 }
  • cfg_scale:无分类器引导强度(CFG),默认4.0,数值越高越贴近提示词、多样性越低;
  • cfg_norm:CFG 归一化策略,默认none
  • timestep_shift:时间步偏移量,默认3.0,影响采样轨迹对高噪声阶段的侧重;
  • num_steps:采样步数,默认50

这些默认值在使用 API 时若未显式指定,会被自动合并进生成请求(见下文"生成参数"一节)。

调用文生图接口

Xinference 提供与 OpenAI 兼容的POST /v1/images/generations接口,路由注册位于 images.py。请求体对应 requests.py 中的TextToImageRequest

字段类型默认值说明
modelstr必填已启动模型的model_uid
promptstr / list必填生成提示词
nint1一次生成的图片数量
sizestr"1024*1024"输出尺寸,格式宽*高
response_formatstr"url"返回形式,urlb64_json
kwargsstrnullJSON 字符串形式的扩展生成参数
userstrnull用户标识

使用curl的调用示例:

curl http://localhost:9997/v1/images/generations \ -H "Content-Type: application/json" \ -d '{ "model": "sensenova-u1.5-8b-mot", "prompt": "a serene mountain lake at sunrise, ultra detailed", "size": "1024*1024", "n": 1, "response_format": "url", "kwargs": "{\"cfg_scale\": 4.0, \"num_steps\": 50, \"seed\": 42}" }'

返回结构为ImageList(定义于 types.py),包含created时间戳与data数组,每个元素是{"url": ...}{"b64_json": ...}

服务端处理入口是 restful_api.py 的create_images:它先解析请求体,通过require_model校验模型已就绪,再将kwargs从 JSON 字符串反序列化,最终调用模型的text_to_image方法并把结果以 JSON 响应返回。

调用图像编辑接口

图像编辑能力通过POST /v1/images/edits暴露(路由见 images.py),其请求结构对应 types.py 中的ImageEditRequest,属于 multipart/form-data 形式:

字段类型说明
imagestr / bytes / list输入图片,支持 URL、base64 或二进制文件,可传多张
promptstr编辑指令提示词(必填)
nint输出图片数量
sizestr输出尺寸,"1024*1024"形式,或"original"保持输入比例
response_formatstrurlb64_json
maskstr / bytes可选遮罩

示例:

curl http://localhost:9997/v1/images/edits \ -F "model=sensenova-u1.5-8b-mot" \ -F "image=@input.png" \ -F "prompt=change the background into a starry night" \ -F "size=1024*1024"

也可以在同一请求中传入多张输入图作为多参考图,实现"以多张图片为参照进行编辑"的效果。此外,通过扩展参数reference_images可以传入额外的参考图列表(见下文源码解析)。

生成参数详解:从源码看支持的选项

Xinference 对 SenseNova-U1 的生成参数做了白名单过滤,只有被底层模型支持的参数才会真正下传给生成引擎,其余参数会被忽略并打日志警告。过滤逻辑实现在 sensenova_u1.py 的_filter_generate_config中,文生图与图生图均支持的参数包括:

参数说明
cfg_scaleCFG 引导强度,默认4.0
cfg_normCFG 归一化方式,默认none
timestep_shift时间步偏移,默认3.0
enable_timestep_shift是否启用时间步偏移
cfg_intervalCFG 作用区间(元组),可只在部分采样步应用 CFG
num_steps采样步数,默认50
method采样方法(solver 选择)
t_eps采样终止时间阈值
think_mode思考模式开关,开启后生成会返回特定结构的输出
seed随机种子,-1None表示随机

图像编辑image_to_image)场景下还会额外支持img_cfg_scale(图生图的 CFG 强度)。

此外,源码中的_get_generate_config(sensenova_u1.py)还做了两类参数别名归一化:

  • 传入guidance_scale会被转换为cfg_scale,传入num_inference_steps会被转换为num_stepsdiffusers风格命名的参数在这里同样可用);
  • negative_promptdenoising_strength等扩散模型常见参数对 SenseNova-U1 不适用,会被主动剔除;
  • seedNone-1时,会调用random.randint(0, 2**31 - 1)生成随机种子。这一行为由测试用例 test_sensenova_u1.py 直接验证:test_generate_config_randomizes_default_seed断言空 kwargs、seed=Noneseed=-1三种情况下都会得到随机化种子,而test_generate_config_preserves_non_negative_seed则保证显式传入的非负种子原样保留,从而支持可复现生成。

底层实现原理:源码级剖析

模型类与引擎路由

SenseNova-U1.5-8B-MoT 的运行时实现是 sensenova_u1.py 中的SenseNovaU1Model,它继承自SDAPIDiffusionModelMixin(SD WebUI 兼容层,定义于 sdapi.py),因此该模型同样兼容/sdapi/v1/txt2img等 SD WebUI 风格接口。

引擎路由逻辑位于 engine.py:TransformersSenseNovaU1ImageModel将模型族sensenova_u1绑定到transformers引擎(engine_model_format = "pytorch"required_libs = ("torch", "transformers"))。加载时 load() 会把仓库内的thirdparty/sensenova_u1目录加入sys.path并导入sensenova_u1工具包,进而调用load_model_and_tokenizer完成权重加载。

尺寸约束与像素控制

源码中定义了严格的输出尺寸规则(sensenova_u1.py):宽度和高度都必须是 32 的倍数_IMAGE_GRID_FACTOR = 32),否则抛出ValueError。默认文生图尺寸为"1024*1024"

在图像编辑路径(image_to_image)中,输入图会先统一转换为 RGB 模式,RGBA 图片会以白色背景合成(_convert_to_rgb)。三个像素相关参数值得关注:

  • input_max_pixels:默认"auto",即输入图总像素上限为2048*2048;当输入图片多于 2 张时,会自动按2 * 2048 * 2048 // num_images动态下调上限(最小值512*512),避免多参考图场景下显存失控;
  • target_pixels:默认2048*2048,当输出尺寸设为"original"时,会以输入图长宽比和target_pixels为依据,通过smart_resize自动计算适配的输出尺寸;
  • do_resize:是否对输入图执行智能缩放,默认True

缩放过程中会复用sensenova_u1.models.neo_unify.utils.smart_resize,以 32 为对齐因子,并使用 LANCZOS 重采样保证质量。

LoRA 与加载选项

该模型支持加载图像 LoRA 权重:若通过peft_model_config传入lora_list,加载阶段会对每个 LoRA 调用load_and_merge_lora_weight_from_safetensors将其合并进基础模型(sensenova_u1.py);同时它会忽略image_lora_load_kwargs/image_lora_fuse_kwargs并给出警告,说明 SenseNova-U1 只支持直接合并式 LoRA。

加载阶段可接受的 kwargs 还包括torch_dtype(默认bfloat16,接受"bfloat16"这类字符串写法)、attn_backend(默认"auto")、vram_mode(控制显存驻留与预取策略)、device_mapmax_memory以及fast_vram_fraction/fast_vram_headroom_gib/fast_activation_reserve_gib/fast_vram_budget_gib等显存控制参数。注意:该模型不支持 lightning 模型格式,传入lightning_model_path会直接报错(sensenova_u1.py)。

推理执行流程

  • 文生图:在torch.inference_mode()_offload_context()上下文中调用底层model.t2i_generate(tokenizer, prompt, image_size, batch_size, ...)
  • 图像编辑:调用model.it2i_generate(tokenizer, prompt, images, image_size, batch_size, ...)

当通过seed列表方式指定多个种子时(resolve_image_seed_list,实现于 utils.py),会逐种子以batch_size=1循环生成以保证每张图片可复现;think_mode开启时则从输出中取output[0]作为最终结果。生成的张量会经_to_pil(先(x*0.5+0.5)反归一化、再转 uint8)还原为 PIL 图片,最终由handle_image_resultresponse_format输出为 URL 或 base64。

虚拟环境依赖

model_spec.jsonvirtualenv.packages配置看,启动该模型时会自动创建独立虚拟环境并安装以下依赖(在transformers引擎下生效):

  • transformers>=4.57.1,<6
  • accelerate>=1.1,<2
  • huggingface-hub>=0.34,<2
  • safetensors>=0.4.3,<1
  • sentencepiece==0.2.1
  • 系统 torch、torchvision、numpy(跟随运行环境版本)

Xinference 的虚拟环境机制会自动完成这些包的安装,因此首次启动需要等待依赖就绪与权重下载;如需离线部署,可参考仓库中--model-path(本地权重目录)配合虚拟环境的相关文档使用。

小结

SenseNova-U1.5-8B-MoT 在 Xinference 中以"一行命令启动、OpenAI 兼容接口调用"的方式集成了文生图与图像编辑两大能力:

  1. 启动只需xinference launch --model-name SenseNova-U1.5-8B-MoT --model-type image
  2. 文生图走POST /v1/images/generations,图像编辑走POST /v1/images/edits,请求参数与 OpenAI Images API 对齐;
  3. 输出尺寸必须为 32 的倍数,编辑场景支持多参考图、input_max_pixels自动适配与 4K 级target_pixels输出;
  4. 底层由transformers引擎承载,支持 LoRA 合并、vram_mode显存优化与 SD WebUI 兼容接口。

如需深入了解实现细节,可继续阅读上述引用的源码文件:模型规格 model_spec.json、核心实现 sensenova_u1.py、引擎路由 engine.py 以及单元测试 test_sensenova_u1.py。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询