Baichuan 2大模型win本地部署
WhyPrism
2024年01月21日 04:48

> 不支持markdown懒得改了

## 开始 Baichuan 2 是百川智能推出的**新一代开源大语言模型**,采用 **2.6 万亿**  Tokens 的高质量语料训练。 本次发布包含有 **7B****13B****Base****Chat** 版本,并提供了 Chat 版本的 **4bits 量化**。 本次发布版本和下载链接见下表: |         | 基座模型  | 对齐模型 | 对齐模型 4bits 量化 | |:-------:|:-------:|:-------:|:-----------------:| | 7B      | 🤗 [Baichuan2-7B-Base](https://huggingface.co/baichuan-inc/Baichuan2-7B-Base) | 🤗 [Baichuan2-7B-Chat](https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat) | 🤗 [Baichuan2-7B-Chat-4bits](https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat-4bits) | | 13B     | 🤗 [Baichuan2-13B-Base](https://huggingface.co/baichuan-inc/Baichuan2-13B-Base) | 🤗 [Baichuan2-13B-Chat](https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat) | 🤗 [Baichuan2-13B-Chat-4bits](https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat-4bits) | base模型是在大规模语料上以LM这种形式的预训练任务(预测下一个token)训练得来的;chat模型是在base模型上sft+rlhf上微调得来的。base模型已经有很强大的能力了,但是需要tuning即sft+强化学习rlhf后得到chat模型,对齐了人类的自然语言解锁base模型的强大能力。简而言之,base模型很强但是听不懂人话,需要用少量的tuning数据来让它听懂人话,进而和人类对话。 模型量化: 指为了达到减小模型大小、减小推理时内存占用和加快模型的推理速度等目的,将训练得到的连续取值的浮点数类型的权重转换为整形存储(一般值int8)。目的就是在损失少量精度的情况下对模型进行压缩,使模型可以应用到像手机、摄像头、机器人等嵌入设备中。 ## 安装 ### 1.下载 克隆github仓库 `git clone https://github.com/baichuan-inc/Baichuan2` 下载所需要的模型,从上面huggingface链接clone,应该是一个完整的文件夹,放在Baichuan2文件夹里。4bits量化模型应该能在大约16G显存上运行,我测试13B的chat模型至少需要30G显存。 ### 2.创建环境 conda创建虚拟环境 `conda create -n llm python=3.10` 激活环境 `conda activate llm` (执行这步我powershell出bug了无法激活任何环境,后来重置了powershell) 在该环境下安装依赖 `pip install -r requirements.txt` 安装pytorch 在[该目录](https://pytorch.org/get-started/locally/)选择合适的安装链接 安装加速包 `pip install xformers` ### 3.注意事项 量化包bitsandbytes在Windows上貌似无法直接用pip安装,不然会报错,类似 ```CUDA Setup failed despite GPU being available. Inspect the CUDA SETUP outputs above to fix your environment!``` 卸载已经安装的bitsandbytes `pip uninstall bitsandbytes` 用该命令安装 `pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.0-py3-none-win_amd64.whl` ### 4.修改代码 把所有"baichuan-inc/Baichuan2-13B-Chat"改成本地模型位置。如果把baichuan-inc文件夹放在Baichuan2文件夹里,那么就可以改成"./baichuan-inc/Baichuan2-13B-Chat",Baichuan2-13B-Chat为你下载的模型文件夹。 为了避免报错'BaichuanTokenizer' object has no attribute 'sp_model'按照下面代码修改tokenization_baichuan.py ```         self.vocab_file = vocab_file         self.add_bos_token = add_bos_token         self.add_eos_token = add_eos_token         self.sp_model = spm.SentencePieceProcessor(**self.sp_model_kwargs)         self.sp_model.Load(vocab_file)         super().__init__(             bos_token=bos_token,             eos_token=eos_token,             unk_token=unk_token,             pad_token=pad_token,             add_bos_token=add_bos_token,             add_eos_token=add_eos_token,             sp_model_kwargs=self.sp_model_kwargs,             clean_up_tokenization_spaces=clean_up_tokenization_spaces,             **kwargs,         ) ``` ## 运行 `python cli_demo.py`在命令行运行 `streamlit run web_demo.py`在网页运行