LLaMA-Factory微调Qwen2.5-7B模型_llamafactory 微调qwen2.5

本次实验环境使用的魔塔社区的机子

准备LLaMA-Factory环境

git clone https://github.com/hiyouga/LLaMA-Factory.git

创建虚拟环境

一般的可以使用anaconda ,miniconda 这个免费的机器有限我就使用python的venv来创建虚拟环境

root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace# python --version
Python 3.10.14
root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace# python -m venv llama_factory

激活环境,下载依赖

root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace# source llama_factory/bin/activate
(llama_factory) root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace# cd LLaMA-Factory/
(llama_factory) root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace/LLaMA-Factory# pip install -e ".[torch,metrics,swanlab]"
Looking in indexes: https://mirrors.cloud.aliyuncs.com/pypi/simple
Obtaining file:///mnt/workspace/LLaMA-Factory
  Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build editable ... done
  Preparing editable metadata (pyproject.toml) ... done
Collecting gradio<=5.12.0,>=4.38.0
  Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/7a/70/fb8611fabeb432d05946ef89d7acc6fde6c7e85ca9a05d39626b4cdf1a17/gradio-5.12.0-py3-none-any.whl (57.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.6/57.6 MB 32.9 MB/s eta 0:00:00
Collecting pydantic...
source llama_factory/bin/activate #激活环境
cd LLaMA-Factory/  #切换目录
pip install -e ".[torch,metrics,swanlab]" #下载依赖
pip install bitsandbytes>=0.39.0 #下载bitsandbytes


使用SwanLab记录实验数据

去官网创建一个账号,在虚拟环境登录

swanlab login
粘贴复制的API token


下载模型

在modescope当中寻找相应的模型,这里使用ModelScope下载

主意路径和放在/mnt/workspace/下
modelscope download --model Qwen/Qwen2.5-7B-Instruct

下载数据集

需要的格式为Apache格式,在数据集当中寻找你需要的

使用什么下载都ok,最后要将数据文件存放在/mnt/workspace/LLaMA-Factory/data下

编辑训练文件

/mnt/workspace/LLaMA-Factory/examples/train_qlora/下复制一份llama3_lora_sft_awq.yaml为qwen_lora_sft_bitsandbytes.yaml然后编辑这个文件

AWQ

  • 含义AWQActivation-aware Weight Quantization 的缩写,是一种量化技术。

  • 用途:用于存储经过 AWQ 量化处理的模型文件。AWQ 是一种高效的量化方法,能够在保持模型性能的同时显著减少模型大小和推理时间。

  • 特点:AWQ 通常会根据激活值(activation)的分布动态调整权重量化策略,从而在低精度下保持较高的模型精度。

bnb_npu

  • 含义bnbBitsandBytes 的缩写,而 npu 指的是 Neural Processing Unit(神经网络处理单元)。

  • 用途bnb_npu BitsandBytes 库针对 NPU 优化的量化工具或方法。

  • 特点

    • BitsandBytes 是一个流行的量化库,支持 8 位和 4 位量化。

    • npu 表示该方法针对 NPU(如华为 Ascend、高通 Hexagon 等)进行了优化,以提高在这些硬件上的推理效率

### model
#修改为你模型的位置
model_name_or_path: /mnt/workspace/Qwen
quantization_bit: 4
# trust_remote_code: true

### method
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 8
lora_target: all

### dataset
dataset: law
template: qwen
cutoff_len: 2048
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16

### output
output_dir: saves/qwen2.5-7b/lora/sft
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true

### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 1.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000


# 配置swanlab ,前提要登录
use_swanlab: true
swanlab_project: llamafactory
swanlab_run_name: Qwen2.5-7B-Instruct

### eval
val_size: 0.1
per_device_eval_batch_size: 1
eval_strategy: steps
eval_steps: 500

Model 部分

  • model_name_or_path: 指定预训练模型的路径或名称。这里路径是 /mnt/workspace/Qwen,表示模型存储在本地目录。

  • quantization_bit: 量化位数,这里设置为 4,表示使用 4 位量化来减少模型的内存占用和计算量。

  • trust_remote_code: 如果模型包含自定义代码(如 Hugging Face 的 transformers 库中的自定义模型),需要设置为 true。这里被注释掉了,表示不启用。

Method 部分
  • stage: 当前任务的阶段,sft 表示监督微调(Supervised Fine-Tuning)。

  • do_train: 是否进行训练,设置为 true 表示启用训练。

  • finetuning_type: 微调类型,这里使用 lora,表示使用 LoRA 技术进行微调。

  • lora_rank: LoRA 的秩(rank),这里设置为 8。秩越低,参数量越少,但可能会影响模型性能。

  • lora_target: 指定 LoRA 应用于哪些层,all 表示应用于所有层。

Dataset 部分
  • dataset: 使用的数据集名称,这里为 law,可能是一个法律相关的数据集。

  • template: 数据模板,这里为 qwen,表示使用 Qwen 模型的默认模板。

  • cutoff_len: 输入序列的最大长度,超过此长度的部分会被截断。这里设置为 2048。

  • max_samples: 最大样本数,这里设置为 1000,表示只使用数据集中的前 1000 个样本。

  • overwrite_cache: 是否覆盖缓存,设置为 true 表示每次运行都会重新生成缓存。

  • preprocessing_num_workers: 数据预处理的并行工作线程数,这里设置为 16。

Output 部分
  • output_dir: 模型和日志的输出目录,这里为 saves/qwen2.5-7b/lora/sft

  • logging_steps: 每隔多少步记录一次日志,这里设置为 10。

  • save_steps: 每隔多少步保存一次模型,这里设置为 500。

  • plot_loss: 是否绘制损失曲线,设置为 true 表示启用。

  • overwrite_output_dir: 是否覆盖输出目录,设置为 true 表示如果目录已存在则会覆盖。

Train 部分
  • per_device_train_batch_size: 每个设备的训练批次大小,这里设置为 1。

  • gradient_accumulation_steps: 梯度累积步数,这里设置为 8。通过累积梯度来模拟更大的批次大小。

  • learning_rate: 学习率,这里设置为 1.0e-4

  • num_train_epochs: 训练的总轮数,这里设置为 3.0。

  • lr_scheduler_type: 学习率调度器类型,这里为 cosine,表示使用余弦退火调度器。

  • warmup_ratio: 学习率预热比例,这里设置为 0.1,表示在前 10% 的训练步骤中逐步增加学习率。

  • bf16: 是否使用 bfloat16 精度,设置为 true 表示启用,可以减少内存占用并加速训练。

  • ddp_timeout: 分布式数据并行(DDP)的超时时间,这里设置为 180000000 毫秒。

SwanLab 配置
  • use_swanlab: 是否使用 SwanLab 进行实验跟踪,设置为 true 表示启用。

  • swanlab_project: SwanLab 项目名称,这里为 llamafactory

  • swanlab_run_name: 当前运行的名称,这里为 Qwen2.5-7B-Instruct

Eval 部分
  • val_size: 验证集的比例,这里设置为 0.1,表示使用 10% 的数据作为验证集。

  • per_device_eval_batch_size: 每个设备的验证批次大小,这里设置为 1。

  • eval_strategy: 验证策略,这里为 steps,表示每隔一定步数进行验证。

  • eval_steps: 每隔多少步进行一次验证,这里设置为 500。

数据与文件对应

这几个地方要对应上

训练模型

在 LLaMA-Factory 目录下,输入以下命令启动微调脚本

llamafactory-cli train examples/train_qlora/qwen_lora_sft_bitsandbytes.yaml


最后结果

推理测试

如何系统学习掌握AI大模型?

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

在这里插入图片描述

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

在这里插入图片描述

### 对 LLaMA-FactoryQwen 2.5 版本模型进行视觉-语言 (VL) 微调 为了在 LLaMA-Factory 中对 Qwen 2.5 版本模型执行视觉-语言微调,需遵循特定配置和流程。首先确认已下载并设置好基础环境,在 `/mnt/workspace/` 下准备好所需资源[^1]。 #### 准备数据集 对于视觉-语言任务的数据准备至关重要。通常涉及图像特征提取以及相应的文本描述配对。确保所使用的数据格式兼容于框架需求,并按照指定结构组织文件夹: ```bash dataset/ ├── images/ │ ├── image_001.jpg │ └── ... └── captions.jsonl ``` 其中 `captions.jsonl` 文件每一行为 JSON 格式的字典对象,包含图片 ID 和对应的 caption 字符串。 #### 修改超参数配置 编辑位于 GitHub 上提到的路径中的 Python 脚本部分代码片段来适应 VL 任务特性[^2]: ```python from dataclasses import dataclass, field @dataclass class DataTrainingArguments: dataset_name: str = field( default=None, metadata={"help": "The name of the dataset to use."} ) image_column: Optional[str] = field( default="image_path", metadata={ "help": "The column name of the image paths in the datasets." }, ) text_column: Optional[str] = field( default="caption", metadata={ "help": "The column name of the texts associated with images." } ) ``` 此修改使得训练过程中能够正确读取图像路径及其关联的文字说明列名。 #### 执行微调过程 完成上述准备工作之后,通过命令行工具启动实际的微调操作。具体指令取决于本地安装情况和个人偏好设定;这里提供一个通用模板供参考: ```bash python run_clm.py \ --model_name_or_path /mnt/workspace/models/qwen-2.5-7b-instruct \ --train_file ./dataset/captions.jsonl \ --do_train \ --output_dir /mnt/workspace/output/vision_language_tuned_qwen \ --per_device_train_batch_size 4 \ --gradient_accumulation_steps 8 \ --learning_rate 5e-5 \ --num_train_epochs 3 \ --save_strategy epoch \ --logging_dir /mnt/workspace/logs \ --logging_steps 10 ``` 以上命令假设已经具备适当规模 GPU 支持下的计算能力以处理此类多模态学习任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一粟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值