作者: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 Arm的Python支援性
從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版本的兩倍,這對應用程式的使用者體驗將帶來相當的衝擊。

Python的時間正規化(Time normalized)。
對機器學習提供支援
同時我們也簡單分享我們在機器學習(ML)領域展開的一些活動。2020 年年初筆者參與了一個團隊,針對TensorFlow Lite與TensorFlow模型最佳化工具套件與Google展開協作。TensorFlow Lite是一個可以讓開發人員在行動裝置、微控制器(MCU)與其他邊緣裝置上部署模型的技術資料庫。我們對這個技術資料庫的貢獻,包括供激勵函數用的int16訓練後量化模式的導入以及相對應的參考核心、對量化支援性的持續精進、更成熟的TFLite到TOSA合法化程式碼,以及有關TFLite的4位元支援性所展開的交流。
TensorFlow模型最佳化套件是一套用來最佳化機器學習模型部署與執行的工具套件,我們提供不同的最佳化選項,以及協同應用這些選項的方法。
得益於AWS、Arm、Google 與 Linaro的協作計劃,從TensorFlow 2.10版開始,我們就可以在pypi.org取得AArch64的軟體套件。此外,TensorFlow從 2.10版起,開始透過oneDNN針對Arm架構的運算函式庫(ACL)進行整合,以加速AArch64 CPU的效能。因此,倘若您的機器是AArch64 架構,可以直接利用pip安裝TensorFlow,它就會針對平台完成最佳化。
至於 PyTorch,從 1.8版起就可以使用AArch64套件,但如果您想要測試最新版本的PyTorch,Arm提供了docker映像檔。這些檔案同時包含預設為後台的OpenBLAS,以及一個 DNN+ACL 的後台。
如果您想要試驗Keras Core以及AArch64架構下不同的機器學習後台(TensorFlow、PyTorch 與 JAX),請參考筆者另一篇Learning Paths教學文,它就是這麼好用!
其他的貢獻包括:
- 透過增加對 ACL (Arm運算函式庫)的支援達成 Apache TVM;為軟體套件、CLI 工具 tvmc 作出貢獻,並為 microTVM 中的許多MCU 平台增加或最佳化支援性。
- 透過促成可擴展向量延伸指令集 (SVE)與為Arm® Neoverse 架構提升執行緒擴充,達成 OpenBLAS
- 透過使用 Highways VQSort 並促成對SVE的支援性,將排序速度最高提升50倍,藉以達成NumPy。我們也與NumPy社群合作,透過NEP 54 將更多最佳化過的常式導入AArch64。
當初在進行演說時我們曾發現一些落差,其中之一是PEP 11定義的CPython平台對Arm平台的支援性。目前我們已獲得Tier-2與Tier-3公司的支援。而近期我們已經與社群接洽,並提議要把 AArch64 平台移到Tier-1,目前為止獲得的反應相當正面;但在向Tier-1的公司推廣這個平台之前,還有些工作需要努力,敬請持續關注。
下一步發展
接下來,我們邀請您試著將您的工作負載移植到Arm,過程應該是順暢無縫且輕鬆容易的;如果您遇到任何問題,請向upstream社群反應。目前每一位開發人員都能從所有的大型雲端存取這一 Arm平台,建議您試用看看。此外,倘若您提供了一個套件,請開始在Arm的平台上建構與驗證它。有關在WoA作業的效能,我們已看到了實際的效益,且有越來越多人將工作負載移植到 AArch64。
最後,我們隨時準備好提供協助,請直接透過Arm 開發人員計劃與我們連繫。這是個擁有近 1 萬名開發人員的社群,您可以在這裡提出問題並分享您的專業知識。Arm的專家也會透過Discord伺服器平台針對您的提問提供協助。歡迎連結arm.com/developerprogram 網站註冊!
(參考原文:Python on Arm)
- 【Arm的AI世界】輕鬆運用虛擬平台與嵌入式評估套件加速終端AI應用開發 - 2025/06/06
- 【Arm的AI世界】以ExecuTorch和KleidiAI執行LLM推論 充分釋放行動端AI潛力! - 2025/05/02
- 【Arm的AI世界】三步驟輕鬆在Ethos-U85上使用PyTorch與ExecuTorch - 2025/03/25
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!