OpenVINO开发小组
直播中

卢表镜

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

在OpenVINO™笔记本中使用distil-medium.en 和 distil-small.en模型时报错怎么解决?

如果使用 distil-medium.en 模型或 distil-small.en 模型,则运行OpenVINO™笔记本 267-distil-whisper-asr 时遇到错误:
"distil-whisper/distil-medium.en" and "distil-whisper/distil-small.en" are missing 'lang_to_id' attributes

回帖(2)

蔡艳

2025-3-6 14:35:33
将 transformer 库升级到新版本:
!pip install sentence-transformers==2.3.1
!pip install transformers==4.37.2
举报

刘军

2025-3-6 17:35:15

在使用OpenVINO™笔记本运行 267-distil-whisper-asr 时,如果遇到 distil-whisper/distil-medium.endistil-whisper/distil-small.en 模型缺少 lang_to_id 属性的错误,可能是由于模型配置或加载方式的问题。以下是一些可能的解决方法:


1. 检查模型配置


确保你使用的 distil-medium.endistil-small.en 模型是完整的,并且包含了所有必要的配置文件。lang_to_id 属性通常用于映射语言代码到模型内部的标识符,如果缺少这个属性,可能会导致模型无法正确加载。


2. 更新模型和依赖库


确保你使用的 distil-whisper 模型和相关的依赖库(如 transformersopenvino)是最新版本。有时,旧版本的模型或库可能存在兼容性问题。


pip install --upgrade transformers openvino

3. 手动添加 lang_to_id 属性


如果模型确实缺少 lang_to_id 属性,你可以尝试手动添加它。以下是一个示例代码,展示如何手动添加 lang_to_id 属性:


from transformers import WhisperProcessor, WhisperForConditionalGeneration

# 加载模型和处理器
model_name = "distil-whisper/distil-medium.en"
processor = WhisperProcessor.from_pretrained(model_name)
model = WhisperForConditionalGeneration.from_pretrained(model_name)

# 手动添加 lang_to_id 属性
if not hasattr(processor, 'lang_to_id'):
    processor.lang_to_id = {'en': 50259}  # 50259 是英语的 token ID

# 继续使用模型进行推理

4. 使用其他模型


如果以上方法都无法解决问题,你可以尝试使用其他类似的模型,例如 openai/whisper-mediumopenai/whisper-small,这些模型可能已经包含了 lang_to_id 属性。


model_name = "openai/whisper-medium"
processor = WhisperProcessor.from_pretrained(model_name)
model = WhisperForConditionalGeneration.from_pretrained(model_name)

5. 检查OpenVINO™笔记本的版本


确保你使用的OpenVINO™笔记本是最新版本。旧版本的笔记本可能存在与新模型或库的兼容性问题。


6. 查看官方文档和社区支持


如果问题仍然存在,建议查看OpenVINO™和 distil-whisper 的官方文档,或者在相关的社区论坛(如GitHub Issues、OpenVINO™论坛等)中寻求帮助。


示例代码


以下是一个完整的示例代码,展示如何加载 distil-whisper 模型并进行推理:


from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torch

# 加载模型和处理器
model_name = "distil-whisper/distil-medium.en"
processor = WhisperProcessor.from_pretrained(model_name)
model = WhisperForConditionalGeneration.from_pretrained(model_name)

# 手动添加 lang_to_id 属性
if not hasattr(processor, 'lang_to_id'):
    processor.lang_to_id = {'en': 50259}  # 50259 是英语的 token ID

# 准备输入数据
input_text = "This is a test sentence."
input_features = processor(input_text, return_tensors="pt").input_features

# 进行推理
with torch.no_grad():
    predicted_ids = model.generate(input_features)

# 解码输出
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
print(transcription)

通过以上步骤,你应该能够解决 lang_to_id 属性缺失的问题,并成功运行 267-distil-whisper-asr 笔记本。

举报

更多回帖

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