Py之optimum:optimum的简介、安装、使用方法之详细攻略

本文介绍了Optimum,一个扩展了Transformers和Diffusers的库,提供模型在各种硬件上的高效推理和优化工具。涵盖了安装步骤、基础用法,如加载模型进行推理以及使用IntelNeuralCompressor进行量化。

Py之optimum:optimum的简介、安装、使用方法之详细攻略

目录

optimum的简介

1、加速推理  Optimum 提供多种工具,用于在不同生态系统上导出和运行优化模型:

2、功能概述

optimum的安装

1、如果您想使用  Optimum 的加速器特定功能,您可以根据下表安装所需的依赖项:

2、从源代码安装:

optimum的使用方法

1、基础用法

(1)、加载一个模型并使用 OpenVINO Runtime 运行推理

(2)、要加载使用 Intel Neural Compressor 量化的模型(本地或在  hub 上托管),可以按如下方式进行:


optimum的简介

Optimum 是Transformers 和 Diffusers 的扩展,提供了一套优化工具,可实现在目标硬件上训练和运行模型的最大效率,同时保持易于使用。

1、加速推理  Optimum 提供多种工具,用于在不同生态系统上导出和运行优化模型:

  • ONNX / ONNX Runtime
  • TensorFlow Lite
  • OpenVINO
  • Habana 第一代 Gaudi / Gaudi2,更多详情请参见这里

导出和优化可以通过编程方式和命令行完成。

2、功能概述

功能ONNX RuntimeNeural CompressorOpenVINOTensorFlow Lite
图优化N/AN/A
训练后动态量化N/A
训练后静态量化
量化感知训练 (QAT)N/AN/A
FP16 (半精度)N/A
剪枝N/AN/A
知识蒸馏N/AN/A

optimum的安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple optimum auto-gptq

1、如果您想使用  Optimum 的加速器特定功能,您可以根据下表安装所需的依赖项:

加速器安装命令
ONNX Runtimepip install --upgrade-strategy eager optimum[onnxruntime]
Intel Neural Compressorpip install --upgrade-strategy eager optimum[neural-compressor]
OpenVINOpip install --upgrade-strategy eager optimum[openvino,nncf]
Habana Gaudi 处理器 (HPU)pip install --upgrade-strategy eager optimum[habana]
FuriosaAIpip install --upgrade-strategy eager optimum[furiosa]

需要使用 --upgrade-strategy eager 选项来确保不同的软件包被升级到最新版本。

2、从源代码安装:

python -m pip install git+https://github.com/huggingface/optimum.git

对于特定加速器功能,请将 optimum[accelerator_type] 添加到上述命令中:

python -m pip install optimum[onnxruntime]@git+https://github.com/huggingface/optimum.git

OpenVINO 这需要通过以下命令安装 OpenVINO 额外功能:

pip install --upgrade-strategy eager optimum[openvino,nncf]

optimum的使用方法

1、基础用法

(1)、加载一个模型并使用 OpenVINO Runtime 运行推理

只需将 AutoModelForXxx 类替换为相应的 OVModelForXxx 类。要加载 PyTorch 检查点并在加载模型时将其转换为 OpenVINO 格式,可以在加载模型时设置 export=True

from transformers import AutoModelForSequenceClassification
from optimum.intel import OVModelForSequenceClassification
from transformers import AutoTokenizer, pipeline

model_id = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = OVModelForSequenceClassification.from_pretrained(model_id, export=True)
model.save_pretrained("./distilbert")

classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)
results = classifier("He's a dreadful magician.")

(2)、要加载使用 Intel Neural Compressor 量化的模型(本地或在  hub 上托管),可以按如下方式进行:

from optimum.intel import INCModelForSequenceClassification

model_id = "Intel/distilbert-base-uncased-finetuned-sst-2-english-int8-dynamic"
model = INCModelForSequenceClassification.from_pretrained(model_id)

<think>好的,用户现在遇到了加载模型失败的问题,提示是“Invalid repo_id format namespace/name”,同时可能还有文件路径的问题。我需要结合用户提供的引用和之前的对话来分析。 首先看用户这次的提问,他们引用了几个站内的引用,其中引用[2]提到optimum不同版本在加载模型时参数不同,比如1.4.1需要指定file_name,而1.9.0不需要,否则会报repo_id格式错误。用户之前的问题是关于模型文件路径不存在,现在他们可能是在尝试用Hugging Face的库加载模型,但遇到了repo_id格式错误或者文件路径的问题。 用户上一次的问题是关于模型文件路径不存在,系统回答中提到了检查路径、验证文件完整性等方法。现在用户可能按照之前的建议检查了路径,但可能在使用Hugging Face的from_pretrained方法时,参数设置不正确导致repo_id格式错误,特别是不同版本的库参数要求不同。 接下来需要分析用户当前的问题。用户现在加载模型失败的原因可能有两点:一是repo_id的格式不正确,比如没有正确命名空间或名称;二是文件路径错误,模型文件不在指定位置。结合引用[2],版本差异可能导致参数传递方式不同,从而引发错误。 需要检查用户使用的库版本,比如optimum或transformers的版本,确认是否正确传递了repo_id参数。如果用户指定了本地路径,可能需要使用正确的参数,比如在旧版本中需要file_name,而新版本可能直接传路径即可。同时,需要确保文件路径正确,所有分块文件都存在,并且路径没有拼写错误。 另外,用户之前的问题中提到了文件路径不存在,所以需要再次确认用户是否已经正确下载了模型文件,并且路径设置正确。同时,是否在加载时正确使用了本地路径,比如使用local_files_only=True参数,或者直接传递本地目录路径。 可能的解决方案包括:检查库版本并调整参数,确保repo_id格式正确;验证本地路径是否正确,文件是否完整;使用绝对路径而不是相对路径;检查是否有必要的分块文件缺失等。 还需要考虑用户是否在尝试加载Hugging Face模型,或者使用其他库如ModelScope,不同的库加载方式可能不同。根据引用[2]中的例子,用户可能在使用Hugging Face的from_pretrained方法,所以需要针对该方法的参数进行指导。 最后,生成相关问题时要覆盖版本兼容性、路径配置、分块文件检查等方面,帮助用户全面排查问题。</think>### 加载模型失败问题分析:`Invalid repo_id` 或文件路径错误 #### 一、问题定位与验证步骤 1. **检查 `repo_id` 格式规范** - **Hugging Face模型库要求**:`repo_id` 必须符合 `namespace/repo_name` 格式,例如 `bert-base-uncased`(无命名空间)或 `facebook/bart-large`(带命名空间)[^2]。 - **本地路径加载语法**:若加载本地模型,需使用绝对路径且无需命名空间,例如: ```python model = AutoModel.from_pretrained("C:/models/Qwen3-8B-Int4-W4A16") # 正确 model = AutoModel.from_pretrained("Qwen3-8B-Int4-W4A16") # 错误,可能触发格式校验 ``` 2. **验证库版本兼容性** - **Optimum版本差异**:若使用 `optimum.onnxruntime.ORTModelForSequenceClassification`,需确认参数是否与版本匹配: - **1.4.x版本**:必须指定 `file_name`(如引用[2]所示): ```python model = ORTModelForSequenceClassification.from_pretrained( "C:/models/Qwen3-8B-Int4-W4A16", file_name="model_407-00001-of-00002.safetensors" # 显式指定文件名 ) ``` - **1.9.0+版本**:自动识别路径下文件,无需 `file_name`: ```python model = ORTModelForSequenceClassification.from_pretrained("C:/models/Qwen3-8B-Int4-W4A16") ``` - **检查版本**: ```python import optimum print(optimum.__version__) # 输出:1.9.0 ``` 3. **文件路径完整性检查** - **分块文件验证**: 若模型使用分块存储(如 `model_407-00001-of-00002.safetensors`),需确认所有分块文件均存在: ```text C:\models\Qwen3-8B-Int4-W4A16 ├── model_407-00001-of-00002.safetensors ├── model_407-00002-of-00002.safetensors # 必须存在 └── config.json ``` - **权限与路径格式**: 使用原生Windows路径时需注意: ```python # 错误:反斜杠未转义或未使用原始字符串 model_path = "C:\Users\Administrator\Qwen3-8B-Int4-W4A16" # 正确:使用正斜杠或原始字符串 model_path = r"C:\Users\Administrator\Qwen3-8B-Int4-W4A16" ``` --- #### 二、代码修复示例 ```python from transformers import AutoModel try: # 方案1:加载本地模型(Optimum 1.9.0+) model = AutoModel.from_pretrained( "C:/Users/Administrator/Qwen3-8B-Int4-W4A16", local_files_only=True # 强制从本地加载[^2] ) except Exception as e: print(f"错误: {e}") # 方案2:回退到Hugging Face仓库下载(需网络) model = AutoModel.from_pretrained("Qwen/Qwen3-8B-Int4-W4A16") ``` --- #### 三、关键排查清单 | 问题类型 | 检查项 | 解决方法 | |----------|--------|----------| | `repo_id` 格式错误 | 是否包含非法字符(如空格、中文) | 使用纯英文命名且符合 `namespace/name` 格式 | | 文件路径错误 | 路径是否存在拼写错误(如大小写不匹配) | 使用 `os.path.exists()` 验证路径 | | 版本兼容性 | Optimum版本是否与参数要求匹配 | 升级/降级库版本:`pip install optimum==1.9.0` | | 分块文件缺失 | 检查所有分块文件是否完整 | 重新下载缺失的分块文件 | --- ### 相关问题 1. **如何修复 `huggingface_hub.utils._validators.HFValidationError` 错误?** 2. **如何在不同版本的Optimum中兼容加载本地模型文件?** 3. **如何验证Hugging Face模型分块文件的完整性?** 4. **Windows系统下Python路径转义的最佳实践是什么?**
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值