OpenVINO开发小组
直播中

王雪

8年用户 1052经验值
私信 关注
[问答]

使用Openvino™ GenAI运行Sdxl Turbo模型时遇到错误怎么解决?

使用 OpenVINO™ GenAI 运行 SDXL Turbo 模型。
遇到的错误: RuntimeError :- Check ov_tokenizer || ov_detokenizer
Neither tokenizer nor detokenizer models were provided


回帖(2)

蔡晨史

2025-6-24 15:57:57

  • 安装 所需的必备组件: pip install diffusers transformers accelerate --upgrade
  • 下载 SDXL Turbo 模型并将其 转换为 中间表示 (IR): optimum-cli export openvino -m stabilityai/sdxl-turbo sdxl-turbo
  •  采用 OpenVINO GenAI 的 SDXL 睿频模型: import openvino_genai as og
    from PIL import Image
    pipeline=og.Text2ImagePipeline ("sdxl-vino","CPU")
举报

路过秋天

2025-6-26 17:50:16

要解决使用OpenVINO™ GenAI运行SDXL Turbo模型时遇到的RuntimeError: Check ov_tokenizer || ov_detokenizer Neither tokenizer nor detokenizer models were provided错误,请按以下步骤操作:




根本原因分析


该错误表明在初始化SDXL Turbo模型时缺少必要的tokenizer模型。SDXL Turbo作为文本到图像模型需要:



  1. 主扩散模型 (*.xml + *.bin)

  2. Tokenizer模型(文本编码器,通常为CLIP相关模型)

  3. 可选但推荐:Scheduler模型(加速采样)




解决方案步骤


1. 下载并转换缺失的Tokenizer模型


SDXL Turbo依赖CLIP文本编码器作为tokenizer。下载并转换为OpenVINO格式:


# 安装依赖
pip install transformers openvino openvino-tokenizers

# 下载并转换CLIP模型 (以openai/clip-vit-large-patch14为例)
from openvino_tokenizers import convert_tokenizer
from transformers import CLIPTextModel, CLIPTokenizer

model_id = "openai/clip-vit-large-patch14"
tokenizer = CLIPTokenizer.from_pretrained(model_id)
text_encoder = CLIPTextModel.from_pretrained(model_id)

# 保存为OpenVINO格式
convert_tokenizer(tokenizer).save("clip_tokenizer.xml")
text_encoder.save_pretrained("clip_text_encoder")

2. 确保模型文件完整


检查您的模型目录是否包含以下文件:


sdxl_turbo/
├── diffusion_model.xml          # 主模型
├── diffusion_model.bin
├── clip_tokenizer.xml           # Tokenizer (必须)
├── clip_tokenizer.bin
└── scheduler.xml                # Scheduler (可选但推荐)


:SDXL Turbo与标准SDXL共享tokenizer,可直接复用相同模型。



3. 正确初始化OpenVINO模型


在代码中显式指定tokenizer路径:


from genai import Model

# 初始化模型时传入tokenizer路径
model = Model(
    model_path="path/to/sdxl_turbo/diffusion_model.xml",
    tokenizer_path="path/to/sdxl_turbo/clip_tokenizer.xml",  # 关键!
    scheduler_path="path/to/sdxl_turbo/scheduler.xml",      # 可选加速
)

4. 使用兼容的推理代码


参考以下正确调用示例:


from genai import Model

model = Model(
    model_path="./sdxl_turbo",
    tokenizer_path="./sdxl_turbo/clip_tokenizer.xml"
)

# 生成图像
prompt = "A cat sitting on a rocket, 4k photo"
image = model.generate(
    prompt,
    num_inference_steps=4,    # SDXL Turbo只需4-6步
    guidance_scale=0.0         # 禁用CFG(SDXL Turbo特性)
)

image.save("output.png")



关键注意事项




  1. Tokenier模型位置



    • 若将tokenizer放在与主模型同一目录,OpenVINO可能自动加载(但显式指定更可靠)

    • 目录结构必须包含clip_tokenizer.xml + clip_tokenizer.bin




  2. SDXL与SDXL Turbo兼容性



    • 两者使用相同的CLIP tokenizer

    • 若已有SDXL的tokenizer,直接复用其路径即可




  3. OpenVINO版本



    • 确保使用2023.2+版本(支持GenAI组件)

    • 升级命令:pip install --upgrade openvino genai






通过以上步骤,您应该能成功解决tokenizer缺失错误。如果问题持续,请检查:



  • Tokenizer模型文件是否损坏(重新下载转换)

  • OpenVINO环境是否完整(openvino-tokenizers必须安装)

  • 硬盘空间是否充足(完整SDXL Turbo约占用15GB)

举报

更多回帖

发帖
×
20
完善资料,
赚取积分