Hugging Face 跟住早前公佈 TorchNeuron(torch-neuronx,AWS Trainium 嘅原生 PyTorch 後端)之後,而家正式開放一個模型支援查詢工具,逐一交代 Hub 上嘅開源模型喺 Trainium 上跑成唔成、跑喺邊幾顆核心、用咗幾耐、食幾多 device memory。

簡單講就係一張表,每個模型一行:結果、Trainium cores 數量、wall time(包括編譯)、peak device memory。想揾自己嗰個模型,可以喺 Trending 或 Downloads 視圖輸入名稱,按 Hub 自己嘅排名逐個 task 跟。被故意遺漏嘅模型會寫明原因,多數係「未排上優先級」,有時係「真係不相容」。你可以揀 Neuron 編譯器(neuronx-cc)同 Transformers 嘅版本嚟對照。

揀一個模型就睇到點樣自己跑:列出 Neuron stack、要 install 嘅 packages、還有 run.py。呢個 script 跟 TorchNeuron 之前公佈嘅 recipe:用 from_pretrained 載入模型(需要就 shard),然後用 static cache 同 torch.compile(backend="neuron") 做生成。喺 Trainium2(trn2)實例上面(例如 AWS Neuron Deep Learning Container),install 完 packages 之後直接 python3 run.py,唔使 torchrun——model sharded 嗰陣 script 自己會拉起 torch.distributed ranks。

首次運行要編譯模型 graph,想跳呢一步,可以喺公開嘅 NEFF cache bucket 複製同一個編譯器喺測試期間建好嘅 graph,Space 會俾你正確 compiler version 嘅命令。

測試方法:每個模型載上 trn2,shard 到「能裝低佢嘅權重最少 Trainium cores 數量」,大部分模型用 tensor parallelism,冇 tensor-parallel plan 嘅 mixture-of-experts 模型只用 expert parallelism。然後生成 32 tokens 並檢查:單一 core 嘅模型,同同一個 checkpoint 喺 CPU 跑嘅結果對 token;sharded 嘅模型用一個小型 judge model 檢查生成嘅英文係否 fluent。

要留意嘅限制:截至文章撰寫,只測試了能放入 4 個 Trainium2 裝置(即最多 16 cores)嘅模型;一個 PASS 代表唔到 throughput,亦代表唔到長生成。只覆蓋 Transformers 嘅 text-generation 同 image-text-to-text 模型,diffusers、sentence transformers 會逐步加。

背後數據全部來自公開嘅 aws-neuron/torch-neuronx-model-support dataset,每個 neuronx-cc 同 library 版本對應一個 Parquet 檔案,包含結果、失敗時嘅 error、完整 stack 版本同 run.py,可以直接用 pandas 讀。

模姐驗嚇貨:呢個係罕有嘅、廠商同平台兩邊都肯逐個攤開測試條件嘅做法——唔係廠商自評,而係第三方開源平台對硬件 backend 做逐個模型核對,並開放原始數據俾人自己查。但「跑成」同「夠快」係兩回事,PASS 只講明圖形編譯同 token 對齊無問題,唔係速度認證。用之前自己計 throughput、自己揀 shard 策略。