当前位置:   article > 正文

LLM微调系列——Qwen微调教程

qwen微调

系列文章目录

第一章 Qwen微调



前言

作者在微调Qwen时遇到的一些坑以及一点经验 作者在微调Qwen时遇到的一些坑以及一点经验


一、脚本获取

官方链接: Github-Qwen
夸克网盘链接: Qwen,提取码:SYXe

二、使用步骤

1.数据格式

示例:

[
    {
        "id": "identity_0",
        "conversations": [
            {
                "from": "user",
                "value": "你好"
            },
            {
                "from": "assistant",
                "value": "我是一个语言模型,我叫通义千问。"
            }
        ]
    },
    {
        "id": "identity_1",
        "conversations": [
            {
                "from": "user",
                "value": "你是谁?"
            },
            {
                "from": "assistant",
                "value": "我是一个语言模型,我叫通义千问。"
            }
        ]
    }
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

2.SFT微调:

  1. 单卡微调:

脚本路径:

Qwen-main/finetune/finetune_lora_single_gpu.sh
  • 1

部分参数说明:

MODEL:模型路径
DATA:自定义数据集路径
output_dir:输出模型路径
num_train_epochs: 设置训练的轮数
model_max_length:模型处理序列长度,根据自身数据定义
per_device_train_batch_size: 训练批处理大小设置
save_steps: 模型每n步保存一次
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

执行命令:

bash finetune/finetune_lora_single_gpu.sh
  • 1
  1. 多卡微调:

脚本路径:

Qwen-main/finetune/finetune_lora_ds.sh
  • 1

部分参数说明:

MODEL:模型路径
DATA:自定义数据集路径
GPUS_PER_NODE:置每个节点上GPU的数量。在分布式训练环境中,这用于定义每个节点上可用的GPU数目。
output_dir:输出模型路径
num_train_epochs: 设置训练的轮数
model_max_length:模型处理序列长度,根据自身数据定义
per_device_train_batch_size: 训练批处理大小设置
save_steps: 模型每n步保存一次
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

多卡限定设置(如果你GPU不支持NCCL请加上以下设置,例如:RTX3090):

export CUDA_DEVICE_MAX_CONNECTIONS=1
设置CUDA设备最大连接数为1。这可能用于限制一个CUDA设备上的并行处理任务数量。
export NCCL_IB_DISABLE=1
禁用NCCL(NVIDIA Collective Communications Library)的InfiniBand支持。
export NCCL_P2P_DISABLE=1
禁用NCCL的点对点(Peer-to-Peer)通信。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行命令:

bash finetune/finetune_lora_ds.sh
  • 1

3.模型合并:

脚本路径(官方未直接提供脚本文件,需通过链接下载获取):

Qwen-main/merger_model.py
  • 1

参数说明:

path_to_adapter:模型输出路径或其中某个checkpoint路径
new_model_directory:合并结果路径
  • 1
  • 2

文件迁移:

合并后会有一些文件未在合并后的目录中,去源模型文件中将文件复制到合并后的目录
以Qwen-7B为例:
cache_autogptq_cuda_256.cpp
cache_autogptq_cuda_kernel_256.cu
qwen.tiktoken
tokenization_qwen.py
tokenizer_config.json
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.模型推理:

脚本路径:

Qwen-main/web_demo.py
  • 1

总结

工作随笔,希望可以帮助到大家!
如有不足之处,请多多指教!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/290755
推荐阅读
相关标签
  

闽ICP备14008679号