|

【Arm的AI世界】Python在Arm平台上的應用

   
作者:Diego Russo,Arm首席軟體工程師

這篇文章概述Python在Arm平台上--而且主要是在Linux與Windows作業系統上--的應用。

筆者在Arm服務至今超過12年,任職期間擔任過各種不同的職務,這些職務都有一個共同點: Python。在我18年工作生涯中,我使用過各種的程式設計語言,我一直都有使用Python。

由於其通用性極高,Python相當受歡迎,可用在不同的環境中。例如,我曾將其用在:

  • 網路開發作業
  • 自動化
  • 機器學習(ML)
  • 資料操作(Data manipulation)
  • 指令碼程式(Scripting)
  • 系統開發作業與網路

從2011年起,筆者持續參加歐洲的 EuroPython 大會。在2022 與 2023 年兩屆大會中,我參與了大會的籌辦工作,今年也將協助籌備。在 2023 年的 EuroPython 大會中,我發表了一篇演說:Python on Arm。這篇文章會有演說的部份內容與資訊,不過在之後也有一些我們持續進行的重要更新。

Python促成Arm架構

我相當肯定Upstream社群對於以Python促成Arm架構所做的努力。Python與Arm擁有悠久的合作歷史,第一個與Arm相關的提交(commit)早在 2001 年就出現,而第一個AArch64相關的commit則是在2012年問世PEP 599 於 2019 年推出並獲得各界接受。此一PEP定義了 manylinux2014 的平台標籤,其重要性在於它正式導入了對Arm平台的支援。

有不少的例子說明整個社群在AArch64指令集架構上促成Python套件,所取得的重大進展。Conda Forge是由社群帶頭、針對Conda軟體套件管理器(與 pypi.org不同)推出的配方、建立基礎架構及發行套件的統整。他們在將可用的套件移植到AArch64架構,做得極為成功。事實上,您可以從 Conda 移植狀態網頁上看到多數的套件都已經可以在 AArch64 架構上使用。

Arm與合作夥伴們一起參與開發社群的努力,共同在AArch64架構上促成了Python的生態系。身為Arm架構執行個體(instances)首度在公有雲上推出的團隊成員,我們希望開發人員在應對Python 生態系時,能擁有更為流暢的體驗。舉例來說,倘若開發人員安裝了一個已編譯好的發行套件,它就應該能直接運作,無須對其原始發行進行重新編譯。

從2020年起已有近2,900個軟體套件接受分析,這是透過在x86 與AArch64架構上進行測試,再檢查問題出在哪裡。測試失敗的套件依優先順序排列列表,然後逐一排除問題。經過兩年,我們產出了AArch64架構建構的發行版本,並藉此促成了超過200個 Python 專案。筆者之前在Learning Paths發表過一篇有關如何在Arm伺服器上部署Django應用的教學文章。它就是可以直接運作,不需要任何額外步驟。

Arm架構下的Python性

到目前為止,我們已經在AArch64架構下成功促成了Python 生態系。但它的效能如何呢?

當您造訪speed.python.org,可以看到AArch64在各種基準下的效能表現。去年只能看到x86的結果,而我們也持續努力使AArch64的結果得以顯示。您可以在Python 論壇上看到相關的交流已經展開。這個網站是由codespeed驅動,而codespeed是一種運作網路介面、API與資料庫的Django應用程式。那些基準則是pyperformance 基準套件的一部份。Pyperformance可以直接把基準數據上傳至 codespeed,而且整合度相當高。我個人持續與Łukasz Langa合作,他在修正版的開發與部署方面也提供支援,因為這個網站需要一些維護。我們已經完成 AArch64結果的整合,並回填了自2023年5月以來的資料。

Windows on ArmPython支援性

從Python 3.8版起,也已增加了對Windows on Arm (WoA)的支援,但一直到2022年我們才看到正式的編譯版本。 事實上,Python 3.11版已正式支援WoA,這得歸功於Arm、高通(Qualcomm)、微軟(Microsoft)、此芯科技(CIX technology)與 Linaro等公司的通力合作。此一合作夥伴的總體目標是達成一個能支援在WoA環境下進行原生開發作業的生態系。當然,Python是此生態系的一環,同時也有其他的應用程式。

排名前520的套件已經接受了 WoA的測試,這跟促成AArch64的過程類似。這些套件最後有超過70%成功通過測試。它們可在Python套件上直接運作,但也可以在建構這些套件所需的相依套件上運作,例如第三方的技術資料庫與工具套件。此外,Linaro已在官方CPython buildbot實例中託管Surface Pro X,以啟用 arm64 Python 版本的建置 。如果您想針對WoA打造套件,可以在任何其他平台上藉由交互編譯的使用達成。

打造 WoA 原生應用程式的理由,可以歸因於效能。Windows 11 on Arm可以執行為其他具備模擬功能架構編譯的二進制程式碼。不過,不同指令集間的翻譯成本相當可觀。在pyperformance 的情況下,原生編譯的AArch64 Python 速度幾乎是模擬x86版本的兩倍,這對應用程式的使用者體驗將帶來相當的衝擊。

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Arm作者群

Author: Arm作者群

來自各方的Arm開發者社群專家。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *