中文LLM模型搭建

admin 2023年5月15日01:30:24评论190 views字数 2454阅读8分10秒阅读模式

ps:感谢有开源精神的大佬们,由于按照官方文档搭建中有些位置未说的很详细会产生各种问题,所以本次记录一下完整的搭建过程

选用模型地址:https://github.com/ymcui/Chinese-LLaMA-Alpaca

搭建环境:Ubuntu22.04.2-desktop-amd64

虚拟机硬件配置:

  • 30G 内存

  • 300G 硬盘

  • 处理器:8*1核

注:推荐配置要大于或等于我的配置,会吃硬盘、CPU、内存,配置高速度会快很多

环境处理:

首先装完Ubuntu后,默认会有装python10但未装pip,所以我们手工安装一下:

apt update   //更新系统的包索引
apt install python3-pip //安装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文件夹下新建两个文件夹:inputhf_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

完成后文件夹中的文件如图所示:

中文LLM模型搭建

下载Chinese-Alpaca-13B,地址:

https://pan.baidu.com/s/1wYoSF58SnU9k0Lndd5VEYg?pwd=mm8i

下载https://github.com/ymcui/Chinese-LLaMA-Alpaca并解压,在Chinese-LLaMA-Alpaca目录中新建三个文件夹chineseoriginoutput,将上图中的所有文件复制到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并解压,在解压后的文件夹中执行:

make

新建文件夹zh-models将刚刚生成的tokenizer.model文件放入此文件夹中,并在此文件夹中新建文件夹13B,将刚刚生成的consolidated.*.pthparams.json放入13B目录中,在LLAMA.cpp解压后的文件夹中使用终端打开并执行:

python3 convert.py zh-models/13B/

成功后如图:

中文LLM模型搭建

然后进行量化:

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

最后使用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

中文LLM模型搭建

emmm运行是好使的,但是输出仍然是英文的,在github上翻了一遍issue,发现他们是用windows运行的,我猜测可能是我的Ubuntu是英文的问题,太晚了明天再试试弄个web并尝试把这个问题给解决了,收工

ps:昨天我还说,我今天再弄就是大冤种,但是问题不解决我好难受啊,还是弄了一下,还好,虽然中文输出有问题,但是也基本上跑通了,之前还说送俺们团队成员个福利,给个CVE的,但是还没弄完,明天或者后天腾时间审个代码吧


原文始发于微信公众号(天幕安全团队):中文LLM模型搭建

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月15日01:30:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   中文LLM模型搭建http://cn-sec.com/archives/1710903.html

发表评论

匿名网友 填写信息