DeepMind 發布了 S6 的源代碼,SXNUMX 是 Python 的 JIT 編譯器

s6-deepmind

S6,是用於 CPython 的獨立 JIT 編譯器庫

深思熟慮, 以其在人工智能領域的發展而聞名,最近宣布 已決定發布S6項目的源代碼,這是他從 Python 語言的 JIT 編譯器開發的。

這個項目很有趣 因為 被設計為擴展庫 它可以與標準 CPython 集成,其中 提供完整的 CPython 兼容性並且不需要修改 的解釋器代碼。 該項目自 2019 年以來一直在開發中,但不幸的是已縮減規模,不再開發。

S6 是 DeepMind 於 2019 年啟動的一個項目,旨在通過即時(“JIT”)編譯來加速 CPython。 這些函數將作為一個普通的 Python 庫提供,不需要對 CPython 解釋器進行任何更改。 S6 打算為 Python 做 V8 為 Javascript 做的事情(這個名字是對 V8 的致敬)。 這項工作基於 CPython 3.7 版。 根據工作負載,我們在常見基準測試中看到了高達 9.5 倍的加速。

決定發布源代碼的主要原因,如前所述,其中一個原因是該項目停止了支持,另一個主要原因是,基於所創建的開發,這些仍然可以用於改進 python .

我們已經在內部停止了 S6 的工作。 因此,此存儲庫已存檔,我們不接受拉取請求或問題。 我們開源並在下面提供了設計概述,以激發 Python 社區內的對話並激發未來改進 Python 的工作。

關於S6的操作,要提一下 用於 Python 的 S6 與用於 JavaScript 的 V8 引擎比較 就它解決的任務而言。 該庫將現有的 ceval.c 字節碼解釋器驅動程序替換為自己的實現,該實現使用 JIT 編譯來加速執行。

S6 檢查當前函數是否已經編譯 如果是,則執行編譯後的代碼,如果不是,則以類似於 CPython 解釋器的字節碼解釋模式執行函數。 解釋計算與正在處理的函數相關聯的執行語句和調用的數量。

達到某個里程碑後,開始構建過程以加快代碼速度 經常運行。 對strongjit中間表示進行編譯,優化後使用asmjit庫轉換為目標系統的機器指令。

根據負載的性質,在最佳條件下,與常規 CPython 相比,S6 的測試執行速度提高了 9,5 倍。

當執行 100 次迭代時 來自理查茲測試套件, 有7倍的加速度, 當運行包含大量數學的 Raytrace 測試時,它的速度提高了 3 到 4,5 倍。

難以優化的任務 與 S6 是使用 C API 的項目,比如NumPy,還有相關的操作需要檢查大量值的類型。

單個函數調用的性能也很差 由於使用了 S6 Python 解釋器的未優化實現(開發尚未達到解釋模式優化階段),從而消耗大量資源。

例如,在解包大量數組/元組的解包序列測試中,單個調用顯示出高達 5 倍的減速,而循環調用從 CPython 產生 0,97。

終於 對於那些有興趣了解更多信息的人,你應該知道JIT編譯器代碼是用C++編寫的,目前是基於CPython 3.7,另外源代碼已經在Apache 2.0許可下開放,可以查閱 從下面的鏈接。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。