autodl 上 使用 LLaMA-Factory 微调 中文版 llama3

news2024/11/18 9:25:20

autodl 上 使用 LLaMA-Factory 微调 中文版 llama3

    • 环境准备
    • 创建虚拟环境
    • 下载微调工具 LLaMA-Factory
    • 下载 llama3-8B
    • 开始微调
    • 测试微调结果
    • 模型合并后导出
    • vllm 加速推理

 


环境准备

autodl 服务器:

https://www.autodl.com/console/homepage/personal


基本上充 5 块钱就可以搞完。

强烈建议选 4090(24G),不然微调的显存不够。

我们用 LoRA 微调,至少得 20G(8B模型)。
 

微调工具:

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

模型:

  • https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git

 


创建虚拟环境

conda activate yiyiai

上传中文微调 dpo_zh.json 数据:

  • https://www.123pan.com/s/cD4cjv-kvgVh.html
  • 提取码: NpsA

在这里插入图片描述

下载微调工具 LLaMA-Factory

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

cd LLaMA-Factory 

pip install -e .[metrics]  # 下载全部依赖

下载 llama3-8B

# pip install modelscope
import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import os

model_dir = snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct', cache_dir='/root/autodl-tmp', revision='master')

在这里插入图片描述
模型路径:/root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct

 

LLaMA-Factory/data 文件夹下找到 dataset_info.json

方法一:设置镜像站

这个数据,ta会去hf官方找,我们可以设置镜像站。

export HF_ENDPOINT=https://hf-mirror.com/

方法二:改成本地文件路径


俩个地方都要改:file_name、本地数据集路径。

更新 transformers 库:

pip install --upgrade transformers

开始微调

CUDA_VISIBLE_DEVICES=0 llamafactory-cli train \
    --stage orpo \
    --do_train True \
    --model_name_or_path /root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct \
    --finetuning_type lora \
    --template default \
    --flash_attn auto \
    --dataset_dir LLaMA-Factory/data\
    --dataset dpo_mix_zh \
    --cutoff_len 1024 \
    --learning_rate 1e-05 \
    --num_train_epochs 5.0 \
    --max_samples 1 \
    --per_device_train_batch_size 1 \
    --gradient_accumulation_steps 8 \
    --lr_scheduler_type cosine \
    --max_grad_norm 1.0 \
    --logging_steps 5 \
    --save_steps 100 \
    --warmup_steps 0 \
    --optim adamw_torch \
    --report_to none \
    --output_dir saves/LLaMA3-8B/lora/train_2024-04-25-07-48-56 \
    --fp16 True \
    --lora_rank 8 \
    --lora_alpha 16 \
    --lora_dropout 0 \
    --lora_target q_proj,v_proj \
    --orpo_beta 0.1 \
    --plot_loss True 


微调后,就找这个路径看一下。

微调上面的参数是自定义的:

  • max_samples 1 只使用一个数据微调,一般越多越好,这步为演示,就1条了
stage	        当前训练的阶段,枚举值,有“sft”,"pt","rw","ppo"等,代表了训练的不同阶段,这里我们是有监督指令微调,所以是sft
do_train	    是否是训练模式
dataset	        使用的数据集列表,所有字段都需要按上文在data_info.json里注册,多个数据集用","分隔
dataset_dir	    数据集所在目录,这里是 data,也就是项目自带的data目录
finetuning_type	微调训练的类型,枚举值,有"lora","full","freeze"等,这里使用lora
lora_target	    如果finetuning_type是lora,那训练的参数目标的定义,这个不同模型不同,请到https://github.com/hiyouga/LLaMA-Factory/tree/main?tab=readme-ov-file#supported-models 获取 不同模型的 可支持module, 比如llama3 默认是 q_proj,v_proj
output_dir	    训练结果保存的位置
cutoff_len	    训练数据集的长度截断
per_device_train_batch_size	    每个设备上的batch size,最小是1,如果GPU 显存够大,可以适当增加
fp16	        使用半精度混合精度训练
max_samples	    每个数据集采样多少数据
val_size	    随机从数据集中抽取多少比例的数据作为验证集

测试微调结果

微调后,还可以马上测试微调结果。

  • 调不好!重新调整参数和数据。
  • 调得好!马上合并权重。

训练完后就可以在设置的output_dir下看到:

  • adapter开头的就是 LoRA 保存的结果了,后续用于模型推理融合

  • training_loss 和trainer_log等记录了训练的过程指标

  • 其他是训练当时各种参数的备份

模型合并后导出

如果想把训练的LoRA和原始的大模型进行融合,输出一个完整的模型文件的话:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \
    --model_name_or_path /root/autodl-tmp/LLM-Research/Meta-Llama-3-8B-Instruct \
    --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft  \
    --template llama3 \
    --finetuning_type lora \
    --export_dir megred-model-path \
    --export_size 2 \
    --export_device cpu \
    --export_legacy_format False

vllm 加速推理

需要提前将LoRA 模型进行merge,使用merge后的完整版模型目录:

CUDA_VISIBLE_DEVICES=0 API_PORT=8000 llamafactory-cli api \
    --model_name_or_path megred-model-path \
    --template llama3 \
    --infer_backend vllm \
    --vllm_enforce_eager

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1655777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

毕业论文应该怎么写?推荐几款ai写论文工具

时间过的好快,马上又到了一年一度的毕业季了,对于即将毕业的学生来说毕业论文是一道难过的坎,想到自己为了毕业论文熬的夜,掉的头发,真的深有感触。 不过虽然翟博士给大家的毕业论文设了高门槛,但是随着时…

springboot项目中引入Xxl-Job并部署和使用

目录 模块划分 配置调度中心 配置执行器 添加执行器 写一个简单的定时任务 XxlJobHelper xxl-job是分布式任务调度平台,部署为独立的调度服务平台 github地址:xuxueli/xxl-job: A distributed task scheduling framework.(分布式任务调度…

ctfshow之_萌新web9至web10

一、访问在线靶场ctfshow 1、web9 如下图所示,进入_萌新赛的web9问题,题目提醒flag在config.php中: 如上图所示,可以get传参,且传入的参数需要正则匹配system、exec、highlight,且不区分大小写&#xff0…

Flink checkpoint 源码分析- Checkpoint snapshot 处理流程

背景 在上一篇博客中我们分析了代码中barrier的是如何流动传递的。Flink checkpoint 源码分析- Checkpoint barrier 传递源码分析-CSDN博客 最后跟踪到了代码org.apache.flink.streaming.runtime.io.checkpointing.CheckpointedInputGate#handleEvent 现在我们接着跟踪相应…

element ui的确认提示框按钮样式修改

修改确认提示框的默认按钮样式,使用css强制修改 例: js代码: deleteUser(params){this.$confirm("您确定要删除吗?此操作无法撤销并且将永久删除所有数据。", "提示", { type: "warning", cancel…

西奥CHT-01软胶囊硬度计:开启硬度测试新纪元,引领制药行业品质升级

西奥CHT-01软胶囊硬度计:开启硬度测试新纪元,引领制药行业品质升级 在追求品质卓越的制药行业中,软胶囊硬度测试是确保药品质量与安全的关键环节。为了满足行业对高精度、高效率硬度测试的需求,西奥科技推出了CHT-01软胶囊硬度计…

【XR806开发板试用】使用FDCM操作Flash记录开机次数

一、寻找系统分配的自定义用户数据地址 (1)XR806的Flash布局 如图1所示,FLASH的布局有两种: 1、没有开启OTA模式;Image1PaddingSysinfo 2、开启OTA模式;Image1PaddingSysinfoOTA area Image2 Padding 如图…

一维数组 和 关键字 sizeof

数组的概念 “ 数组 ”我们可以理解成一组相同类型元素的集合 (1)其中可以是单个或是多个元素,可以是0,但元素个数不能为0 (2)一个数组中存放的元素必须是同类型的,比如一组整型,…

ruoyi-nbcio 基于flowable规则的多重并发网关的任意跳转

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

【密评】 | 商用密码应用安全性评估从业人员考核题库(6/58)

根据Kerckhoffs原则,密码系统的安全性主要依赖于()。 A. 密钥 B. 加密算法 C. 解密算法 D. 通信双方 2000年10月,美国NIST宣布()算法作为新的高级加密标准AES。 A. Rijndael B. RC6 C. SERPENT D. Twofish…

去除快捷方式的箭头图标

文章目录 取消箭头显示恢复箭头显示结果展示 添加快捷方式之后,会有箭头图标,部分场景下看着较为难受: 可以通过如下方式取消/显示箭头: 取消箭头显示 新建一个.bat文件,内部加入如下命令: reg add "…

Python-VBA函数之旅-reversed函数

目录 一、reversed函数的常见应用场景 二、reversed函数使用注意事项 三、如何用好reversed函数? 1、reversed函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://blog.csdn.net/ygb_10…

Day2 | Java基础 | 2 数据类型

Day1 | Java基础 | 2 数据类型 基础版staticstatic的用法static修饰内部类static修饰方法static修饰变量static修饰代码块 深入分析static小结 问题回答版参数传递形参和实参的区别是什么?Java是值传递还是引用传递?值传递和引用传递的区别是什么&#x…

计算机发展史故事【6】

电脑群英谱 本世纪三、四十年代,是计算机发展史里最重大的收获季节。群英荟萃,逐鹿中原,鹿究竟死于谁手,并不是没有争议的。除了马克1 号与埃历阿克,还有一大批科学家为计算机的诞生作出过巨大的贡献,他们…

怎么做知识付费课程呢_揭秘知识付费课程系统的搭建之路

在信息爆炸的时代,知识的价值日益凸显。而知识付费,作为一种新型的学习方式,正逐渐走进大众的生活。那么,你是否想过自己也能搭建一套知识付费课程系统,分享你的智慧,实现知识的价值最大化呢?接…

2024年学浪视频怎么录屏

由于学浪最新版PC学生版客户端已经有防止录屏,而且录屏效率太慢,本文将介绍你一种高效率的工具,小浪助手.exe,它可以很轻松的将你的学浪视频下载下来 学浪下载工具我已经打包好了,有需要的自己下载一下 注意&#xf…

C++:多态-虚函数

C 中的多态性是面向对象编程中的一个重要概念,它允许在运行时选择不同的函数实现,以适应不同类型的对象。 多态的种类 编译时多态性(Compile-time Polymorphism):也称为静态多态性或早期绑定,指在编译时确…

容联云孔淼:大模型落地与全域营销中台建设

近日,由金科创新社主办的2024区域性商业银行数智化转型研讨会顺利召开, 容联云产业数字云事业群副总经理、诸葛智能创始人孔淼受邀出席,并分享数智化转型实践经验。 他分享了容联云两大核心产品,“大模型应用容犀Copilot”在金融营…

SpringBoot Actuator未授权访问漏洞的解决方法

1. 介绍 Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的功能模块。它提供了一系列生产就绪的功能,帮助你了解应用程序的运行状况,以及在运行时对应用程序进行调整。Actuator 使用了 Spring MVC 来暴露各种 HTTP 或 JMX 端点&#x…

嘴尚绝卤味:传承经典,缔造美食新风尚

卤味,作为中国传统美食的代表之一,历经千年的传承与发展,早已成为无数食客餐桌上的宠儿。而在这个美食盛行的时代,嘴尚绝卤味凭借其独特的口感和精湛的工艺,成为卤味市场中的佼佼者,引领着卤味文化的新潮流…