快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

本文详细介绍了在Ubuntu18.04系统上,如何利用lit-llama工程对LLAMA-7B大模型进行指令微调的过程,包括下载工程、安装环境、模型转换、初步测试、数据准备、模型训练和测试。通过指令微调,使模型能更好地理解和回答问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言:

  • 系统:ubuntu 18.04
  • 显卡:A100-80G(蹭的,嘿嘿~)
    (本次主要记录如何快速进行大模型的指令微调)

1. 选用工程:lit-llama

  • 地址:https://github.com/Lightning-AI/lit-llama
    在这里插入图片描述

2. 下载工程

git clone https://github.com/Lightning-AI/lit-llama.git

3. 安装环境

  1. 切换到工程目录
cd ./lit-llama
  1. 使用pip安装依赖库
pip install -r requirements.txt

(当然,这里可能会遇到网络问题,安装不了lightning)
可使用以下方式安装:

  • 下载lightning工程
    在这里插入图片描述

  • 解压进入工程目录,使用以下命令安装

    python setup.py install
    
  • 查看lightning是否安装成功:

    pip list|grep lightning
    

    (这里注意lightning的版本是2.1.0)
    在这里插入图片描述

4. 下载LLAMA-7B模型

这里我们要基于LLAMA-7B做指令微调,所以要先下载模型权重,并作一系列转换。

  • 切换到 lit-llama 所在位置,使用以下命令下载权重:
python scripts/download.py --repo_id openlm-research/open_llama_7b --local_dir checkpoints/open-llama/7B

(文件有点大,需要等待一些时间)

  • 下载完毕之后,会得到如下的文件:
    在这里插入图片描述

5. 做模型转换

  • 还是切换到 lit-llama 所在位置,使用以下指令进行转换
    python scripts/convert_hf_checkpoint.py --checkpoint_dir checkpoints/open-llama/7B --model_size 7B
    
  • 转换完毕之后,在 lit-llama/checkpoints/lit-llama/7B 位置,会得到大小为26G左右的 lit-llama.pth 文件,在上一级目录(lit-llama/checkpoints/lit-llama)还有一个tokenizer.model文件
    在这里插入图片描述

6. 初步测试

  • 在命令行,使用如下命令运行:

     python generate.py --prompt "Today is a"
    

    在这里插入图片描述

  • 使用中文测试,发现效果不好(开始胡说八道了~)
    在这里插入图片描述

7. 为什么要进行指令微调?

  • 因为原始的预训练LLAMA模型是一个大语言模型(废话~),会根据前面的单词预测下一个词语,如果你问它问题,它不会正确回答你,你问它一个问题,它可能会续写一些跟你一样的句子,例如,
  • Prompt为 “What is the capital of China?”,它的回复如下所示:
    在这里插入图片描述

8. 开始进行指令微调

8.1. 数据准备

  • 这里使用alpaca的52k指令数据进行微调,使用如下指令:

    python scripts/prepare_alpaca.py
    
  • 如果下载不下来的话,我们直接打开scripts/prepare_alpaca.py文件,如下所示:
    在这里插入图片描述

  • 直接打开链接 https://raw.githubusercontent.com/tloen/alpaca-lora/main/alpaca_data_cleaned_archive.json,然后全选页面复制,再保存到新建的文件里。
    在这里插入图片描述

  • 得到alpaca_data_cleaned_archive.json(看名字的clean应该是清洗过的),每条指令包含"instruction"、“input”、"output"三个关键字,本次先不具体展开讲解,如下所示:
    在这里插入图片描述

  • 运行指令后,还会作数据划分,train-49759, val-2000如下所示:
    在这里插入图片描述

  • 最后,会在lit-llama/data/alpaca路径下得到以下文件:
    在这里插入图片描述

8.2 开始模型训练

  • 使用以下指令:

    python finetune/lora.py
    
  • 训练过程如下所示:
    在这里插入图片描述

  • 整个训练过程大约要1.5个小时(16:51 ~ 18:22)

  • 训练完毕之后,会在out/lora/alpaca得到一系列lora的权重文件,如下图所示:
    在这里插入图片描述

8.3 模型测试

  • 使用如下指令进行提问,其中prompt为"what is the capital of China?",

    python generate/lora.py --prompt "what is the capital of China?"
    
  • 得到的结果如下所示
    在这里插入图片描述

  • 可以看到,经过指令微调之后,模型已经可以正常回答我们的问题了。

(ps:其他细节可以参考工程的README,写的很清楚~)

结束。

### 使用 llama-factory 进行 LoRA 微调 #### 准备工作 为了使用 `llama-factory` 对大模型进行LoRA微调,需先安装必要的依赖库并准备数据集。确保环境已配置好Python以及PyTorch等基础框架。 ```bash pip install git+https://github.com/your-repo/llama-factory.git@main ``` #### 数据预处理 针对不同的应用场景调整数据格式至关重要。实践中发现仅将问题置于instruction字段而留空input的效果不佳[^3]。更有效的做法是让用户输入位于input部分,同时利用instruction提供上下文或指导说明。 #### 启动WebUI界面 对于初次使用者来说,通过图形化的WebUI来操作可能更加直观便捷。启动命令如下: ```bash python -m llama_factory.webui ``` 这一步骤能够简化参数设置过程,并允许实时监控训练进度[^2]。 #### 配置文件设定 创建一个JSON格式的配置文件用于指定训练细节,如学习率、批次大小等超参。下面是一个简单的例子: ```json { "model_name": "qwen-1.5-7b-chat", "dataset_path": "./data/my_dataset.jsonl", "output_dir": "./results/", "learning_rate": 5e-5, "per_device_train_batch_size": 8, "num_train_epochs": 3, "logging_steps": 10, "save_strategy": "epoch" } ``` #### 开始微调流程 最后执行具体的微调指令,在此之前确认所有路径指向正确无误。运行以下脚本即可开始训练: ```bash python -m llama_factory.train \ --config ./path_to_config/config.json ``` 在此过程中,损失函数通常选用交叉熵损失(CrossEntropyLoss),其指数形式即为困惑度(perplexity)[^1]。该指标可用于评估模型性能变化情况。
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值