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 Runtime | Neural Compressor | OpenVINO | TensorFlow Lite |
---|---|---|---|---|
图优化 | ✔ | N/A | ✔ | N/A |
训练后动态量化 | ✔ | ✔ | N/A | ✔ |
训练后静态量化 | ✔ | ✔ | ✔ | ✔ |
量化感知训练 (QAT) | N/A | ✔ | ✔ | N/A |
FP16 (半精度) | ✔ | N/A | ✔ | ✔ |
剪枝 | N/A | ✔ | ✔ | N/A |
知识蒸馏 | N/A | ✔ | ✔ | N/A |
optimum的安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple optimum auto-gptq
1、如果您想使用 Optimum 的加速器特定功能,您可以根据下表安装所需的依赖项:
加速器 | 安装命令 |
---|---|
ONNX Runtime | pip install --upgrade-strategy eager optimum[onnxruntime] |
Intel Neural Compressor | pip install --upgrade-strategy eager optimum[neural-compressor] |
OpenVINO | pip install --upgrade-strategy eager optimum[openvino,nncf] |
Habana Gaudi 处理器 (HPU) | pip install --upgrade-strategy eager optimum[habana] |
FuriosaAI | pip 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)