发布于 2026-01-06 3 阅读
0

在 AWS EC2 上部署您的 LLM

在 AWS EC2 上部署您的 LLM

你是否曾满怀热情地想要部署自己的大型语言模型(LLM),却因为笔记本电脑性能不足而束手无策?我完全理解你的感受。LLM 功能强大,但对计算能力要求极高——而我们大多数人都不具备这样的能力。

我自己也遇到过这个问题。我想用LLM(生命周期管理)做一个很酷的应用,供我的朋友们使用,但为了实现这个应用而购买昂贵的GPU显然是不现实的。于是,我开始寻找替代方案。就在那时,我发现了AWS。

使用 AWS 真是帮了我大忙。我不需要投资任何昂贵的硬件。AWS 的收费模式是按需付费。现在,我的三个不同的 LLM 应用都在云端运行,而且我不用在设备上花一大笔钱。

在这篇文章中,我将一步一步地指导你如何在云端搭建自己的学习生命周期管理(LLM)系统,并分享一些节省成本的技巧。如果我能做到,你也能做到!

入门

对于在 AWS 上部署,我们需要了解 LLM 的计算工作原理以及哪个实例最适合我们。

我将使用基于 LLM 的 RAG 应用程序,该应用程序使用 Streamlit 构建,采用 Meta 公司的 LLama2-7B 模型。

1. 了解正确的资源

由于每个大型语言模型 (LLM) 的参数数量不同,并且可能使用不同的数值精度,因此它们对推理和微调所需的 GPU 能力也各不相同。

以下是一个简单的经验法则,用于估算在推理过程中存储任何开源 LLM 模型参数所需的 GPU 内存量:

GPU 内存(字节)= 模型参数数量 × 每个参数的位数 ÷ 8(每字节位数)

例如,对于一个使用 32 位浮点数的 70 亿参数模型:

GPU 内存= 7,000,000,000 个参数 × 每个参数 32 位 ÷ 每个字节 8 位
GPU 内存= 28,000,000,000 字节
GPU 内存= 28 GB

然而,这种需求可能相当高。为了减少内存占用,我们可以使用量化技术。例如,使用 4 位量化:

GPU 内存= 7,000,000,000 个参数 × 每个参数 4 位 ÷ 每个字节 8 位
GPU 内存= 3,500,000,000 字节
GPU 内存= 3.5 GB

因此,将模型量化为 4 位可将 GPU 内存需求降低到大约 3.5 GB。

2. 选择哪种计算方式?

AWS 实例,如 g4、g5、p3 和 p4,是最新一代基于 GPU 的实例,可在 Amazon EC2 中为深度学习和高性能计算 (HPC) 提供最高性能。

计算和成本的一些示例如下:

实例类型 GPU类型 GPU 显存(GB) 虚拟CPU 按需付费价格(每小时)
g4dn.xlarge NVIDIA T4 16 4 0.526美元
g5.特大号 NVIDIA A10G 24 4 1.006美元
p3.2xlarge NVIDIA V100 16 8 3.06美元
g4dn.12xlarge NVIDIA T4 192 48 4.344美元
g5.8xlarge NVIDIA A10G 96 32 8.288美元
p3.8xlarge NVIDIA V100 64 32 12.24美元
p4d.24xlarge NVIDIA A100 320 96 32.77美元

分步指南

既然我们已经了解了所需的所有数学知识和资源,那就让我们在 AWS 上部署 LLM 应用程序吧。

步骤一

在 AWS 控制台中搜索 EC2。您将看到一个类似的 EC2 页面。

AWS EC2

步骤二

点击侧边栏中的“实例”,然后点击“启动实例”。

EC2实例

步骤三

使用以下设置配置 EC2 实例并启动新实例。

名称:您的应用程序名称
Amazon 系统映像 (AMI): Ubuntu-Latest
实例类型: g4dn.xlarge
密钥对:创建新密钥对并使用该密钥
对 网络设置:使用默认值,并添加"Allow HTTPS traffic from the internet"&"Allow HTTP traffic from the internet"
存储: 16 GB

配置-EC2-1
配置-EC2-2

步骤 4(仅适用于 Streamlit 应用程序)

转到最近启动的新实例并定义一些入站角色,因为我们正在运行 Streamlit 应用程序,并且它在端口8501上运行,所以我们必须定义该规则。

端口更改

在这里,我们将点击“编辑入站规则”,添加以下自定义 TCP 角色,端口为8501,然后点击保存规则

端口更改 2

步骤五

前往最近推出的 EC2 页面,点击连接按钮,然后连接您最近创建的实例。

EC2 配置

EC2 配置

步骤六

连接成功后,您将看到一个终端,您需要在其中运行以下命令来安装所需的依赖项和更新。

命令:

sudo apt update
sudo apt-get update
sudo apt upgrade -y
sudo apt install git curl unzip tar make sudo vim wget -y
sudo apt install python3-pip
Enter fullscreen mode Exit fullscreen mode

依赖关系

步骤 7

下载完所有依赖项后,您需要连接到 GitHub,从 GitHub 仓库克隆(下载)您的 Streamlit 应用程序及其依赖项。

您可以使用以下命令克隆您的仓库:

git clone "Your-repository"

克隆完成后,您可以使用以下命令进入您的仓库:

cd "Your-repository"

GitHub 仓库克隆

步骤八

首先,我们需要设置一个虚拟环境,以确保 Streamlit 应用程序的所有依赖项都安装在一个隔离的环境中。这有助于避免与系统级 Python 包发生冲突。

sudo apt install python3-venv
python3 -m venv venv
source venv/bin/activate
Enter fullscreen mode Exit fullscreen mode

虚拟环境创建完成后,我们需要安装 Streamlit 应用程序所需的所有依赖项。为此,我们将pip读取配置requirements.txt文件并下载其中定义的所有库。

pip install -r requirements.txt

要求

步骤九

一切安装就绪后,就可以运行基于 LLM 的应用程序了。

为此,您需要运行以下命令:

python3 -m streamlit run <your-application-name>
python3 -m streamlit run app.py
Enter fullscreen mode Exit fullscreen mode

运行LLM

点击外部链接后,您将被重定向到您的 Streamlit 应用。这是公开链接,您可以将其分享给您的朋友,他们也可以使用您的应用。

瞧!

Streamlit 应用程序

上述命令将使应用程序在您的终端连接期间持续运行。终端关闭后,应用程序也将停止工作。

为确保应用程序在终端断开连接后仍能继续运行,您需要运行以下命令。

nohup python3 -m streamlit run app.py

这样nohup可以确保即使您注销或丢失终端会话,应用程序也能继续运行。

结论

部署 LLM 不必受限于硬件。AWS 提供了一种灵活且经济高效的方式,让您无需投资昂贵的 GPU 即可充分利用 LLM 的强大功能。借助合适的实例和一些优化技术(例如量化),您可以在云端高效运行复杂的模型。遵循本指南,您现在即可部署自己的基于 LLM 的应用程序,使其易于访问且可扩展。因此,立即开始云部署,轻松分享您的创新成果,让您的应用程序发挥全部潜力!

参考:

  1. https://aws.amazon.com/ec2/instance-types/
  2. https://docs.aws.amazon.com/ec2/index.html
  3. https://docs.streamlit.io/
文章来源:https://dev.to/aws-builders/deploy-your-llm-on-aws-ec2-2ig3