LLaMA生态中的各个模型梳理

最近大模型发展卷的很,王慧文都被整抑郁了。想要研究学习大模型,应该从哪里开始呢?
目前大模型发展生态最好的当属meta的llama模型。如果gpt系列是windows操作系统(巧了,openai的大东家目前就是微软),那么llama就是linux。如果gpt系列是苹果手机,那么llama就是安卓。如果你想基于大模型做一些事情,无论是创业还是研究,最好选择一个生态好的模型,毕竟有人用才有市场。
chatgpt演化的路径如下图所示。
图片中分了4个阶段,但是第三个和第四个阶段一般都会放在一起,属于对齐阶段。所以一般会分成如下3个阶段:
stage 1: 预训练(pretrain)
stage 2: 监督微调(sft)
stage 3: 对齐(reward model + rlhf)
既然已经有了成功chatgpt这一成功的案例,大家都想基于llama把这条路再走一遍,以期望做出自己的chatgpt。
所以基于llama的模型虽然很多,但是基本都可以放到上面3个框架当中。本文就沿着预训练、监督微调、对齐(rw+rlhf)这一路径来梳理一下llama生态中的各个模型。
主要是点出这些模型处在大模型训练的那一个阶段,以及都做了哪些创新性的工作,方便你根据自己的兴趣和资源来选择使用哪一个,对中文支持比较好的也都有注明。
stage1 预训练: llama 复现
redpajama
参考llama论文中的训练数据,收集并且开源可商用。
https://github.com/togethercomputer/redpajama-data
baichuan-7b(支持中文)
采用llama的相同架构,在中文上做预训练。可商用。
王小川这次做大模型的切入点其实挺不错的,绑定到llama的生态上,然后在中文上有所突破。可能也在构思新三级火箭了吧。
目前baichuan可以算是第一个llama中文预训练模型,所以后面的工作都可以在这上面都走一遍,估计没多久baichuan-alapca, baichuan-vicuna就都出来了。
https://github.com/baichuan-inc/baichuan-7b
openllama
参考llama的代码,在apache 2.0 license下的重新实现和训练。使用了redpajama训练集合。
https://github.com/openlm-research/open_llama
lit-llama
参考llama,在apache 2.0 license下的只有代码的重新实现。同时支持加载原始llama和openllama的权重。
https://github.com/lightning-ai/lit-llama
stage 2: 监督微调
因为预训练模型本质上还是个续写模型,所以并不能很好的满足人们的需求,所以监督微调的作用就是微调模型产生理想的回复。
在监督微调这里,大家目标都是一样的,但是做法有些不同,主要是有钱和没钱的区别。
有钱你可以全参数微调,没钱就只能使用一些低成本的方法,英文叫peft(parameter-efficient fine-tuning)。
peft确实是想我这种平民玩家的首选,但是有钱也可以用peft,它可以让你微调更大的模型。比如我们就只能玩玩10b的,有点小钱用peft玩个几十b的问题不大。
2.1 llama + instruction finetuning(全量参数)
alpaca
llama7b + self-instruct数据指令微调。算是最早迈出llama+sft这一步的模型。最开始并没有提供权重,后来通过diff的方式给出,需要llama原始模型才能恢复,github上有教程。
当时他们采用1张8卡a100(80g显存),52k的数据,训练了3个小时。训练成本大概是100刀。
https://github.com/tatsu-lab/stanford_alpaca
alpaca衍生模型
belle(支持中文): 最早是基于bloom的,后来也支持llama https://github.com/lianjiatech/belle
openalpaca: openllama + databricks-dolly-15k dataset 进行指令微调 https://github.com/yxuansu/openalpaca
gpt4-x-alpaca: 用gpt4的数据微调,数据集为gpteacher https://huggingface.co/chavinlo/gpt4-x-alpaca
vicuna
llama13b + sharegpt对话数据,微调
研发团队基于vicuna发布了fastchat对话机器人。
和alpaca一样,受协议限制,vicuna模型公布的权重也是个delta,每个参数要加上llama原来的权重才是模型权重。
https://github.com/lm-sys/fastchat
vicuna衍生模型
gpt4-x-vicuna-13b: 用gpt4的数据微调,数据集为gpteacher https://huggingface.co/nousresearch/gpt4-x-vicuna-13b
wizardlm
采用了evol-instruct来构造指令,可以产生一些很难的指令.
深度演化包括五种操作:添加约束、深化、具体化、增加推理步骤并使输入复杂化。
in-breadth evolving 是突变,即根据给定的指令生成全新的指令
进化是通过提示+llm来实现的。
https://github.com/nlpxucan/wizardlm
tülu
使用llama + human/gpt data mix 微调
验证了很多结论,论文值得一看。https://arxiv.org/abs/2306.04751
https://github.com/allenai/open-instruct
gpt4all
llama用80w的gpt3.5的数据(code, story, conversation)微调而来。
https://github.com/nomic-ai/gpt4all
koala
llama13b基于chatgpt distillation data和open source data训练而来。
具体数据见下面:
https://bair.berkeley.edu/blog/2023/04/03/koala/
openbuddy(支持中文)
基于llama,falcon, openllama微调的,只说用了对话数据,细节没透漏。
https://github.com/openbuddy/openbuddy
pygmalion 7b
给予llama微调,使用了不同来源的56mb 的对话数据,包含了人工和机器。
https://huggingface.co/pygmalionai/pygmalion-7b
2.2 llama + peft
peft目前最流行的是lora,挺巧妙的架构,可以看看https://arxiv.org/abs/2106.09685。
下面大多数的模型都是llama+lora的架构,不只是文本,aigc的头部网站civitai.com上很多模型也都是基于lora的。
最近还出了qlora,在lora的基础上加入了量化,进一步降低显存的使用。https://arxiv.org/abs/2305.14314。
baize
llama + lora
https://github.com/project-baize/baize-chatbot
llama-adapter
llama + adapter layer
https://github.com/opengvlab/llama-adapter
calderaai/30b-lazarus
似乎是多个lora的merge,但是没太公布太多细节。
在huggingface的leaderboard上排名还挺靠前。
https://huggingface.co/calderaai/30b-lazarus
chinese-llama-alpaca(支持中文)
https://arxiv.org/pdf/2304.08177.pdf
llama + 扩词表 + lora
chinese llama是属于局部参数预训练
stage1: frozen encoder,只用来训练embedding层。
stage2: 只训练embedding, lm head, lora weights
在chinese llama的基础上,仿照alpaca训练了chinese alpaca
https://github.com/ymcui/chinese-llama-alpaca
chinese-vicuna(支持中文)
基于:https://github.com/tloen/alpaca-lora
lora + 中文instruction数据
chatv1的数据使用了50k中文指令+对话混合数据。
并没有扩充词表,据说vicuna1.1并没有扩充词表,但是中文效果不错。
https://github.com/facico/chinese-vicuna
stage 3: 对齐(llama + ft + rhlf)
这部分可以说是把chatgpt的路径完整走了一遍。
stablevicuna
vicuna = llama + ft
stablevicuna = vicuna + rlhf
https://github.com/stability-ai/stablelm
stackllama
sft: llama + lora
rm: llama + lora + 分类
https://huggingface.co/blog/zh/stackllama
其他:llama 推理优化
llama.cpp
用c/c++实现的推理,不依赖显卡。
https://github.com/ggerganov/llama.cpp
gptq-for-llama
4 bits quantization of llama using gptq.
https://github.com/qwopqwop200/gptq-for-llama
进nlp群—>加入nlp交流群
原文标题:其他:llama 推理优化
文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

以瑞萨单片机为控制核心的用电安全控制系统设计
李允博:未来2-3年,超100G网络占据整体市场份额将超过60%
慕尼黑电子展有感,谈谈电源企业的升维思维(上)
LED电源测试系统的保养说明
Maxim的镜头驱动器,让视障人群重新看见世界
LLaMA生态中的各个模型梳理
Simple Circuit Charges Lead-Ac
四合一气体检测器的保养和修护,有哪些常见问题
谈谈对工业互联网发展技术路线
中国电信“1+2+N”标准范式打造新型智慧城市
OpenHarmony技术大会:深开鸿引领技术革新,智创开源生态未来
2020第三届全球量子点材料技术及应用创新峰会邀请函
TVS瞬变抑制二极管功率,怎么计算选型选用?
为什么编译时无错误但安全程序显示不一致?怎么解决?
2499元!暴风魔镜Matrix发布:骁龙820+3K屏
连云港移动利用5G技术支持打造“永不落幕”的农洽会
无人驾驶风口来临,各方资本竞相追逐
华为最强“黑科技”!荣耀magic20分钟充满70%的电!
一加5什么时候上市?一加5最新消息:一加5骁龙835+双摄+1080P屏幕已是板上钉钉,期待吗?
ABB出售电网业务叫板西门子工业4.0