本教程主要为大家讲解 OpenBayes 上如何在模型训练中使用子域名访问服务,新朋友点击下方链接注册后,即可获得 4 小时 RTX 4090 + 5 小时 CPU 的免费使用时长哦!
注册链接
https://openbayes.com/console/signup?r=yuudi_nBBThttps://openbayes.com/console/signup?r=yuudi_nBBT
首先,创建一个新的「执行」,选择「读写绑定」,指向一个模型仓库,然后点击「下一步:选择算力」。
选择 3090 的算力,镜像选择 vLLM 镜像。
开始执行后,点击「打开工作空间」。
进入到 Jupyter 工作空间后,点击 JupyterLab 左侧文件夹,点击「input」,「input0」,然后可以看到所绑定的模型文件。
回到 home 目录,点击「终端」。
输入 pip list 可以看到 vLLM 0.2.7 版本已经装好了。
然后我们可以直接通过命令进行部署:我们按照 vLLM 官方的介绍启动一个 openai 兼容的 api serve,模型路径为 input0 ,可以对照右侧「概况」栏下的数据集路径,然后我们要为模型输入一个名称(教程示例为 yi ),运行 trust-remote-code 代码,启动脚本。
可以看到它默认使用的是 8000 端口。
我们新建一个终端,输入 nvidia-smi ,可以看到模型已经加载到了显卡里。
我们通过一个 curl 命令来进行测试,可以看到这个模型里面有一个叫做「yi」的模型了。到目前为止,模型已经部署成功了,但这个模型部署只能在容器内部访问,并不能暴露到公网上。而 OpenBayes 的模型训练功能会默认把容器内的 8080 端口暴露出来,并提供一个子域名。
我们将端口改为 8080 ,然后 host 指向 0.0.0.0,我们再执行。
可以看到模型一已经指向 8080 端口了,然后我们打开右侧导航栏中的「API地址」下的链接。
可以看到列出了当前模型的信息,证明我们容器内的 8080 端口已经暴露到公网上了。
使用这个功能需要先进行实名认证,否则无法看到「API地址」下的链接。
虽然通过这个方式,我们可以直接将这个 api server 暴露到了公网上,但是由于它没有一个界面,我们并不方便进行调试和测试。下面我将介绍怎样通过一个 gradio 的脚本对已经创建的 openai 兼容服务进行一个简单的测试。
首先,我们将端口换回 8000,再次启动,然后我们借鉴 vLLM 官方的一个脚本,可以直接把 vLLM 的代码下载下来。
在它的 example 目录下有一个 gradio_openai_chatbot_webserver 的一个脚本,这个脚本就可以直接调用我们刚创建的 server 。
我们先安装依赖,一定要安装 gradio3.41 版本。
然后再安装 openai。
安装好之后,启动这个脚本,通过 -h 命令可以看到里面的参数。
model-url 我们要给一个完整的前缀,指向 v1,模型名字为刚才指定的「yi」,port 指向 8080,host 还是0.0.0.0,这样这个 gradio 就启动起来了。
我们再次打开之前的子域名,就可以看到一个 ChatBot 的界面。
我们进行一个测试,可以看到它在不停地说话,而且重复一样的话,是因为这个模型的 Stop word 有点问题,我们打开刚才的脚本,对这个进行一个调整。
我们找到这个 stop-token-ids 的参数,并把它加上,输入 7 作为 stop word。
我们刷新之前的页面,可以看到能够正常使用了。
为了让大家更好地理解,OpenBaye贝式计算也为大家录制了详细的视频教程,可以点击下方链接查看,快速上手OpenBayes平台!https://www.bilibili.com/video/BV15C4y1k7K2/?spm_id_from=333.337.search-card.all.clickhttps://www.bilibili.com/video/BV15C4y1k7K2/?spm_id_from=333.337.search-card.all.click