AWS Trainium & Inferentia 文件

Neuron 模型快取

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Neuron 模型快取

為什麼要使用快取?

問題:大型模型的 Neuron 編譯需要 30-60 分鐘
解決方案:在幾秒鐘內下載預編譯模型

快取系統將編譯好的 Neuron 模型儲存在 HuggingFace Hub 上,為您的團隊省去了重新編譯的時間。當您訓練或載入模型時,系統會自動檢查是否存在快取版本,然後再開始昂貴的編譯過程。

主要優勢

  • 節省時間:在幾秒鐘內下載編譯好的模型,而不是花費數小時進行編譯
  • 團隊協作:在團隊成員和例項之間共享編譯好的模型
  • 降低成本:避免在雲實例上重複編譯的成本
  • 自動操作:與現有程式碼透明地協同工作

快速入門

訓練

from optimum.neuron import NeuronTrainer

# Cache works automatically - no configuration needed
trainer = NeuronTrainer(model=model, args=training_args)
trainer.train()  # Downloads cached models if available

推理

from optimum.neuron import NeuronModelForCausalLM

# Cache works automatically 
model = NeuronModelForCausalLM.from_pretrained("model_id")

就這樣!對於支援的模型類,快取會自動工作。

支援的模型

模型類 快取支援 用例 備註
NeuronTrainer ✅ 完全支援 訓練 訓練期間自動下載和上傳
NeuronModelForCausalLM ✅ 完全支援 推理 自動下載用於推理
其他 NeuronModelForXXX ❌ 無 推理 使用不同的匯出機制,無快取整合

重要限制:像 NeuronModelForSequenceClassificationNeuronModelForQuestionAnswering 等模型使用不同的編譯路徑,該路徑不與快取系統整合。只有 NeuronModelForCausalLM 和訓練工作流支援快取。

工作原理

快取系統在兩個層面上執行以最小化編譯時間

快取優先順序(從快到慢)

  1. 本地快取 → 從 /var/tmp/neuron-compile-cache 即時訪問
  2. Hub 快取 → 在幾秒鐘內從 HuggingFace Hub 下載
  3. 從頭編譯 → 大型模型需要 30-60 分鐘

快取內容:系統快取 NEFF 檔案(Neuron 可執行檔案格式)—— 即在 Neuron 核心上執行的已編譯二進位制產物,而不是原始模型檔案。

快取標識:每個快取的編譯都會根據以下因素獲得一個唯一的雜湊值

  • 模型因素:架構、精度(fp16/bf16)、輸入形狀、任務型別
  • 編譯因素:NeuronX 編譯器版本、核心數、最佳化標誌
  • 環境因素:模型檢查點版本、Optimum Neuron 版本

這意味著即使對您的設定進行微小更改也可能需要重新編譯,但相同的配置將始終命中快取。

私有快取設定

預設的公共快取(aws-neuron/optimum-neuron-cache)對使用者是只讀的——您可以下載快取的模型,但不能上傳您自己的編譯結果。這個公共快取只包含由 Optimum 團隊為常見配置編譯的模型。

對於大多數用例,您需要建立一個私有快取倉庫,用來儲存您自己編譯的模型。

為什麼使用私有快取?

  • 上傳您的編譯結果:儲存您編譯的模型以供團隊重複使用
  • 私有模型:確保專有模型編譯結果的安全
  • 團隊協作:在團隊成員和 CI/CD 之間共享編譯好的產物
  • 自定義配置:快取具有您特定批次大小、序列長度等的模型

方法 1:CLI 設定(推薦)

# Create private cache repository
optimum-cli neuron cache create

# Set as default cache
optimum-cli neuron cache set your-org/your-cache-name

方法 2:環境變數

# Use for single training run
CUSTOM_CACHE_REPO="your-org/your-cache" python train.py

# Or export for session
export CUSTOM_CACHE_REPO="your-org/your-cache"

先決條件

  • 登入:huggingface-cli login
  • 快取倉庫的寫許可權

CLI 命令

# Create new cache repository
optimum-cli neuron cache create [-n NAME] [--public]

# Set default cache repository  
optimum-cli neuron cache set REPO_NAME

# Search for cached models
optimum-cli neuron cache lookup MODEL_ID

# Sync local cache with Hub
optimum-cli neuron cache synchronize

高階用法

在訓練迴圈中使用快取

如果您不使用 NeuronTrainer 類,您仍然可以在自定義訓練迴圈中利用快取系統。當您需要更多地控制訓練過程,或者在與自定義訓練框架整合時,同時又想從快取的編譯結果中受益,這會非常有用。

何時使用此方法

  • 自定義訓練迴圈不符合 NeuronTrainer 模式
  • 需要精細控制的高階最佳化場景

注意:對於大多數用例,NeuronTrainer 會自動處理快取,是推薦的方法。

from optimum.neuron.cache import hub_neuronx_cache, synchronize_hub_cache
from optimum.neuron.cache.entries import SingleModelCacheEntry
from optimum.neuron.cache.training import patch_neuron_cc_wrapper

# Create cache entry
cache_entry = SingleModelCacheEntry(model_id, task, config, neuron_config)

# The NeuronX compiler will use the Hugging Face Hub cache system
with patch_neuron_cc_wrapper():
    # The compiler will check the specified remote cache for pre-compiled NEFF files
    with hub_neuronx_cache(entry=cache_entry, cache_repo_id="my-org/cache"):
        model = training_loop()  # Will use specified cache

# Synchronize local cache with Hub
synchronize_hub_cache(cache_repo_id="my-org/cache")

快取查詢

推理快取包含一個登錄檔,讓您可以在嘗試編譯之前搜尋相容的預編譯模型。這對於您希望完全避免編譯的推理場景尤其有用。

optimum-cli neuron cache lookup meta-llama/Llama-2-7b-chat-hf

示例輸出

*** 1 entries found in cache ***
task: text-generation
batch_size: 1, sequence_length: 2048
num_cores: 24, precision: fp16
compiler_version: 2.12.54.0
checkpoint_revision: c1b0db933684edbfe29a06fa47eb19cc48025e93

重要:找到條目並不能保證快取命中。您的確切配置必須與快取的引數相匹配,包括編譯器版本和模型修訂版本。

CI/CD 整合

快取系統在自動化環境中無縫工作

環境變數:在 CI 工作流中使用 CUSTOM_CACHE_REPO 指定快取倉庫

# In your CI configuration
CUSTOM_CACHE_REPO="your-org/your-cache" python train.py

認證:確保您的 CI 環境有權訪問您的私有快取倉庫

  • 設定具有適當讀/寫許可權的 HF_TOKEN 環境變數
  • 對於 GitHub Actions,將其儲存為倉庫機密

最佳實踐:

  • 為不同環境(開發/預釋出/生產)使用單獨的快取倉庫
  • 在設定自動化工作流時,考慮快取倉庫的許可權
  • 在長期執行的 CI 工作流中監控快取倉庫的大小

問題排查

“快取倉庫不存在”

Fix: Check repository name and login status
→ huggingface-cli login
→ Verify repo format: org/repo-name

“計算圖將被重新編譯”

Cause: No cached model matches your exact configuration
Fix: Use lookup to find compatible configurations
→ optimum-cli neuron cache lookup MODEL_ID

訓練期間快取未上傳

Cause: No write permissions to cache repository  
Fix: Verify access and authentication
→ huggingface-cli whoami
→ Check cache repo permissions

下載緩慢

Cause: Large compiled models (GBs) downloading
Fix: Ensure good internet connection
→ Monitor logs for download progress

清除損壞的本地快取

rm -rf /var/tmp/neuron-compile-cache/*

© . This site is unofficial and not affiliated with Hugging Face, Inc.