从基础设施到推理:使用 HashiStack 扩展 AI/ML 工作负载

码匠2个月前技术前沿5230

从基础设施到推理:使用 HashiStack 扩展 AI/ML 工作负载

回顾我在 HashiConf 2023 的经历,有一件事变得非常清晰:"AI 革命"实际上是一场基础设施革命。

构建高性能模型只是战斗的一部分。真正的挑战在于"管道工程"——保护 LLM API 密钥、编排昂贵的 GPU 资源,以及确保可重现的环境。

在本文中,我将分解如何使用最新的 HashiCorp 工具来解决 AI/ML 工作负载中的三大"第二天"问题。

1. 使用 Nomad 编排 GPU 工作负载

会议中我最喜欢的一个收获是 Nomad 在非容器化和批处理工作负载方面的持续简洁性。在机器学习领域,我们经常处理原始 Python 脚本或专用 CUDA 二进制文件,这些文件并不总是能很好地适应大型 Kubernetes 集群带来的开销。

架构决策:专用节点池

不要让你的 Web 层微服务与训练任务争夺资源。使用 Nomad 节点池来隔离你昂贵的 GPU 实例,确保训练任务有足够的资源空间。

代码示例(Nomad 作业规范):

此作业专门针对标记为 gpu-nodes 的节点,并为批处理训练任务请求专用 NVIDIA GPU。

job "llama-finetune-batch" {
  datacenters = ["dc1"]
  type = "batch" # 完美适用于一次性训练运行

  group "ml-engine" {
    constraint {
      attribute = "${node.class}"
      value = "gpu-nodes"
    }

    task "train" {
      driver = "docker"
      config {
        image = "nvidia/cuda:12.0-base"
        command = "python3"
        args = ["/local/train_script.py", "--epochs", "10"]
      }

      resources {
        cpu = 4000
        memory = 8192
        device "nvidia/gpu" {
          count = 1
        }
      }
    }
  }
}

2. 使用 Terraform Stacks 管理"模型蔓延"

HashiConf 2023 的一个重大亮点是 Terraform Stacks 的预览版。对于 AI 团队来说,这是一个游戏规则改变者。我们经常有相互依赖的基础设施:VPC、用于数据的 S3 存储桶、SageMaker 端点,以及 Pinecone 或 Weaviate 等向量数据库。

关键亮点:基础设施作为单一单元

与其管理五个不同的工作区并通过脆弱的数据源将它们"连接"在一起,不如使用 Stacks 将整个 ML 环境定义为一个可在开发、暂存和生产环境中重复使用的单元。

逻辑如下:

如果你在"计算"组件中更改了 GPU 实例类型,Terraform Stacks 会自动处理对"服务"组件的下游更新。这减少了手动编排 terraform apply 链的操作,而这些操作通常会导致复杂 AI 环境中的配置漂移。

3. 使用 Vault 和身份验证保护 LLM 密钥

会议强调了基于身份的安全性。如果你使用 OpenAI、Anthropic 或 HuggingFace,你就有敏感的 API 密钥。不要将它们硬编码在环境变量中。

架构决策:通过 AppRole 实现动态密钥

使用 Vault 的 AppRole 为你的 Python 应用程序赋予唯一身份。应用程序"登录"到 Vault,证明其身份,并获取短期令牌来读取 API 密钥。

代码示例(Python 集成):

import hvac
import os

# 1. 使用平台分配的身份进行身份验证
client = hvac.Client(url=os.environ['VAULT_ADDR'])
client.auth.approle.login(
    role_id=os.environ['VAULT_ROLE_ID'],
    secret_id=os.environ['VAULT_SECRET_ID']
)

# 2. 即时获取 API 密钥
secret_response = client.secrets.kv.v2.read_secret_version(
    path='ml-api-keys/openai',
    mount_point='secret'
)

openai_api_key = secret_response['data']['data']['api_key']
# 现在可以使用该密钥进行推理调用...

最终思考

HashiConf 2023 表明,DevOps 的未来不仅仅是管理服务器,而是管理大规模的复杂性。

  • Nomad 负责处理 GPU 的繁重工作。
  • Vault 保护"大脑"(API 密钥和数据)。
  • Terraform Stacks 管理整个系统的"骨架"。

你是否在 AI 工作负载中使用 HashiStack?我很想听听你在架构决策方面的经验!

相关文章

现代响应式网站设计的最佳实践与技术选型

现代响应式网站设计的最佳实践与技术选型在当今移动互联网时代,响应式网站设计已成为企业在线展示的标配。一个优秀的响应式网站不仅能提供良好的用户体验,还能显著提升搜索引擎排名和转化率。响应式设计的核心原则...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。