日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里重磅开源首款自研科学计算引擎Mars,揭秘超大规模科学计算

發布時間:2024/8/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里重磅开源首款自研科学计算引擎Mars,揭秘超大规模科学计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

日前,阿里巴巴正式對外發布了分布式科學計算引擎 Mars 的開源代碼地址,開發者們可以在pypi上自主下載安裝,或在Github上獲取源代碼并參與開發。

此前,早在2018年9月的杭州云棲大會上,阿里巴巴就公布了這項開源計劃。Mars 突破了現有大數據計算引擎的關系代數為主的計算模型,將分布式技術引入科學計算/數值計算領域,極大地擴展了科學計算的計算規模和效率。目前已應用于阿里巴巴及其云上客戶的業務和生產場景。本文將為大家詳細介紹Mars的設計初衷和技術架構。


概述

科學計算即數值計算,是指應用計算機處理科學研究和工程技術中所遇到的數學計算問題。比如圖像處理、機器學習、深度學習等很多領域都會用到科學計算。有很多語言和庫都提供了科學計算工具。這其中,Numpy以其簡潔易用的語法和強大的性能成為佼佼者,并以此為基礎形成了龐大的技術棧。(下圖所示)

Numpy的核心概念多維數組是各種上層工具的基礎。多維數組也被稱為張量,相較于二維表/矩陣,張量具有更強大的表達能力。因此,現在流行的深度學習框架也都廣泛的基于張量的數據結構。

隨著機器學習/深度學習的熱潮,張量的概念已逐漸為人所熟知,對張量進行通用計算的規模需求也與日俱增。但現實是如Numpy這樣優秀的科學計算庫仍舊停留在單機時代,無法突破規模瓶頸。當下流行的分布式計算引擎也并非為科學計算而生,上層接口不匹配導致科學計算任務很難用傳統的SQL/MapReduce編寫,執行引擎本身沒有針對科學計算優化更使得計算效率難以令人滿意。

基于以上科學計算現狀,由阿里巴巴統一大數據計算平臺MaxCompute研發團隊,歷經1年多研發,打破大數據、科學計算領域邊界,完成第一個版本并開源。 Mars,一個基于張量的統一分布式計算框架。使用 Mars 進行科學計算,不僅使得完成大規模科學計算任務從MapReduce實現上千行代碼降低到Mars數行代碼,更在性能上有大幅提升。目前,Mars 實現了 tensor 的部分,即numpy 分布式化, 實現了 70% 常見的 numpy 接口。后續,在 Mars 0.2 的版本中, 正在將 pandas 分布式化,即將提供完全兼容 pandas 的接口,以構建整個生態。?

Mars作為新一代超大規模科學計算引擎,不僅普惠科學計算進入分布式時代,更讓大數據進行高效的科學計算成為可能。

Mars的核心能力

  • 符合使用習慣的接口
    Mars 通過 tensor 模塊提供兼容 Numpy 的接口,用戶可以將已有的基于 Numpy 編寫的代碼,只需替換 import,就可將代碼邏輯移植到 Mars,并直接獲得比原來大數萬倍規模,同時處理能力提高數十倍的能力。目前,Mars 實現了大約 70% 的常見 Numpy 接口。

  • 充分利用GPU加速
    除此之外,Mars 還擴展了 Numpy,充分利用了GPU在科學計算領域的已有成果。創建張量時,通過指定 gpu=True 就可以讓后續計算在GPU上執行。比如:
a = mt.random.rand(1000, 2000, gpu=True) # 指定在 GPU 上創建 (a + 1).sum(axis=1).execute()

?

  • 稀疏矩陣
    Mars 還支持二維稀疏矩陣,創建稀疏矩陣的時候,通過指定 sparse=True 即可。以eye 接口為例,它創建了一個單位對角矩陣,這個矩陣只有對角線上有值,其他位置上都是 0,所以,我們可以用稀疏的方式存儲。
a = mt.eye(1000, sparse=True) # 指定創建稀疏矩陣 (a + 1).sum(axis=1).execute()

?

系統設計
接下來介紹 Mars 的系統設計,讓大家了解 Mars 是如何讓科學計算任務自動并行化并擁有強大的性能。

  • 分而治之—tile
    Mars 通常對科學計算任務采用分而治之的方式。給定一個張量,Mars 會自動將其在各個維度上切分成小的 Chunk 來分別處理。對于 Mars 實現的所有的算子,都支持自動切分任務并行。這個自動切分的過程在Mars里被稱為 tile。

比如,給定一個 1000?2000 的張量,如果每個維度上的 chunk 大小為 500,那么這個張量就會被 tile 成 2?4 一共 8 個 chunk。對于后續的算子,比如加法(Add)和求和(SUM),也都會自動執行 tile 操作。一個張量的運算的 tile 過程如下圖所示。


延遲執行和 Fusion 優化

  • 目前 Mars 編寫的代碼需要顯式調用 execute 觸發,這是基于 Mars 的延遲執行機制。用戶在寫中間代碼時,并不會需要任何的實際數據計算。這樣的好處是可以對中間過程做更多優化,讓整個任務的執行更優。目前 Mars 里主要用到了 fusion 優化,即把多個操作合并成一個執行。

對于前面一個圖的例子,在 tile 完成之后,Mars 會對細粒度的 Chunk 級別圖進行 fusion 優化,比如8個 RAND+ADD+SUM,每個可以被分別合并成一個節點,一方面可以通過調用如 numexpr 庫來生成加速代碼,另一方面,減少實際運行節點的數量也可以有效減少調度執行圖的開銷。

  • 多種調度方式
    Mars 支持多種調度方式:

| 多線程模式:Mars 可以使用多線程來在本地調度執行 Chunk 級別的圖。對于 Numpy 來說,大部分算子都是使用單線程執行,僅使用這種調度方式,也可以使得 Mars 在單機即可獲得 tile 化的執行圖的能力,突破 Numpy 的單機內存限制,同時充分利用單機所有 CPU/GPU 資源,獲得比 Numpy 快數倍的性能。

| 單機集群模式: Mars 可以在單機啟動整個分布式運行時,利用多進程來加速任務的執行;這種模式適合模擬面向分布式環境的開發調試。

| 分布式 : Mars 可以啟動一個或者多個 scheduler,以及多個 worker,scheduler 會調度 Chunk 級別的算子到各個 worker 去執行。

下圖是 Mars 分布式的執行架構:

Mars 分布式執行時會啟動多個 scheduler 和 多個 worker,圖中是3個 scheduler 和5個 worker,這些 scheduler 組成一致性哈希環。用戶在客戶端顯式或隱式創建一個 session,會根據一致性哈希在其中一個 scheduler 上分配 SessionActor,然后用戶通過 execute 提交了一個張量的計算,會創建 GraphActor 來管理這個張量的執行,這個張量會在 GraphActor 中被 tile 成 chunk 級別的圖。這里假設有3個 chunk,那么會在 scheduler 上創建3個 OperandActor 分別對應。這些 OperandActor 會根據自己的依賴是否完成、以及集群資源是否足夠來提交到各個 worker 上執行。在所有 OperandActor 都完成后會通知 GraphActor 任務完成,然后客戶端就可以拉取數據來展示或者繪圖。

  • 向內和向外伸縮
    Mars 靈活的 tile 化執行圖配合多種調度模式,可以使得相同的 Mars 編寫的代碼隨意向內(scale in)和向外(scale out)伸縮。向內伸縮到單機,可以利用多核來并行執行科學計算任務;向外伸縮到分布式集群,可以支持到上千臺 worker 規模來完成單機無論如何都難以完成的任務。

?

Benchmark

在一個真實的場景中,我們遇到了巨型矩陣乘法的計算需求,需要完成兩個均為千億元素,大小約為2.25T的矩陣相乘。Mars通過5行代碼,使用1600 CU(200個 worker,每 worker 為 8核 32G內存),在2個半小時內完成計算。在此之前,同類計算只能使用 MapReduce 編寫千余行代碼模擬進行,完成同樣的任務需要動用 9000 CU 并耗時10個小時。

讓我們再看兩個對比。下圖是對36億數據矩陣的每個元素加一再乘以二,紅色的叉表示 Numpy 的計算時間,綠色的實線是 Mars 的計算時間,藍色虛線是理論計算時間。可以看到單機 Mars 就比 Numpy 快數倍,隨著 Worker 的增加,可以獲得幾乎線性的加速比。

下圖是進一步擴大計算規模,把數據擴大到144億元素,對這些元素加一乘以二以后再求和。這時候輸入數據就有 115G,單機的 Numpy 已經無法完成運算,Mars 依然可以完成運算,且隨著機器的增多可以獲得還不錯的加速比。




開源地址

Mars 已經在 Github 開源:https://github.com/mars-project/mars?,且后續會全部在 Github 上使用標準開源軟件的方式來進行開發,歡迎大家使用 Mars,并成為 Mars 的 contributor。

?


原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的阿里重磅开源首款自研科学计算引擎Mars,揭秘超大规模科学计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产牛牛| 神马影院一区二区 | 激烈娇喘叫1v1高h糙汉 | 伊人在线视频 | 亚洲一区二区三区成人 | 亚洲精品97久久中文字幕无码 | 中文字幕第88页 | 边吃奶边添下面好爽 | 91免费视频大全 | 日批免费观看 | 国产精品ww | 91亚洲欧美激情 | 男女激情四射网站 | 成人特级毛片69免费观看 | 亚洲制服丝袜一区 | 亚洲综合色一区二区 | 亚洲一区二区美女 | 中国a一片一级一片 | 北京富婆泄欲对白 | 成人爽爽视频 | 少妇乱淫 | 成人免费高清 | 懂色视频在线观看 | 天天视频天天爽 | 欧美亚韩一区二区三区 | 少妇人妻互换不带套 | a级在线观看视频 | 久久久亚洲一区 | missav | 免费高清av在线看 | 久久橹 | 国产精品久久久久久免费观看 | 欧美激情一区二区三区免费观看 | 久久在线中文字幕 | 一级黄色淫片 | 亚洲欧美日韩国产一区二区三区 | 国产视频一区二区三区四区五区 | 久久黄色一级视频 | 中文字幕在线观看欧美 | 欧美极品第一页 | 99热免费精品 | 人妻无码中文字幕免费视频蜜桃 | 秋霞视频在线 | 五级毛片 | 久草免费新视频 | 欧洲一级黄色片 | 深夜av| 久久综合高清 | 麻豆一区二区在线 | 国产夫妻精品 | 少妇h视频 | 国产aaaaa毛片 | 国产www | 日本一区不卡视频 | 黄色av一区二区三区 | 麻豆视频传媒入口 | 麻豆乱淫一区二区三区 | 热@国产| 日产精品久久久 | av毛片大全 | 奇米影音 | 亚洲乱码精品久久久久 | www.桃色| 日韩激情第一页 | 德国艳星videos极品hd | 夜操操 | 夜夜撸小说 | 久久99精品久久久久久水蜜桃 | 国内视频一区 | 亚洲少妇精品 | 国产精品久久久久久久久久久新郎 | 欧美一级爱爱 | 手机av电影在线 | 爱爱免费视频 | 国产成人毛片 | 美女视频一区二区三区 | 久久久久久久久久久久久久久 | 亚洲九区 | 夜夜爽夜夜叫夜夜高潮漏水 | 亚洲精品喷潮一区二区三区 | 国产日产精品一区 | 国产一区二区三区色淫影院 | 91视频在线网站 | 成人精品一区二区三区电影黑人 | 欧美激情电影一区二区 | 男女视频免费网站 | 天堂av2018| 日韩二区三区四区 | 成人午夜在线播放 | 成人av片免费看 | 99免费| 婷婷网五月天 | 美女毛片在线 | 精品一区二区久久久久久按摩 | 亚洲黄片一区二区 | 麻豆传媒在线视频 | wwwxx欧美 | 日本熟妇浓毛 | 草视频在线观看 | 欧美精品一区二区三区在线播放 |