Llama 3.1 405B 推理服务部署:初学者指南

Llama 3.1 405B 推理服务部署:初学者指南

引言

本文将以 8 卡 H100 GPU 实例为例,展示如何部署 Llama3.1–405B。自行部署大型模型既耗时又昂贵。为避免这类繁琐且高成本的工作,你可以考虑直接使用 Llama3.1–405B。在 AI 行业寻找优秀的模型提供商平台,并通过 OpenAI API 标准使用推理服务。这些平台用户友好,且按量付费的定价模式经济实惠、易于管理。我们推荐 Novita AI 提供的 Llama3.1–405B 推理 API 服务。

Llama3.1–405B 部署要求

Meta 发布的所有 Llama3.1 模型包括 8B、70B 和 405B。Llama3.1–405B 模型是迄今为止最大的开源大语言模型,参数达到 4050 亿。该模型的性能评估结果优于 GPT-4 和 GPT-4o,与 Claude3.5-Sonnet 相当。

将如此大的模型加载到 GPU 上非常困难。原始 FP16 版本的 405B 模型需要 810GB 的 GPU 内存,如下图所示。然而,以当前最强大的可用 GPU H100 为例,8 卡服务器无法直接加载该版本的模型。需要对 FP16 版本的模型进行量化,将其转换为低精度表示,从而降低内存需求并成功加载到 GPU 上。

Llama3.1 模型与 Llama3 模型具有相似的架构,这使得推理框架易于适配。像 vLLM 这样的开源推理解决方案可以快速调整以支持大型 Llama3.1–405B。

要部署 Llama3.1–405B 的推理服务,三个关键准备工作是:

  • 硬件:建议租用 8 卡 H100 GPU 服务器实例,并预留约 1.5TB 存储空间。
  • 模型:准备一个 Hugging Face 账户,并下载原始 Llama3.1–405B 或其 FP8 或 INT4 版本模型。
  • 推理框架:下载最新版本的 vLLM v0.5.3.post1。

模型准备

准备 8 卡 H100 GPU 服务器后,登录服务器并下载模型。下面介绍如何下载 FP16 版本模型并将其转换为 FP8 和 INT4 量化版本(当然,你也可以从 Hugging Face 下载预量化模型)。

建议从 Hugging Face 平台下载 Instruct 版本。首先注册并登录 Hugging Face。在设置页面上创建并保存当前用户的 Access Token,下载模型时会用到。

打开 Llama3.1–405B 模型页面:https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct,向 Meta 提交模型申请,等待约半小时授权。

回到 GPU 服务器,安装 Hugging Face 客户端应用程序并开始下载模型。命令如下:

pip install huggingface-hub
huggingface-cli login ## 输入 Access Token
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct ## 开始下载 405B

经过较长等待(取决于网络),800GB 的 405B 模型将下载到本地。调用 huggingface-cli scan-cache 查看详细模型信息。

接下来,我们对原始模型进行 FP8 和 INT4 量化。

首先,下载 FP8 量化工具。可以使用开源的 AutoFP8:https://github.com/neuralmagic/AutoFP8。调用其中的脚本,使用动态模式进行量化。操作如下:

git clone https://github.com/neuralmagic/AutoFP8.git
cd AutoFP8
pip install -e . ## 本地编译并安装 AutoFP8 工具
python3 examples/quantize.py --model-id meta-llama/Meta-Llama-3.1-405B-Instruct --save-dir Meta-Llama-3-8B-Instruct-fp8 --activation-scheme dynamic --max-seq-len 2048 --num-samples 2048

量化脚本通过 --save-dir 指定量化模型版本的输出路径。由于这仅是权重量化,整体速度较快。

你也可以下载 Meta 提供的 FP8 量化版本:https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct-FP8。下载命令如下:

huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct-FP8

与 FP8 量化类似,你可以使用开源工具 AutoAWQ 进行 INT4 量化。该量化方法的地址为 https://github.com/casper-hansen/AutoAWQ。量化步骤如下:

构建推理框架

借助强大的开源社区,vLLM 是一个高效的推理框架,为各种 LLM 提供支持并及时更新。从 v0.5.3.post1 开始,vLLM 支持 Llama 3.1 模型的推理服务。

下载 vLLM 源代码并编译的步骤如下:

git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
pip install -e .

编译完成后,即可启动推理服务。

除了在本地编译 vLLM,你也可以将 vLLM 构建为 Docker 镜像。方法如下:

git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
docker build -t vllm_0.5.3.p1 .

你也可以直接下载 vLLM 镜像:

docker pull vllm/vllm-openai:v0.5.3.post1

运行推理服务

构建完 vLLM 推理框架后,可以启动 vLLM 并加载 Llama 3.1–405B 模型来执行推理服务。对于本地编译的 vLLM 推理框架,需要切换到 vLLM 源代码根目录,然后运行以下命令启动推理服务:

cd vllm
python3 -m vllm.entrypoints.openai.api_server --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768

如果你想通过 Docker 容器运行推理服务,可以使用以下命令:

docker run -d --gpus all --privileged --ipc=host --net=host vllm/vllm-openai:v0.5.3.post1 --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768

一旦 vLLM 推理框架运行起来,它将监听 18001 端口,同时接收和处理用户请求。你可以通过在本地终端向 completions 端点发送 POST 请求来快速验证推理服务。命令如下:

curl -X POST -H “Content-Type: application/json”
http://localhost:18001/v1/completions
-d ‘{“model”: “llama31-405b-fp8”, “prompt”: “San Francisco is a”}’

至此,Llama 3.1 模型的部署已完成。

Novita AI 是一站式云平台,助力您的 AI 雄心。集成 API、无服务器、GPU 实例——您所需的高性价比工具。无需基础设施,免费开始,让您的 AI 愿景成为现实。