原文:
towardsdatascience.com/llmops-serve-a-llama-3-model-with-bentoml-4d580a7a007f
引言
我经常看到数据科学家对 LLM(大型语言模型)的发展感兴趣,无论是从模型架构、训练技术还是数据收集的角度。然而,我注意到,很多时候,除了理论方面,很多人在以用户实际使用的方式提供服务这些模型时存在困难。在这篇简短的教程中,我想以一种非常简单的方式展示如何使用BentoML来提供服务 LLM,特别是 llama-3。
BentoML 是机器学习模型服务的一个端到端解决方案。它使数据科学团队能够开发生产就绪的模型服务端点,并在每个阶段都采用 DevOps 最佳实践和性能优化。
我们需要 GPU
正如你所知,在深度学习中,拥有合适的硬件至关重要。特别是对于像 LLM 这样的大型模型,这一点变得更加重要。不幸的是,我没有任何 GPU 😔 因此,我依赖外部提供商,所以我租用他们的一台机器在那里工作。我选择在这篇文章中使用Runpod是因为我了解他们的服务,我认为这是一个合理的价格来跟随这个教程。但如果你有可用的 GPU 或想使用任何其他提供商,请随意跳过这部分。
首先,确保你有一个 Runpod 账户。接下来,我们需要创建一个密钥对,我们可以用它通过SSH 连接来认证 Runpod。我有一个 MacOS,所以我使用了以下教程来生成密钥。但对于 Linux 和 Windows,程序应该不会有太大差异。
在 macOS 中手动生成你的 SSH 密钥
你现在应该有一个公钥和一个私钥。确保不要在任何地方分享你的私钥!在设置中,Runpod 会要求你输入公钥以便你可以进行认证,所以请继续将其复制到相应的插槽,如图所示。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c3ddc6340e0777602c58789ec2f2a972.png
现在我们已经准备好创建一个 pod,即我们可以用来编码的虚拟机。点击“+Deploy”按钮。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c0072a5675f14832de11f5d7532cc602.png
Runpod 会要求你指定想要使用哪种类型的 GPU。价格取决于你需要的 GPU 的性能。我们的教程只是一个示例,所以我们没有对延迟或吞吐量有极端的需求。在这种情况下,我选择了 RTX 4090。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1470042e6b158a4c34028f2d0b07fa30.png
你可以进一步修改模型,并将磁盘大小增加到 40GB。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e0eec3c2ed57fa8a1d9664bdbb34a6cb.png
如果你点击 “connect” 按钮,Runpod 将显示你可以从 bash 使用以连接到为你远程提供的机器的命令。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e275755b235745ddffb1566fb02b9833.png
在我们开始工作之前,我们还需要做一件事。上面显示的命令指定了一个 IP 地址和端口。现在你需要进入终端并访问你保存 SSH 密钥的 .ssh 文件夹。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ca4fe6871bd5cfc4b0ab459ee5ebd37d.png
使用 “vim config” 命令编辑 “config” 文件。像我的情况一样,在你的文件中添加一个条目。我命名为 “bentoml”,并添加了 IP 地址、端口以及我的私钥所在路径,这样当尝试连接到该主机时,电脑将自动知道在哪里找到连接的密钥。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3a8c25e45115e20625aebe4ea7a70521.png
虽然从 VSCode连接而不是使用 CLI 会更好,但不是吗?只需遵循几个简单的步骤。打开 VSCode 并点击底部左边的蓝色箭头,如图所示。现在在下拉菜单中点击 “connect to host”。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1631ac8f8e7c4815a4bb5289d26a3590.png
现在 VSCode 将知道哪些主机可用,因为我们首先在配置文件中输入了它们,实际上,它将识别bentoml作为主机。点击它。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a5256fac43abdcdff5db169de45c7be1.png
现在,你已经进入了 Runpod 虚拟机!打开/workspace文件夹,你就可以开始工作了。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1eca994411a942aec2099808a396644f.png
使用 BentoML 提供
使用 Runpod 设置开发环境可能是本教程中最复杂的一部分,因为 BentoML 使得提供 llama-3 非常容易。
首先,使用 CLI 我们可以克隆 BentoML 团队开发的仓库。
git clone https://github.com/bentoml/BentoVLLM.git在仓库中,我们将找到不同模型的几个示例。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/92c8b1d3a3f1b78471889c85b44cd180.png
在这种情况下,我们将特别使用 llama3–8b-instruct。因此,我们进入那个文件夹。
cd BentoVLLM/cd llama3-8b-instruct/我们需要安装所有必要的依赖。
pip install-r requirements.txt&&pip install-f-U"pydantic>=2.0"实际的代码位于service.py文件中。然而,我们只需要调用以下命令来提供模型。
bentoml serve.当模型提供时,将为你打开一个 IP 地址以查看本地的 API。如果你将路径 “/docs” 添加到 IP 地址中,你将找到包含所有方法的 swagger。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c571e1f5217ee7367542dc378d2f91f9.png
你可以看到主要的 API 是/generate,你可以在其中输入提示和系统提示,并等待模型的输出。
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/200542a1870eedee3f383fc97498637c.pnghttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e78357a4baefd20bcfc899a3751fa399.png
当然,除了 swagger,如果你想要开发自己的自定义前端,你也可以从代码中使用 API!
结论
在这篇文章中,我们看到了如何使用 SSH 连接连接到远程机器。在本教程中我们使用了 Runpod,但所有提供商都遵循类似的步骤。直接从 VSCode 通过 SSH 连接非常实用,这样我们就可以从我们最喜欢的 IDE 中编写代码和可视化文件,而在这篇文章中,我们看到了如何通过在配置文件上注册主机数据来简单步骤地完成这一操作。讽刺的是,llama-3 的托管是这个简单教程中最快的一部分,因为多亏了 bento,我们只需要调用一个命令就可以让模型运行并可通过 swagger 使用。
关注我的Medium以获取更多关于 BentoML 的深入教程 😁
💼 领英 ️| 🐦 X (Twitter) | 💻 网站