精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

比Python快68000倍!Mojo正式發布

jf_WZTOguxH ? 來源:AI前線 ? 2023-09-08 16:01 ? 次閱讀

自 5 月 2 日首次亮相以來,Modular 公司的 Mojo 編程語言引起了開發人員的極大興趣,已經有超 12 萬開發人員注冊使用 Mojo Playground,19 萬開發者熱情參與 Discord 與 GitHub 討論。Fast.ai 聯合創始人、數據科學家 Jeremy Howard 更是表示,“Mojo 可能是近幾十年來最大的編程語言進步。”

9 月 7 日,Modular 公司宣布正式發布 Mojo:Mojo 現在已經開放本地下載——初步登陸 Linux 系統,并將很快提供 Mac 與 Windows 版本。

8a18f9a8-4e09-11ee-a25d-92fbcf53809c.jpg

Modular 公司由 LLVM 和 Swift 編程語言的聯合創始人 Chris Lattner 創辦,此前剛獲得 1 億美元(約 7 億人民幣)融資。Chris Lattner 表示,本輪融資總額達到 1.3 億美元,所得款項將用于產品擴展、硬件支持和推動自研 AI 編程語言 Mojo 的進一步發展。

據介紹,Mojo Playground 提供的只是一套簡單的語言展示,而本地 Mojo 工具鏈則可幫助開發人員完成更多工作。本地開發者工具將開放全部 Mojo 功能,包括一套完整的編譯器功能與 IDE 工具,讓開發者能夠輕松對 Mojo 應用進行構建與迭代。

Mojo:面向 AI 開發者的新型編程語言

Mojo 是一種面向 AI 開發者的新型編程語言。隨著時間推移,它將逐步成長為 Python 的超集。Mojo 已經支持與任意 Python 代碼的無縫集成,并提供可擴展的編程模型以支撐各類關鍵性能系統,包括在 AI 場景中普遍存在的加速器(例如 GPU)。

Mojo 能夠切實滿足開發者需求,引導大家逐步采用新功能,從而在必要時獲得高性能體驗。具體來說,Mojo 可以為開發者帶來的主要收益:

  • 一種語言編寫所有內容:Mojo 能夠隨時隨地服務于 AI 開發者,將 Python 的可用性與以往強制開發者使用 C、C++ 或 CUDA 的系統編程功能結合起來。開發者可以在公共代碼庫上工作,從而簡化從研究到生產的整個工作流程。

  • 突破 Python 性能極限:時至今日,Python 已經無處不在。但對于需要更高性能或特殊硬件的任務,Python 的表現往往不那么理想。Mojo 能夠發揮 CPU 的性能潛力,并可良好支持 GPU 和 ASIC 等外部加速器,提供與 C++ 和 CUDA 相當的卓越性能。

  • 對接完整 Python 生態系統:Mojo 提供與 Python 生態系統間的全面互操作性,使其能夠無縫利用 Python 庫資源,同時發揮 Mojo 自身的功能與性能優勢。例如,開發者可以將 NumPy 和 Matpotlib 同自己的 Mojo 代碼無縫混合起來。

  • 升級 AI 工作負載:Mojo 緊密集成有模塊化 AI 引擎,允許開發者通過自定義操作輕松擴展自己的 AI 工作負載,包括預處理、后處理操作和高性能數學算法。開發者還可以引入內核融合、圖重寫、sharp 函數等。

通過對現有 Python 代碼做一點簡單變更,開發者就可以使用 Mojo 對高計算強度工作負載進行顯著加速(最高可提速 6.8 萬倍)。目前,Mojo 的實際應用案例包括:

  • 知名博主 Maxim Zaks 已經用 Mojo 實現了多個樹數據結構,并發布了相關博文(https://pub.aimind.so/a-high-level-introduction-to-fibytree-bd7f8775d815)和一些初步基準測試結果(https://pub.aimind.so/fibytree-vs-set-and-sortedset-7b4e6b56cac8)。

  • GitHub 用戶 MadAlex1997 在 Mojo 中構建了 N 維數組的實現(https://github.com/MadAlex1997/Mojo-Arrays)。

    為何能比 Python 快 68000 倍?

Mojo 是 Python 家族的一員,但有著遠大的目標——想要與 Python 生態系統完全兼容,因此開發人員可以繼續使用自己熟悉的工具。Mojo 旨在通過保留 Python 的動態特性,同時為系統編程添加新原語,逐漸成為 Python 的超集。

LLVM 和 Swift 編程語言的聯合創始人、Modular 公司 CEO Chris Lattner 此前在 Hacker News 上表示:“我們的目標不是讓動態 Python 神奇地快速。雖然我們在動態代碼方面要快得多(因為我們有編譯器而不是解釋器),但這并不是依靠‘足夠智能’的編譯器來消除動態性”。

據介紹,Mojo 最初的目標是比 Python 快 35000 倍,近日該團隊表示,Mojo 將動態與靜態語言的優點結合起來,一舉將性能提升達 Python 的 68000 倍

Mojo 團隊在系列博文中介紹了 Mojo 是如何比 Python 快 68000 倍的:在第一篇博文中,團隊嘗試將代碼移植為 Mojo,從而獲得了約 90 倍的性能提升;在第二篇博文中,團隊對代碼進行矢量化與并行化,又將性能提升了 2.6 萬倍;在第三篇博文中,團隊展示如何通過新的性能技術全面超越 3.5 萬倍的程序加速目標。

具體來說,Mojo 團隊首先用簡單端口將 Python 程序提速 89 倍;之后通過針對性優化和利用現代 CPU 的算力潛能,又將速度提升 2.6 萬倍。Mojo 團隊提出的并行策略是,每個 CPU 核心都應負責處理同等數量的代碼行。

然而,只有當跨行工作負載相同時,對負載進行拆分以保證各個線程 worker 獲取其中一組代碼行才具有可行性;但曼德勃羅集并不是這樣。以這種方式進行拆分會引發負載不均衡問題,這是因為曼德勃羅集中的一個像素可能在單次迭代后完成,而另一像素則可能經歷 MAX_ITERS 多次迭代。也就是說,各個行的迭代次數并不相等,會導致某些率先完成計算的線程處于閑置狀態,不利于全面挖掘性能潛力。

為了演示這種不均衡問題,Mojo 團隊繪制了每個行在曼德勃羅集中執行的迭代總數。如下圖所示,某些行在轉義之前只需要不到 1000 次迭代,但其他一些行則可能需要超 80 萬次迭代。

8a2d73b0-4e09-11ee-a25d-92fbcf53809c.png

各個行所執行的迭代總數(以對數坐標系顯示)并非均勻分布。某些行(例如圖像中央部分的行)可能需要 80 多萬次迭代,而兩端的行則只需要 800 次左右迭代。

如果硬性為各個線程分配一定數量的連續行,就會發生全體線程都在等待,直至中間某組代碼行(被分配給某個核心)完成運行的情況。解決這個問題的辦法有很多,但最簡單的當然是過度拆分。也就是說,各個線程所獲得的不是一組平均分配的行,而是建立起一個工作負載池,再為每個行創建相應的工作項。各線程則以循環方式不斷從線程池中拾取這些工作項。

好消息是 Mojo 擁有一個性能出色的并發運行時,所以我們用不著自行創建線程池或者設計循環拾取 / 執行。Mojo 的運行時提供不少高級功能,可以充分利用這樣的多核心系統。

fn compute_row(y
    let cy = min_y + h * scale_y
    @parameter
    fn compute_vector[simd_width:Int](w
        let cx = min_x + iota[DType.float64, simd_width]() * scale_x
        output.simd_store[simd_width](Index(h,w), 
                mandelbrot_kernel(ComplexSIMD[DType.float64, 
                                              simd_width](cx,cy))
    vectorize[num_ports * simd_width, compute_vector](width)
with Runtime(num_cores()) as rt:
    let partition_factor = 16 # Is autotuned.
    parallelize[compute_row](rt, height, partition_factor * num_cores())

?可以分別在拆分成 2、4、8、16 和 32 份時評估程序性能,相應結果如下:

8a426d88-4e09-11ee-a25d-92fbcf53809c.png

到這里,Mojo 團隊獲得了 2.3 倍于并行版本的加速效果,更是達到矢量化實現版本的 78 倍。那么,在每個行中做進一步劃分會不會讓性能更上一層樓?如果單行很大,那也許可以。但 Mojo 團隊這個示例中的最大單行長度也不過 4096。另外,同一行內的各像素間往往更具相關性。這時候更適合采用單指令流多數據流(SIMD),避免工作被白白浪費在矢量通道當中。

8a72d1a8-4e09-11ee-a25d-92fbcf53809c.png

回顧整個旅程,Mojo 團隊先是對 Python 代碼實現了 2.6 萬倍性能提升,之后又使用超額訂閱達成提速 68847 倍的最終成績,并最終實現了 6.8 萬倍的 Python 提速效果;而在應用超額訂閱之后,性能在此前并行版本的基礎上又提高了 1 倍。

如何使用 Mojo?

目前,開發者可以將 Mojo 下載至自己的本地計算機上,Modular 公司表示,Mojo 絕不只是編譯器那么簡單。

Mojo 工具箱

Mojo SDK 的首個版本即提供輕松開發 Mojo 程序所需要的一切,具體包括以下工具選項:

  • Mojo 驅動程序:提供用于 read-eval-print-loop(REPL)的 shell,允許開發者構建并運行 Mojo 程序、打包 Mojo 模塊、生成文檔和格式化代碼。

  • 面向 Visual Studio Code(VS Code)的擴展:支持各種生產力功能,例如語法高亮顯示、代碼補全等。

  • Jupyter 內核:支持構建和運行 Mojo notebook,包括使用 Python 代碼。

  • 支持調試(即將推出):進入并檢查正在運行中的 Mojo 程序,甚至可以將 C++ 與 Mojo 堆棧幀混合起來。本次發布的 SDK 初始版本將支持 x86/Linux 系統,在后續更新中,團隊將進一步擴展至其他操作系統、硬件和工具功能。

8a88a956-4e09-11ee-a25d-92fbcf53809c.png

Mojo SDK 視圖示例

Mojo 驅動程序

與 Python 一樣,開發者可以運行 Mojo 命令在 REPL 中進行編程。下面是一個在 Mojo 中計算歐氏幾何距離的示例:

$ Mojo
Welcome to Mojo! 
Expressions are delimited by a blank line.
Type `:Mojo help` for further assistance.
1> %%python
2. import numpy as np
3. n = 10000000
4. anp = np.random.rand(n)
5. bnp = np.random.rand(n)
6> from tensor import Tensor
7. let n: Int = 10000000
8. var a = Tensor[DType.float64](n)
9. var b = Tensor[DType.float64](n)
10. for i in range(n):
11.    a[i] = anp[i].to_float64()
12.    b[i] = bnp[i].to_float64()
13> from math import sqrt
14. def Mojo_naive_dist(a: Tensor[DType.float64], b: Tensor[DType.float64]) -> Float64:
15.    var s: Float64 = 0.0
16.    n = a.num_elements()
17.    for i in range(n):
18.       dist = a[i] - b[i]
19.       s += dist*dist
20.    return sqrt(s)
23> fn Mojo_fn_dist(a: Tensor[DType.float64], b: Tensor[DType.float64]) -> Float64:
24.    var s: Float64 = 0.0
25.    let n = a.num_elements()
26.    for i in range(n):
27.       let dist = a[i] - b[i]
28.       s += dist*dist
29.    return sqrt(s)
30.
31> let naive_dist = Mojo_naive_dist(a, b)
32. let fn_dist = Mojo_fn_dist(a, b)
33. print(fn_dist)
34. 
1290.8521425092235
35. print(naive_dist)
36. 
1290.8521425092235

此外,Mojo 還允許開發者構建靜態編譯的可執行文件,從而在無需任何依賴項的前提下進行部署。例如,開發者可以編譯并運行示例庫當中的 hello. 程序,如下所示:

$ Mojo build hello.
$ ./hello
Hello Mojo !
9
6
3
$ ls -lGtranh hello*
-rw-r--r-- 1 0   817 Sep  3 23:59 hello.
-rwxr-xr-x 1 0   22K Sep  3 23:59 hello

這個靜態編譯的 22 kB 二進制文件非常酷,它的實現離不開 Mojo 緊湊的依賴項管理機制。

Visual Studio Code 擴展

VS Code 是目前全球最流行的 IDE 之一。Mojo 已經在 Visual Studio Marketplace 上發布了官方擴展,能夠直接提供支持。如此一來,各位開發者就能輕松在生產流程中獲取 Mojo 支持語法高亮顯示、診斷和修復、定義和引用、懸停幫助、格式化、代碼補全。

Jupyter 集成

Jupyter 為交互式開發提供了一套強大的環境。Mojo 包含一個 Jupyter 內核,允許開發者直接在其中使用 Jupyter notebook。團隊在 GitHub 上共享了 Mojo Playground 中的所有 notebook(https://github.com/modularml/mojo/tree/main/examples/notebooks),關于更多細節信息請參閱 README 自述文件。

調試支持(即將推出)

在即將發布的新版本中,團隊將在 VS Code 中添加通過 LLDB 命令行界面實現的交互式調試體驗。不僅如此,Mojo 的調試程序能夠在同一調試會話中無縫對 Mojo/C/C++ 混合代碼進行操作,進一步增強開發者在處理高度專業化代碼時的能力。


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

    關注

    10

    文章

    1938

    瀏覽量

    34598
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84453
  • 生態系統
    +關注

    關注

    0

    文章

    701

    瀏覽量

    20709

原文標題:比Python快68000倍!Mojo正式發布,網友:Python生態系統最重要的升級來了

文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    對比Python與Java編程語言

    使得編寫代碼更加靈活,但也可能導致運行時錯誤。 Java 語法相對冗長,需要顯式聲明變量類型,增加了代碼的可讀性和安全性。 靜態類型系統在編譯時進行類型檢查,減少了運行時錯誤。 二、性能 Python 解釋型語言,運行速度通常Java慢,但對于許多應用場景
    的頭像 發表于 11-15 09:31 ?216次閱讀

    spark為什么mapreduce

    spark為什么mapreduce? 首先澄清幾個誤區: 1:兩者都是基于內存計算的,任何計算框架都肯定是基于內存的,所以網上說的spark是基于內存計算所以,顯然是錯誤的 2;DAG計算模型
    的頭像 發表于 09-06 09:45 ?219次閱讀

    使用LM7171做非反向放大,為什么輸出的訊號設計的放大11?

    我使用LM7171做非反向放大,輸入訊號為0~3.3V方波,頻率10MHz,放大倍率11(G=1+(R1/R2)),OPA操作電壓0-36V,負載分別掛50歐姆及100歐姆,為什么輸出的訊號
    發表于 08-19 06:15

    哈佛輟學生發布大模型芯片英偉達H10020

    行業芯事行業資訊
    電子發燒友網官方
    發布于 :2024年06月27日 11:15:48

    ITEC發布ADAT3 XF TwinRevolve倒裝芯片貼片機

    ITEC公司近日發布了全新的ADAT3 XF TwinRevolve倒裝芯片貼片機,這款設備在業界樹立了新的標桿。其運行速度現有機器,每小時可完成驚人的60,000個倒裝芯片貼
    的頭像 發表于 06-03 10:53 ?580次閱讀

    華為云開發者桌面全新發布 CodeArts IDE for Python,極致優雅云原生開發體驗

    近日,華為云正式發布 CodeArts IDE for Python,這是一款內置華為自研 Python 語言服務,提供智能編程、靈活調試能力的可擴展桌面開發工具,為華為云開發者提供卓越
    的頭像 發表于 05-10 00:27 ?1202次閱讀
    華為云開發者桌面全新<b class='flag-5'>發布</b> CodeArts IDE for <b class='flag-5'>Python</b>,極致優雅云原生開發體驗

    華為云正式發布CodeArts IDE for Python

    近日,華為云正式發布CodeArts IDE for Python,這是一款內置華為自主創新的Python語言服務,提供智能編程、靈活調試能力的可擴展桌面開發工具,為華為云開發者提供卓越Pyt
    的頭像 發表于 05-08 14:58 ?457次閱讀

    花旗下調小米SU7預期交付量,實際虧損68000

    然而,有媒體發現,花旗的報告實際上所指的虧損金額為68000元,與全年銷量及虧損額相符,故而此前報道中的“6800元”實屬誤報。
    的頭像 發表于 04-15 14:59 ?485次閱讀

    Python自動化測試框架及其應用

    Pytest是一個非常成熟的全功能的Python測試框架,與python自帶的unittest測試框架類似,但是unittest框架使用起來更簡潔,功能更強大。
    的頭像 發表于 04-03 16:15 ?514次閱讀
    <b class='flag-5'>Python</b>自動化測試框架及其應用

    高效相移全橋CCFL控制器TPS68000數據表

    電子發燒友網站提供《高效相移全橋CCFL控制器TPS68000數據表.pdf》資料免費下載
    發表于 03-05 10:05 ?0次下載
    高效相移全橋CCFL控制器TPS<b class='flag-5'>68000</b>數據表

    Mojo Vision全彩Micro LED技術亮相CES 2024

    Mojo Vision專注于200mm和300mm晶圓級的藍光Micro LED,與其專有的高性能量子點技術結合。據悉,目前市面上的量子點技術主要為LCD等傳統顯示器所打造,因此缺乏AR眼鏡在高光照條件下使用所需的可靠性。
    發表于 01-19 11:26 ?668次閱讀
    <b class='flag-5'>Mojo</b> Vision全彩Micro LED技術亮相CES 2024

    python運行環境的安裝和配置

    Python是一種非常流行的編程語言,廣泛應用于科學計算、Web開發、人工智能等領域。為了能夠正常運行Python程序,我們需要先安裝和配置Python運行環境。本文將為您詳盡介紹Python
    的頭像 發表于 11-29 16:17 ?1104次閱讀

    python軟件對電腦配置要求

    Python是一種流行的編程語言,它在許多不同的領域中被廣泛使用,例如網站開發、數據科學和機器學習等。對于使用Python的開發者來說,了解Python軟件的電腦配置要求是非常重要的。本文將詳細介紹
    的頭像 發表于 11-29 14:58 ?9775次閱讀

    python語言特點有哪些

    Python是一種高級編程語言,由Guido van Rossum于1991年首次發布。它具有許多獨特的特點,這些特點使得Python在軟件開發領域變得非常流行。以下是關于Python
    的頭像 發表于 11-29 14:29 ?1046次閱讀

    python軟件怎么運行代碼

    Python是一種高級編程語言,它被廣泛用于開發各種類型的應用程序,從簡單的腳本到復雜的網絡應用和機器學習模型。要運行Python代碼,您需要一個Python解釋器,它可以將您的代碼翻譯成計算機可以
    的頭像 發表于 11-28 16:02 ?861次閱讀