尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
文 | 白開水
出品 | OSC開源社區(ID:oschina2013)
OpenAI 宣布推出一種類似於 Python 的開源編程語言 Triton,並發布了 Triton 1.0 版本。根據介紹,Triton 可使沒有 CUDA 經驗的研究人員能夠編寫高效的 GPU 代碼,且大多數情況下可以與專家所能編寫的代碼質量媲美。
OpenAI 稱,Triton 使得以相對較少的努力達到峰值硬件性能成為可能。例如,它可以用不到 25 行代碼編寫與 cuBLAS 性能相匹配的 FP16 矩陣乘法內核,這是許多 GPU 程序員無法做到的。「我們的研究人員已經使用它來生成效率比同等 Torch 實現高 2 倍的內核,我們很高興與社區合作,使 GPU 編程對每個人來說都變得更加容易。」
OpenAI 指出,一些在使用 CUDA 框架時被認為相當有挑戰性的問題都在 Triton 中得到了解決。與 CUDA 中的編碼相比,Triton 可以為一些處於 AI 機器學習形式核心的神經網路任務(例如矩陣乘法)提供顯著的易用性優勢。Triton 語言會自動執行許多 AI 代碼優化,以節省開發人員的時間;其擁有的相對簡單性還可以使沒有豐富 CUDA 編程經驗的軟體團隊能夠創建比其他方法更高效的算法。
OpenAI 科學家、也是該項目的負責人 Philippe Tillet 向 ZDNet 表示, 他們的目的就是讓 Triton 成為深度學習中 CUDA 的一個可行的替代方案。「Triton 是為那些盡管擁有良好的軟體工程技能但卻不熟悉 GPU 編程的機器學習研究人員和工程師準備的」。Triton 第一次出現在公眾的視野是在 Tillet 於 2019 年發表 的一篇論文中。
根據介紹,Triton 通過優化在 Nvidia 晶片上運行的機器學習算法處理數據的工作流的三個核心步驟來提高 AI 性能:
第一步是在 GPU 的 DRAM 和 SRAM 存儲器電路之間移動數據的任務。GPU 在不活躍時將資訊存儲在 DRAM 中,並將其傳輸到 SRAM 記憶體以執行計算。兩個組件之間的數據傳輸速度越快,機器學習算法運行的速度就越快,這就是為什麼開發人員將優化計算工作流的這一方面作為 AI 項目的一部分而優先考慮。優化過程包括將從 DRAM 移動到 SRAM 的數據塊合併為大型資訊單元。OpenAI 表示,Triton 會自動執行任務,從而為開發人員節省時間。
Triton 優化的第二個計算步驟是將傳入的數據塊分配到 GPU 的 SRAM 電路中,以便盡可能快地分析它們。此步驟中涉及的主要挑戰之一是避免所謂的記憶體庫沖突,指的是兩個軟體意外地試圖將數據寫到同一個記憶體段的情況。記憶體庫沖突會阻礙計算,直到它們得到解決;這意味著通過減少此類錯誤發生的頻率,開發人員可以加快其 AI 算法的性能。
Tillet 解釋稱:「數據必須在重新使用之前手動存儲到 SRAM 中並進行管理,以最大限度地減少檢索時的共享記憶體庫沖突。」
第三個也是最後一個任務,Triton 幫助實現自動化;涉及的不是 GPU 的存儲單元,而是其 CUDA 核心,即負責對存儲在記憶體中的數據進行計算的計算電路。單個 Nvidia 數據中心 GPU 有數千個這樣的電路。它們允許晶片同時執行大量計算。
為了最大限度地提高 AI 模型的性能,開發人員必須將其配置為將計算分布在多個 CUDA 核心上;以便它們可以同時完成,而不是一個接一個地完成。Triton 也可以將這項工作自動化,盡管只是部分自動化。它沒有自動化整個工作流程的原因是因為,OpenAI 試圖讓開發人員能夠靈活地根據需要為他們的項目手動定制流程。
Tillet 透露,該團隊已經用 Triton 來加速和重寫了其大部分的 GPU 內核,並致力於通過後續版本使它的適用性更加廣泛。值得注意的是,該軟體目前隻適用於 Nvidia 的 GPU;還不能用於 AMD 的 GPU,也不能編譯到 CPU。
詳情可查看官方部落格: https://openai.com/blog/triton/
END
微軟自家Linux發行版開源 引熱議
關註視訊號「開開開源」
帶你了解更多開源知識
覺得不錯,請點個在看呀