使用 LlamaFactory 框架训练 Meta Llama3

目录

背景

Amazon SageMaker 介绍

LlamaFactory 介绍

SageMaker Training 镜像构建

训练

结果验证

模型部署


背景

相较于直接使用 EC2,通过 Amazon SageMaker 进行模型训练具有训练环境统一,降低训练实例的空置率,减少训练任务的等待资源的时间等优势。在复杂模型的训练场景下,一般我们会选用 BYOC(Bring Your Own Container),即构建自定义镜像的方式在 Amazon SageMaker 上进行模型训练。构建的容器中包含了训练所需要的操作系统和依赖项构成的独立隔离环境,因此其可以确保一致的运行时和可靠的训练过程。通过在容器中增加 SageMaker-Training-Toolkit 的依赖即可完成训练环境与 SageMaker 的集成。通常不同的模型需要的框架和依赖不同,因此需要为不同的模型构建不同的镜像。LlamaFactory 框架支持多种 Llama 类模型的训练与微调技术,因此我们可以构建统一的容器来完成多种 Llama 类模型的训练与微调,减少构建不同镜像的工作量。本文以 Amazon SageMaker 平台上使用 LlamaFactory 框架训练 Llama3 为例介绍这一过程。

源码:GitHub - aws-samples/training-meta-llama-3-on-amazon-sagemager-with-llama-factory

Amazon SageMaker 介绍

Amazon SageMaker 是一项机器学习服务,可帮助数据科学家和开发人员快速准备机器学习模型。它提供了全面的工具集,涵盖了从构建、训练到部署机器学习模型的整个过程,其功能涵盖了机器学习全流程,提供了完整的工具集,使数据科学家和开发人员能够快速构建、训练和部署机器学习模型,并持续优化模型性能。

LlamaFactory 介绍

LlamaFactory 是一个统一高效微调大型语言模型(LLMs)的框架,主要具有以下特点:

  • 模块化设计,最小化了模型、数据集和训练方法之间的依赖,能够灵活地微调 100 多种预训练 LLM。
  • 集成了多种先进的高效微调技术,包括 LoRA+、GaLore、QLoRA、mixed precision、checkpointing、flash attention、S2 attention 等,大幅降低微调成本。
  • 提供命令行和网页界面 LlamaBoard,用户无需编码即可自定义和微调 LLM 模型,监控训练状态。
  • 实现了高度抽象,支持生成式预训练、监督微调、强化学习、直接偏好优化等多种训练方法。
  • 支持分布式训练,利用 DeepSpeed 的 ZeRO 优化器,可进一步减少内存占用。
  • 集成了多个指标用于 LLM 评估,如 MMLU、BLEU、ROUGE 等。
  • 经过系统评估,该框架显著提高了微调效率,在下游任务上也取得了很好的效果。

LlamaFactory 为高效微调各类大型语言模型提供了统一、灵活、高效的解决方案,推动了相关开源社区的发展。

SageMaker Training 镜像构建

我们可以使用 EC2 来进行镜像构建。本文采用了 g5.2xlarge 的 EC2 以及 Deep Learning AMI GPU PyTorch 2.0.0(Ubuntu 20.04)的 AMI 进行了测试验证 。

训练脚本来源于 GitHub - Shenzhi-Wang/Llama3-Chinese-Chat: This is the first Chinese chat model specifically fine-tuned for Chinese through ORPO based on the Meta-Llama-3-8B-Instruct model.。请确保您拥有 Hugging Face 的 API Token(https://huggingface.co/docs/transformers.js/guides/private)并且已经通过了 https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct 的权限申请。

1. 构建包含 LlamaFactory 以及 SageMaker-Training-Toolkit 的 Dockerfile

# 根据https://docs.nvidia.com/deeplearning/frameworks/support-matrix/index.html 找到合适的基础镜像
FROM nvcr
### 关于LlamaFactory与LoRA的相关技术和实现 #### LoRA简介 低秩适应(Low-Rank Adaptation, LoRA)是一种针对大型语言模型(LLMs)的高效参数优化方法[^1]。通过引入一组可训练的小型矩阵来调整预训练权重,而非直接修改整个模型参数,这种方法显著降低了计算成本并提高了微调效率。 #### LlamaFactory概述 LlamaFactory 是一个开源项目,旨在提供一系列工具和技术支持,帮助开发者更便捷地探索和应用基于 MetaLLaMA 系列模型的技术特性[^3]。它不仅涵盖了基础理论讲解,还提供了丰富的实践资源,包括但不限于代码示例、教程文档以及社区贡献的内容集合。 #### 使用指南:如何结合LlamaFactory实现LoRA 以下是利用 LlamaFactory 实现 LoRA 微调的一个基本流程: ```python from transformers import AutoModelForCausalLM, AutoTokenizer import peft # A library that implements LoRA and other parameter-efficient fine-tuning methods. # 加载基础模型和分词器 model_name = "meta-llama/Llama-2-7b-hf" tokenizer = AutoTokenizer.from_pretrained(model_name) base_model = AutoModelForCausalLM.from_pretrained(model_name) # 配置LoRA适配层 lora_config = peft.LoraConfig( r=8, # 秩大小(r),通常设置为4到16之间。 lora_alpha=32, target_modules=["q_proj", "v_proj"], # 调整目标模块列表取决于具体架构。 lora_dropout=0.05, bias="none", task_type="CAUSAL_LM" ) # 将LoRA配置应用于原始模型 peft_model = peft.get_peft_model(base_model, lora_config) print(peft_model.print_trainable_parameters()) # 查看哪些部分被标记为可训练状态 # 数据准备阶段省略... # 训练过程同样遵循标准PyTorch框架下的定义方式... trainer = ... # 初始化Trainer对象或其他自定义循环逻辑 trainer.train() ``` 上述脚本展示了如何借助 Hugging Face Transformers 库加载 LLaMA 模型,并通过 PEFT 工具包快速集成 LoRA 功能[^2]。注意实际操作前需确认环境依赖已正确安装完毕。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值