训练自己的Llama 2!大模型微调技术介绍

训练自己的Llama 2!大模型微调技术介绍

趋动云

趋动云是面向 AI 算法工程师的开发平台,为工程师提供模型开发、模型训练、数据和代码管理等功能。

近期有不少粉丝问算力君,趋动云是否支持大模型的训练?当然支持!

最近大火的Llama 2一出来,算力君身边的小伙伴就已经跑过了,本文将介绍Llama 2和相关的大模型微调技术,趋动云强大的GPU池化技术配以相关的软件,是进行大模型研究、开发的首选~

图片

Llama 2:大模型时代的Android

前几天Meta开源了Llama 2 ,因其卓越的性能、开源的特性,在研究和商业上均可使用,被称为是大模型领域的大事件。有人认为是类似ChatGPT产品的开源替代,被冠以大模型领域的Android之称。

  • 使用指南:https://ai.meta.com/llama/

  • 开源代码:https://github.com/facebookresearch/llama

Llama 2 是一组预训练和微调的大型语言模型(LLMs),是 Meta AI 推出的大型语言模型第二代,参数规模从70亿到700亿不等。

另外,Llama 2-Chat 是 Llama 2 的微调版本,专为对话场景进行了优化。该模型在大多数基准测试中优于开源对话模型,根据人工评估结果,从有用和安全性角度,Llama 2都相当优秀。

Llama 2 模型是在 2 万亿个标记上进行训练的,其上下文长度是 Llama 1 的两倍。而 Llama-2-chat 模型还额外在超过 100 万个新的人工标注数据上进行了训练

图片

Llama 2模型介绍

Llama 2 在许多外部基准测试中表现优于其他开源语言模型,包括推理、编码、熟练度和知识测试等方面。

图片

Llama 2在基准测试中的表现

虽然Meta公司通过开源 Llama 2 已经大大降低了人们使用大模型的门槛,但在定制化的数据集上重新训练、微调 Llama 2仍非易事,趋动云强大的算力、高效的调度、亲民的价格是研究大模型的首选。

Llama 2的开源作者提供了微调大模型的相关技术建议,让我们一起来看看。

大模型微调技术

参数高效的模型微调

这一类方法的代表是LORA(https://arxiv.org/pdf/2106.09685.pdf)、LLaMA Adapter、Prefix-tuning,微调时对整个模型进行冻结,在模型上加入少量可学习的参数或者网络层,训练时只对这部分进行微调。

这种方法其实就是将大模型作为提取特征的工具,因为模型本身巨大的参数量无需调整所以计算代价不高,甚至可以在单个消费级显卡上进行微调。

如果你对大模型的使用场景距离已经训练的大模型的已有能力不远,应该首先尝试这种方法。

这种微调策略的好处是显而易见的:

1.微调的代价低,无需面对大规模计算和传输的挑战,甚至在消费级显卡上也可以跑起来;

2.部署的代价低,可以重复利用已经部署的大模型,新业务出现也不需要部署多个模型;

3.防止灾难性遗忘,使得大模型不至于因为学习了新任务而丧失了对先前已经训练好的任务的处理能力。

Llama 2的开源作者声称他们利用PEFT库微调大模型,关于该库的介绍和用法具体可参考:

https://github.com/huggingface/peft

https://huggingface.co/blog/peft

全部或部分参数的模型微调

对模型本身全部或者部分参数进行调整也有其独特优势,常见的方法如:

1.冻结预训练的模型主干,只微调任务层,比如分类器部分;

2.冻结预训练的模型主干,增加一个全连接层,微调新增部分;

3.微调模型所有层。

图片

微调任务层

图片

微调新增层

图片

微调全部层

当然也可以选择微调模型中的少部分层,目前已经有一些准则指导这方面的选择。但上面的方法是更常见的。

这时往往一块GPU是不够用的, 比如微调Llama 2 7B就需要更多显存,需要根据微调参数多少、训练策略、参数精度,使用足够的显存。

Llama 2的开源作者称PyTorch中的FSDP(Fully Sharded Data Parallel)包可以在此时帮助训练,可以将单个GPU无法训练的模型在多个GPU上训练起来。

FSDP不仅在数据上进行分片,还在模型参数、梯度和优化器状态上进行分片。每个GPU只保存模型的一个分片,从而节省大量内存,使得可以将更大的模型放到多个GPU中。

另外,进一步提高使用FSDP进行微调的性能,可以利用几个特性:

1.混合精度:FSDP提供了更灵活的设置模型参数、缓冲区和梯度的精度的方式;

2.激活检查点:通过在前向传播期间丢弃中间激活值并在后向传播期间重新计算它们来节省内存;

3.auto_wrap_policy:这个特性允许用户指定FSDP如何对模型进行分片。其中包括对Transformer的默认支持,它帮助FSDP创建更细粒度的通信单元,从而优化通信成本。

总之,对模型整体进行微调,FSDP是一种被验证过的十分有效的工具。

趋动云大显存方案,助力大模型训练更从容

趋动云大显存产品,最高显存可达80G

图片

80G显存的卡每小时仅8.49元

配以完善的基于GPU池化技术的开发训练平台,费用最高可省75%,研发效率提升55%,是训练、部署大模型的首选。现在注册还有算力送!

参考资料:https://github.com/facebookresearch/llama-recipes/blob/main/docs/LLM_finetuning.md

猜你喜欢

转载自blog.csdn.net/sinat_37574187/article/details/132000474