如果你的模型放在某家云的对象存储里,训练用的却是另一家云商更便宜的 H100,光是把数据读到 GPU 跟前,这笔跨云 egress 费用就够肉疼。Hugging Face 和 SkyPilot 这周联合放出一个方案:模型和数据集留在 Hub 上不动,SkyPilot 负责把训练、微调、推理任务调度到任意一朵云的 GPU 集群,中间用一个 hf:// 协议直接挂载,读取全程免费。
听起来像是解决了 AI 基础设施最烦人的老毛病——计算和存储分居两地。但把价格表和 SkyPilot 自己的文档翻一遍会发现,零 egress 不是 Hugging Face 首创,挂载这件事也没有宣传里那么丝滑。
数据不动,算力四处跑
发生了什么说清楚很简单:HF Storage 新增 store: hf 后端,一个 hf:// 地址就能挂载 Bucket(读写)或模型 / 数据集仓库(只读),配合你已经在用的 HF_TOKEN,SkyPilot 就能把同一份数据接进 AWS、GCP、Lambda 等 20 多朵云,以及 K8s、Slurm、on-prem 集群。
机制上分两条路:MOUNT 走 hf-mount 的 FUSE 懒加载,读多少下多少,配合 Xet 的分块去重,增量 checkpoint 只传变动的部分;COPY 走 huggingface_hub 提前整包下载,笨但稳。受影响的主要是那些同时攥着多家云 GPU 预留额度的团队,以及负责跨云调度的 MLOps 工程师。
免egress这笔账要摊开算
省流版:HF 公开仓库存储价约 $12/TB·月、私有约 $18/TB·月,且不收 egress 和 CDN 费。对照组是主流公有云——GCS 的公网出站流量第一档大约 $0.12/GB 起,AWS、Azure 对跨区域 / 跨云传输同样收费。摊开算,HF 的优势是真实的:同一份数据集在 GCS 上跨云读一次要付出站费,在 HF 上是零。
但零 egress 这件事,Hugging Face 不是发明者。Cloudflare R2 三年前就把零 egress 当核心卖点,靠 S3 兼容 API 和 r2.dev 直接出站不收费,至今仍是这条赛道最成熟的对手。HF 这次做的,是把同样的定位嫁接到「模型 / 数据集原生托管」的场景里——你的模型本来就在 Hub 上,不必为省 egress 再搬去另一个对象存储,这是它比 R2 顺手的地方,不是价格逻辑上的新发明。
FUSE挂载的坑,官方文档自己写明白了
博客通篇没提的是,MOUNT 模式依赖的 hf-mount,上游二进制要求 glibc 2.34 以上,像 Ubuntu 20.04 这类还在跑 glibc 2.31 的旧镜像直接装不上,得换 Ubuntu 22.04 之类的新镜像。
更关键的是,hf-mount 直接打开 /dev/fuse,不走 fusermount,这跟 SkyPilot 默认给 Kubernetes 配的 fusermount-shim 机制对不上。很多托管 K8s(EKS、GKE、AKS 这类)的 Pod 默认是非特权容器,官方文档自己写了:这种环境下挂载可能失败,建议退回 COPY 模式。
- 风险.COPY 模式兼容性好,但要整份下载完才能开训,原文强调的「懒加载让GPU几乎立刻开工」的收益,在这个模式下基本作废。
目前也没看到 GitHub issue 区有独立于官方文档之外的实测反馈——这套集成有没有在生产级 Kubernetes 环境里真正跑顺,现在只有 Hugging Face 和 SkyPilot 自己说了算。
谁会真正用上,谁会被倒逼
真正受益的是那些手里同时攥着 CoreWeave、Nebius、GCP 好几张预留 GPU 牌桌的团队——他们本来就要为「数据搬家」多付一笔钱,现在这笔钱省了。对 MLOps 团队来说,这是个先验证再上线的活儿:自家 K8s 集群是不是非特权 Pod、基础镜像 glibc 版本够不够,得先测一遍,测不过就只能退回 COPY,吃掉懒加载的红利。
对 S3、GCS、Azure Blob 这些老牌对象存储来说,这是又一次被「零egress」这张牌逼到墙角——AI 训练读多写少的特性,让 egress 费成了它们最容易被绕开的收入项。天下熙熙,皆为利来;egress 费从来不是技术门槛,是商业模式的护城河,这次只是护城河被绕了个弯。
零egress不是慈善,是把收费入口换了个地方。
接下来该盯的,不是 HF 这篇博客怎么写,而是 SkyPilot 的 issue 区会不会真出现「非特权 Pod 挂载失败」的实测反馈——那才是这套方案能不能真正落地生产环境的分水岭。
