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

这篇具有很好参考价值的文章主要介绍了快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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

1. 选用工程:lit-llama

  • 地址:https://github.com/Lightning-AI/lit-llama
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

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工程
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

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

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

    pip list|grep lightning
    

    (这里注意lightning的版本是2.1.0)
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

4. 下载LLAMA-7B模型

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

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

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

  • 下载完毕之后,会得到如下的文件:
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

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文件
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

6. 初步测试

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

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

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

  • 使用中文测试,发现效果不好(开始胡说八道了~)
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

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

  • 因为原始的预训练LLAMA模型是一个大语言模型(废话~),会根据前面的单词预测下一个词语,如果你问它问题,它不会正确回答你,你问它一个问题,它可能会续写一些跟你一样的句子,例如,
  • Prompt为 “What is the capital of China?”,它的回复如下所示:
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

8. 开始进行指令微调

8.1. 数据准备

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

    python scripts/prepare_alpaca.py
    
  • 如果下载不下来的话,我们直接打开scripts/prepare_alpaca.py文件,如下所示:
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

  • 直接打开链接 https://raw.githubusercontent.com/tloen/alpaca-lora/main/alpaca_data_cleaned_archive.json,然后全选页面复制,再保存到新建的文件里。
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

  • 得到alpaca_data_cleaned_archive.json(看名字的clean应该是清洗过的),每条指令包含"instruction"、“input”、"output"三个关键字,本次先不具体展开讲解,如下所示:
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

  • 运行指令后,还会作数据划分,train-49759, val-2000如下所示:
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

  • 最后,会在lit-llama/data/alpaca路径下得到以下文件:
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

8.2 开始模型训练

  • 使用以下指令:

    python finetune/lora.py
    
  • 训练过程如下所示:
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

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

  • 训练完毕之后,会在out/lora/alpaca得到一系列lora的权重文件,如下图所示:
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

8.3 模型测试

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

    python generate/lora.py --prompt "what is the capital of China?"
    
  • 得到的结果如下所示
    快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

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

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

结束。文章来源地址https://www.toymoban.com/news/detail-505054.html

到了这里,关于快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包