• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cesign
V2EX  ›  程序员

把 10.8GB vLLM 镜像的 Pod Ready 从 4m35s 降到 14s: Hermes + SOCI lazy loading 实测

  •  1
     
  •   cesign · 4h 59m ago · 353 views

    最近在看 Kubernetes 上 AI 推理服务的冷启动问题,发现很多时候慢的不只是模型加载,容器镜像本身也很夸张。

    比如 vLLM 这类镜像,里面有 PyTorch 、CUDA 、Python 依赖、系统库,动不动就是 10GB+。传统 containerd / overlayfs 路径下,节点要先完整下载并解压镜像,Pod 才能真正起来。对 Karpenter 这种弹性扩容场景来说,这部分时间会很明显。

    我们做了一个小项目 Hermes:

    https://github.com/cloudpilot-ai/hermes

    想法是:不让业务团队改 Dockerfile 、不重建镜像、不改 CI/CD ,也不改原来的 image reference 。平台侧定义一个 HermesPolicy ,controller 在集群内自动为匹配到的镜像构建并缓存 SOCI index ,节点上的 daemon 再用这些 index 做 lazy loading 。

    这次用 EKS + Karpenter 跑了一个简单对比,镜像是:

    763104351884.dkr.ecr.us-east-1.amazonaws.com/vllm:0.9-gpu-py312-ec2

    大概 10.8GB 。

    普通节点上,从 Pod 调度到节点后,到容器 Running/Ready:

    5m04s - 29s = 4m35s

    开启 Hermes 的节点上,在 HermesPolicy 已经 Ready 、SOCI artifact 已经构建好的前提下:

    44s - 30s = 14s

    也就是这个场景里,镜像拉取/挂载到容器启动这段,从 4m35s 降到了 14s 。

    需要强调一下:这个结果不包含首次 index 构建耗时,也不等于 vLLM first token latency 。Pod Ready 变快,只说明容器镜像这条路径被 lazy loading 优化了。后面还需要继续测 vLLM readiness 、first request TTFT 、warmup 后真实请求延迟。

    Hermes 现在的定位更像一个集群侧能力:应用继续发原来的 OCI image ,平台通过策略决定哪些镜像需要被 lazy load 。类似:

    apiVersion: hermes.cloudpilot.ai/v1alpha1
    kind: HermesPolicy
    metadata:
      name: prod-large-images
    spec:
      paused: false
      imageSelectors:
        - imageRegex: ".*vllm.*"
      platforms:
        - linux/amd64
    

    目前还比较早期,欢迎大家关注项目: https://github.com/cloudpilot-ai/hermes

    2 replies    2026-05-28 17:34:06 +08:00
    gyl1989113
        1
    gyl1989113  
       2h 14m ago
    强,跟 Karpenter 结合用对吧
    cesign
        2
    cesign  
    OP
       58 mins ago
    @gyl1989113 是的是的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3569 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:32 · PVG 18:32 · LAX 03:32 · JFK 06:32
    ♥ Do have faith in what you're doing.