【AI实战】训练一个自己的ChatGPT

这篇具有很好参考价值的文章主要介绍了【AI实战】训练一个自己的ChatGPT。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文使用 Alpaca-LoRA 来训练一个自己的 ChatGPT,数据集包括开源的55w数据集和我自己的1000w的医疗问答数据集。

准备

环境

  • CUDA 10.2
  • Ubuntu 20.04
  • python 3.8
  • torch 2.0.0

代码

使用 Alpaca-LoRA 的代码,我们先 clone Alpaca-LoRA:

git clone git@github.com:tloen/alpaca-lora.git

若出现下面的报错信息:

# git clone git@github.com:tloen/alpaca-lora.git

Cloning into 'alpaca-lora'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

可以按照这篇文章进行处理:
https://blog.csdn.net/helloasimo/article/details/123778112

  • 其他依赖安装

    cd alpaca-lora
    pip install -r requirements.txt
    

    若是失败,可以多试几次,可能是网络问题。

  • 上面完工后,大概是这样子的

    /notebooks/alpaca-lora# ls -lh
    total 44M
    -rw-r--r-- 1 root root  20K Mar 31 07:53 DATA_LICENSE
    -rw-r--r-- 1 root root  635 Mar 31 07:53 Dockerfile
    -rw-r--r-- 1 root root  12K Mar 31 07:53 LICENSE
    -rw-r--r-- 1 root root  15K Mar 31 07:53 README.md
    -rw-r--r-- 1 root root  22M Mar 31 07:53 alpaca_data.json
    -rw-r--r-- 1 root root  22M Mar 31 07:53 alpaca_data_cleaned.json
    -rw-r--r-- 1 root root  643 Mar 31 07:53 docker-compose.yml
    -rw-r--r-- 1 root root 1.5K Mar 31 07:53 export_hf_checkpoint.py
    -rw-r--r-- 1 root root 3.6K Mar 31 07:53 export_state_dict_checkpoint.py
    -rw-r--r-- 1 root root 9.5K Mar 31 07:53 finetune.py
    -rw-r--r-- 1 root root 5.8K Mar 31 07:53 generate.py
    -rw-r--r-- 1 root root  81K Mar 31 07:53 lengths.ipynb
    -rw-r--r-- 1 root root  131 Mar 31 07:53 pyproject.toml
    -rw-r--r-- 1 root root  206 Mar 31 07:53 requirements.txt
    drwxr-xr-x 2 root root 4.0K Mar 31 07:53 templates
    drwxr-xr-x 2 root root 4.0K Mar 31 07:53 utils
    

模型

使用 alpaca-lora-cn-13b 模型作为我们的大模型
地址:https://huggingface.co/facat/alpaca-lora-cn-13b/tree/main

clone模型:

# Make sure you have git-lfs installed (https://git-lfs.github.com)

git lfs install
git clone https://huggingface.co/facat/alpaca-lora-cn-13b

注:可能需要手动下载 adapter_model.bin ,到 https://huggingface.co/facat/alpaca-lora-cn-13b/tree/main 可以手动下载

大概是这样子:

/notebooks# ls -lh alpaca-lora-cn-13b/
total 26M
-rw-r--r-- 1 root root 341 Mar 30 09:50 README.md
-rw-r--r-- 1 root root 371 Mar 30 09:50 adapter_config.json
-rw-rw-r-- 1 1003 1003 26M Mar 30 09:54 adapter_model.bin

数据集Belle

【如果没有自己的数据集,就用这个数据集来训练模型】

下载 Belle 的开源中文数据集(仅限研究使用,禁止商用!)

  • 介绍
    该数据集有 55w 条
    下载数据集地址:
    https://huggingface.co/datasets/BelleGroup/generated_train_0.5M_CN/tree/main

  • 数据格式:
    【AI实战】训练一个自己的ChatGPT

  • json格式

    {"input": "用一句话描述地球为什么是独一无二的。\\n\n", "target": "地球上有适宜生命存在的条件和多样化的生命形式。"}
    {"input": "给出一段对话,要求GPT模型使用合适的语气和回答方式继续对话。\n对话:\nA:你今天看起来很高兴,发生了什么好事?\nB:是的,我刚刚得到一份来自梅西银行的工作通知书。\nA:哇,恭喜你!你打算什么时候开始工作?\nB:下个月开始,所以我现在正为这份工作做准备。", "target": "A: 这太好了!你的新工作听起来很令人兴奋。你对接下来的日子有什么期望吗?\nB: 是啊,我非常期待能在梅西银行工作。我希望我能够尽快适应新环境,并展示出我的所有技能和才能。"}
    

清洗自己的数据集

将数据清洗为上述 json 格式
数据有1000w条,太大了,这里就不放出来了。
数据格式同上。

数据清洗后的数据格式如下:
all_data.train.json:

[
    {
        "instruction": "Give three tips for staying healthy.",
        "input": "",
        "output": "1. Eat a balanced diet and make sure to include plenty of fruits and vegetables. \n2. Exercise regularly to keep your body active and strong. \n3. Get enough sleep and maintain a consistent sleep schedule."
    },
    {
        "instruction": "What are the three primary colors?",
        "input": "",
        "output": "The three primary colors are red, blue, and yellow."
    }
]

上述工作完成后,大概是这样子的

/notebooks# ls -lh
total 1.5G
drwxr-xr-x 6 root root 4.0K Mar 31 07:53 alpaca-lora
drwxr-xr-x 3 root root 4.0K Mar 31 08:15 alpaca-lora-cn-13b
drwxrwxr-x 2 1003 1003 4.0K Mar 30 09:14 data

其中清洗的数据:

/notebooks/data# du -sh all_data.train.json
6.2G    all_data.train.json

训练

  • 单卡训练
python3 finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path '../data/all_data.train.json' \
    --output_dir './lora-alpaca-zh' \
    --micro_batch_size 1 \
    --num_epochs 3

过程如下:
【AI实战】训练一个自己的ChatGPT
下载数据特别大,需要比较长的时间(我用了大概4个小时)!!!文章来源地址https://www.toymoban.com/news/detail-435074.html

  • 多卡训练
    我用了4个卡
WORLD_SIZE=4 CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun \
	--nproc_per_node=2 \
	--master_port=1234 \
	finetune.py \
	--base_model 'decapoda-research/llama-7b-hf' \
	--data_path '../data/all_data.train.json' \
	--output_dir './lora-alpaca-zh' \
    --micro_batch_size 1 \
    --num_epochs 3

测试

python3 generate.py \
    --load_8bit \
    --base_model 'decapoda-research/llama-7b-hf' \
    --lora_weights './lora-alpaca-zh'
  • 测试效果

参考

  • https://huggingface.co/facat/alpaca-lora-cn-13b/tree/main
  • https://github.com/tloen/alpaca-lora
  • https://github.com/gururise/AlpacaDataCleaned

到了这里,关于【AI实战】训练一个自己的ChatGPT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Transformers实战——使用Trainer类训练和评估自己的数据和模型

    有时候我们并不想使用 Transformers 来训练别人的预训练模型,而是想用来训练自己的模型,并且不想写训练过程代码。这时,我们可以按照一定的要求定义数据集和模型,就可以使用 Trainer 类来直接训练和评估模型,不需要写那些训练步骤了。 使用 Trainer 类训练自己模型步骤

    2024年02月14日
    浏览(38)
  • 使用 ChatGPT 辅助学习——为自己找一个老师

    我们每个人都有许多标签,例如高中生、成绩中等、文科,根据这些标签我和其他拥有相同标签的人分配了相同的教程、班级和老师,这可以带来效率上的提升,因为同一份教程、老师就可以服务几十上百人,而无须为每个人定制,但也正是这样造成了忽略个性的问题。 而

    2024年02月03日
    浏览(37)
  • 使用数据预训练一个AI语言模型

    目录 收集或制造数据集 下载并解压 安装python依赖 编写训练脚本 执行训练脚本开始训练 编写推理脚本 启动推理脚本 测试 注意 我们之前讲过了如何部署一个别人已经训练好的AI模型、也学会了如何微调一个AI模型,也讲了预训练模型和微调模型的区别,那本文就聊聊如何从

    2024年02月17日
    浏览(43)
  • ChatGPT的前世今生,到如今AI领域的竞争格局,本文带你一路回看!

      73年前,“机器思维”的概念第一次被计算机科学之父艾伦·图灵(Alan Turing)提出,从此,通过图灵测试成为了人类在AI领域为之奋斗的里程碑目标。 73年后的今天,在AI历经了数十年的不断进化、迭代后,目前为止仍旧没有任何一款AI从真正意义上的通过图灵测试。 而Ch

    2024年02月04日
    浏览(37)
  • 如何训练自己的ChatGPT?需要多少训练数据?

    近年,聊天机器人已经是很常见的AI技术。小度、siri、以及越来越广泛的机器人客服,都是聊天机器人的重要适用领域。然而今年,ChatGPT的面世让这一切都进行到一个全新的高度,也掀起了大语言模型(LLM)的热潮。 ChatGPT是一种人工智能 (AI) 聊天机器人,它使用自然语言处

    2024年04月12日
    浏览(38)
  • 实战教程:如何使用触手AI来设计自己的产品图

    在这个充满创新和科技的时代,人工智能(AI)已经成为我们生活中不可或缺的一部分。它不仅改变了我们的生活方式,也正在改变我们的创作方式。今天,我将向你介绍如何使用AI进行产品设计。 首先,让我们来理解一下什么是AI绘画。简单来说,AI绘画是一种使用人工智能

    2024年01月17日
    浏览(46)
  • ChatGPT:2. 使用OpenAI创建自己的AI网站:1. 初探API

    如果你还是一个OpenAI的小白,有OpenAI的账号,但想调用OpenAI的API搞一些有意思的事,那么这一系列的教程将仔细的为你讲解如何使用OpenAI的API制作属于自己的AI网站。博主只能利用下班时间更新,进度慢,请海涵🥳。 😼1. OpenAI API的首页:https://platform.openai.com/ 😸2. 查看自己

    2024年02月08日
    浏览(41)
  • 训练自己的ChatGPT的步骤

    1. 收集和准备数据: 为了训练ChatGPT,你需要大量的对话数据。你可以收集来自你的服务网站的用户交互数据,包括用户提出的问题和系统给出的回答。确保数据集中包含多样性的对话场景和不同类型的问题。 2. 标记数据: 对你的对话数据进行标记是非常重要的。你可以使用

    2024年02月11日
    浏览(54)
  • ChatGPT如何训练自己的模型

    ChatGPT是一种自然语言处理模型,它的任务是生成自然流畅的对话。如果想要训练自己的ChatGPT模型,需要进行大量的数据收集、预处理、配置训练环境、模型训练、模型评估等过程。本文将详细介绍这些过程,帮助读者了解如何训练一个高品质的ChatGPT模型。 1. 收集数据 Chat

    2024年02月06日
    浏览(54)
  • 使用ChatGPT加个人微信公众号打造属于自己的AI助手

    相信现在不少人已经体验过ChatGPT,并被它的智能程度所折服。ChatGPT可以高效的完成许多事,但就目前来说使用还是限制不少,如何进一步使用它和如何更加方便使用它是现在许多人的思考问题。在此,给各位介绍一下如何使用微信公众号和ChatGPT打造成一个方便的个人助手。

    2023年04月17日
    浏览(115)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包