noahgolmant/pytorch-hessian-eigenthings
Efficient PyTorch Hessian eigendecomposition tools!
解決了什麼問題
對於大型神經網路而言,計算完整的 Hessian 矩陣(損失函數的二階導數)在計算上是不可能的,因為記憶體需求會隨著參數數量呈平方級增長。本函式庫提供了一種可擴展的方法來分析模型損失地形(loss landscape)的曲率,而無需顯式建構完整的矩陣。
運作原理
本專案使用 Hessian-vector products (HVPs),這僅需要線性記憶體。透過將 HVPs 與迭代演算法結合,它可以在不遇到記憶體瓶頸的情況下,計算 Hessian 以及其他曲率矩陣(例如 Generalized Gauss-Newton 和 empirical Fisher)的特定屬性。
包含的核心演算法有:
- Lanczos and stochastic power iteration:用於尋找前幾個特徵值與特徵向量。
- Hutch++:用於估計矩陣的跡(trace)。
- Stochastic Lanczos Quadrature:用於估計譜密度(spectral density)。
針對大型語言模型,它包含了優化過的內核(使用 Triton 或 torch.compile),以加速交叉熵 Hessian-vector products。
適用對象
從事神經網路優化、泛化分析,以及研究損失地形幾何結構(例如分析「平坦極小值」)的研究人員與開發者。
重點特性
- 可擴展分析:可針對真實世界的模型(包括來自 HuggingFace 和 TransformerLens 的模型)計算特徵分解與譜密度。
- 靈活的算子:支援 Hessian、Generalized Gauss-Newton (GGN) 和 Empirical Fisher 算子。
- 記憶體效率高:透過 HVPs 使用線性記憶體,而非平方級記憶體。
- 效能優化:針對語言模型規模的工作提供融合內核(fused kernels),以降低峰值記憶體並提升速度。
- 參數過濾:允許使用基於名稱的過濾器來分析特定的參數子集(例如 transformer 中的特定區塊)。
相關
- 專案
- 專案
- 專案
- 專案
- 專案