在 Google Cloud Vertex AI 上部署 Meta Llama 3.1 405B

Meta Llama 3.1 405B 可以使用 Hugging Face 的深度学习容器(DLC)和文本生成推理(TGI)在 Google Cloud Vertex AI 上部署。这使用户能够在受管环境中运行 Meta 最大的开源大语言模型,并利用 A3 加速器优化的机器实现高性能推理。

硬件要求与内存管理

部署 Meta Llama 3.1 405B 需要大量 GPU 显存,且显存需求取决于模型权重的精度。加载模型检查点的大致内存需求如下:

模型大小 FP16 FP8 INT4
8B 16 GB 8 GB 4 GB
70B 140 GB 70 GB 35 GB
405B 810 GB 405 GB 203 GB

由于单个 H100 节点(8 块 80GB GPU)大约提供 640GB 显存,405B 模型必须以较低精度(如 FP8)或在多节点设置下运行。针对本部署,推荐使用 A3 High GPU 机器类型,提供 8 块 NVIDIA H100 80GB GPU、208 个 vCPU 和 1872 GB 内存。

在 Vertex AI 上的部署流程

部署模型包括在 Vertex AI 模型注册表中注册模型,然后将其部署到 Vertex AI 端点。

模型注册

注册使用 google-cloud-aiplatform Python SDK 完成。该过程需要支持 Meta Llama 3.1 架构的 Hugging Face TGI DLC(其使用的 RoPE 缩放方法不同于 Llama 3)。关键配置环境变量包括:

  • MODEL_ID:设置为 meta-llama/Meta-Llama-3.1-405B-Instruct-FP8
  • HUGGING_FACE_HUB_TOKEN:用于受限 Meta Llama 仓库的只读访问令牌。
  • NUM_SHARD:设置为 8,以利用 A3 实例上的所有 GPU。
  • HF_XET_HIGH_PERFORMANCE:建议设置为 1,以加速约 400 GiB 模型权重的下载。

端点部署

注册完成后,使用 a3-highgpu-8g 机器类型和 8 块 NVIDIA H100 80GB 加速器将模型部署到 Vertex AI 端点。完整的部署过程通常需要 25-30 分钟,包括资源分配、权重下载(约 10 分钟)以及加载到 TGI(约 2 分钟)。

运行在线预测

Vertex AI 提供 /predict 路由,通过 TGI DLC 提供文本生成服务。由于使用的是 /generate 端点,输入必须使用相应的聊天模板进行格式化后再发送到端点。

输入格式化

用户应使用 transformers 库中的 apply_chat_template 方法,以确保对话按照 Meta Llama 3.1 的要求正确格式化。典型的格式化提示包含特定的标记,例如 <|begin_of_text|><|start_header_id|><|eot_id|>

预测方法

预测可以通过以下三种主要方式执行:

  1. 同一会话 Python:在部署后立即使用 deployed_model.predict 方法。
  2. 不同会话 Python:通过资源名称 (projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/{ENDPOINT_ID}) 实例化 aiplatform.Endpoint
  3. Vertex AI UI:在在线预测 UI 中提供包含格式化 inputs 和生成 parameters(例如 max_new_tokenstemperaturetop_p)的 JSON 负载。

资源管理

为避免不必要的费用,使用后应清理资源。这包括使用 deployed_model.undeploy_all() 从所有端点撤销模型部署,使用 deployed_model.delete() 删除端点,最后使用 model.delete() 将模型从注册表中移除。

Sources