Hugging Face 與 SkyPilot 整合,實現零出站費用的 AI 儲存

Hugging Face 與 SkyPilot 整合,實現零出站費用的 AI 儲存

Hugging Face 與 SkyPilot 已完成整合,讓 AI 開發者可以在任何雲端供應商上執行運算工作負載,同時將其模型與數據集儲存在 Hugging Face Hub 上。此整合透過提供零出站(zero-egress)儲存,消除了「跨雲傳輸稅」,讓使用者無論 GPU 位在何處,都能直接將 Hub 儲存庫與 Buckets 掛載到 SkyPilot 作業中。

跨多雲的零出站儲存

雲端 GPU 算力通常分散在多個供應商(超大型雲端、新興雲端及地端)之間。傳統上,將數據從區域性物件儲存(如 AWS S3)移至不同雲端的 GPU 會產生高昂的出站費用(AWS 約為 $0.09/GB)。

透過使用不收取出站或 CDN 費用的 Hugging Face Storage,團隊可以從單一來源讀取分散在 20 多個雲端、Kubernetes 和地端集群的模型與數據集。這消除了在每個供應商的 bucket 中維護冗餘數據副本的需求,並防止工作負載因數據所在地而被迫「綁定」在特定雲端。

技術實作:store: hfhf://

SkyPilot 現在透過 store: hf 配置與 hf:// URI scheme,將 Hugging Face Storage 作為一等公民後端支援。這允許掛載三種類型的 Hub 資產:

  • Hugging Face Buckets: 提供對 checkpoint、日誌與處理後數據的讀寫存取。
  • Model Repositories: 提供對模型權重的唯讀存取。
  • Dataset Repositories: 提供對數據集的唯讀存取,通常固定在特定版本。

掛載模式:MOUNT vs. COPY

  • MOUNT: 使用 hf-mount FUSE 後端。它執行延遲讀取(lazy reads),僅抓取應用程式所需的位元組。這讓 GPU 幾乎可以立即開始訓練或推論,無需等待完整下載。MOUNT 還會為重複讀取維護磁碟快取。
  • COPY: 透過 huggingface_hub 客戶端預先下載資產,不需要特殊的 FUSE 要求。

身份驗證透過作為 SkyPilot 執行秘密參數傳遞的單一 HF_TOKEN 處理,這在所有雲端供應商中皆適用。

以 Xet 為後盾的高效去重技術

Hugging Face Buckets 基於 Xet 构建,它採用內容定義分塊(content-defined chunking)將文件拆分為約 64 KB 的分塊。這種架構提供了多項效率提升:

  • 增量 Checkpoints: 僅上傳儲存點之間發生變化的分塊,減少了 adapter checkpoints 或凍結層的傳輸時間。

  • 模型變體: 基礎模型與其微調版或量化版之間的共享分塊僅需儲存一次。

  • 數據集追加: 在大型 Parquet 文件中追加行僅需傳輸新數據。在測試中,向一個 10 萬行的表格追加 1 萬行,僅傳輸了約 10 MB 而非約 106 MB。

  • 快速重新上傳: 重新上傳已存在於 bucket 中的 blob 速度顯著加快(例如,一個 8.43 GB 的文件,重新上傳僅需 8 秒,而非 24 秒),因為只需傳輸分塊雜湊值(chunk hashes)。

效能基準測試

在一個使用 Qwen/Qwen3.5-4BMultilingual-Thinking 數據集的微調測試中,觀察到以下結果:

  • 模型載入: 模型在大約 30 秒內即可準備好進行訓練,速度高達 ~500 MB/s。由於零出站政策,這在 AWS、GCP 和 Lambda 上不產生任何費用。
  • Checkpoint 寫入: Checkpoints(每個 8.43 GB)以以下吞吐量串流至 bucket:
Cloud GPU Checkpoint Write Speed
AWS (us-east-2) L40S ~168 MB/s
GCP (us-central1) L4 ~123 MB/s
Lambda (us-west-3) H100 ~112 MB/s

開始使用

要使用此整合功能,使用者可以安裝所需的套件:

pip install "skypilot[huggingface]"

接著使用者必須透過 hf auth login 或匯出 HF_TOKEN 環境變數進行身份驗證。對於 MOUNT 模式,基礎鏡像必須包含 /dev/fuse 與 glibc 2.34+。

Sources