在 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 页面。
步骤二
点击侧边栏中的“实例”,然后点击“启动实例”。
步骤三
使用以下设置配置 EC2 实例并启动新实例。
名称:您的应用程序名称
Amazon 系统映像 (AMI): Ubuntu-Latest
实例类型: g4dn.xlarge
密钥对:创建新密钥对并使用该密钥
对 网络设置:使用默认值,并添加"Allow HTTPS traffic from the internet"&"Allow HTTP traffic from the internet"
存储: 16 GB
步骤 4(仅适用于 Streamlit 应用程序)
转到最近启动的新实例并定义一些入站角色,因为我们正在运行 Streamlit 应用程序,并且它在端口8501上运行,所以我们必须定义该规则。
在这里,我们将点击“编辑入站规则”,添加以下自定义 TCP 角色,端口为8501,然后点击保存规则。
步骤五
前往最近推出的 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
步骤 7
下载完所有依赖项后,您需要连接到 GitHub,从 GitHub 仓库克隆(下载)您的 Streamlit 应用程序及其依赖项。
您可以使用以下命令克隆您的仓库:
git clone "Your-repository"
克隆完成后,您可以使用以下命令进入您的仓库:
cd "Your-repository"
步骤八
首先,我们需要设置一个虚拟环境,以确保 Streamlit 应用程序的所有依赖项都安装在一个隔离的环境中。这有助于避免与系统级 Python 包发生冲突。
sudo apt install python3-venv
python3 -m venv venv
source venv/bin/activate
虚拟环境创建完成后,我们需要安装 Streamlit 应用程序所需的所有依赖项。为此,我们将pip读取配置requirements.txt文件并下载其中定义的所有库。
pip install -r requirements.txt
步骤九
一切安装就绪后,就可以运行基于 LLM 的应用程序了。
为此,您需要运行以下命令:
python3 -m streamlit run <your-application-name>
python3 -m streamlit run app.py
点击外部链接后,您将被重定向到您的 Streamlit 应用。这是公开链接,您可以将其分享给您的朋友,他们也可以使用您的应用。
瞧!
上述命令将使应用程序在您的终端连接期间持续运行。终端关闭后,应用程序也将停止工作。
为确保应用程序在终端断开连接后仍能继续运行,您需要运行以下命令。
nohup python3 -m streamlit run app.py
这样nohup可以确保即使您注销或丢失终端会话,应用程序也能继续运行。
结论
部署 LLM 不必受限于硬件。AWS 提供了一种灵活且经济高效的方式,让您无需投资昂贵的 GPU 即可充分利用 LLM 的强大功能。借助合适的实例和一些优化技术(例如量化),您可以在云端高效运行复杂的模型。遵循本指南,您现在即可部署自己的基于 LLM 的应用程序,使其易于访问且可扩展。因此,立即开始云部署,轻松分享您的创新成果,让您的应用程序发挥全部潜力!
参考:
- https://aws.amazon.com/ec2/instance-types/
- https://docs.aws.amazon.com/ec2/index.html
- https://docs.streamlit.io/












