使用说明
因为CPU和GPU本身是不同的硬件单元,而我们所有正常的编码操作,默认都是在cpu上运行的,缓存参数也默认是存储在内存(对应cpu)上。
要使用GPU进行相关操作,起始就是要我们把对应的模型部署到GPU上,也就是把模型和参数指标存储到显存(显卡存储)上,这时候在进行相关操作就是在gpu进行的操作。具体要迁移的模型和参数指标如下:
- 将模型部署到GPU上,需要在导入模型时,设置
.from_pretrained(model_name,device_map="cuda", torch_dtype=torch.float16)。8B模型需要的显存在16G左右,因为使用的是 3090&24G显存 的卡,只能运行低精度的模型,所以在部署阶段指定了低精度方案 (torch_dtype=torch.float16) 。 - 除了模型,我们最终得到的输入到模型的张量也需要从内存(cpu)拷贝到显存(gpu)上。
tokenizer(prompt, return_tensors="pt").to("cuda")
1 | from transformers import AutoTokenizer, AutoModelForCausalLM |
使用GPU以后,模型加载的时间会略有增长(cpu:2s vs gpu: 6s),但是推理时间会大幅减少(cpu:200s vs gpu: 5s)。
通过使用GPU 相同任务,推理时间从原来的运行时间从原来的5min 减少到5.1s。(含模型部署加载)