3B 模型改写你的 prompt——ERNIE-Image PE 增强器完全指南

May 1, 2026

3B 模型改写你的 prompt——ERNIE-Image PE 增强器完全指南

ERNIE-Image 的 Prompt Enhancer 不是一个简单的关键词补全工具,而是一个完整的 30 亿参数语言模型。它基于 Mistral AI 的 Ministral-3B-Instruct 微调而来,专门执行一个任务:把你的 prompt 改写成扩散模型更容易理解的版本。

这篇文章从技术角度完整拆解 PE 的工作原理、模型架构、参数配置、各平台集成方式以及底层行为机制。


一、模型架构:Ministral-3B 是什么?

基座模型

属性 值
模型名称 Ministral-3B-Instruct-2512
开发者 Mistral AI
参数量 ~3B(30 亿)
架构类型 Transformer Decoder + MoE(混合专家)
上下文窗口 32K tokens
发布时间 2025 年 12 月
许可证 Apache 2.0 / 开源友好

MoE 架构的核心优势

Ministral 3 系列采用 Mixture of Experts(混合专家)架构。与传统 Dense Transformer 每次推理激活全部参数不同,MoE 结构在每次推理时只激活部分"专家"模块。

这意味着:

  • 标称参数:3B
  • 激活参数:显著低于 3B
  • 推理速度:比同参数 Dense 模型快得多
  • 资源消耗:显存占用更低

对于 PE 这种需要"快速响应"的前置模块,MoE 架构是天然优势。

百度做了什么?

百度在 Ministral-3B-Instruct 基础上进行了指令微调(Instruction Fine-tuning),训练数据是高质量的"短 prompt → 结构化长 prompt"配对数据。

微调后的模型被保存为 ernie-image-prompt-enhancer.safetensors,文件大小约为基座模型的压缩版本(具体取决于量化格式)。


二、PE 的推理流程:从输入到输出的每一步

步骤 1:Prompt 接收与预处理

用户输入原始 prompt,PE 接收后先进行 tokenization:

原始输入: "a ceramic coffee mug"
Tokenize: [a] [ceramic] [coffee] [mug]
Token 数: ~4 tokens

步骤 2:系统指令注入

PE 在用户 prompt 之前注入系统指令(类似 Chat 模型的 system prompt),指示模型执行 prompt 扩展任务。系统指令的大致内容:

You are a prompt enhancer for image generation. Expand the user's brief description into a detailed, structured prompt that includes subject details, environment, lighting, composition, and style. Maintain the user's original intent. Output the enhanced prompt.

步骤 3:MoE 推理

Ministral-3B 的 MoE 路由机制选择激活哪些专家模块。对于 prompt 扩展任务,主要激活与"文本生成"和"描述性语言"相关的专家。

推理参数:

  • max_length: 1536–2048(输出 token 上限)
  • temperature: 0.6(平衡创意与稳定性)
  • top_p: 0.8(核采样)
  • thinking mode: Disabled(关闭推理链,直接输出)

步骤 4:输出截断与后处理

PE 生成扩展后的 prompt,截断到指定长度,然后传递给 Text Encoder(Ministral-3B Text Encoder,注意这不是同一个模型实例,是另一个 Ministral-3B 实例用于文本编码)。


三、PE 的 ComfyUI 集成细节

文件结构

ComfyUI/models/text_encoders/
├── ministral-3-3b.safetensors          ← Text Encoder(文本编码)
└── ernie-image-prompt-enhancer.safetensors  ← PE 模块(prompt 扩展)

注意:这两个模型虽然都基于 Ministral-3B,但用途不同:

  • Text Encoder:将 prompt 编码为文本特征向量,供扩散模型使用
  • PE 模块:改写 prompt 文本,输出仍然是文本

节点配置

PE 在 ComfyUI 中使用 CLIPLoader 节点加载,虽然它实际上是 LLM 而不是 CLIP 模型。这是 ComfyUI 的接口复用设计。

PE 节点的关键设置(通过子图访问):

{
  "model": "ernie-image-prompt-enhancer.safetensors",
  "max_length": 2048,
  "temperature": 0.6,
  "top_p": 0.8,
  "thinking_enabled": false,
  "enabled": true
}

工作流中的位置

在 ComfyUI 的 ERNIE-Image 标准工作流中,PE 节点位于 Text Encoder 之前:

[CustomText (用户输入)] → [PE 节点] → [Text Encoder (Ministral-3B)] → [DiT 扩散模型]

如果 PE 被禁用(enabled: false),工作流变为:

[CustomText (用户输入)] → [Text Encoder (Ministral-3B)] → [DiT 扩散模型]

四、Diffusers API 集成

Python 代码示例

from diffusers import ErnieImagePipeline
import torch

pipe = ErnieImagePipeline.from_pretrained(
"Baidu/ERNIE-Image-Turbo",
torch_dtype=torch.bfloat16
).to("cuda")

开启 PE(默认)

image_on = pipe(
prompt="a ceramic coffee mug",
use_pe=True, # PE 开启
height=1264,
width=848,
num_inference_steps=8,
guidance_scale=1.0
).images[0]

关闭 PE

image_off = pipe(
prompt="a ceramic coffee mug",
use_pe=False, # PE 关闭
height=1264,
width=848,
num_inference_steps=8,
guidance_scale=1.0
).images[0]

PE 的推理开销

启用 PE 会增加一次 LLM 推理开销:

配置 额外时间 额外显存
PE 开启 + 8B DiT ~2-5 秒(PE 推理) ~6-8GB(PE 模型)
PE 关闭 + 8B DiT 0 0

在显存紧张的环境下(12-16GB GPU),关闭 PE 可以释放约 6-8GB 显存给扩散模型。


五、PE 的语言行为分析

中文翻译倾向的根源

PE 倾向于将 prompt 翻译为中文,原因来自训练数据分布:

  1. 百度训练数据:百度的 prompt 扩展训练数据中,中文 prompt 占比较高
  2. Ministral 基座:Ministral-3B-Instruct 本身多语言能力均衡,但微调后偏向训练数据主导的语言
  3. ERNIE-Image 定位:ERNIE-Image 的主要目标市场是中国,中文优先是合理的训练策略

对多语言用户的影响

用户语言 PE 行为 影响
英文输入 可能翻译为中文或中英混合 英文文字渲染可能变中文
中文输入 保持中文或中英混合 基本不影响
其他语言 可能翻译为中文 可能改变原始语义

解决方案

  • 精确文字渲染:关闭 PE
  • 英文用户:关闭 PE 或用外部 LLM 辅助
  • 中文用户:PE 友好,但文字渲染仍需关闭

六、GGUF 量化:PE 的盲区

Unsloth 提供了 ERNIE-Image DiT 和 Ministral-3B Text Encoder 的 GGUF 量化版本,但 PE 模块没有 GGUF 版本。

原因可能是:

  1. PE 本身就是 3B 模型,量化收益有限
  2. PE 使用 CLIPLoader 接口加载,GGUF 量化需要专门的 Loader
  3. 优先级较低——核心扩散模型和 Text Encoder 的量化对显存节省更大

结果:GGUF 工作流无法使用 PE,低显存用户需要自己写详细 prompt。


七、PE 参数调优指南

temperature 的影响

temperature 效果 适用场景
0.3 保守,输出稳定但模板化 需要一致性的批量生成
0.6 平衡(默认) 通用场景
0.8+ 创意性强,但可能偏离原始意图 探索性创作

max_length 的影响

max_length 效果 适用场景
512 简短扩展 快速预览
1536 标准扩展(推荐) 通用场景
2048 详细扩展 复杂场景
4096+ 过长,浪费 不推荐

top_p 的影响

top_p 效果
0.5 非常保守,只选最可能的词
0.8 平衡(推荐)
0.95 更开放,允许长尾词汇

八、外部 LLM 替代方案的技术实现

方案 1:手动替代

1. 用 GPT-4/Claude 扩展 prompt
2. 关闭 PE
3. 粘贴扩展后的 prompt

方案 2:自动化 Pipeline

# 伪代码
def generate_with_custom_pe(user_prompt, llm_client):
    enhanced = llm_client.chat(
        system="Expand this image generation prompt into detailed description...",
        user=user_prompt
    )
    image = ernie_image_pipe(
        prompt=enhanced,
        use_pe=False
    )
    return image

方案 3:自定义 PE 微调

如果你有大量特定领域的 prompt 数据,可以基于 Ministral-3B 自行微调 PE:

1. 下载 ministral/Ministral-3b-instruct
2. 准备 [短prompt, 长prompt] 配对数据
3. 使用 LoRA/QLoRA 微调
4. 导出为 safetensors
5. 替换 ComfyUI 中的 PE 模块

九、总结

PE 是一个基于 Ministral-3B MoE 架构的指令微调语言模型,核心任务是将短 prompt 扩展为结构化长 prompt。

  • 架构:MoE → 推理快、显存低
  • 行为:改写而非增强,有中文翻译倾向
  • 参数:temperature 0.6、max_length 2048、top_p 0.8 为推荐配置
  • 限制:GGUF 工作流不可用
  • 替代:外部 LLM 或自定义微调

理解 PE 的技术底层,有助于你做出更准确的开关决策和参数调优。

ERNIE-Image Team