使用 BentoML 和 Runpod 快速设置 LLM API
经常看到数据科学家对 LLM 的开发感兴趣,包括模型架构、训练技术或数据收集。然而,我注意到,很多时候,除了理论方面,许多人在以用户实际使用的方式提供这些模型时遇到了问题。在这个简短的教程中,我想以一种非常简单的方式展示如何使用BentoML 提供 LLM,特别是 llama-3 。
BentoML 是用于机器学习模型服务的端到端解决方案。它帮助数据科学团队开发可用于生产的模型服务端点,并在每个阶段采用 DevOps 最佳实践和性能优化。
我们需要 GPU
如您所知,在深度学习中,拥有合适的硬件至关重要。特别是对于像 LLM 这样的非常大的模型,这一点变得更加重要。不幸的是,我没有任何 GPU 😔 这就是为什么我依赖外部提供商,所以我租了他们的一台机器并在那里工作。我选择在Runpod上撰写本文,因为我了解他们的服务,而且我认为遵循本教程的价格是可以承受的。但是,如果您有可用的 GPU 或想要使用任何其他提供商,请随意跳过此部分。
首先,确保您有一个 Runpod 帐户。接下来,我们需要创建一个加密密钥对,我们可以通过SSH 连接向 Runpod 进行身份验证。 我有一台 MacOS,所以我使用以下教程来生成密钥。但对于 Linux 和 Windows,过程应该没有太大区别。
您现在应该有一个公钥和一个私钥。请确保不要在任何地方分享您的私钥!在设置中,Runpod 将要求您输入公钥以便您进行身份验证,因此请继续将其复制到相应的插槽中,如图所示。
添加图片注释,不超过 140 字(可选)
现在我们准备创建一个 pod,也就是一个可以用来编码的虚拟机。单击“ +Deploy ”按钮。
添加图片注释,不超过 140 字(可选)
Runpod 会要求您指定要使用的 GPU 类型。价格会根据您所需的 GPU 性能而变化。我们只是一个教程,因此我们在延迟或吞吐量方面没有极端需求。在这种情况下,我选择了 RTX 4090。
添加图片注释,不超过 140 字(可选)
您可以进一步修改模型,并将磁盘大小增加到 40GB。
添加图片注释,不超过 140 字(可选)
如果您单击“连接”按钮,Runpod 将向您显示可以从 bash 使用的命令,以远程连接到为您提供的机器。
添加图片注释,不超过 140 字(可选)
不过,在开始工作之前,我们还需要做一件事。上面显示的命令指定了一个 IP 地址和一个端口。 现在您需要进入终端并访问保存 SSH 密钥的 .ssh 文件夹。
添加图片注释,不超过 140 字(可选)
使用“ vim config ”命令编辑“ config ”文件。像我的情况一样,向文件中添加一个条目。我将主机命名为“ bentoml ”,并添加了 IP、端口以及我的私钥所在的路径,这样,当尝试连接到此主机时,电脑将自动知道在哪里找到要连接的密钥。
添加图片注释,不超过 140 字(可选)
但是,如果从 VSCode 连接而不是使用 CLI会更好,对吗?只需按照几个简单的步骤操作即可。打开 VSCode 并单击左下角的蓝色箭头,如图所示。现在在下拉菜单中单击“连接到主机”。
添加图片注释,不超过 140 字(可选)
现在 VSCode 会知道哪些主机可用,因为我们首先在配置文件中输入了它们,实际上,它会将bentoml识别为主机。单击它。
添加图片注释,不超过 140 字(可选)
您现在位于 Runpod 虚拟机内!打开/workspace文件夹即可开始工作。
添加图片注释,不超过 140 字(可选)
使用 BentoML 提供服务
使用 Runpod 设置开发环境可能是本教程中最复杂的部分,因为 BentoML 使 llama-3 的服务变得非常容易。
首先,使用 CLI 我们可以克隆 BentoML 团队开发的存储库。
git克隆https://github.com/bentoml/BentoVLLM.git
在存储库中,我们将找到不同模型的几个示例。
添加图片注释,不超过 140 字(可选)
在本例中,我们将专门使用 llama3–8b-instruct。因此我们进入该文件夹。
cd BentoVLLM/ cd llama3-8b-instruct/
我们需要安装所有必要的要求。
pip 安装 -r 要求.txt && pip 安装 -f -U “pydantic>=2.0”
实际代码位于service.py文件中。 但是,我们只需调用以下命令即可为模型提供服务。
bentoml 发球。
当模型被服务时,IP 地址将向您开放,以便您在本地查看 API。如果您将路径“ /docs ”添加到 IP 地址,您将找到包含所有可用方法的 swagger。
添加图片注释,不超过 140 字(可选)
您会看到主要的 API 是/generate,您可以在其中输入提示和系统提示并等待模型的输出。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
当然,除了 swagger 之外,您还可以使用代码中的 API,例如,如果您想开发自己的自定义前端!
结论
在本文中,我们了解了如何使用 SSH 连接连接到远程计算机。在本教程中,我们使用了 Runpod,但所有提供商都遵循类似的程序。 直接从 VSCode 通过 SSH 连接非常有用,这样我们就可以从我们最喜欢的 IDE 编写代码并可视化文件,我们在本文中看到了如何通过在配置文件上注册主机数据以简单的步骤完成此操作。
具有讽刺意味的是,llama-3 的服务是这个简单教程中最快的部分,因为多亏了 bento,我们只需要调用一个命令就可以运行模型并通过 swagger 使用。