Transformers 文件

CPU

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

CPU

CPU 是一種可行且經濟高效的推理選擇。透過一些最佳化方法,可以在 CPU 上使用大型模型實現良好的效能。這些方法包括融合核心以減少開銷,以及將程式碼編譯成更快的中間格式,以便在生產環境中部署。

本指南將向您展示幾種最佳化 CPU 推理的方法。

Optimum

Optimum 是一個 Hugging Face 庫,專注於最佳化各種硬體上的模型效能。它支援 ONNX Runtime (ORT) 模型加速器,適用於包括 CPU 在內的廣泛硬體和框架。

Optimum 提供了 ORTModel 類用於載入 ONNX 模型。例如,載入用於問答推理的 optimum/roberta-base-squad2 檢查點。此檢查點包含一個 model.onnx 檔案。

from transformers import AutoTokenizer, pipeline
from optimum.onnxruntime import ORTModelForQuestionAnswering

onnx_qa = pipeline("question-answering", model="optimum/roberta-base-squad2", tokenizer="deepset/roberta-base-squad2")

question = "What's my name?"
context = "My name is Philipp and I live in Nuremberg."
pred = onnx_qa(question, context)

Optimum 包含一個 Intel 擴充套件,為英特爾 CPU 提供額外的最佳化,如量化、剪枝和知識蒸餾。此擴充套件還包含將模型轉換為 OpenVINO 的工具,OpenVINO 是一個用於最佳化和部署模型的工具包,可實現更快的推理。

BetterTransformer

BetterTransformer 是直接在 CPU 等硬體級別上執行專用 Transformers 函式的*快速路徑*。快速路徑執行主要包含兩個部分:

  • 將多個操作融合到單個核心中,以實現更快、更高效的執行
  • 使用巢狀張量跳過對填充令牌的不必要計算

並非所有模型都支援 BetterTransformer。檢視此列表以瞭解模型是否支援 BetterTransformer。

BetterTransformer 可透過 Optimum 的 to_bettertransformer() 使用。

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("bigscience/bloom")
model = model.to_bettertransformer()

TorchScript

TorchScript 是一種中間 PyTorch 模型格式,可以在非 Python 環境中執行,例如對效能要求嚴格的 C++。訓練一個 PyTorch 模型,並使用 torch.jit.trace 將其轉換為 TorchScript 函式或模組。此函式透過即時 (JIT) 編譯最佳化模型,與預設的急切模式相比,JIT 編譯的模型提供更好的推理效能。

請參閱 PyTorch TorchScript 簡介 教程,瞭解 TorchScript 的簡要介紹。

在 CPU 上,使用 Trainer 中的 --jit_mode_eval 標誌啟用 torch.jit.trace

python examples/pytorch/question-answering/run_qa.py \
--model_name_or_path csarron/bert-base-uncased-squad-v1 \
--dataset_name squad \
--do_eval \
--max_seq_length 384 \
--doc_stride 128 \
--output_dir /tmp/ \
--no_cuda \
--jit_mode_eval
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.