中文LLM模型搭建
ps:感谢有开源精神的大佬们,由于按照官方文档搭建中有些位置未说的很详细会产生各种问题,所以本次记录一下完整的搭建过程
选用模型地址:https://github.com/ymcui/Chinese-LLaMA-Alpaca
搭建环境:Ubuntu22.04.2-desktop-amd64
虚拟机硬件配置:
- 30G 内存
- 300G 硬盘
- 处理器:8*1核
注:推荐配置要大于或等于我的配置,会吃硬盘、CPU、内存,配置高速度会快很多
环境处理:
首先装完Ubuntu后,默认会有装python10但未装pip,所以我们手工安装一下:
手动模型合并与转换
首先先下载到原LLAMA模型文件,我这里选用的是Alpaca13B,模型文件请自行查找,原版hash参考:https://github.com/ymcui/Chinese-LLaMA-Alpaca/blob/main/SHA256.md
安装所需依赖库(由于在国内,所以我选用了国内源速度会翻倍):
python3 -m pip install torch==1.12.0 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
python3 -m pip install transformers -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
python3 -m pip install sentencepiece -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
python3 -m pip install peft -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com //此处与原版本不同,原版本是从github拉,但是国内访问太慢,且我经过尝试,发现可以直接pip安装
下载https://github.com/huggingface/transformers并在Ubuntu中解压,在解压后的transformers文件夹下新建两个文件夹:input和hf_output,将原版模型中的tokenizer.model文件复制到input文件夹中,将其余文件放在input/13B文件夹中(在input文件夹中新建13B文件夹),在transformers文件夹根目录打开终端,执行:
python3 src/transformers/models/llama/convert_llama_weights_to_hf.py \
--input_dir input \
--model_size 13B \
--output_dir hf_output
完成后文件夹中的文件如图所示:
下载Chinese-Alpaca-13B,地址:
https://pan.baidu.com/s/1wYoSF58SnU9k0Lndd5VEYg?pwd=mm8i
下载https://github.com/ymcui/Chinese-LLaMA-Alpaca并解压,在Chinese-LLaMA-Alpaca目录中新建三个文件夹chinese、origin、output,将上图中的所有文件复制到origin文件夹中,将新下载的Chinese-Alpaca-13B解压后放入chinese文件夹中,执行:
python3 scripts/merge_llama_with_chinese_lora.py \
--base_model origin \
--lora_model chinese \
--output_type pth
--output_dir output
output_type选的是pth,本来使用的是huggingface因为他有个text-generation-webui可以用来搭建web界面,但是弄出来的模型太大得有26.5G左右,给虚拟机开了50G内存没有跑起来,所以更改为pth然后使用LLAMA.cpp量化后使用,下载https://github.com/ggerganov/llama.cpp并解压,在解压后的文件夹中执行:
新建文件夹zh-models将刚刚生成的tokenizer.model文件放入此文件夹中,并在此文件夹中新建文件夹13B,将刚刚生成的consolidated.*.pth、params.json放入13B目录中,在LLAMA.cpp解压后的文件夹中使用终端打开并执行:
成功后如图:
然后进行量化:
最后使用LLAMA运行试试:
./main -m zh-models/13B/ggml-model-q4_0.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3
emmm运行是好使的,但是输出仍然是英文的,在github上翻了一遍issue,发现他们是用windows运行的,我猜测可能是我的Ubuntu是英文的问题,太晚了明天再试试弄个web并尝试把这个问题给解决了,收工