SageMaker Hyperpod#

前提条件#

按照以下说明创建一个启用分层存储的 Amazon SageMaker HyperPod 集群:

https://docs.aws.amazon.com/sagemaker/latest/dg/managed-tier-checkpointing-setup.html

这启用提供 LMCache 共享内存访问的 ai-toolkit 守护进程。

示例配置#

chunk_size: 256
local_cpu: True
max_local_cpu_size: 5
remote_url: "sagemaker-hyperpod://$NODE_IP:9200"

配置参数#

SageMaker Hyperpod 特定(在 extra_config 中)#

  • sagemaker_hyperpod_bucket: KV 存储命名空间的桶名称(默认: "lmcache")

  • sagemaker_hyperpod_shared_memory_name: 共享内存段的名称(默认: "shared_memory")。设置为 None 以禁用共享内存。

  • sagemaker_hyperpod_max_concurrent_requests: 每时每刻允许的最大并发 HTTP 请求数(应用级限流,默认值:100,最小值:1)。此限制适用于每个 LMCache 引擎实例。对于多个工作进程(例如,高 TP),每个工作进程创建自己的引擎并具有独立的限制。

  • sagemaker_hyperpod_max_connections: 每个 LMCache 引擎在所有守护进程中的连接池中允许的最大 TCP 连接总数(默认:256,最小:1)。对于典型的单守护进程设置,这实际上限制了一个引擎与一个守护进程之间的连接。每个节点的 N 个工作线程与守护进程的总连接数 = N × 此值。

  • sagemaker_hyperpod_max_connections_per_host: 每个 LMCache 引擎到单个守护进程地址(IP:端口)的最大 TCP 连接数(默认:128,最小:1)。“主机”指的是守护进程的网络地址,而不是客户端机器。对于今天典型的单守护进程设置,这与 max_connections 的效果相似。此参数支持未来的多守护进程配置,其中一个引擎可以连接多个守护进程以实现负载均衡。对于每个节点连接到同一守护进程的 N 个工作者,总连接数 = N × 此值。对于高吞吐量设置,按比例减少(例如,对于 8 个工作者设置为 16,以实现 ~128 个总连接)。

  • sagemaker_hyperpod_timeout_ms: 租约获取请求的超时时间(毫秒)(默认值:5000,最小值:100)

  • sagemaker_hyperpod_lease_ttl_s: 服务器端租约超时时间(单位:秒,默认值:30.0)

  • sagemaker_hyperpod_put_stream_chunk_bytes: 流式 PUT 请求的块大小(以字节为单位)(默认: 65536,最小: 1024)

  • sagemaker_hyperpod_use_https: 启用 HTTPS 而不是 HTTP(默认: False)。注意: 如果 remote_url 已经包含 http://https:// 协议,则忽略此设置。

  • save_chunk_meta: 是否将块元数据与数据一起保存(为提高性能设置为 False)

Kubernetes 部署要求#

节点 IP 的环境变量#

添加 NODE_IP 环境变量以解析本地节点的 IP 地址:

env:
  - name: NODE_IP
    valueFrom:
      fieldRef:
        fieldPath: status.hostIP

/dev/shm 卷配置#

SageMaker Hyperpod 需要 /dev/shm 以进行高性能共享内存操作:

volumeMounts:
  - name: dshm
    mountPath: /dev/shm/shared_memory
    subPath: shared_memory

volumes:
  - name: dshm
    hostPath:
      path: /dev/shm