运行比GPU的VRAM更大的模型的巧妙方法。可能会很慢,但它真的有效!
谁有足够的钱去购买超过24GB VRAM的GPU?特别是当我们只是想测试一下,在本地进行测试并玩弄它!我们是搞机的人!而在本地运行更大的模型没有实际可行的方法!
窍门
谁说你必须一次加载和处理全部96个GPT3层,就像处理大型语言模型一样?AirLLM提出了一种天才的方法,逐层分别处理并在层之间进行计算-这意味着对于一个70B参数的模型,内存的瓶颈在于最大的一层,有4096个参数或者16384个。这是一个相当容易在少量内存中计算的数字,然后存储一层的输出并用它来计算下一层!在前向和后向传播中一遍又一遍地进行。
好了,快速介绍一下代码
pip install airllm# 替代安装方法 # pip install -i https://pypi.org/simple/ airllm
使用airllm设置推理引擎
# 对于运行LLaMA-2 from airllm import AirLLMLlama2 # 对于运行Qwen from airllm import AirLLMQWen# 对于运行ChatGLM from airllm import AirLLMChatGLM
加载模型
# 如果您使用Huggingface进行门控模型,则会收到错误 401# 运行以下代码使用您的Huggingface令牌model = AirLLMLlama2("meta-llama/Llama-2-7b-hf", hf_token='YOUR HUGGINGFFACE TOKEN GOES HERE')
运行推理
# 最大令牌生成长度 MAX_LENGTH = 128# 输入文本列表 input_text = [ '赞比亚的首都是什么?', #'埃隆·马斯克是自恋吗?', ]input_tokens = model.tokenizer(input_text, return_tensors="pt", return_attention_mask=False, truncation=True, max_length=MAX_LENGTH, padding=True) generation_output = model.generate( input_tokens['input_ids'].cuda(), max_new_tokens=20, use_cache=True, return_dict_in_generate=True)#…