探索预量化的大型语言模型

在过去的一年中,我们见证了大型语言模型(LLM)的疯狂发展。新技术和模型的发布速度令人震惊!因此,我们有许多不同的标准和处理LLM的方式。
在本文中,我们将探讨一个关于通过几种(量化)标准加载本地LLM的主题。通过分片、量化和不同的保存和压缩策略,很难知道哪种方法适合你。
在这些示例中,我们将使用Zephyr 7B,这是Mistral 7B的微调变体,使用Direct Preference Optimization (DPO)进行训练。
🔥 提示: 在加载LLM的每个示例之后,建议重新启动您的笔记本以防止内存错误。加载多个LLM需要大量的RAM/VRAM。您可以通过删除模型并重置缓存来重置内存,如下所示:
# 删除以前创建的任何模型del model, tokenizer, pipe# 清空VRAM缓存import torchtorch.cuda.empty_cache()
您还可以通过Google Colab Notebook来跟随操作,以确保一切正常。
1. HuggingFace
加载LLM的最直接、最纯粹的方式是通过🤗 Transformers。HuggingFace已经创建了一套大量的软件包,让我们能够以令人惊讶的方式处理LLM!
我们将从主分支安装HuggingFace及其他依赖,以支持更新的模型:
# 为类似Mistral的模型安装最新HF transformers版本
pip install git+https://github.com/huggingface/transformers.git
pip install accelerate bitsandbytes xformers
安装完成后,我们可以使用下面的代码来轻松加载我们的LLM:
from torch import bfloat16
from transformers import pipeline
# 加载您的LLM而不使用任何压缩技巧
pipe = pipeline(
"text-generation",
model="HuggingFaceH4/zephyr-7b-beta",
torch_dtype=bfloat16,
device_map="auto"
)