【Hugging Face】Optimum 库的常用方法和属性

Hugging Face Optimum 的常用方法和属性

Optimum 是 Hugging Face 优化 Transformer 训练和推理的库,适用于 ONNX Runtime、TensorRT、OpenVINO、Habana Gaudi、Intel Neural Compressor 等高效计算框架,可 提高推理速度、降低显存占用、支持量化和加速训练


1. Optimum 的常见属性

在加载 Optimum 支持的模型后,可以访问以下属性:

from optimum.onnxruntime import ORTModelForSequenceClassification

model = ORTModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english", export=True)
属性作用示例
model.config获取模型配置print(model.config)
model.device当前设备(CPU/GPU/NPU)print(model.device)
model.dtype数据类型(fp32, fp16, int8)print(model.dtype)
model.framework使用的推理框架print(model.framework)
model.is_quantized是否为量化模型print(model.is_quantized)

2. Optimum 的常用方法

方法作用
from_pretrained(model_id, export=True)加载预训练的优化模型
model.to(device)移动模型到 GPU/CPU
model.save_pretrained(path)保存优化后的模型
model.forward(input_ids, attention_mask)前向传播
model.generate(input_ids, max_length=50)生成文本(适用于 T5, GPT-2)
optimize_model(model, optimization_level="O2")优化 Transformer 模型
quantize_model(model, dtype="int8")对模型进行 INT8 量化

3. Optimum 详细用法

3.1. 使用 ONNX Runtime 进行推理

from optimum.onnxruntime import ORTModelForSequenceClassification
from transformers import AutoTokenizer

# 加载 ONNX 版本的 BERT
model = ORTModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english", export=True)
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english")

# 处理输入
inputs = tokenizer("Hugging Face is great!", return_tensors="pt")

# 进行推理
outputs = model(**inputs)
print(outputs.logits)

3.2. 使用 TensorRT 进行加速

适用于 NVIDIA GPU

from optimum.tensorrt import TRTModelForSequenceClassification

# 加载 TensorRT 版本的 BERT
model = TRTModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english")

3.3. 在 Intel CPU/NPU 上使用 OpenVINO

from optimum.openvino import OVModelForSequenceClassification

# 加载 OpenVINO 版本的 BERT
model = OVModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english", export=True)

3.4. 量化 Transformer 模型

量化(INT8FP16)可以 减少显存占用,提高推理速度

from optimum.intel.neural_compressor import INCQuantizer

# 加载量化器
quantizer = INCQuantizer.from_pretrained("bert-base-uncased")

# 量化模型
quantized_model = quantizer.quantize(dtype="int8")

# 保存量化后的模型
quantized_model.save_pretrained("./quantized_model")

3.5. 在 Habana Gaudi 设备上进行训练

Habana Gaudi 是 AI 训练加速器,支持 Transformer 训练:

from optimum.habana import GaudiTrainer, GaudiConfig

gaudi_config = GaudiConfig()
trainer = GaudiTrainer(model=model, args=training_args, train_dataset=train_dataset)
trainer.train()

3.6. 释放 GPU 内存

model.to("cpu")
torch.cuda.empty_cache()

3.7. 保存和加载优化后的模型

保存
model.save_pretrained("./optimized_model")
重新加载
from optimum.onnxruntime import ORTModelForSequenceClassification

model = ORTModelForSequenceClassification.from_pretrained("./optimized_model")

4. Optimum 适用于哪些任务?

任务适用
文本分类 (AutoModelForSequenceClassification)
问答任务 (AutoModelForQuestionAnswering)
命名实体识别 (AutoModelForTokenClassification)
机器翻译 (AutoModelForSeq2SeqLM)
文本生成 (AutoModelForCausalLM)部分支持
语音识别 (AutoModelForSpeechSeq2Seq)

5. Optimum vs transformers

方案适用场景主要作用
transformers普通训练和推理加载和微调模型
optimum.onnxruntimeCPU/GPU 推理加速转换 ONNX 格式,提高推理速度
optimum.tensorrtNVIDIA GPU 加速使用 TensorRT 进行高效推理
optimum.intelIntel CPU/NPU 加速量化 Transformer 模型(INT8)
optimum.openvinoIntel 设备优化兼容 OpenVINO 计算框架
optimum.habanaHabana Gaudi 设备AI 训练加速
optimum.graphcoreGraphcore IPU计算优化

6. 总结

Optimum 是 Hugging Face 提供的 优化 Transformer 训练和推理的库,支持 ONNX, TensorRT, OpenVINO, Habana Gaudi 等高效计算框架。

常见方法:

  • ORTModelForSequenceClassification.from_pretrained(model_id, export=True) 使用 ONNX Runtime
  • TRTModelForSequenceClassification.from_pretrained(model_id) 使用 TensorRT
  • OVModelForSequenceClassification.from_pretrained(model_id, export=True) 使用 OpenVINO
  • INCQuantizer.from_pretrained("bert-base-uncased").quantize() 进行模型量化
  • GaudiTrainer(model, args, train_dataset) 在 Habana Gaudi 设备上训练
  • model.save_pretrained(path) 保存优化模型
  • model.to(device) 移动到 GPU/CPU 设备
  • optimize_model(model, optimization_level="O2") 自动优化 Transformer 模型
  • quantize_model(model, dtype="int8") 进行模型量化

如果你的 推理速度较慢、显存不足,或者希望优化计算,推荐使用 Optimum

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

彬彬侠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值