LLaMA-Factory框架源码介绍 | 大模型监督微调

我带大家一起阅读一下LLaMA-Factory的源码,特别是大模型监督微调方面的源码,共同学习该框架提供的参数配置文件,方便我们从源码角度上对框架进行参数了解和调整,并致力于在此基础上添加自己的超参数。

安装

LaMA-Factory,全称Large Language Model Factory,即大型语言模型工厂。它支持多种预训练模型和微调算法,提供了一套完整的工具和接口,使得用户能够轻松地对预训练的模型进行定制化的训练和调整,以适应特定的应用场景,如智能客服、语音识别、机器翻译等。
**LLaMA-Factory源码**安装方法参照github源码给出的教程,我所使用的版本为0.9.1.dev0

微调

#运行
llamafactory-cli train qwen2__5_3b_lora.sft.yaml

由于我们运行的是llamafactory-cli的train方法,执行下面文件的方法

在这里插入图片描述

由于我们使用监督微调sft,而qwen2__5_3b_lora.sft.yaml的所有超参数通过方法get_train_args(args)获取进而产生model_args、data_args、finetuning_args等模型、数据、训练、微调、生成的参数对象进行传递,下一小节追溯超参数来源源码,执行下面的方法

在这里插入图片描述

转接到该文件LLaMA-Factory/src/llamafactory/train/sft/workflow.py,该文件为自监督微调的核心文件,是微调的整个过程,包含准备数据集、初始化训练器、训练、评估、预测的方法。其通过导入以下类并按顺序执行以下这些功能:

from .
### 部署和微调 LLaMA-Factory 模型 #### 准备工作环境 为了在 Windows 上成功部署并微调 LLaMA-Factory 模型,需要先安装必要的依赖项。这包括 Python 和 PyTorch 的设置。 ```bash conda create -n llama-env python=3.9 conda activate llama-env pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117 ``` 这些命令创建了一个新的 Conda 虚拟环境,并安装了 CUDA 版本的 PyTorch 库[^1]。 #### 安装 LLaMA-Factory 及其依赖库 接下来要克隆 LLaMA-Factory 仓库到本地计算机: ```bash git clone https://github.com/facebookresearch/llama.git cd llama pip install -e . ``` 这段代码会下载项目源码并将它作为可编辑包安装,使得可以随时修改代码而不必重新打包发布。 #### 下载预训练模型权重文件 尽管 LLaMA-Factory 是一个用于构建自定义语言模型的强大工具集,但是实际应用中通常不会从头开始训练整个网络结构;相反,更常见的是基于现有的高质量参数初始化新任务的学习过程——即迁移学习方法的一部分。因此,在此之前还需要获取官方发布的预训练模型权重来加载至框架内。 可以通过如下方式获得所需资源链接: 访问 Hugging Face Model Hub 或者其他公开平台找到合适的版本进行下载保存于指定路径下以便后续使用。 #### 微调模型 完成上述准备工作之后就可以着手准备自己的数据集以及调整超参来进行特定领域上的优化操作了。假设已经有了标注好的文本对儿组成的 CSV 文件形式的数据集,则可以直接利用内置脚本来启动训练流程: ```python from transformers import Trainer, TrainingArguments, AutoModelForCausalLM, DataCollatorForLanguageModeling import datasets model_name_or_path = "path_to_pretrained_model" train_file = "./data/train.csv" dataset = datasets.load_dataset('csv', data_files={'train': train_file}) tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) def tokenize_function(examples): return tokenizer(examples['text']) tokenized_datasets = dataset.map(tokenize_function, batched=True) data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm_probability=0.15) training_args = TrainingArguments( output_dir="./results", evaluation_strategy="epoch", learning_rate=2e-5, per_device_train_batch_size=8, per_device_eval_batch_size=8, num_train_epochs=3, weight_decay=0.01, ) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) trainer = Trainer( model=model, args=training_args, train_dataset=tokenized_datasets["train"], eval_dataset=None, data_collator=data_collator, ) trainer.train() ``` 该段Python程序展示了如何通过HuggingFace Transformers库中的`Trainer`类简化微调过程,同时指定了评估策略、学习率等重要参数配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值