我有三个问题:给定以十亿为单位的LLM参数计数,您如何计算运行模型需要多少GPU RAM?如果您有足够的CPU RAM(即没有GPU)你能运行这个模型吗,即使它很慢你能在混合的GPU-RAM和CPU-RAM中运行LLM模型(如h2ogpt,open-assistant)吗?
olqngx591#
多少vram?
推理通常在float 16中运行,这意味着每个参数2个字节。对于一个7 B参数模型,你需要大约14 GB的内存来以float 16精度运行它。通常训练/微调在float 16或float 32中完成。推理通常在float 16中马上就能很好地工作。在某些情况下,模型可以被量化并在int 8或更小的范围内有效运行。
如果有足够的RAM,你能在CPU上运行模型吗?
通常是的,但取决于模型和库。可能会发生某些层未为CPU实现。
您可以在CPU/GPU混合模式下运行吗?
许多库现在支持在CPU上运行某些层,在GPU上运行其他层。例如,Huggingface Transformers库支持将图层自动Map到所有设备,这意味着它将尝试最大限度地填充GPU,并将其余部分卸载到CPU。为此,在加载模型时将device_map设置为auto。
from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("OpenAssistant/stablelm-7b-sft-v7-epoch-3") model = AutoModelForCausalLM.from_pretrained("OpenAssistant/stablelm-7b-sft-v7-epoch-3", device_map="auto")
1条答案
按热度按时间olqngx591#
多少vram?
推理通常在float 16中运行,这意味着每个参数2个字节。对于一个7 B参数模型,你需要大约14 GB的内存来以float 16精度运行它。通常训练/微调在float 16或float 32中完成。推理通常在float 16中马上就能很好地工作。在某些情况下,模型可以被量化并在int 8或更小的范围内有效运行。
如果有足够的RAM,你能在CPU上运行模型吗?
通常是的,但取决于模型和库。可能会发生某些层未为CPU实现。
您可以在CPU/GPU混合模式下运行吗?
许多库现在支持在CPU上运行某些层,在GPU上运行其他层。例如,Huggingface Transformers库支持将图层自动Map到所有设备,这意味着它将尝试最大限度地填充GPU,并将其余部分卸载到CPU。为此,在加载模型时将device_map设置为auto。