当前位置: 首页 > article >正文

浅尝模型微调Getting Started

我们从在一台未搭建任何环境的电脑上开始,安装Anaconda、配置LLaMA-Factory、安装Pytorch-GPU、拉取模型文件、准备数据集、调整参数并进行模型微调。

文章目录

    • 一、安装 Anaconda
      • 1.下载Anaconda
      • 2.检验是否安装成功
    • 二、安装 LLaMA-Factory
          • 1.拉取 LLaMa_Factory 文件:
          • 2.创名为 **llama_factory** 的 Conda 虚拟环境:
          • 3.激活虚拟环境并进入
          • 4.安装 pytorch-gpu
            • 查看系统的 cuda 版本:
            • 选择适合的安装命令
            • 验证
          • 5.安装项目依赖
    • 三、模型拉取
    • 四、浅尝
          • 1.数据集准备
          • 2.参数调整
          • 3.启动微调
          • 4.模型对话
      • 命令行调试
    • 参考

一、安装 Anaconda

1.下载Anaconda

从这个页面选择合适的版本下载并完成安装,可自定义安装路径或者选择默认,不多赘述。

2.检验是否安装成功

检查是否安装成功,能否正常使用:
在电脑左下角搜索找到 Anaconda Prompt,点击打开后,在控制台中输入:

conda --version

回车如果返回了 conda 版本信息则说明安装成功。
检查是否成功安装

继续输入:

conda list

返回当前环境下已经安装好的包,如果出现该列表则说明 conda 已经正确安装。其中,包含了对应的解释器 python 3.9.1 (Ps,该电脑环境安装的是 minicinda,是 Anaconda 的轻量版,只包含最核心的组件,适用于对磁盘空间有限制的用户)
conda list

二、安装 LLaMA-Factory

LLaMA-Factory 是一个基于 Meta 的 LLaMA(Large Language Model Meta AI)系列模型的开源工具或框架,旨在简化 LLaMA 模型的微调(Fine-tuning)、部署和应用。具体参考:LLaMA-Factory

在安装 LLaMA——Factory 之前,需要完成 conda 虚拟环境的安装以及Pytorch-gpu 的安装。

1.拉取 LLaMa_Factory 文件:
git clone https://github.com/hiyouga/LLaMA-Factory.git

(拉取前需安装 git)

2.创名为 llama_factory 的 Conda 虚拟环境:
conda create -n llama_factory python=3.10
# python版本为3.10,至少3.9
3.激活虚拟环境并进入
conda activate llama_factory
cd LLaMA-Factory
4.安装 pytorch-gpu
查看系统的 cuda 版本:
nvidia-smi

cuda版本查看

选择适合的安装命令

打开 pytorch官网安装页面,选择合适 CUDA 合适的版本,(一定要对应cuda的版本!!!,可适当向下兼容,但不要相差太大)
选择对应的命令(Command)到虚拟环境下 (所有操作都在新建的虚拟环境下进行)粘贴回车,等待下载完成。

验证

验证pytorch-gpu是否安装成功:
在虚拟环境下,输入 python,进入python命令行后:

import torch
torch.cuda.current_device()
torch.cuda.get_device_name(0)
torch.__version__

检测安装

5.安装项目依赖
pip install -e '.[torch,metrics]'

验证:输入以下命令获取训练相关的参数指导, 否则说明库还没有安装成功

llamafactory-cli train -h

三、模型拉取

开源的模型文件,数据集等可浏览的 modelscope 或者 Hugging Face

首先需拉取对应模型,以Meta-Llama-3-8B-Instruct 为例,
请确保 lfs 已经被正确安装

git lfs install

拉取:

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

四、浅尝

1.数据集准备

我们将使用 llamafactory 自带的数据集 identity.json(位于/data目录下,可打开该进行替换和修改)

部分数据如下:

[
  {
    "instruction": "hi",
    "input": "",
    "output": "Hello! I am {{name}}, an AI assistant developed by {{author}}. How can I assist you today?"
  },
  {
    "instruction": "Who are you?",
    "input": "",
    "output": "I am {{name}}, an AI assistant developed by {{author}}. How can I assist you today?"
  }
]

对文中的变量 {{name}}{{author}} 进行替换成自己需要的内容。

2.参数调整

我们直接使用 GUI 界面进行操作,

llamafactory-cli webui

运行完毕后将自动在浏览器打开该页面:
UI

数据集选择 identity,其他参数可选择默认或者参考下方(!!! 模型路径处记得选择):
参数

区域参数建议取值说明
语言zh
模型名称LLaMA 3-8 B-Chat
微调方法lora使用 LoRA 轻量化微调方法能在很大程度上节约显存。
数据集identity选择数据集后,可以单击 预览数据集 查看数据集详情。
学习率1删除线格式 e-4有利于模型拟合。
计算类型bf 16如果显卡为 V 100,建议计算类型选择 fp 16;如果为 A 10,建议选择 bf 16
梯度累计2有利于模型拟合。
LoRA+学习率比例16相比 LoRA,LoRA+ 续写效果更好。
LoRA 作用模块allall 表示将 LoRA 层挂载到模型的所有线性层上,提高拟合效果。
3.启动微调

启动微调

4.模型对话

Chat页签中,确保适配器路径train_llama3,单击加载模型,即可在Web UI中和微调模型进行对话。
在这里插入图片描述

命令行调试

在微调模型中,除了使用 UI 界面,也可以使用命令行

modelPath=/media/codingma/LLM/llama3/Meta-Llama-3-8B-Instruct
#填写模型路径

llamafactory-cli train \
  --model_name_or_path $modelPath \
  --stage sft \
  --do_train \
  --finetuning_type lora \
  --template llama3 \
  --dataset identity \
  --output_dir ./saves/lora/sft \
  --learning_rate 0.0005 \
  --num_train_epochs 8 \
  --cutoff_len 4096 \
  --logging_steps 1 \
  --warmup_ratio 0.1 \
  --weight_decay 0.1 \
  --gradient_accumulation_steps 8 \
  --save_total_limit 1 \
  --save_steps 256 \
  --seed 42 \
  --data_seed 42 \
  --lr_scheduler_type cosine \
  --overwrite_cache \
  --preprocessing_num_workers 16 \
  --plot_loss \
  --overwrite_output_dir \
  --per_device_train_batch_size 1 \
  --fp16

参考

  • LLaMA-Factory QuickStart
  • 使用LLaMA Factory微调LlaMA 3模型
  • 大模型微调实战:基于 LLaMAFactory 通过 LoRA 微调修改模型自我认知

http://www.kler.cn/a/529969.html

相关文章:

  • 如何用微信小程序写春联
  • ubuntu 下使用deepseek
  • LeetCode:300.最长递增子序列
  • [SAP ABAP] SE11 / SE16N 修改标准表(慎用)
  • 解决whisper 本地运行时GPU 利用率不高的问题
  • php的使用及 phpstorm环境部署
  • C语言教学第二课:变量与数据类型
  • UE学习日志#19 C++笔记#5 基础复习5 引用1
  • Vue.js组件开发-实现图片浮动效果
  • Docker 部署 Starrocks 教程
  • 为什么就Kafka有分区?
  • Electricity Market Optimization 探索系列(二)
  • 力扣 84. 柱状图中最大的矩形
  • PaddleOCR 截图自动文字识别
  • JavaWeb入门-请求响应(Day3)
  • Kafka SASL/SCRAM介绍
  • 缓存的今生今世
  • python-leetcode-二叉树的右视图
  • 【算法】回溯算法专题② ——组合型回溯 + 剪枝 python
  • 31.Word:科技论文的译文审交稿【31】
  • Vue - Suspense的使用
  • AWS EMR使用Apache Kylin快速分析大数据
  • 第三篇:模型压缩与量化技术——DeepSeek如何在边缘侧突破“小而强”的算力困局
  • 《Origin画百图》之脊线图
  • 精品PPT | 企业大数据治理平台统一指标库建设方案
  • IM 即时通讯系统-51-MPush开源实时消息推送系统