布景

上一篇文章《GPT大言语模型Alpaca-lora本地化布置实践》介绍了斯坦福大学的Alpaca-lora模型的本地化布置,并验证了实际的推理作用。

总体感觉其实并不是特别抱负,原始Alpaca-lora模型对中文支撑并不好,用52k的中文指令集对模型进行fine-tuning之后,作用仍然达不到网上说的媲美GPT-3.5的推理作用,验证了那句话:“事不目见耳闻,而臆断其有无,可乎?”

在具有3块Tesla P40显卡的服务器上,利用3块GPU显卡加载模型参数和核算,进行一次简略的推理(非数学运算和逻辑运算)也需求大约30s-1min的时刻,功率简直慢的惊人。在京东云GPU云主机布置上,虽然推理功率提高了很多,用中文数据集对模型进行了fine-tuning,然而对中文的支撑也并不是很好,常常会呈现乱码、重复问题、言不尽意等状况。

最近大模型也同漫山遍野般的层出不穷,各个大厂和科研机构都推出了自己的大模型,其间依据LLaMA(开源且好用)的最多,所以决定再看看其他模型,有没有推理作用好,中文支撑好,一起推理功率高的模型。

通过筛选,Vicuna-13B的推理作用听说达到了ChatGPT的90%以上的才能,优于LLaMA-13B和Alpaca-13B的作用(详细如下图所示)。评价方法是对各个模型Alpaca、LLaMA、ChatGPT和Bard输入相同的问题,然后通过GPT-4当裁判对推理成果进行打分,以ChatGPT的回答作为100分,回答越挨近得分越高(虽然评价方法并不科学,可是现在看也没有更好的方法对模型推理成果进行更科学的评价)。

一起Vicuna的练习本钱也很低,听说只需求$300左右,所以尝试本地化布置一下Vicuna-7B,看看作用怎么,说干就干。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

环境预备

因为之前本地化布置过Alpaca-lora模型了,本认为能够直接下载开源包,简略布置一下就能够看到作用了,成果发现我仍是“too young,too simple”了,环境布置和处理包冲突的进程竟然比第一次布置Alpaca-lora模型还要费劲。

简略的复述一下布置流程,详细的能够参考上一篇内容《GPT大言语模型Alpaca-lora本地化布置实践》。

  1. 本地化布置或GPU云主机布置:GPU服务器具有4块独立的GPU,型号是P40,单个P40算力适当于60个平等主频CPU的算力;也能够运用京东云GPU云主机要选购P40;
  2. 装置显卡驱动和CUDA驱动。

模型预备

因为Vicuna 是依据LLaMA模型的,为了契合LLaMA 模型license授权,仅发布了 delta 权重,所以咱们需求将原始llama-7b模型与delta模型权重兼并之后,才能得到vicuna权重。

首要是下载llama-7b模型,因为文件比较大,所以用lfs直接从文件服务器上下载,巨细有26G,履行:

git lfsclonehttps://huggingface.co/decapoda-research/llama-7b-hf

然后是下载delta模型,履行:

git lfsclonehttps://huggingface.co/lmsys/vicuna-7b-delta-v1.1

下载完结后进行权重兼并,履行:

python -m fastchat.model.apply_delta \ –base ./model/llama-7b-hf \ –delta ./model/vicuna-7b-delta-v1.1 \ –target ./model/vicuna-7b-all-v1.1

这个兼并进程会很快,终究成果如下,兼并之后参数巨细变成了13G。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

兼并之后的目录下会有装备文件和数据文件。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

装置依靠包

Vicuna首要用到3个依靠包,fschat、tensorboardX和flash-attn,前2个装置比较顺畅,直接pip install fschat、tensorboardX即可装置完结。flash-attn装置遇到了问题,一直报以下过错:

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

通过一番检索,发现是gcc版别太低导致的,需求晋级gcc,首要检查了一下本地的gcc版别,gcc -v和g++ -v发现是4.8.5的,确实是太低了,那么已然要晋级,就晋级到最新版,直接下载13.1版别,能够在
ftp.gnu.org/gnu/gcc/挑选想…

履行:

tar -xzf gcc-13.1.0.tar.gz

cd gcc-13.1.0

./contrib/download_prerequisites

mkdir build

cd build/

../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

然后履行make编译,注意这儿make时刻会十分长,或许会持续几个小时,能够运用 make -j 8让make最多运转8个编译指令一起运转,加快编译速度。

顺畅完结后,咱们再履行make install进行装置。

然后用gcc -v和g++ -v验证版别是否现已更新,假如提示如下,阐明装置完结。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

然后咱们需求卸载原有的gcc和g++,切换到root权限,履行yum -y remove gcc g++。

装备新版别全局可用,履行ln -s /usr/local/bin/gcc /usr/bin/gcc。

更新链接库,履行:

检查原链接库:strings /usr/lib64/libstdc++.so.6 | grep CXXABI

删除原链接库:rm -f /usr/lib64/libstdc++.so.6

树立软连接:ln -s /usr/local/lib64/libstdc++.so.6.0.29 /usr/lib64/libstdc++.so.6

检查新链接库:strings /usr/lib64/libstdc++.so.6 | grep CXXABI

假如最新版别有变化,那么恭喜你,阐明现已晋级成功啦。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

装置cuda

因为之前是用rpm包装置的cuda,有些文件是缺失的,运转时会报各种奇奇怪怪的过错,这儿就不赘述了(只要经历过才会懂),直接介绍用二进制文件装置cuda进程。

下载地址
developer.nvidia.com/cuda-11-7-0…

注意这儿要挑选runfile(local)。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

然后履行sh
cuda_11.7.0_515.43.04_linux.run。

装置完结后,需求装备环境变量,在本地.bash_profile中装备如下两项:

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

下面验证一下装置是否成功,履行nvcc -V,如下图所示,那么恭喜你,装置成功啦。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

装置cudnn和nccl

装置cudnn和nccl需求先在nvidia注册账号,注册之后能够在以下两个地址下载相应的rpm包,然后rpm -ivh XXXXX.rpm包即可。

cudnn下载地址: developer.nvidia.com/cudnn

nccl下载地址: developer.nvidia.com/nccl/nccl-l…

装置完结后,如下图所示阐明现已装置成功rpm包。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

模型推理

又到激动人心的时刻啦,让咱们来测验一下看看模型的推理作用怎么?首要咱们先擦拭一下还没有干透辛勤的汗水,全部努力,都是为了终究能跟机器人程序对上话,抱负状况是让咱们感觉它并不是一个机器人。

在终端履行如下指令,然后输入问题即可。

python -m fastchat.serve.cli –model-path ./model/vicuna-7b-all-v1.1 –style rich

当然,还能够依据不同的需求场景,设置不必的运转参数,如下:

#压缩模型 猜测作用会稍差一点,适合GPU显存不够的场景

python -m fastchat.serve.cli –model-path ./model/vicuna-7b-all-v1.1 –load-8bit –style rich

#运用cpu进行推理,速度会很慢,慎用

python -m fastchat.serve.cli –model-path ./model/vicuna-7b-all-v1.1 –device cpu –style rich

#运用多个GPU进行猜测

python -m fastchat.serve.cli –model-path ./model/vicuna-7b-all-v1.1 –num-gpus 3 –style rich

1)引荐菜谱测验:

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

2)多言语测验:

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

3)代码才能测验:

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

4)数学核算测验

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

5)一般对话引荐

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

推理进程中GPU服务器资源运用状况,现在运用单GPU进行推理,都能够做到秒级呼应,GPU内存空加载13G,推理时不到15G,推理时单GPU算力基本能够达到90%以上,乃至100%,如下图所示。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

总结一下:

1)对精确的推理作用并不是很抱负,比如引荐菜谱,感觉是在一本正经的胡说八道,按照推理的成果很难做出可口的饭菜️;

2)对多种自然言语的支撑,这个真的是出乎预料,竟然日语和西班牙语完全都能够自如应对,能够说是适当的惊艳了;

3)编码才能仍是能够的,能够大约给出基本需求,当然假如想直接编译履行或许还需求人工微调,可是作为辅助工具应该是没问题的;

4)数据核算才能现在看仍是比较弱的,简略的乘法现在还不能够给出正确的答案;

5)一般的对话是完全没有问题的,对中文的了解也完全能否契合预期,解解闷排解一下孤独是能够cover住的。

因为模型现在还没有做fine-tuning,从现在的推理作用来看,现已是十分不错了,并且推理的功率也是十分不错的,即使运用单GPU进行推理也能够做到秒级呼应,并且推理进程中显存占用也才只要60%多,跟空载时分的50%多没差多少,总之在没有通过fine-tuning的状况下,模型的推理体现和推理功率仍是能够打7-8分(满分10分)的,假如假以时日,有满足的语料库和进行fine-tuning的话,作用仍是可期的。

模型fine-tuning

要想使模型适合某一特定范畴内的场景,获取特定范畴的常识是必不可少的,依据原始模型就要做fine-tuning操作,那么咱们尝试做一下fine-tuning,看看作用怎么吧。

fine-tuning需求在终端履行一下指令:

torchrun --nproc_per_node=3 --master_port=40001 ./FastChat/fastchat/train/train_mem.py \
    --model_name_or_path ./model/llama-7b-hf  \
    --data_path dummy.json \
    --bf16 False \
    --output_dir ./model/vicuna-dummy \
    --num_train_epochs 2 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 8 \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps 300 \
    --save_total_limit 10 \
    --learning_rate 2e-5 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps 1 \
    --report_to "tensorboard" \
    --fsdp "full_shard auto_wrap" \
    --fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \
    --tf32 False \
    --model_max_length 2048 \
    --gradient_checkpointing True \
    --lazy_preprocess True

终究./model/vicuna-dummy目录输出便是咱们fine-tuning之后的模型权重文件目录。

很遗憾,本文fine-tuning没有成功,报错如下:

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

原因也很简略,因为咱们运用的GPU型号是Tesla P40,此款显卡运用的SM_62架构,现在模型fine-tuning至少需求SM_75及以上架构,看社区有在4090、A100或者A80显卡上fine-tuning成功的,所以fine-tuning只能后续再更高架构的显卡上进行了。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

后续作业

终上,Vicuna模型在整体体现和推理功率上能够说是秒杀Alpaca模型的,咱们本文测验用的是Vicuna-7b,假如是Vicuna-13b作用会更好,并且对多种自然言语(包括中文)的支撑也要远远好于Alpaca模型,确实像社区所说的,现在Vicuna模型能够说是开源大模型的天花板了,假如想依据开源大模型进行二次开发,是个不二的挑选。

依据大模型的本地化布置作业现在就告一段落了,后续做的作业或许有以下几点:

1)假如有更好的显卡,能够对vicuna进行fine-tuinig,验证一下fine-tuning之后模型能不能学到特定范畴的常识;后续预备运用公司内部供给的试用资源【京东云GPU云主机p.n3a100系列】,供给Nvidia A100 GPU(80G显存),调配运用Intel Xeon Platinum 8338C 处理器及DDR4内存,支撑NVLink,单精度浮点运算峰值能达到156TFlops,能够说是最强算力了。

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

2)找到合适的与现在使用结合的场景,将大言语模型使用落地;

3)依据vicuna开源项目进行二次开发,封装成可用的服务;

4)依据大言语模型进行更多的探索和学习。

来源:京东云开发者社区

作者:Beyond_luo(未经授权请勿转载)