这是一篇专门针对 Jimeng (积木/积梦) 中文文生图模型的详细部署教学博客。包含了我们在实战中遇到的所有“坑”及其解决方案,特别是针对库版本冲突的硬核修复。
1. 什么是 Jimeng?
Jimeng 是由阿里巴巴达摩院研发的、专门针对中文语境优化的文生图模型。它将中文 BERT 与 Stable Diffusion 架构深度结合,无需繁琐的英文翻译,直接输入中文(如“古风、水墨、赛博朋克”)即可生成极具东方审美的高质量图像。
2. 部署环境准备
在开始之前,请确保你的机器拥有 NVIDIA GPU(建议显存 8GB 以上)并安装了 Python 3.8+ 环境。
2.1 安装核心依赖库
除了基础的 AI 框架,我们还需要安装阿里云的 oss2 库(用于后续可能的图片云端存储)以及处理库版本冲突所需的补丁工具。- # 升级基础 AI 库pip install -U modelscope transformers diffusers accelerate torch numpy pillow# 安装阿里云 OSS 存储库pip install oss2# 安装 omegaconf 用于处理特定的模型配置pip install omegaconf
复制代码 3. 核心技术痛点:处理版本冲突
注意! 这是部署 Jimeng 模型最关键的一步。由于模型发布较早,它调用的 huggingface_hub 旧版函数 cached_download 在新版库中已被删除。如果不处理,程序会报错 ImportError。
解决方案: 在脚本的最开头手动注入“运行时补丁”。
4. 编写测试脚本
我们将创建一个名为 test_jimeng.py 的脚本。它不仅解决了兼容性问题,还支持一次加载模型、多次交互生成,并具备极强的代码健壮性。
4.1 创建工作目录
- mkdir -p ~/workspace/Jimeng && cd ~/workspace/Jimeng
复制代码 4.2 编写 test_jimeng.py
请将以下代码完整复制到文件中:
[code]import huggingface_hubtry: from huggingface_hub import hf_hub_download huggingface_hub.cached_download = hf_hub_downloadexcept ImportError: passimport osimport torchimport numpy as npfrom PIL import Imagefrom modelscope.pipelines import pipelinefrom modelscope.utils.constant import Tasksmodel_id = 'damo/multi-modal_chinese_stable_diffusion_v1.0'try: print(f"正在启动 Jimeng 引擎并加载权重...") # 强制在 GPU 运行 pipe = pipeline(Tasks.text_to_image_synthesis, model=model_id, device='cuda') input_data = {'text': '一个穿着宇航服的大熊猫在月球上吃竹子,赛博朋克风格'} print("正在生成图像...") output = pipe(input_data) # --- 修复逻辑:安全提取并转换图片 --- raw_data = None if isinstance(output, dict): for key in ['output_img', 'output_imgs', 'image', 'images']: if key in output: raw_data = output[key] break else: raw_data = output # 处理列表情况 if isinstance(raw_data, list): raw_data = raw_data[0] # 关键修复:使用 is not None 避免真值歧义错误 if raw_data is not None: # 如果是 numpy 数组,转换为 PIL Image if isinstance(raw_data, np.ndarray): # 如果数组值在 0-1 之间,缩放到 0-255 if raw_data.max() |