使用RunPod运行生成式LLMs | 一个无服务器平台

使用RunPod运行生成式LLMs | 无服务器平台

介绍

无服务器是云计算中一种具有颠覆性的策略。它允许开发人员完全专注于创建应用程序,同时让云提供商负责底层基础设施的管理。生成式人工智能大型语言模型推动了无服务器GPU的增长,因为大多数开发人员无法在本地运行它们,这是由于这些语言模型使用了大量的GPU VRAM。RunPod是一个在远程GPU服务中获得流行的平台之一。RunPod通过提供各种计算服务,如GPU实例、无服务器GPU和API端点,为构建和测试具有大型语言模型的应用程序提供强大的GPU访问。通过使用RunPod学习LLMs来执行资源密集型的大型语言模型,因为价格合理且GPU选择多样。

学习目标

  • 学习无服务器的概念以及它对LLM开发人员的实用性
  • 了解运行大型语言模型所需的高GPU VRAM
  • 在云中创建GPU实例以运行语言模型
  • 学习如何根据LLM大小分配GPU VRAM

本文作为数据科学博文马拉松的一部分发布。

什么是无服务器?

无服务器是云平台中的一种服务/方法,它允许您按需拥有基础架构来进行开发并部署应用程序。使用无服务器,您可以完全专注于应用程序的开发,将底层基础设施的管理交给云提供商。许多云平台,如AWS、Azure、GCP等,都提供这些服务。

近年来,无服务器GPU越来越受欢迎。无服务器GPU是指在没有足够内存的情况下,在云上租用GPU计算能力的服务。自从引入大型语言模型以来,这些服务开始兴起。由于大型语言模型需要巨大的GPU VRAM,这些无服务器平台相继崛起,提供比其他平台更好的GPU服务,其中一个服务就是RunPod。

关于RunPod

RunPod是一个云平台,提供GPU实例、无服务器GPU甚至AI端点等计算服务,使机器学习和人工智能开发人员能够利用大型GPU构建具有大型语言模型的应用程序。RunPod提供的GPU实例价格远低于GCP、Azure和AWS等大型云提供商提供的价格。RunPod拥有从RTX 30系列到40系列甚至Nvidia A系列的各种GPU,其VRAM大于40+GB,因此我们可以轻松运行130亿和600亿参数。

RunPod提供两种类型的GPU服务:

  • 社区云服务,当您租用的GPU属于单个个人时,价格非常便宜。
  • 安全云服务,我们使用的GPU属于RunPod自己,价格比社区云服务稍高一些。当我们想要集群大量GPU来训练非常大的语言模型时,安全云服务更适合。

此外,RunPod还提供竞价实例和按需实例。竞价实例可以随时中断使用,因此非常便宜,而按需实例则是不可中断的。在本文中,我们将介绍RunPod并设置一个GPU实例来运行文本生成的Web界面,我们将从hugging face下载一个大型语言模型,然后与其交流。

设置RunPod账户

首先,我们将开始设置RunPod账户,点击这里,您将进入RunPod的主页,如下图所示。然后我们点击注册按钮

注册后,我们现在需要添加信用额度以开始使用云GPU实例。我们可以从10美元的最低存款开始,可以通过借记卡或信用卡进行支付。要购买信用额度,您需要点击左侧的计费部分

这里,我已经购买了10美元,我的可用余额是10美元。这只是一次性付款。在我的10美元用完后,将不再收取任何费用。当可用余额达到0时,我们创建的Pod将自动关闭。RunPod有自动付款选项,但我们将进行一次性付款设置,因为我们不必担心扣款问题。

GPU实例

在这里,当我们点击左侧的Community Cloud时,我们可以看到列出了所有可用的GPU,它们的规格以及它们的收费情况。Security Cloud也是一样的,唯一的区别是Security Cloud中的GPU由RunPod团队维护,而Community Cloud中的GPU属于社区,即来自世界各地的个人。

模板

在上图中,我们可以看到可用的预定义模板。我们可以在几分钟内使用这些模板运行GPU实例。许多模板,例如Stable Diffusion模板,允许我们使用稳定扩散来启动带有GPU实例的图像生成。RunPod VS Code模板允许我们在GPU实例中编写和利用GPU。

不同版本的PyTorch模板可以使GPU实例预装最新的PyTorch库,我们可以使用该库构建机器学习模型。我们还可以创建自定义模板,甚至可以与他人共享,以便他们可以使用相同的模板启动GPU实例。

使用RunPod运行LLMs

本节将启动一个GPU实例并安装Oobabooga文本生成Web界面。这可以用于从Hugging Face下载任何可用的模型,无论是原始的float16版本还是量化形式。为此,我们将选择包含24GB VRAM的Nvidia A5000 GPU实例,这对于我们的应用程序可能足够。所以,我选择了A5000并点击部署。

PyTorch模板

然后,由于大型语言模型需要PyTorch来运行,我们选择了PyTorch模板。当我们从此模板创建实例时,模板将预装有PyTorch库。但是对于此实例,我们将进行一些更改。所以,我们点击自定义部署。

在这里,我们将为容器硬盘分配75GB,以便在下载大型语言模型时能够适应。在这种情况下,我不想存储任何以后使用的数据。所以,将卷硬盘设为零。当设置为零时,当GPU实例被删除时,我们将丢失所有信息,对于这个示例案例,我对此没有问题。而我们运行的应用程序将需要访问7860端口。因此,我们暴露了7860端口。最后,我们点击覆盖。

覆盖

点击覆盖后,我们可以在下面的图像中看到GPU实例的每小时估计成本。因此,一个带有24GB VRAM GPU、29GB RAM和8vCPU的实例每小时的成本约为0.45美元,这非常便宜,比许多大型云服务提供商提供的价格低得多。现在,我们点击部署按钮。

在上面点击部署后,将在几秒钟内创建一个实例。现在我们可以通过上图中显示的Connect按钮通过SSH连接到这个GPU实例。点击Connect按钮后,将弹出一个窗口,在窗口中点击Start Web Terminal然后Connect to the Web Terminal,如下图所示,以访问我们的GPU实例。

现在,在Web浏览器中会出现一个新的选项卡,我们可以访问它。现在,在Web终端中,键入以下命令以下载text-generation-web-ui,允许我们从HuggingFace下载任何大型语言模型并用于推理。

git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
pip install -r requirements.txt

文本生成 Webui

现在,第一个命令将拉取text-generation-webui GitHub存储库,其中包含使用大型语言模型的Python代码。接下来的两行将进入目录并安装运行Python程序所需的所有必要库。要启动Web界面,请使用以下代码

python server.py --share

上述命令将启动Web界面。这将在本地主机上启动Web界面。但是,由于我们在远程GPU实例中运行应用程序,我们需要使用公共URL访问网站。-share选项将创建一个公共URL,我们可以点击它以访问text-generation-web-ui。

单击上面的图像中显示的gradio.live链接,以访问UI。在该UI中,转到顶部菜单中的Model部分。在下图中,我们看到在右侧,我们需要提供要使用的模型的链接。

WizardLM 30B

为此,让我们转到Hugging Face,找一个名为WizardLM 30B的模型,这是一个30亿参数的模型。我们将点击复制按钮以复制此模型的链接,然后将其粘贴到UI中,然后点击下载按钮以下载模型。

选择用户界面

下载完大型语言模型后,我们可以在UI的左侧部分选择它,位于Model下面。如果找不到已下载的模型,请单击其旁边的刷新按钮。现在选择我们刚刚下载的模型。我们下载的模型是一个16GB的模型。因此,为其分配大约20GB的GPU VRAM以在GPU上完全运行模型。然后点击加载按钮。这将加载模型到GPU,并且您可以在UI的右侧部分看到成功消息。

写一首诗

现在,大型语言模型已加载到GPU中,我们可以进行推理。通过单击顶部菜单中的Notebook,进入UI的Notebook部分。在这里,我通过询问它在太阳上运行一首诗来测试模型,例如“写一首关于太阳的诗”,然后单击生成按钮。生成的内容如下:

上面的图片显示了模型根据我们的查询生成了一首诗。这里最好的部分是这首诗与太阳有关。大多数大型语言模型都试图偏离最初的查询,但是在这里,我们的WizardLM大型语言模型保持了查询关系直到最后。除了文本生成之外,我们还可以与模型进行对话。为此,我们点击UI顶部的Chat Present,进入Chat Section。在这里,让我们向模型提问一些问题。

在这里,我们要求模型以要点形式提供关于二战的信息。模型成功地回复了一条与查询相关的聊天消息。模型还按照查询聊天消息中的要求以要点形式呈现了信息。因此,通过刚刚创建的GPU实例,我们可以下载任何开源的大型语言模型并在UI中使用它。

结论

在本文中,我们介绍了一个名为RunPod的云平台,提供GPU无服务器服务。逐步地,我们看到了如何在RunPod上创建一个帐户,然后如何在其中创建一个GPU实例。最后,在GPU实例中,我们看到了运行一个文本生成界面的过程,该界面可以让我们下载开源的生成式AI大型语言模型并推断模型。

主要观点

本文的一些主要观点包括:

  • RunPod是一个提供GPU服务的云平台。
  • RunPod以两种方式提供服务。一种是社区云服务,我们租用的GPU来自某个个人,价格便宜;另一种是安全云服务,我们创建的任何GPU实例都属于RunPod的GPU。
  • RunPod带有包含一些样板代码的模板,我们可以构建,即使用这些模板创建的GPU实例将自带这些(库/软件)安装。
  • RunPod提供自动和一次性付费服务。

常见问题

本文中显示的媒体不归Analytics Vidhya所有,仅在作者的授权下使用。