只需一杯星巴克的成本和两个小时的时间,您就可以拥有自己训练有素的开源大型模型。模型可以根据不同的训练数据方向进行微调,提升医疗、编程、炒股、恋爱咨询等各种技能,让你的大模型更“懂”你。让我们尝试训练一个由开源 DolphinScheduler 赋能的开源大型模型!
ChatGPT的诞生无疑让我们对AI的未来充满了期待。其精巧的表达方式和强大的语言理解能力令世人惊叹。但是,由于 ChatGPT 是以软件即服务 (SaaS) 的形式提供的,因此个人隐私泄露和企业数据安全问题是每个用户和公司都关心的问题。越来越多的开源大型模型不断涌现,让个人和公司拥有自己的模型成为可能。但是,开源大型模型的入门、优化和使用门槛高,很难让大家轻松上手。为了解决这个问题,我们使用 Apache DolphinScheduler,它为训练、调优和部署开源大型模型提供一键式支持。这使每个人都能够以非常低的成本和技术专长使用他们的数据来训练他们自己的大型模型。
我们的目标不仅是让专业的 AI 工程师,而且让任何对 GPT 感兴趣的人都能享受拥有一个更好地“理解”他们的模型的乐趣。我们相信每个人都有权利和能力塑造自己的 AI 助手。 Apache DolphinScheduler 直观的工作流程使这成为可能。作为奖励,Apache DolphinScheduler 是一个大数据和 AI 调度工具,在 GitHub 上拥有超过 10,000 颗星。它是 Apache 软件基金会下的顶级项目,这意味着您可以免费使用它并修改代码而无需担心任何商业问题。
无论您是想要用自己的数据训练模型的行业专家,还是想要了解和探索深度学习模型训练的AI爱好者,我们的工作流程都将为您提供便捷的服务。它解决了复杂的预处理、模型训练和优化步骤,只需要1-2小时的简单操作,再加上20小时的运行时间,就可以构建一个更“懂”的ChatGPT大规模模型。
那么让我们开始这个神奇的旅程吧!让我们把人工智能的未来带给每个人。
首先,你需要一块3090显卡。如果你有一台台式电脑,你可以直接使用它。如果没有,网上有很多带GPU的主机出租。这里我们以AutoDL为例进行应用。打开https://www.autodl.com/home ,注册并登录。之后,您可以根据屏幕显示的步骤1、2、3在算力市场中选择对应的服务器。
这里推荐选择RTX 3090显卡,性价比较高。经过测试,发现一到两个人可以使用RTX 3090进行在线任务。如果你想要更快的训练和响应速度,你可以选择更强大的显卡。训练一次大约需要 20 小时,而测试大约需要 2-3 小时。 40元的预算,轻松搞定。
点击社区镜像,然后在下图红框中输入WhaleOps/dolphinscheduler-llm/dolphinscheduler-llm-0521
。您可以选择图像,如下所示。目前,只有 V1 版本可用。以后随着新版本的发布,你可以选择最新的。
如果需要多次训练模型,建议将硬盘容量扩展到100GB左右。
创建完成后,等待下图所示的进度条完成。
为了在界面上部署调试自己的开源大型模型,需要启动DolphinScheduler软件,我们需要做如下配置工作:
有两种方法可用。您可以选择适合您的喜好:
单击如下所示的 JupyterLab 按钮。
该页面将重定向到 JupyterLab;从那里,您可以单击“终端”进入。
2. 通过终端登录(适用于程序员):
我们可以通过下图所示的按钮获取SSH连接命令。
然后,通过终端建立连接。
在 DolphinScheduler 中,所有的元数据都存储在数据库中,包括工作流定义、环境配置、租户信息等。为了方便用户在 DolphinScheduler 启动时看到这些工作流,我们可以通过复制直接导入预定义的工作流元数据从屏幕上。
使用终端,导航到以下目录:
cd apache-dolphinscheduler-3.1.5-bin
执行命令: vim import_ds_metadata.sh
,打开import_ds_metadata.sh
文件。文件内容如下:
Set variables
Hostname
HOST="xxx.xxx.xxx.x"
UsernameUSERNAME="root"PasswordPASSWORD="xxxx"PortPORT=3306Database to import intoDATABASE="ds315_llm_test"SQL filenameSQL_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与之前导入的数据库连接起来:
/root/apache-dolphinscheduler-3.1.5-bin/bin/env/dolphinscheduler_env.sh
修改数据库部分的相关配置,其他部分不变。将'HOST'和'PASSWORD'的值修改为导入数据库的配置值,即xxx.xxx.xxx.x和xxxx:
export DATABASE=mysqlexport 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 控制台中点击“Custom Services”(以红色突出显示)重定向到一个 URL:
打开 URL 后,如果显示 404 错误,请不要担心。只需将后缀 /dolphinscheduler/ui 附加到 URL:
AutoDL模块开放6006端口,将DolphinScheduler的端口配置为6006后,可以通过提供的入口访问。但是,由于 URL 重定向,您可能会遇到 404 错误。在这种情况下,您需要手动完成 URL。
用户名: admin
密码: dolphinscheduler123
登录后,点击“项目管理”,可以看到名为“vicuna”的预定义项目。点击“vicuna”进入项目。
进入Vicuna项目后,您会看到三个工作流程:Training、Deploy和Kill_Service。让我们探索它们的用途以及如何配置大型模型和训练数据。
您可以点击下面的运行按钮来执行相应的工作流程。
通过单击培训工作流程,您将看到两个定义。一种是通过Lora(主要使用alpaca-lora, https://github.com/tloen/alpaca-lora )对模型进行微调,另一种是将训练好的模型与基础模型合并得到最终模型.
部署大模型的工作流程(主要使用FastChat, https://github.com/lm-sys/FastChat )。它将首先调用 kill_service 来杀死已部署的模型,然后依次启动控制器、添加模型,然后打开 Gradio web 服务。
启动参数如下:
此工作流程用于终止已部署的模型并释放 GPU 内存。此工作流没有参数,您可以直接运行它。如果需要停止部署的服务(比如需要重新训练模型或者GPU显存不足的时候),可以直接执行kill_service工作流来kill掉部署的服务。
通过几个示例后,您的部署将完成。下面我们来看看实际操作:
通过执行训练工作流并选择默认参数直接启动工作流。
右击对应任务查看日志,如下图:
您还可以在侧边栏左下方的任务实例面板中查看任务状态和日志。训练过程中,可以通过查看日志监控进度,包括当前训练步数、loss metrics、剩余时间等。有一个进度条表示当前步数,其中step = (data size * epoch) / batch尺寸。
我们的默认数据位于/root/demo-data/llama_data.json
中。目前的数据来源是华佗,一种使用中国医学数据微调的医学模型。是的,我们的例子是培训家庭医生:
如果特定字段有数据,可以指向自己的数据,数据格式如下:
例如:
{"instruction": "calculation", "input": "1+1 equals?", "output": "2"}
请注意,您可以将指令和输入字段合并为一个指令字段。输入字段也可以留空。
训练时,修改data_path参数,执行自己的数据。
笔记:
在第一次训练执行期间,基础模型将从指定位置获取,例如 TheBloke/vicuna-7B-1.1-HF。会有一个下载过程,请等待下载完成。该模型的选择由用户决定,您也可以选择下载其他开源大模型(使用时请遵守相关许可)。
由于网络问题,基础模型下载可能会在第一次训练执行中途失败。在这种情况下,您可以单击失败的任务并选择重新运行它以继续训练。操作如下图:
要停止训练,可以单击停止按钮,这将释放用于训练的 GPU 内存。
在工作流定义页面上,单击部署工作流以运行它并部署模型。
如果您还没有训练过自己的模型,可以使用默认参数 TheBloke/vicuna-7B-1.1-HF 执行 deploy 工作流来部署vicuna-7b
模型,如下图所示:
如果您在上一步中训练了模型,您现在可以部署您的模型。部署后,您可以体验自己的大型模型。启动参数如下,这里需要填写上一步模型的output_path
:
接下来,让我们进入部署的工作流实例。单击工作流实例,然后单击带有“部署”前缀的工作流实例。
右键单击并选择“refresh_gradio_web_service”以查看任务日志并找到我们的大模型链接的位置。
操作如下图:
在日志中,您会找到一个可以公开访问的链接,例如:
这里有两个链接。 0.0.0.0:7860
这个链接无法访问,因为AutoDL只开放了6006端口,这个端口已经被dolphinscheduler占用了。您可以直接访问它下面的链接,例如[https://81c9f6ce11eb3c37a4.gradio.live.](https://81c9f6ce11eb3c37a4.gradio.live.)
请注意,此链接可能会在您每次部署时发生变化,因此您需要从日志中重新找到它。
输入链接后,您将看到您自己的 ChatGPT 的对话页面!
是的!现在您拥有自己的 ChatGPT,它的数据只为您服务!
而你只花了不到一杯咖啡的成本~~
来吧,体验您自己的私人 ChatGPT!
在这个数据驱动和技术导向的世界中,拥有专用的 ChatGPT 模型具有不可估量的价值。随着人工智能和深度学习的进步,我们正处在一个可以塑造个性化AI助手的时代。训练和部署您自己的 ChatGPT 模型可以帮助我们更好地了解 AI 以及它如何改变我们的世界。
总之,自行训练和部署 ChatGPT 模型可以帮助您保护数据安全和隐私,满足特定的业务需求,节省技术成本,并使用 DolphinScheduler 等工作流工具自动化训练过程。它还允许您遵守当地的法律法规。因此,自行训练和部署 ChatGPT 模型是一个值得考虑的选择。
也发布在这里。