一文就懂大语言模型Llama2 7B+中文alpace模型本地部署

大语言模型Llama2 7B+中文alpace模型本地部署
VX关注晓理紫并回复llama获取推理模型
[晓理紫]

1、Llama模型

一个由facebook发布的生成式语言模型,具体可以到其官方了解。
为了大家更好理解,这里把目录结构显示下一如下图。
在这里插入图片描述

2、 下载Llama并配置环境

2.1 下载Llama源码

git clone https://github.com/facebookresearch/llama.git

2.2 创建环境

可以使用conda创建虚拟环境也可以直接使用pip创建环境,这里使用conda创建并激活环境。

conda create -n llama python=3.8
conda activate llama

进入到刚下载的源码目录

cd llama
pip install -e .

此时基本环境已经完成

3、下载权重

Llama提供好几种大小的权重,目前我只能跑最小的7B,因此下载7B大小权重。

3.1、Llama权重下载

到huggingface中进行搜索Llama即可。这个网站需要注册,这里也提高一个使用的下载地址。

https://huggingface.co/nyanko7/LLaMA-7B/tree/main

3.2、基于7B模型微调的中文alpace模型下载

可到下列地址进行下载

https://huggingface.co/ziqingyang/chinese-alpaca-lora-7b/tree/main

4、模型转换与合并

合并以及处理模型需要几个项目支持,下面用到哪个就配置哪个。

4.1模型转换

这里需要transformers进行转换。这里先下载源码并配置环境

git clone https://github.com/huggingface/transformers

cd  transformers

python setup.py instal

pip install sentencepiece

pip install peft

环境配置好,执行下面语句进行将原版LLaMA模型转换为HF格式

python  transformers/src/transformers/models/llama/convert_llama_weights_to_hf.py --input_dir ./7B/ --model_size 7B --output_dir ./huggingface/

 --input_dir:属于的7B模型路径
 --model_size:模型大小类型,7B,13B...
 --output_dir: 转换后输出的路径

4.2、把中文模型与原模型合并

这里需要使用Chinese-LLaMA-Alpaca。这里先下载源码并配置环境

git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca.git
cd Chinese-LLaMA-Alpaca
pip install -r requirements.txt

环境配置好使用下面语句进行合并

python Chinese-LLaMA-Alpaca/scripts/merge_llama_with_chinese_lora.py  --base_model ./huggingface/ --lora_model ./chinese-alpaca-lora-7b/  --output_dir ./out

--base_model:输入的是上一步中转换的输出路径
--lora_model:输入的是中文模型的路径
--output_dir:是可并输出的路径

4.3 进行模型量化

这里要分成两步进行并使用llama.cpp项目,先下载源码进行编译

git clone  https://github.com/ggerganov/llama.cpp.git
cd  llama.cpp && make
  • 1 这个先把合并的模型转换成gguf格式

创建文件目标 zh-models,将之前Chinese-LLaMA-Alpaca文件夹中的tokenizer.model放入其中,然后在zh-models中建立7B文件夹,将上面合并生成的consolidated.00.pth和params.json放入其中。目录如图

在这里插入图片描述

 python llama.cpp/convert-pth-to-ggml.py zh-models/7B/ 1

这个convert-pth-to-ggml.py文件在新版本中被删除了,可以在以前分支找到或者使用下面的代码

# Compatibility stub

import argparse

import convert

parser = argparse.ArgumentParser(
    description="""[DEPRECATED - use `convert.py` instead]
    Convert a LLaMA model checkpoint to a ggml compatible file""")
parser.add_argument('dir_model',  help='directory containing the model checkpoint')
parser.add_argument('ftype',      help='file type (0: float32, 1: float16)', type=int, choices=[0, 1], default=1)
args = parser.parse_args()
convert.main(['--outtype', 'f16' if args.ftype == 1 else 'f32', '--', args.dir_model])
  • 2 对FP16模型进行Q4量化

使用下面命令进行量化

./llama.cpp/quantize zh-models/7B/ggml-model-f16.gguf ./zh-models/7B/ggml-model-q4_0.bin 2 

5、进行运行

./llama.cpp/main  -m ./zh-models/7B/ggml-model-q4_0.bin -f ./llama.cpp/prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3 

效果如图(当然模型太小准确率呵呵呵)

在这里插入图片描述

下面提供一个最终推理使用的模型

模型获取方式

关注晓理紫并回复llama获取模型

{晓理紫|小李子}喜分享,也很需要你的支持,喜欢留下痕迹哦!

猜你喜欢

转载自blog.csdn.net/u011573853/article/details/133819698