chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內(nèi)不再提示

比Python快68000倍!Mojo正式發(fā)布

jf_WZTOguxH ? 來源:AI前線 ? 2023-09-08 16:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

9 月 7 日,Modular 公司宣布正式發(fā)布 Mojo:Mojo 現(xiàn)在已經(jīng)開放本地下載——初步登陸 Linux 系統(tǒng),并將很快提供 Mac 與 Windows 版本。

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

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

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

Mojo:面向 AI 開發(fā)者的新型編程語言

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

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

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

  • 突破 Python 性能極限:時至今日,Python 已經(jīng)無處不在。但對于需要更高性能或特殊硬件的任務,Python 的表現(xiàn)往往不那么理想。Mojo 能夠發(fā)揮 CPU 的性能潛力,并可良好支持 GPU 和 ASIC 等外部加速器,提供與 C++ 和 CUDA 相當?shù)淖吭叫阅堋?/p>

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

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

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

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

  • GitHub 用戶 MadAlex1997 在 Mojo 中構(gòu)建了 N 維數(shù)組的實現(xiàn)(https://github.com/MadAlex1997/Mojo-Arrays)。

    為何能比 Python 快 68000 倍?

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

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

據(jù)介紹,Mojo 最初的目標是比 Python 快 35000 倍,近日該團隊表示,Mojo 將動態(tài)與靜態(tài)語言的優(yōu)點結(jié)合起來,一舉將性能提升達 Python 的 68000 倍。

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

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

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

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

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

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

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

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

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 份時評估程序性能,相應結(jié)果如下:

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

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

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

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

如何使用 Mojo?

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

Mojo 工具箱

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

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

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

  • Jupyter 內(nèi)核:支持構(gòu)建和運行 Mojo notebook,包括使用 Python 代碼。

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

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

Mojo SDK 視圖示例

Mojo 驅(qū)動程序

與 Python 一樣,開發(fā)者可以運行 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 還允許開發(fā)者構(gòu)建靜態(tài)編譯的可執(zhí)行文件,從而在無需任何依賴項的前提下進行部署。例如,開發(fā)者可以編譯并運行示例庫當中的 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

這個靜態(tài)編譯的 22 kB 二進制文件非??幔膶崿F(xiàn)離不開 Mojo 緊湊的依賴項管理機制。

Visual Studio Code 擴展

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

Jupyter 集成

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

調(diào)試支持(即將推出)

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


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

    關注

    10

    文章

    1957

    瀏覽量

    38385
  • python
    +關注

    關注

    56

    文章

    4848

    瀏覽量

    88952
  • 生態(tài)系統(tǒng)

    關注

    0

    文章

    709

    瀏覽量

    21456

原文標題:比Python快68000倍!Mojo正式發(fā)布,網(wǎng)友:Python生態(tài)系統(tǒng)最重要的升級來了

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    DeepSeek最新論文:訓練速度提升9,推理速度11

    電子發(fā)燒友網(wǎng)報道(文/梁浩斌)周二xAI發(fā)布了Grok3,這個馬斯克稱之為“地球上最聰明的AI”搶占了所有人的眼球。 ? 為了打造最強AI大模型,xAI投入了20萬塊H100 GPU,計算資源
    的頭像 發(fā)表于 02-20 11:25 ?2467次閱讀
    DeepSeek最新論文:訓練速度提升9<b class='flag-5'>倍</b>,推理速度<b class='flag-5'>快</b>11<b class='flag-5'>倍</b>!

    Pico Technology發(fā)布Python軟件包pyPicoSDK

    近日,全球領先的基于 PC 的儀器供應商Pico Technology 官方發(fā)布了 pyPicoSDK,這是一款旨在簡化 PicoScopes 應用的 Python 軟件包。pyPicoSDK 在
    的頭像 發(fā)表于 09-29 15:03 ?415次閱讀

    python app不能運行怎么解決?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    發(fā)表于 08-06 06:27

    DDR5速率以上!DDR6已進入平臺驗證

    計劃提升至17600MT/s,達到現(xiàn)行DDR5最高速度(約8000MT/s)的兩以上。 ? 2024 年,JEDEC 開始著手研究下一代內(nèi)存標準 DDR6,目標是為存儲器領域帶來更快的讀寫速度和更高
    的頭像 發(fā)表于 07-31 08:32 ?3137次閱讀

    業(yè)界首個華為發(fā)布全液冷兆瓦級超充 補能效率較傳統(tǒng)充樁提升近4

    在2025華為智能電動&智能充電網(wǎng)絡戰(zhàn)略與新品發(fā)布會上,華為正式發(fā)布了業(yè)界首個全液冷兆瓦級超充解決方案。不僅僅是充電,壽命還長,使用壽命長達 10 年。 據(jù)悉,華為全液冷兆瓦級超充搭載的是華為自主
    的頭像 發(fā)表于 04-23 16:26 ?1003次閱讀

    新品發(fā)布!國民技術推出高性能多協(xié)議充協(xié)議SoC芯片

    近日,國民技術電源管理產(chǎn)品再添新成員,正式發(fā)布高性能多協(xié)議充協(xié)議SoC芯片(NP11/NP12/NP21系列),采用Arm內(nèi)核,基于Flash工藝設計,產(chǎn)品可支持PD/QC/UFCS/APPPLE
    的頭像 發(fā)表于 04-18 21:06 ?983次閱讀
    新品<b class='flag-5'>發(fā)布</b>!國民技術推出高性能多協(xié)議<b class='flag-5'>快</b>充協(xié)議SoC芯片

    零基礎入門:如何在樹莓派上編寫和運行Python程序?

    是一種非常有用的編程語言,其語法易于閱讀,允許程序員使用匯編、C或Java等語言更少的代碼行。Python編程語言最初實際上是作為Linux的腳本語言而開發(fā)的。Py
    的頭像 發(fā)表于 03-25 09:27 ?1269次閱讀
    零基礎入門:如何在樹莓派上編寫和運行<b class='flag-5'>Python</b>程序?

    納祥科技多功能Switch充投屏拓展方案!#產(chǎn)品方案 #

    深圳市納祥科技有限公司
    發(fā)布于 :2025年03月18日 16:28:35

    Python繪圖Matplotlib快速參考手冊

    ?PYTHON
    發(fā)表于 02-07 14:04 ?0次下載

    使用Python實現(xiàn)xgboost教程

    使用Python實現(xiàn)XGBoost模型通常涉及以下幾個步驟:數(shù)據(jù)準備、模型訓練、模型評估和模型預測。以下是一個詳細的教程,指導你如何在Python中使用XGBoost。 1. 安裝XGBoost
    的頭像 發(fā)表于 01-19 11:21 ?1971次閱讀

    思氮化鎵充電器分享:Super GaN伸縮線充35W

    快節(jié)奏的時代,在旅游、辦公等場景下,一款高效、便捷的充電器可以讓我們的生活更便捷、高效。今天就給大家推薦一款思氮化鎵充電器——Super GaN伸縮線充35W。它具備多重亮點,可以滿足我們在許多場景下的充電需求,成為我們的得力助手。
    的頭像 發(fā)表于 01-04 09:41 ?950次閱讀

    對比Python與Java編程語言

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

    使用Python進行圖像處理

    下面是一個關于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發(fā)表于 11-07 10:14 ?767次閱讀
    使用<b class='flag-5'>Python</b>進行圖像處理

    6G測試速度達938Gbps,5G速度5000

    智能手機網(wǎng)絡連接速度的5000。典型的5G運行速度約為200Mbps,而在實際使用中,由于信號連接問題,其提供的速度往往遠低于100Mbps。
    的頭像 發(fā)表于 10-22 16:27 ?1851次閱讀