背景:從 TorchNeuron 到可查詢的支援清單
Hugging Face 部落格在 2026 年 10 月 23 日刊登由 David Corvoysier 撰寫的文章,說明如何查詢模型在 AWS Trainium 上的支援狀況。此前團隊已介紹過 TorchNeuron,也就是 AWS Trainium 的原生 PyTorch 後端,實作於 torch-neuronx 套件中。這套後端的關鍵價值,是讓 Transformers 函式庫得以在 Trainium 上執行自身的建模程式碼,運作方式與在其他裝置上相去不遠,因此 Hub 上的 Transformers 模型理論上都有機會直接跑起來。然而「理論上可以」不等於「實務上可行」,模型架構、分片策略、編譯器版本與記憶體需求都會左右結果。正因如此,團隊建立了 torch-neuronx model support 這個 Space,針對 Hub 上最熱門的模型逐一實測,直接回答模型能否不經修改就在 Trainium 上運行,並提供可自行重現的腳本。
查詢介面與涵蓋範圍
這個 Space 預設停在 Selected 檢視,清單由團隊從 Hub 熱門模型中依下載量與 trending 分數挑選。每一列會顯示該模型的測試結果、被分片到幾個 Trainium 核心、包含編譯在內的實際執行時間,以及峰值裝置記憶體用量。若要查特定模型,可切換到 Trending 或 Downloads 檢視並輸入部分名稱;這兩個檢視沿用 Hub 自身的排名,一次呈現一個任務類別,且不論該模型是否曾被測試都會列出。當某個模型被刻意排除,Space 會說明原因,多數情況是尚未排入優先順序,少數則是確實不相容。使用者也能選擇要查看的 Neuron 編譯器 neuronx-cc 版本與 Transformers 版本,因為不同版本組合會得到不同結果。文章寫作當下,測試僅涵蓋 Transformers 模型,且限定文字生成與圖像到文字兩類任務,未來預計擴展到 diffusers、sentence transformers 及其他 Transformers 任務。
什麼叫做「跑得起來」
每一項測試都會在 Trainium2(trn2)執行個體上載入模型,並將權重分片到足以容納它的最少核心數。多數模型採用張量平行(tensor parallelism)分片;沒有張量平行計畫的混合專家模型(mixture-of-experts)則只使用專家平行。載入完成後,測試會生成 32 個 token 並進行檢查。若模型只跑在單一核心,產生的 token 會與同一權重檢查點在 CPU 上的執行結果逐項比對;若模型經過分片,則改由一個小型評判模型確認輸出是否為流暢英文。當時的測試範圍限於能放進 4 台 Trainium2 裝置的模型,換算下來最多 16 個核心。這裡的 PASS 只代表短序列生成的正確性通過驗證,並不代表吞吐量表現,也不保證更長的生成內容沒問題。換句話說,查詢結果適合作為「能不能起步」的篩選依據,而不是效能評比。
自行重現與編譯快取
在 Space 中選定模型後,可以看到實際的執行方式。頁面會列出測試所用的 Neuron 軟體堆疊、需要額外安裝的套件,以及當時執行的 run.py 腳本。這個腳本依循 TorchNeuron 發布時的做法:以 from_pretrained 載入模型,必要時進行分片,再透過靜態快取與 torch.compile(backend="neuron") 生成輸出。在配備該軟體堆疊的 trn2 執行個體上,例如 AWS Neuron Deep Learning Container,安裝完套件後直接執行 python3 run.py 即可,不需要動用 torchrun,因為當模型被分片時,腳本會自行啟動所需的 torch.distributed 工作行程。第一次執行會先編譯模型計算圖,這個步驟相當耗時;若想略過,可以從公開的 NEFF 快取桶複製測試時由同一編譯器產生的計算圖,Space 會提供對應編譯器版本的指令,將 hf://buckets/aws-neuron/torch-neuronx-neff-cache/neuronxcc-<version> 的內容同步到本機 /tmp/neff_cache。這麼做能大幅縮短重現時間,但前提是編譯器版本必須正確對應。
結果本身就是一份可查詢的資料集
Space 呈現的所有內容,都來自公開的 aws-neuron/torch-neuronx-model-support 資料集。這個資料集以 neuronx-cc 與函式庫版本的每一種配對為單位,各自存放一個 Parquet 檔案。每一列記錄模型的測試結果、失敗時的回報錯誤、整個軟體堆疊的版本資訊,以及實際執行的 run.py。使用者可以直接用 pandas 讀取並過濾,例如載入資料集後,針對特定模型編號篩選出 neuronx-cc 版本、函式庫、核心數與結果等欄位。資料集卡會詳細說明每一種結果狀態的意義,讓查詢者能區分「通過」、「失敗」與「未測試」之間的差別。這種設計把一次性的測試活動轉化為可累積、可追溯的公開紀錄,也讓版本差異造成的行為變化有跡可循。
影響、限制與實務意義
這套查詢工具解決的是一個很具體的痛點:過去要在 Trainium 上嘗試新模型,往往得先投入時間安裝環境、處理分片與編譯,最後才發現模型根本跑不起來。現在可以先查表,再決定是否投入資源。它同時提供兩個層次的價值:一是快速篩選,二是可重現的基準,因為測試腳本、版本與環境條件都公開透明。限制也很明確。涵蓋範圍目前只限 Transformers 的文字生成與圖像到文字模型,且模型必須能放進 4 台 trn2 裝置、最多 16 個核心;分片模型的驗證依賴評判模型判斷英文流暢度,而非逐 token 精確比對;PASS 的定義僅限 32 個 token 的短序列生成,不涉及吞吐量、延遲或長序列穩定性。此外,靜態快取與 torch.compile 的組合代表這是一條特定推理路徑的驗證,不能直接外推到訓練或微調情境。對於正在評估是否把工作負載搬上 Trainium 的團隊而言,這份清單適合用來縮小候選範圍,但要做出正式決策,仍須自行針對實際序列長度、批次大小與吞吐需求進行量測。團隊已表示會把測試範圍擴展到 diffusers、sentence transformers 與其他任務,屆時這份公開資料集的參考價值會進一步提高。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。