推理阶段。在后台,1. DeepSpeed会把运行高性能kernel(kernel injection),加快推理速度,这些对用户是透明的; 2. DeepSpeed会根据mp_size来将模型放置在多个GPU卡上,自动模型并行;
import os
import torch
import transformers
import deepspeed
local_rank = int(os.getenv("LOCAL_RANK", "0"))
world_size = int(os.getenv("WORLD_SIZE", "1"))
# create the model pipeline
pipe = transformers.pipeline(task="text2text-generation", model="google/t5-v1_1-small", device=local_rank)
# Initialize the DeepSpeed-Inference engine
pipe.model = deepspeed.init_inference(pipe.model,mp_size=world_size,dtype=torch.float
)
output = pipe('Input String')
Fine-tune BERT:
使用QA数据集SQuAD: (文章,question, answer(答案就在原文中;答对任何一个应该算对))
Forward推理代码:
loss = model(input_ids, segment_ids, input_mask, start_positions, end_positions)
input_ids
:token ids. 文本输入经过Tokenize后的id。segment_ids
: 0表示question,1表示context.input_mask
: 实际句子token or padding token。start_positions
: answer在原文中的起始pos。(推理的时候不用给出)end_positions
: answer在原文中的终止pos。 (推理的时候不用给出)