手把手教你做一个 ChatGPT !丝滑小白版,只需一张单卡 GPU,轻松开启个性化训练!...

article/2024/9/20 8:57:47

大家好,我是贺同学。

一直以来密切关注 ChatGPT 的趋势,最近相关的话题可谓是热度不减,虽然从事互联网行业,但一直对 LLM 相关领域关注较少。

最近的 ChatGPT 的火热,让我对 LLM 相关开源社区也关注了起来,相关的开源社区,也涌现了很多优秀的工作,吸引了很多人的关注。

其中,大家比较关注的是 Stanford 基于 LLaMA 的 Alpaca 和随后出现的 LoRA 版本 Alpaca-LoRA。原因很简单,便宜。

https://github.com/tloen/alpaca-lora 

Alpaca 宣称只需要 600$ 不到的成本(包括创建数据集),便可以让 LLaMA 7B 达到近似 text-davinci-003 的效果。而 Alpaca-LoRA 则在此基础上,让我们能够以一块消费级显卡,在几小时内完成 7B 模型的 fine-turning。

下面是开源社区成员分享的可以跑通的硬件规格及所需时间:

GPU 规格Epochs训练耗时 (h)
RTX 4070 Ti 12GB29.8
RTX 4080 16GB25.5
RTX 4090 24GB24
2 * RTX 3090Ti 24GB34.5

根据大家分享的信息,fine-tune 7B 模型仅需要 8-10 GB vram。因此我们很有可能可以在云服务器上完成所需要的 fine-tune!

另外,自 ChatGPT 惊艳问世后,大模型部署的话题一直高热不退,但是这里面存在两个显著的问题:

一方面 ChatGPT 只有蛛丝马迹的论文,没有开源代码;另一方面 ChatGPT 官方公布的训练硬件配置,至少数千块 80G A100 的高昂算力成本。

以上两点,无论哪一个,对于很多想尝试动手搭建的普通人或者非计算机行业的朋友们,都是不小的挑战,导致很多个人用户无法上手。

那么,有个想法就在脑子里酝酿了,我们能不能自己动手训练一个ChatGPT出来呢?说干就干!

acb5d003d808451bf46baa13f2a6edc4.png

和小伙伴一起,花了一个周末,经过不断尝试踩坑,终于在云服务器上调通了!基于最新的 Stanford 发布的基于 LLaMA的Alpaca-LoRA,70 亿参数规模,只需要 A5000,3090 等最低 24G 显存的消费级的单卡 GPU 就可以训练。

而且还可以更新语料库进行训练,这一步,无疑大大降低了大语言模型的上手入门的门槛,我一直坚信,分享即学习,好知识值得分享和传播,话不多说,我们接下来开始进行逐步讲解。

第一步,搭建云 GPU 服务器环境

云 GPU 服务器,这里有两个厂商推荐(没有广告,纯粹推荐)

DBChina  https://www.haibaogpu.com/wholeVirtual?type=gpu 

阿某云的 GPU 服务器

根据个人情况租用或者购买,如果自己有更牛的硬件配置,那就当我没说,可以自己本地就 run 起来!

推荐跑模型的话,DBChina 平台推荐按小时去租一个单卡的机器,具体操作大家可以网上搜索。

其实看了下,最便宜的日租金大概算下来几十块钱,性价比还是可以的,所以想亲身体验的朋友,可以尝试一下。

笔者买的是阿某云 GPU服务器,这里推荐大家可以按量购买,参考下面的规格来买,一个 V100的 GPU,内存 >= 24G 的,这里我在厂商买的时候,最小的机器配置只有 92GB 的,所以就买了这个。

0daaddeb5d63086ff5ebcbbb62ae3c63.png

踩坑一:推荐买香港的或者国外的机器,下载开源仓库的时候需要访问 GitHub ,国内的机器大家懂的,会不太稳定,当切换了香港的机器之后,你就会立体验到那种丝滑的感觉!

第二步:配置机器

拿到机器后,登录进去,需要配置一下开发的环境,配置 Git ,命令:yum install git 安装 conda 环境,下载一个 miniconda 就好,非常快

 
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

其他版本下载地址:https://www.anaconda.com/products/distribution#Downloads

安装好之后,执行安装脚本,bash Miniconda3-latest-Linux-x86_64.sh 即可,一路 yes 。

接下来,需要下载 Alpaca-LoRA 项目代码,下载前,我们需要配置本地的 Git 的环境:

1. 设置的用户名和邮箱

2. 生成SSH Key密钥

3. 获取SSH Key密钥

git cofig --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub邮箱名"
ssh-keygen -t rsa -C  "你的GitHub邮箱名"
  • 具体步骤可以参考网上文章,这里就不详细说了

那么机器配置好了 Git  环境之后,我们就可以正常下载代码了。

下载 Alpaca-LoRA 项目代码 终端输入命令:

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

创建对应的虚拟环境,并安装项目所需的依赖

conda create -n alpaca python=3.9
conda activate alpaca
cd alpaca-lora
pip install -r requirements.txt

8a827fe82662574e7aae539f5be502e3.jpeg

接下来,我们下载项目训练的数据集

wget https://github.com/LC1332/Chinese-alpaca-lora/blob/main/data/trans_chinese_alpaca_data.json(有坑)

踩坑二:这里有个坑,其他教程这里都说直接下载这个文件,当初我也是这个文件下载的,美滋滋的下载完开始跑的时候,发现报错了!

报错原因是文件格式不对!!导致模型启动失败!其实,上面这个文件格式不正确,至少在我今天跑的时候有问题,正确做法是执行这个命令:git clone https://github.com/LC1332/Chinese-alpaca-lora.git

克隆项目之后,切换到 data 目录下,可以看到 trans_chinese_alpaca_data.json 数据集文件的位置,把它 cp 一份,拷贝到 alpaca-lora 目录下。 

所以说,注意下载完后,要进行检查,下载好的数据集文件内容格式是如下这样的 JSON 格式,这个数据集当然也可以更换成自己的 :

966566fcfce2ecafd0bdfb05abf17cea.png

第三步:开始训练模型!

训练

进入  alpaca-lora 项目目录,执行命令

踩坑三:经验丰富的工程师,都会知道,一个命令如果需要长时间执行的话,最保险的做法就是把它挂到后台运行,这样及时你一不小心把前台关闭了,程序仍然老老实实的继续默默运行着。(老程序员也有大意失荆州的时候😭)

nohup xxx & 是把一个命令挂到服务器的后台运行!

单卡选手很简单,可以直接执行:

nohup python finetune.py \--base_model 'decapoda-research/llama-7b-hf' \--data_path 'trans_chinese_alpaca_data.json' \--output_dir './lora-alpaca-zh' \--micro_batch_size 2 \--num_epochs 2 &

双卡选手相对比较麻烦,需要加额外的参数执行:

 
WORLD_SIZE=2 CUDA_VISIBLE_DEVICES=0,1 torchrun \
--nproc_per_node=2 \
--master_port=1234 \
finetune.py \
--base_model 'decapoda-research/llama-7b-hf' \
--data_path '/path/to/trans_chinese_alpaca_data.json' \
--output_dir './lora-alpaca-zh'

如果你的内存 24GB 左右,需要额外配置 micro_batch_size 避免 OOM。(不像我一样第一次跑到 90% 结果 OOM,然后只能含泪重跑😭)

 
--micro_batch_size 2

推荐的其他额外参数:

 
--num_epochs 2

执行完上面的命令,服务器终端会下载一堆玩意,耐心等一会

dd3a396faab1b7d5bc8aae0073f25d6d.png

可以看到,上面的输出参数

如果发生如下报错:AttributeError: /root/anaconda3/envs/alpaca/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cpu.so: undefined symbol: cget_col_row_stats

需要进入/root/anaconda3/envs/alpaca/lib/python3.9/site-packages/bitsandbytes 文件夹中 执行如下命令:cp libbitsandbytes_cuda117.so libbitsandbytes_cpu.so 解决依赖冲突问题

第四步:训练观察

顺利执行成功后,会进入训练页面,训练的过程比较稳定,推荐在用 nvitop 命令,查看显存和显卡的用量:

1dc0e89cfd308ea51cbaea2df4972ede.png

在观察的时候,发现 32G的显存,模型刚跑的时候不到 8G,可能只是刚开始,毕竟有将近 70 亿参数。理论上,这样看更低的显存机器应该也可以cover。看日志,怎么着也得10h起步的训练时长了,等明天有空看效果吧。

后记

上面的涉及的一些参数含义可参考,这里不具体阐述

https://paddlex.readthedocs.io/zh_CN/release-1.3/appendix/parameters.html

具体的训练效果,等明天应该就差不多出来。

这篇文章带大家从头到尾实战了一把 ChatGPT的训练过程,我们可以从整个过程中看到,语言模型迭代的本质,其实还是海量的语料数据的训练,从历史回到现在,ChatGPT 的背后是一个叫做语言模型的一个数学模型在发挥作用。

换句话说,ChatGPT 的背后是一个数学模型。只不过在今天,这项技术显得很强大的原因主要是三个:

第一,它用到的计算量很大;

第二,它的数据量很大;

第三,今天训练语言模型的方法比以前要好很多。

最近读到一篇吴军老师的访谈文章,里面提到 ChatGPT 对我们到底有什么影响?

吴军老师的回答我觉得一语中的,这里摘抄一下

今天互联网上90%的内容都属于这一类——不提供更多的新信息,也不是原创内容,也不是自己的感悟,无非是东抄抄,西凑凑。目前,抖音、快手这类短视频,我觉得99%的内容都属于这一类,没有营养,你读完以后可能觉得挺有意思,但实际上你在上面读了再多,其实对你没有任何帮助。如果说ChatGPT真的威胁到了谁,我觉得威胁到的就是这一类人的工作。

所以这项技术会对这一批人会有影响。那么,什么人不会受到影响?就是内容创造的人不会受影响。所以我认为,从历史上看ChatGPT其实不算是一次技术革命,它影响到的都是那个比较懒的人,懒得动脑筋,创造新东西的人。真正探索人类知识奥秘的人,是不会被取代的。

与你共勉 !

本文参考链接

https://zhuanlan.zhihu.com/p/616504594 

https://zhuanlan.zhihu.com/p/619710105 

推荐阅读

0 代码,十分钟搞定微信版 ChatGPT,轻松拥有个性化 AI 助手教程!

王炸!ChatGPT 真的要变天了!


http://chatgpt.dhexx.cn/article/0fgO1Mk9.shtml

相关文章

Python+ChatGPT实战之进行游戏运营数据分析

文章目录 一、数据二、目标三、解决方案1. DAU2. 用户等级分布3. 付费率4. 收入情况5. 付费用户的ARPU 最近ChatGPT蛮火的,今天试着让ta写了一篇数据分析实战案例,大家来评价一下! 一、数据 您的团队已经为您提供了一些游戏数据,…

使用ChatGPT实现可视化操作扫雷小游戏 【java代码实现】

代码 package com.atguigu.java4;/*** author zyz* version 1.0* data 2023/2/20 14:55* Description:*/import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random;class MineSweeper ex…

ChatGPT惊人语录大赏

作者 | 智商掉了一地 编辑 | 夕小瑶的卖萌屋 点击下方卡片,关注“自动驾驶之心”公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心【全栈算法】技术交流群 这几天ChatGPT实在太火了,笔者的朋友圈已经被ChatGPT的各种金句刷屏了&#xff…

ChatGPT实现游戏 NPC 对话

游戏 NPC 对话 玩游戏的一个必要过程,就是和 NPC 对话,领取任务,获取线索。有趣的游戏,会根据用户和 NPC 交流时的不同选择,触发不同剧情走向。甚至多个 NPC 之间还能有罕见的隐藏剧情,等待用户发掘。可以…

ChatGPT使用Java编写猜数游戏

目录 使用ChatGPT编写的代码如下 存在的问题 改进的Java代码 猜数游戏相信很多学编程的同学都听说过,在学习循环的那一节的课后作业相信就有这个题目,正好现在ChatGPT正火的时候,我也尝试了让它写一下这个代码,很遗憾&#xff0…

调戏chatGPT(一)玩个猜数字游戏

最近chatGPT火得不要不要的,本着热情拥抱新生事物的原则,我也去测试了一下,发现这货果然很智能,我们是不是已经处在AI技术革命性突破的前夜了呢。 chatGPT的功能远远不止聊天,所以我用一个专栏来展示一下,…

ChatGPT 设计游戏剧情 | 基于 AI 5 天创建一个农场游戏,完结篇!

欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用 AI 工具在 5 天内创建一个功能完备的农场游戏。到本系列结束时,您将了解到如何将多种 AI 工具整合到游戏开发流程中。本文将向您展示如何将 AI 工具用于: 美术风格 游戏设计 3D 素材 2D …

ChatGPT设计的游戏火了!玩法代码一力搞定,自称「原创」却被指:抄袭了

鱼羊 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT,现在多了一重“游戏制作人”的身份。 不仅游戏玩法由它设计,连游戏代码和网页,也全部由ChatGPT搞定。 游戏界面长这样: ChatGPT还亲自给这个小游戏取了个名字:Sumplet…

用ChatGPT做一款二次元卡牌游戏!完成度超90%,即将开放源码!

1.0 游戏策划设计 孙二喵,继上次借助ChatGPT做了一个3D小游戏后,很多朋友问,AI可以做大型项目么?还是仅限于简单的小游戏。 *AI生成的3D小游戏 所以二喵准备接着用 AI 设计一款中型体量的卡牌游戏,发布到微信小游戏和海…

【广州华锐互动】ChatGpt在元宇宙游戏领域有哪些应用场景?

游戏已经成为了许多人的娱乐方式。然而,如何提高游戏体验仍然是一个关键的问题。这里,我们介绍一种新型的技术:ChatGpt。 ChatGpt是一种基于自然语言处理的人工智能技术,可以帮助游戏开发人员制作出更加智能的游戏。它可以在元宇宙…

ChatGPT游戏领域的创新助手|小智ai

ChatGPT丨小智ai丨chatgpt丨人工智能丨OpenAI丨聊天机器人丨AI语音助手丨GPT-3.5丨开源AI平台 导语: ChatGPT(Chat Generative Pre-trained Transformer)作为一种先进的自然语言处理模型,不仅在对话领域取得了突破,而且…

NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗

🍎道阻且长,行则将至。🍓 目录 引言:西部世界元宇宙,还记得吗ChatGPT 的世界? 下图就是一个 ChatGPT 小镇: 引言:西部世界 《西部世界》以一个虚构的游戏般的“西部世界”为背景…

ChatGPT 又整活了,从零开始设计并实现一个类似数独的游戏 Sumplete

ChatGPT 又整活了。这次是从零开始设计并实现一个类似数独的游戏。 数独应该很多人都玩过,规则也很简单。 那能不能设计一款与数独类似的新游戏呢?国外有位叫 Daniel Tait 的工程师就想到了让 ChatGPT 来试试。经过几个小时与 ChatGPT 的对话&#xff0c…

ChatGPT让游戏NPC活了!交流不再靠选项,问什么答什么,网友直呼童年梦想成真...

梦晨 发自 凹非寺量子位 | 公众号 QbitAI 这个游戏里的NPC,活了! 不是傻傻重复几句固定台词,而是你问什么就答什么。 玩家也不是从几个固定选项中选,而是打字对话,想说什么就说什么。 在游戏中,玩家扮演一个…

使用 ChatGPT 启发游戏创意|基于 AI 5 天创建一个农场游戏,第 2 天

欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用各种 AI 工具,在 5 天内创建一个功能完备的农场游戏。到本系列结束时,你将了解到如何将多种 AI 工具整合到游戏开发流程中。本系列文章将向你展示如何将 AI 工具用于: 美术风格游…

【第三篇:利用ChatGPT编写贪食蛇小游戏】

好像现在最近对ChatGPT讨论越来越热,ChatGPT的出现应该会引发“一次新的社会变革”,未来很多码农会失业啊!与其坐着被改变,不如尝试主动改变,我今天就利用ChatGPT编写贪食蛇小游戏,看看一个小白是否真的可以…

关于ChatGPT,想了解的看过来

12月1日,微软投资的AI实验室OpenAI发布了一款聊天机器人模型ChatGPT,能够模拟人类的语言行为,与用户进行自然的交互。 一经问世,ChatGPT就被用户们疯狂“调戏”,有人用其写小作文,有人拿高考题来考验它&…

美国最新调查显示 50% 企业已在用 ChatGPT,其中 48% 已让其代替员工,你怎么看?

美国企业开始使用ChatGPT,我认为这不是什么新闻。 如果美国的企业现在还不使用ChatGPT,那才是个大新闻。 据新闻源显示,已经使用chatGPT的企业中,48%已经让其代替员工工作。 ChatGPT的具体职责包括:客服、代码编写、招…

ChatGPT:那些让美国伟大的俄罗斯人

人工智能三次震惊世界。1997年,2016年,2023年。 有意思的是,这三次,都由美国主导,却都和美国最大的对手苏联(俄罗斯)有关。 1997年,IBM的深蓝,打败俄罗斯国际象棋大师卡斯…

云服务器搭建Python项目实现学术优化chatgpt

云服务器搭建实现学术优化chatgpt 1 服务器准备2 云服务器配置2.0 FTP配置2.1 python虚拟环境2.1.1 python3.9安装配置2.1.2 下载python项目2.1.3 创建python虚拟环境 3 项目“服务化”(后台运行python项目)4 localURL访问(公网ip访问&#x…