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

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官方找,我们可以设置镜像站。

pip install -U huggingface_hub  # 安装依赖
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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端框架-echarts

Echarts 项目中要使用到echarts框架&#xff0c;从零开始在csdn上记笔记。 这是一个基础的代码&#xff0c;小白入门看一下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" co…

什么可以替代iframe?

网页嵌套中&#xff0c;iframe曾几何时不可一世&#xff0c;没有其他更好的选择&#xff01; iframe即内联框架&#xff0c;作为网页设计中的一种技术&#xff0c;允许在一个网页内部嵌套另一个独立的HTML文档。尽管它在某些场景下提供了便利&#xff0c;但也存在多方面的缺陷…

可视化实验三 Matplotlib库绘图及时变数据可视化

1.1 任务一 1.1.1 恢复默认配置 #绘图风格&#xff0c;恢复默认配置 plt.rcParams.update(plt.rcParamsDefault)#恢复默认配置 或者 plt.rcdefaults() 1.1.2 汉字和负号的设置 import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]"SimH…

表格内容高效拆分,自定义行数随心所欲,让数据处理更高效!

在信息化社会的今天&#xff0c;表格成为了我们处理数据、整理信息的重要工具。然而&#xff0c;当表格内容过于庞大时&#xff0c;如何高效地拆分表格内容成为了摆在我们面前的一大难题。传统的拆分方法往往耗时耗力&#xff0c;且难以满足我们个性化的需求。 首先&#xff0…

数据中台:企业数字化转型的桥梁_光点科技

在数字化日益深入企业核心运营的今天&#xff0c;数据中台作为一个关键的信息化架构&#xff0c;正逐渐崭露头角&#xff0c;成为连接企业各部门、优化数据管理和推动业务创新的重要桥梁。 一、数据中台&#xff1a;连接与整合的桥梁 数据中台的核心作用在于连接与整合。传统的…

Python快速入门-零基础也能掌握的编程技巧,基础方法和API整理

目录 前言 数据结构 数字 数学运算 随机数 字符串 列表 元组 字典 面向对象 JSON 文件操作 扩展 制作一个简易时钟 前言 环境什么就不在赘述&#xff0c;可以参考其他文章&#xff0c;也可以在线运行 CSDN在线运行地址&#xff1a;InsCode - 让你的灵感立刻落地…

4G,5G执法记录仪人脸识别、人脸比对使用说明

4G/5G执法记录仪或4G/5G智能安全帽&#xff0c;做前端人脸识别、人脸比对&#xff0c;采用了上市公司的成熟的人脸识别算法&#xff0c;需要支付LICENSE给算法公司&#xff0c;理论上前端设备支持30K的人脸库&#xff08;受设备运行内存限制&#xff09;。 4G/5G执法记录仪侧要…

docker私有仓库registry

简介 Docker私有仓库的Registry是一个服务&#xff0c;主要用于存储、管理和分发Docker镜像。具体来说&#xff0c;Registry的功能包括&#xff1a; 存储镜像&#xff1a;Registry提供一个集中的地方来存储Docker镜像&#xff0c;包括镜像的层次结构和元数据。 版本控制&…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (三)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 大家继续看 https://lilianweng.github.io/posts/2023-06-23-agent/的文档内容 第二部分&#xff1a;内存 记忆的类型 记忆可以定义为用于获取、存储、保留以及随后检索信息的过程。人脑中有多…

C语言(指针)4

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

瑞的创作纪念日(128天)

&#x1f64a; 前言&#xff1a;我是阿瑞&#xff0c;一个热爱技术、喜欢教学、对编程充满热情、痴迷于代码世界、喜欢研读源码、尝试自研开发框架的探索者。今天&#xff0c;与大家分享一个特别的纪念日——我的 CSDN 技术博客创作第 128 天的纪念日 机缘 我接触 CSDN 是因为 …

零基础HTML教程(32)--HTML5语义化标签

文章目录 1. div时代2. div的缺点3. 语义化标签4. 语义化标签有哪些5. 实战演练6. 小结 1. div时代 我是2009年开始学习网页开发的&#xff0c;那时候HTML里面到处是div。 这么说吧&#xff0c;那时候div就是网页的骨架&#xff0c;支撑着网页的主结构。 2. div的缺点 div作…

硬件 - TL431计算

文章目录 1 . 概要2 . TL431内部3 . TL431应用电路4 . TL431计算5 . 小结 【全文大纲】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 概要 1 . TL431常用于通过外围电阻R1,R2设置输出一个目标电压 2 . TL431内部 3 . TL431应用电路 1 . R1 1K&#xf…

Mac IDEA 自动补全mybatis sql语句

导航 Mac IDEA 自动补全mybatis sql语句一、点击IDEA 右侧Database选项二、选择添加对应数据库三、输入数据库信息和方案四、输入数据库信息和方案五、成功 Mac IDEA 自动补全mybatis sql语句 背景&#xff1a; 想在Mapper中&#xff0c;能够实现自动检索数据库表和对应的字段…

40道 Nginx 高频面试题

Nginx 是一款轻量级的 Web 服务器、反向代理服务器&#xff0c;由于它的内存占用少&#xff0c;启动极快&#xff0c;高并发能力强&#xff0c;在互联网项目中广泛应用。那么关于 Nginx 的核心面试题有哪些呢&#xff1f;今天给大家整理了40道Nginx 高频面试题&#xff0c;最近…

ITMS-91053: Missing API declaration

1. 添加PrivacyInfo.xcprivacy File → New → File → App Privacy 2. 格式 3. 已知对应关系 NSPrivacyAccessedAPICategoryFileTimestamp 3B52.1: Files provided to app by user, per documentation&#xff1a;File Timestamp NSPrivacyAccessedAPICategoryDiskSpace …

[机器学习-04] Scikit-Learn机器学习工具包进阶指南:集群化与校准功能实战【2024最新】

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

人类将会永生?谷歌 DeepMind重磅发布Alphafold 3 ——天花板级别的AI系统

当地时间 5 月 8 日&#xff0c;顶级科学期刊《Nature》发表了一份重磅研究论文。谷歌 DeepMind 发布了其生物学预测工具 AlphaFold 的最新版本——AlphaFold 3。 这个革命性的新模型&#xff0c;能以前所未有的精度预测所有生命分子的结构和相互作用。作为一个以整体方式计算…

如何在线网页浏览obj格式3D模型?

OBJ文件是一种3D模型格式&#xff0c;目前几乎大部分知名的3D软件都支持OBJ文件的读写&#xff0c;但是想要在网页在线查看obj文件&#xff0c;要怎样实现呢&#xff1f; 1、如何在线浏览obj格式模型&#xff1f; 其实只要通过51建模网&#xff0c;直接将obj格式的3D模型上传…

【数据结构】二叉树(Binary Tree)

文章目录 一、树的概念及结构二、二叉树的概念及结构1.二叉树的概念2.特殊的二叉树3.二叉树的性质 三、二叉树的存储顺序存储链式存储 四、二叉树的实现1.创建二叉树2.二叉树的遍历前序遍历中序遍历后序遍历层序遍历根据遍历顺序创建二叉树 3.二叉树的基本操作1.总结点个数2.二…