部署與效率

模型效能剖析

在最佳化模型之前,你得知道時間與記憶體實際上花在哪裡——而猜測幾乎總是錯的。效能剖析在目標裝置上量測真實的每層(每運算子)執行時間、記憶體使用與硬體使用率,把含糊的「模型很慢」轉成具體的「這個注意力運算子與那次主機到裝置的複製佔了 70% 的時間」。它是應當引導其他一切最佳化的診斷。

剖析器會為每個運算子記錄其實際時間、呼叫次數與記憶體配置,且常包含硬體計數器,如 GPU 的 SM 佔用率、張量核心使用率、記憶體頻寬百分比與快取命中率。常見工具有 PyTorch 的 torch.profiler、NVIDIA 的 Nsight Systems 與 Nsight Compute(nsys 與 ncu)、TensorRT 的逐層計時、TFLite 的基準工具、Chrome trace 時間軸,以及用來判斷某核心是受運算限制還是受記憶體限制的 roofline 分析。請像盯著核心時間一樣,仔細盯著主機↔裝置傳輸與閒置空檔——也就是加速器在乾等的時刻。

實務上:在真實目標硬體上、以符合實際的輸入尺寸並做好暖身來剖析;要看時間軸,而不只是加總的總計,才能抓到同步停頓與主機端瓶頸;並運用 Amdahl 定律,先最佳化貢獻最大者。每改一次就重新剖析,因為瓶頸會移動——你打掉了運算熱點,可能瞬間反而變成受記憶體限制或受啟動開銷限制。

加總的逐運算子表格可能說謊:它們可能掩蓋閒置空檔與重疊執行。時間軸檢視能揭露單一數字表格看不到的停頓——例如 GPU 在 CPU 做影像前處理時乾等——而那往往才是真正的瓶頸。

又称
profiling效能分析