LLaMA Factory单机微调实战:轻松上手大模型微调

作者:有好多问题2024.08.14 13:44浏览量:11

简介:本文介绍了如何利用LLaMA Factory进行单机大模型微调,通过详细步骤和实例,让非专业读者也能轻松掌握大模型微调技巧,提升模型在实际应用中的表现。

LLaMA Factory单机微调实战教程

引言

随着大模型技术的快速发展,越来越多的企业和个人开始尝试利用这些模型进行各种任务。然而,大模型的微调对于非专业人员来说可能是一个挑战。LLaMA Factory作为一个开源的模型微调框架,以其易用性和高效性受到了广泛关注。本文将详细介绍如何使用LLaMA Factory进行单机大模型的微调。

环境准备

1. 安装Python环境

首先,确保你的机器上安装了Python。推荐使用Python 3.10或更高版本。你可以通过Anaconda等Python管理工具来创建一个新的虚拟环境,以避免依赖冲突。

  1. conda create -n llama_factory python=3.10 -y
  2. conda activate llama_factory
2. 安装CUDA和PyTorch

由于LLaMA Factory依赖于PyTorch和CUDA进行GPU加速,你需要安装这两个库。根据你的显卡型号选择合适的CUDA版本和PyTorch版本。

  1. conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
3. 安装LLaMA Factory

从GitHub上克隆LLaMA Factory的源代码,并安装必要的依赖。

  1. git clone https://github.com/hiyouga/LLaMA-Factory.git
  2. cd LLaMA-Factory
  3. pip install -r requirements.txt

下载预训练模型

选择一个适合你任务的预训练模型。例如,对于中文任务,你可以选择Llama3的8B版本中文模型。

  1. mkdir -p /data/dataset/model/llama3
  2. # 假设你已经有下载好的模型文件,或者从Hugging Face等网站下载
  3. # 这里只是示例,实际路径和文件名请根据实际情况修改

准备训练数据

1. 构建训练数据集

你需要根据任务需求准备训练数据。训练数据通常以JSON格式存储,包含instructioninputoutput三个字段。

例如,一个简单的股票数据集可能如下所示:

  1. [{"instruction": "请给出以下区域板块包含的个股名称和代码,使用;隔开", "input": "贵州", "output": "贵州茅台600519;"}]
2. 注册数据集

在LLaMA Factory中注册你的数据集,以便在微调过程中使用。

编辑dataset_info.json文件,添加你的数据集信息:

  1. {
  2. "stock_zh": {
  3. "file_name": "stock.json",
  4. "file_sha1": "你的文件sha1值"
  5. }
  6. }

微调模型

1. 编写微调脚本

创建一个新的shell脚本,用于执行微调过程。

  1. touch single_lora_llama3.sh
  2. chmod +x single_lora_llama3.sh
  3. vim single_lora_llama3.sh

在脚本中,填写以下命令(注意替换为你的实际路径和参数):

```bash

!/bin/bash

export CUDA_VISIBLE_DEVICES=0
python src/train_bash.py \
—stage sft \
—do_train True \
—model_name_or_path /data/dataset/model/llama3/8b-chinese-chat \
—dataset stock_zh \
—template llama3 \
—lora_target q_proj,v_proj \
—output_dir output1 \
—overwrite_cache \
—per_device_train_batch_size 2 \
—gradient_accumulation_steps 64 \
—lr_scheduler_type cosine \
—logging_steps 5 \
—save_steps 100 \
—learning_rate 2e-4 \
—num_train_epochs 1.0 \
—finetuning_type lora \
—fp16