🤗 Optimum 是 Hugging Face 推出的壹個專業機器學習模型優化庫,是 🤗 Transformers 和 Diffusers 的擴展工具。該專案專註於為各種目標硬體提供最大效率的模型訓練和運行優化工具,同時保持易於使用的特點。
專案地址: https://github.com/huggingface/optimum
Optimum 支持多種主流硬體加速平臺:
提供優化的訓練封裝器,支持:
python -m pip install optimum
根據需要的硬體平臺選擇對應的安裝命令:
# ONNX Runtime
pip install --upgrade --upgrade-strategy eager optimum[onnxruntime]
# ExecuTorch
pip install --upgrade --upgrade-strategy eager optimum[executorch]
# Intel Neural Compressor
pip install --upgrade --upgrade-strategy eager optimum[neural-compressor]
# OpenVINO
pip install --upgrade --upgrade-strategy eager optimum[openvino]
# NVIDIA TensorRT-LLM
docker run -it --gpus all --ipc host huggingface/optimum-nvidia
# AMD 硬體
pip install --upgrade --upgrade-strategy eager optimum[amd]
# AWS Trainium & Inferentia
pip install --upgrade --upgrade-strategy eager optimum[neuronx]
# Habana Gaudi
pip install --upgrade --upgrade-strategy eager optimum[habana]
# FuriosaAI
pip install --upgrade --upgrade-strategy eager optimum[furiosa]
python -m pip install git+https://github.com/huggingface/optimum.git
ONNX 導出示例:
# 安裝依賴
pip install optimum[exporters,onnxruntime]
# 導出模型
optimum-cli export onnx --model bert-base-uncased --output ./bert-onnx/
ExecuTorch 導出:
# 安裝依賴
pip install optimum[exporters-executorch]
# 導出模型用於邊緣設備
optimum-cli export executorch --model distilbert-base-uncased --output ./distilbert-executorch/
TensorFlow Lite 導出:
# 安裝依賴
pip install optimum[exporters-tf]
# 導出並量化
optimum-cli export tflite --model bert-base-uncased --output ./bert-tflite/
使用 ONNX Runtime 進行優化推理:
from optimum.onnxruntime import ORTModelForSequenceClassification
from transformers import AutoTokenizer
# 加載優化後的模型
model = ORTModelForSequenceClassification.from_pretrained("./bert-onnx/")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
# 進行推理
inputs = tokenizer("Hello world!", return_tensors="pt")
outputs = model(**inputs)
支持多種量化方案:
使用 Habana Gaudi 進行優化訓練:
from optimum.habana import GaudiTrainer, GaudiTrainingArguments
# 配置訓練參數
training_args = GaudiTrainingArguments(
output_dir="./results",
use_habana=True,
use_lazy_mode=True,
gaudi_config_name="Habana/bert-base-uncased"
)
# 創建優化訓練器
trainer = GaudiTrainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
# 開始訓練
trainer.train()
optimum-cli
命令行工具簡化操作Hugging Face Optimum 是壹個功能強大、易於使用的機器學習模型優化工具庫。它為開發者提供了將 AI 模型高效部署到各種硬體平臺的完整解決方案,是現代 AI 應用開發和部署的重要工具。無論是邊緣設備部署還是大規模雲端服務,Optimum 都能提供顯著的性能提升和成本優化。