女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ECS實例——Arm芯片的 Python-AI算力優化

Linux閱碼場 ? 來源:Linux閱碼場 ? 2023-05-09 11:37 ? 次閱讀

深度學習技術在圖像識別、搜索推薦等領域得到了廣泛應用。近年來各大 CPU 廠商也逐漸把 AI 算力納入了重點發展方向,通過《Arm 芯片 Python-AI 算力優化》我們將看到龍蜥社區 Arm 架構 SIG(Special Interest Group) 利用最新的 Arm 指令集優化 Python-AI 推理 workload 的性能。

倚天 ECS 實例的 AI 推理軟件優化

阿里云推出的倚天 Arm ECS 實例,擁有針對 AI 場景的推理加速能力,我們將了解加速的原理以及以及相關的軟件生態適配。

0d2ebbfe-ee0e-11ed-90ce-dac502259ad0.png

卷積神經網絡(CNN)在圖像和語音領域使用廣泛,神經網絡算法相比傳統的算法消耗了更多算力。為了探索對計算的優化,我們進一步看到 AlexNet 模型(一種 CNN)的推理過程的各個層的計算資源消耗占比。

可以看到名為 conv[1-5] 的 5 個卷積層消耗了 90% 的計算資源,因此優化 CNN 推理的關鍵就是優化卷積層的計算。

0d39c760-ee0e-11ed-90ce-dac502259ad0.png

我們進一步來看如何對圖像應用卷積核:1、使用 im2col 根據卷積核尺寸,將圖像轉化為若干塊(patch)。2、將多個卷積核展開成若干向量。

3、對由圖像塊組成的矩陣和由多個卷積核展開組成的矩陣應用矩陣乘法。

0d42ef70-ee0e-11ed-90ce-dac502259ad0.png

上面一頁的計算應用了矩陣乘法操作,為什么我們不采用更加直接的迭代計算方式,而是采用需要額外內存的矩陣乘法呢?這里有兩個關鍵因素:

  • 深度學習的卷積計算量很大,典型計算需要涉及 5000 萬次乘法和加法操作,因此對計算的優化十分重要。

  • 計算機科學家們已經深入探索了矩陣乘法操作,矩陣乘法操作可以被優化得非常快。

fortran 世界中,GEMM(general matrix multiplication)已經成為一個通用操作:0d50b1f0-ee0e-11ed-90ce-dac502259ad0.png該操作通過對數據重新排列,精心設計計算過程,利用多線程和向量指令,可以比自己實現的樸素版本快十倍以上。因此使用矩陣運算帶來的收益相比額外的開銷是值得的。

因為 AI 推理大量使用了矩陣乘法,如今也有許多硬件對矩陣運算進行了加速:

  • NVIDIA Volta 架構引入了 tensor core,可以高效地以混合精度處理矩陣乘。
  • Intel AMX(Advanced Matrix Extensions) 通過脈動陣列在硬件層面支持矩陣乘。

  • Arm SME(Scalable Matrix Extension) 支持向量外積運算,加速矩陣乘。

雖然在 AI 算力上 GPU 要遠高于 CPU,但是 CPU 因為其部署方便,且無需在主機-設備間拷貝內存,在 AI 推理場景占有一席之地。目前市面上尚沒有可以大規模使用的支持 AMX 或者 SME 的硬件,在這個階段我們應該如何優化 CPU 上的 AI 推理算力?我們首先要了解 BF16 數據類型。

0d5bf11e-ee0e-11ed-90ce-dac502259ad0.png

BF16(Brain Float 16)是由 Google Brain 開發設計的 16 位浮點數格式。相比傳統的 IEEE16 位浮點數,BF16 擁有和 IEEE 單精度浮點數(FP32)一樣的取值范圍,但是精度較差。研究人員發現,在 AI 訓練和推理中,使用 BF16 可以節約一半的內存,獲得和單精度浮點數接近的準確率。

根據右圖,BF16 指數的位數和 FP32 是一致的,因此 BF16 和 FP32 的相互轉換只要截斷尾數即可,左下角圖上便是 tensorflow 源碼中的轉換實現。

引入 BF16 的一大價值是如今的很多硬件計算的瓶頸在寄存器寬度或者訪問內存的速度上,更緊湊的內存表示往往可以獲得更高的計算吞吐,在理想情況下,BF16 相比 FP32 可以提高一倍的吞吐(FLOPS)。

0d67f608-ee0e-11ed-90ce-dac502259ad0.png

如今我們雖然無法大規模使用到支持 AMX/SME 的硬件,但是 Armv8.6-A 提供了 bf16 擴展,該擴展利用了有限的 128bit 向量寄存器,通過 BFMMLA 指令執行矩陣乘法運算:

  • 輸入 A大小為 2*4 的 BF16 矩陣,按行存儲。

  • 輸入 B大小為 4*2 的 BF16 矩陣,按列存儲。

  • 輸出C:大小為 2*2 的 FP32 矩陣。

該指令單次執行進行了 16 次浮點數乘法和 16 次浮點數加法運算,計算吞吐非常高。

0d732366-ee0e-11ed-90ce-dac502259ad0.png

阿里巴巴向 OpenBLAS 項目貢獻了 sbgemm(s 表示返回單精度,b 表示輸入 bf16)的硬件加速實現,從 GEMM 吞吐上看,BF16 相比 FP32 GEMM 吞吐提升超過100%。

倚天 ECS 實例是市面上少數可以支持 bf16 指令擴展的 Arm服務器。目前已經支持了 Tensorflow 和 Pytorch 兩種框架的 AI 推理:

  • Tensorflow下可以通過OneDNN + ACL(Arm Compute Library)來使用BFMMLA 加速。

  • Pytorch 已經支持了 OneDNN + ACL,但是目前還在試驗狀態,無法很好地發揮性能。但是 Pytorch 同時支持 OpenBLAS 作為其計算后端,因此可以通過 OpenBLAS 來享受 ARM bf16 擴展帶來的性能收益。

0d7e6c94-ee0e-11ed-90ce-dac502259ad0.png

可以看到相比默認的 eigen 實現,開啟 OneDNN + ACL 后,perf 獲得的計算熱點已經從 fmla(向量乘加)轉換到了 bfmmla,算力顯著提升。

0d9a0f80-ee0e-11ed-90ce-dac502259ad0.png

從 workload 角度評測,上圖對比了兩種機型:

  • g7:Intel IceLake 實例。

  • g8m:倚天 Arm 服務器。

左邊柱狀圖中藍色柱子表示算力對比,橙色柱子表示考慮性價比后使用倚天處理器獲得的收益。可以看到在 Resnet50BERT-Large 模型的推理場景下,軟件優化后的倚天處理器皆可獲得一倍左右的性價比收益。

0dad2534-ee0e-11ed-90ce-dac502259ad0.png

在上文中,我們看到使用倚天處理器若想獲得較高收益,軟件版本的選擇十分重要。隨意選擇 tensorflow 或者 Pytorch 包可能遭遇:

  • 未適配 Arm 架構,安裝失敗。
  • 軟件未適配 bf16 擴展或者環境參數有誤,無法發揮硬件的全部算力,性能打折。
  • 需要精心選擇計算后端,例如目前 Pytorch 下 OpenBLAS 較快。

因此我們提供了 Docker 鏡像,幫助云上的用戶充分使用倚天 710 處理器的 AI 推理性能:

  • accc-registry.cn-hangzhou.cr.aliyuncs.com/tensorflow/tensorflow

  • accc-registry.cn-hangzhou.cr.aliyuncs.com/pytorch/pytorch

通過 Serverless 能力充分釋放算力

除了使能更多的硬件指令,另一種充分釋放硬件算力的方式就是通過 Serverless 架構提高 CPU 利用率。Python 作為動態語言,其模塊是動態導入的,因此啟動速度不是 Python 的強項,這也制約了 Python workload 在 Serverless 場景的普及。

0dc5777e-ee0e-11ed-90ce-dac502259ad0.png

Python 應用啟動的主要耗時在模塊導入,Python 模塊導入步驟為:1、尋找到模塊所在的文件。2、獲得代碼對象 code_object

3、執行代碼對象。

其中的第二步在首次加載模塊時,要對 .py 文件進行編譯,獲得 code_object, 為了降低將來加載的開銷,Python 解釋器會序列化并緩存 code_object.pyc 文件。

即便模塊導入過程已經通過緩存機制優化過了,但是讀取 .pyc 文件并反序列化依舊比較耗時。

0dd9ff6e-ee0e-11ed-90ce-dac502259ad0.png

在這里我們借助了 OpenJDK 的 AppCDS 的思路:將 heap 上的 code_object 復制到內存映射文件中(mmap)。在下次加載模塊時,直接使用 mmap 中的 code_object

這種框架下有兩個難點:

1、Python 的 code_object 是散落在 heap 的各處且不連續的,因此 mmap 復制整個 heap 是行不通的。我們采用的方式是以 code_object 為根,遍歷對象圖,對感興趣的內容復制并緊湊排布。

2、Python 的 code_object 會引用 .data 段的變量,在 Linux 的隨機地址安全機制下,.data 段的數據的地址在每次運行時都會隨機變化,這樣 mmap 中的指針就失效了。我們的解決方式是遍歷所有對象,針對 .data 段的指針進行偏移量修復。

因為該項目共享了 Python 的 code_object,因此名字是 code-data-share-for-python,簡稱 pycds

0df7c36e-ee0e-11ed-90ce-dac502259ad0.png

我們測試了 bota3numpyflask 等常用的 Python 庫,平均可以節省 20% 的模塊導入耗時。

對于現有的 Python 應用可以輕易地使用 pycds,且無需修改任何代碼:

# 安裝pycds
pip install code-data-share # 安裝pycds
# 生成模塊列表
PYCDSMODE=TRACE PYCDSLIST=mod.lst python -c 'import numpy’


# 生成 archive
python -c 'import cds.dump; cds.dump.run_dump("mod.lst", "mod.img")’


# 使用archive
time PYCDSMODE=SHARE PYCDSARCHIVE=mod.img python -c 'import numpy'
real 0m0.090s
user 0m0.180s
sys 0m0.339s


# 對比基線
time python -c 'import numpy'
real 0m0.105s
user 0m0.216s
sys 0m0.476s

我們僅僅通過安裝 PyPI,修改環境變量運行和使用 cdsAPI 做 dump 即可對現有的應用啟動進行加速了。

code-data-share-for-python 是一個新項目,需要大家的參與和反饋,歡迎通過以下鏈接了解和使用:

https://github.com/alibaba/code-data-share-for-python

https://pypi.org/project/code-data-share-for-python

ARM 架構 SIG鏈接地址:

https://openanolis.cn/sig/ARM_ARCH_SIG


審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9311

    瀏覽量

    375130
  • 神經網絡
    +關注

    關注

    42

    文章

    4809

    瀏覽量

    102825
  • 算力
    +關注

    關注

    2

    文章

    1148

    瀏覽量

    15459

原文標題:技術解讀倚天 ECS 實例——Arm 芯片的 Python-AI 算力優化 | 龍蜥技術

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    一體大AI芯片將逐漸走向落地應用

    電子發燒友網報道(文/李彎彎)前不久,后摩智能宣布,其自主研發的業內首款存一體大AI芯片成功點亮,并成功跑通智能駕駛算法模型。 ? 這
    的頭像 發表于 05-31 00:03 ?5415次閱讀

    芯片的生態突圍與革命

    電子發燒友網報道(文 / 李彎彎)大芯片,即具備強大計算能力的集成電路芯片,主要應用于高性能計算(HPC)、人工智能(AI)、數據中心、
    的頭像 發表于 04-13 00:02 ?1493次閱讀

    DeepSeek推動AI需求:800G光模塊的關鍵作用

    數據傳輸速率,減少帶寬瓶頸,成為數據中心和AI集群架構優化的重點。光模塊速率的躍升不僅提升了傳輸效率,也為大規模并行計算任務提供了必要的帶寬保障。 800G光模塊如何解決DeepSeek大規模
    發表于 03-25 12:00

    ECS控制臺實例搜索的優化與改進

    繁瑣。 過濾條件太多了, 搜索框,tag,表格過濾,高級搜索,搜索條件不統一 不支持模糊搜索 從已知的這些問題出發,ECS控制臺將對搜索功能,以及整個實例管理的用戶體驗部分做長期的優化和改進。搜索功能
    發表于 03-26 15:04

    解讀最佳實踐:倚天 710 ARM 芯片Python+AI 優化

    編者按: 在剛剛結束的 PyCon China 2022 大會上,龍蜥社區開發者朱宏林分享了主題為《ARM 芯片Python+AI
    發表于 12-23 16:02

    IBM全新AI芯片設計登上Nature,解決GPU的瓶頸

    現如今的人工智能的神經網絡與GPU密不可分,但是GPU的對于未來神經網絡的發展是不夠用的,好在IBM全新AI芯片設計,能夠解決GPU的
    發表于 06-13 09:28 ?1509次閱讀

    深度解析AI的現狀和趨勢

    分享會從 AI 的現狀和趨勢談起,并從硬件設計和算法優化兩個層面切入,剖析提升的最新落地
    的頭像 發表于 08-01 16:08 ?9112次閱讀

    華為發布最外那個AI芯片

    華為史上最強AI芯片發布,開源首款國產全場景AI計算框架
    的頭像 發表于 08-23 17:15 ?3460次閱讀

    昆侖芯AI芯片AI服務實體經濟 筑底經濟新基建

    當前,已經成為繼熱力、電力之后新的關鍵生產。數字化轉型背景下,工業、能源、交通等領域對AI
    的頭像 發表于 10-19 16:31 ?2287次閱讀

    云端芯片為什么是科技石油?

    21世紀前后,人類逐漸從工業時代步入信息時代,當下AI時代的大門又再度緩緩開啟。2023年以來,以ChatGPT為首的生成式AI逐漸滲透到了各行各業中,有人說,這或許又是一個IPhone時刻。AI起舞,
    的頭像 發表于 07-12 10:21 ?1177次閱讀

    ai芯片芯片的區別

    ai芯片芯片的區別 隨著人工智能和機器學習應用的不斷發展,因此種種對硬件的需求也在不斷提高。在這樣的趨勢之下,出現了很多新的
    的頭像 發表于 08-09 14:24 ?7089次閱讀

    阿里云倚天實例已為數千家企業提供,性價比提升超30%

    規模化部署,并向云上企業提供。過去一年,阿里云繼續在芯片、編譯器、操作系統、虛擬化及應用層等方面完成了數十項軟硬一體的全棧優化,進一步將芯片
    的頭像 發表于 11-03 11:25 ?1017次閱讀
    阿里云倚天<b class='flag-5'>實例</b>已為數千家企業提供<b class='flag-5'>算</b><b class='flag-5'>力</b>,性價比提升超30%

    淺談為AI而生的存-體芯片

    大模型爆火之后,存一體獲得了更多的關注與機會,其原因之一是因為存一體芯片的裸相比傳統架構的AI
    發表于 12-06 15:00 ?569次閱讀
    淺談為<b class='flag-5'>AI</b>大<b class='flag-5'>算</b><b class='flag-5'>力</b>而生的存<b class='flag-5'>算</b>-體<b class='flag-5'>芯片</b>

    PythonAI中的應用實例

    Python在人工智能(AI)領域的應用極為廣泛且深入,從基礎的數據處理、模型訓練到高級的應用部署,Python都扮演著至關重要的角色。以下將詳細探討Python
    的頭像 發表于 07-19 17:16 ?2420次閱讀

    企業AI租賃是什么

    企業AI租賃是指企業通過互聯網向專業的提供商租用所需的計算資源,以滿足其AI應用的需求。
    的頭像 發表于 11-14 09:30 ?2312次閱讀