关于数据库:用一杯星巴克的钱训练自己私有化的ChatGPT

6次阅读

共计 6922 个字符,预计需要花费 18 分钟才能阅读完成。

文章摘要:用一杯星巴克的钱,本人入手 2 小时的工夫,就能够领有本人训练的开源大模型,并能够依据不同的训练数据方向增强各种不同的技能,医疗、编程、炒股、恋爱,让你的大模型更“懂”你….. 来吧,一起尝试下开源 DolphinScheduler 加持训练的开源大模型!

导读

让人人都领有本人的 ChatGPT

ChatGPT 的诞生无疑让咱们为人工智能的将来充斥期待,它以其精密的表白和弱小的语言理解能力,震撼了寰球。然而在应用 ChatGPT 的时候,因为它是 SaaS,所以个人隐私泄露,企业数据安全问题是每一个人、每一个企业都放心的问题。而当初越来越多的开源大模型呈现,让集体 / 企业领有本人的大模型成为可能,然而,开源大模型上手、优化、应用要求门槛都比拟高,很难让大家简略的应用起来。为此,咱们借助 Apache DolphinScheduler,一键式地反对了开源大模型训练、调优和部署,让大家能够在极低的老本和技术储备下,用本人的数据训练出专属于本人的大模型。当然,开源大模型的功力间隔 ChatGPT 还有间隔,然而通过测试咱们看到 7、8 成的功力还是有的,而且这是能够依据你的场景和畛域常识非凡训练过的,针对性更强。同时,咱们深信未来随着技术倒退,开源大模型的能力会越来越强,让用户体验越来越好。来吧,咱们筹备开始。

面向人群——每一个屏幕背后的你

咱们的指标是,不仅业余的 AI 工程师,更是任何对 GPT 有需要和趣味的人,都能享受到领有更“懂”本人的模型的乐趣。咱们置信,每一个人都有权力和能力去塑造本人的 AI 助手,而 Apache DolphinScheduler 可见即所得的工作流程为此提供了可能。顺带介绍下 Apache DolphinScheduler,这是一个 Star 超过 1 万个的大数据和 AI 的调度工具,它是 Apache 开源基金会旗下的顶级我的项目,这意味着你能够收费应用它,也能够间接批改代码而不必放心任何商业问题。

无论你是业界专家,寻求用专属于你的数据来训练模型,还是 AI 爱好者,想尝试了解并摸索深度学习模型的训练,咱们上面的这个工作流程都将为你提供便捷的服务。它为你解决了简单的预处理、模型训练、优化等步骤,只需 1 - 2 个小时几个简略的操作,加上 20 小时的运行工夫,就能够构建出更“懂”你的 ChatGPT 大模型:

https://weixin.qq.com/sph/AHo43o

那么,咱们一起开启这个神奇的旅程吧!让咱们把 AI 的将来带到每一个人的手中。

仅用三步,结构出更“懂”你的 ChatGPT

  1. 用低成本租用一个领有 3090 级别以上的 GPU 显卡
  2. 启动 DolphinScheduler
  3. 在 DolphinScheduler 页面点击训练工作流和部署工作流,间接体验本人的 ChatGPT 吧

1. 筹备一台 3090 显卡的主机

首先须要一个 3090 的显卡,如果你本人有台式机能够间接应用,如果没有,网上也有很多租用 GPU 的主机,这里咱们以应用 AutoDL 为例来申请,关上 https://www.autodl.com/home,注册登录,后能够在算力市场抉择对应的服务器,依据屏幕中的 1,2,3 步骤来申请:

这里,倡议抉择性价比较高的RTX3090,通过测试反对 1 - 2 集体在线应用 3090 就能够了。如果想训练速度和响应速度更快,能够抉择更强的显卡,训练一次大概须要 20 小时左右,应用测试大略 2 - 3 个小时,估算 40 元就能够搞定了。

镜像

点击社区镜像,而后在上面红框出输出 WhaleOps/dolphinscheduler-llm/dolphinscheduler-llm-0521 之后,即可抉择镜像,如下如所示,目前只有 V1 版本的,前面随着版本更新,有最新能够抉择最新

如果须要屡次训练模型,倡议硬盘扩容一下,倡议 100G 即可。

创立后,期待下图所示的进度条创立实现即可。

2. 启动 DolphinScheduler

为了能够在界面上部署调试本人的开源大模型,须要启动 DolphinScheduler 这个软件,咱们要做以下配置工作:

进入服务器

进入服务器的形式有两种,能够依照本人的习惯进行:

通过 JupyterLab 页面登录(不懂代码的请进)

点击如下 JupyterLab 按钮

页面跳转到 JupyterLab,后能够点击这里的终端进入

通过终端登录(懂代码的请进)

咱们能够从下图这个按钮获取 SSH 连贯命令

并通过终端链接

导入 DolphinScheduler 的元数据

在 DolphinScheduler 中,所有的元数据都存储在数据库中,包含工作流的定义,环境配置,租户等信息。为了不便大家在应用时可能启动 DolphinScheduler 时候就可能看到这些工作流,咱们能够间接导入曾经做好的工作流定义数据,照屏幕 copy 进去。

批改导入 MySQL 的数据的脚本

通过终端如下命令,进入到以下目录

cd apache-dolphinscheduler-3.1.5-bin

敲击命令,vim import_ds_metadata.sh 关上 import_ds_metadata.sh 文件

文件内容如下

#!/bin/bash

# 设置变量
# 主机名
HOST="xxx.xxx.xxx.x"
# 用户名
USERNAME="root"
# 明码
PASSWORD="xxxx"
# 端口
PORT=3306
# 导入到的数据库名
DATABASE="ds315_llm_test"
# SQL 文件名
SQL_FILE="ds315_llm.sql"

mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD -e "CREATE DATABASE $DATABASE;"

mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD $DATABASE < $SQL_FILE

把 xxx.xxx.xxx.x 和 xxxx 批改成你公网上一个 mysql 的一个数据库的数据(能够本人在阿里云、腾讯云申请或者本人装置一个),而后执行

bash import_ds_metadata.sh

执行后,如果有趣味可在数据库中看到相应的元数据(可连贯 mysql 查看,不懂代码的略过)。

启动 DolphinScheduler

在服务器命令行里,关上上面的文件,批改配置到 DolphinScheduler 连贯方才的数据库

/root/apache-dolphinscheduler-3.1.5-bin/bin/env/dolphinscheduler_env.sh

批改数据库局部的相干配置,其余局部不必批改,把’HOST’和’PASSWORD’的值改为方才导入的数据库的相干配置值 xxx.xxx.xxx.x 和 xxxx:

......
export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://HOST:3306/ds315_llm_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
export SPRING_DATASOURCE_USERNAME="root"
export SPRING_DATASOURCE_PASSWORD="xxxxxx"
......

配置实现后执行(也在这个目录下 /root/apache-dolphinscheduler-3.1.5-bin)

bash ./bin/dolphinscheduler-daemon.sh start standalone-server

执行实现后,咱们能够通过 tail -200f standalone-server/logs/dolphinscheduler-standalone.log 查看日志,这时候,DolphinScheduler 就正式启动了!

启动服务后,咱们能够在 AutoDL 控制台中点击自定义服务(红框局部)会跳转到一个网址:

关上网址后发现是 404,别着急,咱们补充一下 url 的后缀 /dolphinscheduler/ui 即可

AutoDL 模块凋谢一个 6006 的端口,咱们将 DolphinScheduler 的端口配置成 6006 之后,能够通过下面的入口进入,然而因为跳转的 url 补全,所以 404,因而咱们补全 URL 即可

登录用户名明码

用户名: admin

明码: dolphinscheduler123

登录后点击 项目管理,即可看到咱们预置的我的项目 vicuna,再次点击 vicuna 后,咱们即可进入该我的项目。

3. 开源大模型训练与部署

工作流定义

进入 vicuna 我的项目后,点击工作流定义,咱们能够看到三个工作流,Training,Deploy,Kill_Service,上面解释下这几个性能的用处和外部抉择大模型和训练你本人的数据的配置:

咱们能够点击上面的运行按钮运行对应的工作流

Training

点击后能够看到工作流的定义,蕴含两个,一个是通过 lora finetune 模型,一个是将训练进去的模型与根底模型进行合并,失去最终的模型。

具体的工作定义,能够双击对应的图标查看。

该工作流具备以下参数(点击运行后弹出)

  • base_model: 根底模型,依据集体状况抉择自行下载,留神开源大模型仅为学习和体验用处,目前默认为 TheBloke/vicuna-7B-1.1-HF
  • data_path: 你要训练的个性化数据和畛域数据的门路,默认为 /root/demo-data/llama_data.json
  • lora_path: 训练进去的 lora 权重的放弃门路 /root/autodl-tmp/vicuna-7b-lora-weight
  • output_path: 将根底模型和 lora 权重合并之后,最终模型的保留门路,记下来部署的时候须要用到
  • num_epochs: 训练参数,训练的轮次,能够设为 1 用于测试,个别设为 3~10 即可
  • cutoff_len: 文本最大长度,默认 1024
  • micro_batch_size: batch_size

Deploy

部署大模型的工作流,会先援用 kill_service 杀死曾经部署的模型,在顺次启动 controller,而后增加模型,而后关上 gradio 网页服务。

启动参数如下

  • model: 模型门路,能够为 huggingface 的模型 id,也能够为咱们训练进去的模型地址,即下面 training 工作流的 output_path。默认为 TheBloke/vicuna-7B-1.1-HF 应用默认,将间接部署vicuna-7b 的模型

Kill_service

这个工作流用于杀死曾经部署的模型,开释显存,这个工作流没有参数,间接运行即可。

如果一些状况下,咱们要停掉正在部署的服务(如要从新训练模型,显存不够时)咱们能够间接执行 kill_service 工作流,杀死正在部署的服务。

看过通过几个实例,你的部署就实现了,上面咱们实操一下:

大模型操作实例演示

训练大模型

启动工作流

能够间接执行 training 的工作流,抉择默认参数即可

启动后,能够点击下图红框局部工作流实例,而后点击对应的工作流实例查看工作执行状况

右键对应的工作,能够查看对应的日志,如下

也能够在右边栏最上面的工作实例栏中,查看对应的工作状态和日志等信息

在训练过程中,也能够通过查看日志查看具体训练的进度(包含以后的训练步数,loss 指标,剩余时间等),有个进度条始终显示目前在第几个 step,step = 数据量 * epoch / batchsize

训练实现后日志如下

更新本人个性化训练 数据

咱们默认的数据是在 /root/demo-data/llama_data.json,以后数据来源于上面华佗,一个应用中文医学数据 finetune 的医学模型,对,咱们样例是训练一个家庭医生进去:

如果本人有特定畛域的数据,能够指向本人的数据,数据格式如下

一行一个 json,字段含意为

  • instruction **: 指令,为给模型指令
  • input : 输出
  • output : 冀望模型的输入

如以下

{"instruction": "计算算数题", "input": "1+ 1 等于几", "output": "2"}

舒适提醒,能够将 instructioninput 合并为 instruction , input 为空也能够。

依照格局制作数据,训练时批改data_path 参数执行本人的数据即可。

注意事项

第一次执行训练,会从你指定的地位拉取根底模型,例如TheBloke/vicuna-7B-1.1-HF,会有下载的过程,稍等下载实现即可,这个模型下载是由用户指定的,你也能够任选下载其余的开源大模型(留神应用时恪守开源大模型的相干协定)。

因为网络问题,第一次执行 Training 的时候,有可能会下载根底模型到一半失败,这个时候能够点击重跑失败工作,即可从新持续训练,操作如下所示

如果要进行训练,能够点击进行按钮进行训练,会开释训练占用的显卡显存

部署工作流

在工作流定义页面,点击运行 deploy 工作流,如下如所示即可部署模型

如果本人没有训练进去的模型的话,也能够执行默认参数 TheBloke/vicuna-7B-1.1-HF,部署 vicuna-7b 的模型,如下图所示:

如果在上一步咱们进行了模型训练,咱们能够部署咱们的模型了,部署之后就能够体验咱们本人的大模型了,启动参数如下,填入上一步的模型的 output_path 即可

上面咱们进入部署的工作流实例,如下图所示,先点击工作流实例,而后点击 deploy 前缀的工作流实例即可

右键点击 refresh_gradio_web_service 后能够查看工作日志,找到咱们大模型链接的地位,操作如下

在日志的最初,咱们能够看到一个链接,能够公网拜访,如下

这里有两个链接,一个是0.0.0.0:7860 因为 AutoDL 只凋谢了 6006 端口,并且曾经用于 dolphinscheduler,所以咱们临时无法访问该接口,咱们能够间接拜访上面的链接

[https://81c9f6ce11eb3c37a4.gradio.live](https://81c9f6ce11eb3c37a4.gradio.live) 这个链接每次部署都会不一样,因而须要从日志找从新找链接。

进入后,即可看到咱们的对话页面

对!就这样你就领有了你本人的 ChatGPT 了!而且它的数据仅服务于你本人!而且!你只花了不到一杯咖啡的钱哦~~

体验一下,你本人的私有化 ChatGPT 吧!

总结

在这个以数据和技术驱动的世界中,领有一个专属的 ChatGPT 模型具备无法估量的价值。随着人工智能和深度学习的日益倒退,咱们正处在一个可塑造个性化 AI 助手的时代。而训练和部署属于本人的 ChatGPT 模型,能够帮忙咱们更好地了解 AI,以及它如何扭转咱们的世界。

总的来说,自训练和部署 ChatGPT 模型能够帮忙你更好地爱护数据安全和隐衷、满足特定的业务需要、节约技术老本,同时通过工作流工具如 DolphinScheduler 使训练过程自动化,并更好地恪守当地的法律法规。这都使得自训练和部署 ChatGPT 模型成为一个值得思考的抉择。

附注意事项:

数据安全与隐衷

当你应用公共 API 服务应用 ChatGPT 时,你可能会对数据的安全性和隐衷有所顾虑。这是一个正当的担心,因为你的数据可能会在网络中被流传。通过本人训练和部署模型,你能够确保你的数据仅在你本人的设施或你租用的服务器上存储和解决,保障数据安全与隐衷。

特定畛域常识

对于具备特定业务需要的组织或集体来说,通过训练本人的 ChatGPT 模型,能够确保模型具备与业务相干的最新和最相干的常识。无论你的业务畛域是什么,一个专门针对你的业务需要训练的模型都会比通用模型更有价值。

投入老本

应用 OpenAI 的 ChatGPT 模型可能会带来肯定的费用,同时如果要本人训练和部署模型,也须要投入肯定的资源和技术老本,40 元就能够体验调试大模型,如果长期运行倡议本人洽购 3090 显卡,或者年租云端服务器。因而,你须要依据本人的具体情况,权衡利弊,抉择最适宜本人的计划。

DolphinScheduler

通过应用 Apache DolphinScheduler 的工作流,你能够使整个训练过程自动化,大大降低了技术门槛。即便你不具备深厚的算法常识,也能够依附这样的工具,顺利地训练出本人的模型。反对大模型训练的同时,它也反对大数据调度、机器学习的调度,帮忙你和你的企业非技术背景的员工简略上手的做好大数据处理、数据筹备、模型训练和模型部署,而且,它是开源且收费的。

开源大模型 法律法规束缚

DolphinScheduler 只是可视化 AI 工作流,自身不提供任何开源大模型。用户在应用下载开源大模型时,你须要留神自行抉择不同的开源大模型应用约束条件,本文中的开源大模型所举的例子仅供集体学习体验应用,应用大模型时须要留神恪守开源大模型开源协定合规性。同时,不同国家都不同严格的数据存储和解决规定,在应用大模型时,你必须对模型进行定制和调整,以适应你所在地的具体法律法规和政策。这可能包含对模型输入的内容进行特定的过滤等,以满足当地的隐衷和敏感信息处理规定。

本文由 白鲸开源科技 提供公布反对!

正文完
 0