【发布时间】:2022-07-28 22:08:21
【问题描述】:
我目前在生产中使用名为 T0pp (https://huggingface.co/bigscience/T0pp) 的模型,并希望加快推理速度。
我在按需 EC2 g4dn.12xlarge 实例(4 个 Nvidia T4 GPU)上运行以下代码:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("bigscience/T0pp")
model = AutoModelForSeq2SeqLM.from_pretrained("bigscience/T0pp")
model.parallelize()
input_dict = tokenizer(generation_input.inputs, return_tensors="pt", padding=True)
inputs = input_dict.input_ids.to("cuda:0")
attention_mask = input_dict.attention_mask.to("cuda:0")
with torch.no_grad():
outputs = model.generate(inputs, attention_mask=attention_mask)
tokenizer.batch_decode(outputs, skip_special_tokens=True)
我想知道您会尝试哪种替代方案来加快推理速度,以及您是否知道这样做的好教程。我看到的加速推理的主要替代方案是使用底层 Pytorch 模型:
- ONNX
- 深度速度
- 或使用 fp16 而不是 fp32 参数(主要缺点是会损失一些质量)
有人有使用这些工具的经验,并且知道哪个是最好/最简单的选择吗?
所有这些对我来说都是全新的,我必须承认我在 ONNX 和 Deepspeed 教程中有点迷失。
PS:
- 我已经尝试过 SageMaker,但这不适用于 T0pp (40Gb) 等大型模型。
- 批处理加快了速度,允许从 1 到 2 秒进行批处理 大小 1,批量大小 32 为 16 秒。在理想的世界中,即使 批量大小 32 将在 1 或 2 秒内。
【问题讨论】:
标签: python deep-learning pytorch huggingface-transformers