Optimum Transformers 项目教程

Optimum Transformers 项目教程

optimum-transformersAccelerated NLP pipelines for fast inference on CPU and GPU. Built with Transformers, Optimum and ONNX Runtime.项目地址:https://gitcode.com/gh_mirrors/op/optimum-transformers

项目介绍

Optimum Transformers 是一个扩展自 Transformers 库的项目,旨在提供一系列性能优化工具,以便在特定硬件上高效地训练和运行模型。该项目支持多种硬件平台,包括 NVIDIA、AMD、Intel、AWS 等,并提供了量化、加速训练等功能,以最大化模型在目标硬件上的效率。

项目快速启动

安装

首先,克隆项目仓库并安装必要的依赖:

git clone https://github.com/AlekseyKorshuk/optimum-transformers.git
cd optimum-transformers
pip install -r requirements.txt

示例代码

以下是一个简单的示例,展示如何使用 Optimum Transformers 进行模型量化:

from optimum.intel import OVModelForSequenceClassification
from transformers import AutoTokenizer

# 加载预训练模型和分词器
model_id = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = OVModelForSequenceClassification.from_pretrained(model_id, export=True)

# 量化模型
model.quantize(weight_format="int8")

# 运行推理
inputs = tokenizer("Hello, world!", return_tensors="pt")
outputs = model(**inputs)
print(outputs)

应用案例和最佳实践

量化

量化是减少模型大小和提高推理速度的有效方法。Optimum Transformers 支持对权重和激活进行量化,具体方法如下:

model.quantize(weight_format="int8")

加速训练

Optimum Transformers 提供了对多种硬件的训练加速支持,例如 Habana 的 Gaudi 处理器和 AWS Trainium 实例。以下是一个使用 Gaudi 处理器的训练示例:

from optimum.habana import GaudiTrainer, GaudiTrainingArguments
from transformers import AutoModelForSequenceClassification

# 加载预训练模型
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")

# 定义训练参数
training_args = GaudiTrainingArguments(
    output_dir="./results",
    per_device_train_batch_size=8,
    num_train_epochs=3,
    logging_dir="./logs",
)

# 创建训练器
trainer = GaudiTrainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
)

# 开始训练
trainer.train()

典型生态项目

ONNX Runtime

ONNX Runtime 是一个高性能的推理引擎,Optimum Transformers 提供了对其的支持,可以通过以下命令安装相关依赖:

pip install optimum[onnxruntime]

OpenVINO

OpenVINO 是 Intel 提供的一个优化工具包,用于加速模型在 Intel 硬件上的推理。Optimum Transformers 支持将模型导出为 OpenVINO 格式,并进行量化:

pip install optimum[openvino]

NVIDIA TensorRT-LLM

NVIDIA TensorRT-LLM 是一个针对 NVIDIA 平台的优化工具,Optimum Transformers 提供了对其的支持,可以通过以下命令安装相关依赖:

docker run -it --gpus all --ipc host huggingface/optimum-nvidia

通过这些生态项目,Optimum Transformers 能够在多种硬件平台上实现高效的模型训练和推理。

optimum-transformersAccelerated NLP pipelines for fast inference on CPU and GPU. Built with Transformers, Optimum and ONNX Runtime.项目地址:https://gitcode.com/gh_mirrors/op/optimum-transformers

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

### 如何使用Optimum库导出ONNX模型 要通过Optimum库导出ONNX模型,可以利用`onnx`模块中的功能来完成这一过程。以下是详细的说明以及代码示例: #### 使用Optimum库导出ONNX模型的过程 Optimum库提供了简化的方法用于将PyTorch或Transformers模型转换为ONNX格式。这可以通过调用`export_onnx_model()`方法实现[^1]。 以下是一个完整的Python脚本示例,展示如何使用Optimum库导出ONNX模型: ```python from optimum.onnx import OnnxConfig from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch # 加载预训练模型和分词器 model_name = "distilbert-base-uncased-finetuned-sst-2-english" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name) # 配置ONNX导出参数 onnx_config = OnnxConfig( opset=13, input_names=["input_ids", "attention_mask"], output_names=["logits"] ) # 创建虚拟输入数据 dummy_input = tokenizer("This is a test sentence.", return_tensors="pt") # 导出到ONNX文件 output_path = "./model.onnx" torch.onnx.export( model=model, args=(dummy_input["input_ids"], dummy_input["attention_mask"]), f=output_path, input_names=onnx_config.input_names, output_names=onnx_config.output_names, dynamic_axes={ "input_ids": {0: "batch_size", 1: "sequence_length"}, "attention_mask": {0: "batch_size", 1: "sequence_length"}, "logits": {0: "batch_size"} }, do_constant_folding=True, opset_version=onnx_config.opset ) ``` 上述代码展示了如何加载一个Hugging Face Transformers模型并将其保存为ONNX格式。其中的关键步骤包括定义动态轴、设置操作集版本(opset),以及指定输入/输出名称。 #### 动态形状支持 为了使生成的ONNX模型能够处理不同大小的批量和序列长度,在`dynamic_axes`参数中指定了相应的维度映射关系。这种配置允许模型适应不同的输入尺寸而无需重新编译。 #### 性能优化选项 如果希望进一步提升性能,还可以考虑启用常量折叠(`do_constant_folding`)以及其他高级技术,比如量化或者图优化工具链的支持。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乔印朗Dale

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

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

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

打赏作者

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

抵扣说明:

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

余额充值