推薦:使用 NSDT場景編輯器 快速搭建3D應(yīng)用場景
Mojo的主要功能包括:
- 類似Python的語法和動態(tài)類型使Python開發(fā)人員易于學(xué)習(xí)Mojo,因為Python是現(xiàn)代AI / ML開發(fā)背后的主要編程語言。
- 使用Mojo,您可以導(dǎo)入和使用任何Python庫,確保與Python的完全互操作性。
- 它支持實時 (JIT) 和提前 (AOT) 編譯。Mojo編譯器應(yīng)用高級優(yōu)化,甚至GPU / TPU代碼生成。
- Mojo 可以完全控制內(nèi)存布局、并發(fā)性和其他低級細(xì)節(jié)。
- 通過結(jié)合動態(tài)和系統(tǒng)語言功能,Mojo遵循統(tǒng)一的編程模型,該模型對初學(xué)者友好且可擴(kuò)展,適用于基于加速器的各種用例。
Mojo目前是一種不完整的語言,不向公眾開放。該文檔面向具有系統(tǒng)編程經(jīng)驗的開發(fā)人員。
然而,隨著語言的發(fā)展,他們打算讓它變得更加用戶友好,并且初學(xué)者程序員更容易訪問。
Mojo Lang 入門
Mojo 不是公開的,但您可以通過注冊模塊化產(chǎn)品來訪問 Mojo Playground。注冊時,請確保您在模塊化產(chǎn)品興趣中選擇Mojo。
圖片來自模塊化:立即開始
注冊后,您將收到一封電子郵件,允許您在一小時內(nèi)訪問Mojo游樂場。Mojo Playground是一個JupyterHub環(huán)境,用戶可以在其中訪問相同的Mojo標(biāo)準(zhǔn)庫。但是,用戶有一個私有卷來編寫和保存他們的 Mojo 程序。
圖片來自Mojo Playground
當(dāng)Mojo開源并公開可用時,您可以從終端運行Mojo程序。它既是解釋語言,也是編譯語言。
您可以保存文件或 .test.mojo
test.??
是的,您可以使用火表情符號保存文件。如您所見,我們創(chuàng)建了一個簡單的Mojo文件并在終端中運行它。test.??
Mojo Lang和Python
Mojo是Python的超集,其語法與Python幾乎相似。它還引入了新功能,如、、、,并定義變量、結(jié)構(gòu)和函數(shù)以使其性能更高。let
var
struct
fn
let 和 var 聲明
在為 Mojo 編寫代碼時,您可以使用關(guān)鍵字聲明特定變量,這類似于您在 Rust 中聲明變量的方式。let
var.
關(guān)鍵字表示變量不可更改,而表示可以修改。這通過在編譯時強(qiáng)制實施限制來提高性能。let
var
結(jié)構(gòu)類型
Mojo 使用的關(guān)鍵字類似于 Python 的。Python 中的類是動態(tài)且緩慢的,類型更類似于 C/C++ 和 Rust。它們具有在編譯時確定的固定內(nèi)存布局,針對計算機(jī)本機(jī)性能對其進(jìn)行優(yōu)化。struct
class
struct
FN 定義
使用定義函數(shù)將創(chuàng)建一個 Python 函數(shù),具有與 Python 相關(guān)的所有動態(tài)性和靈活性。另一方面,關(guān)鍵字定義了具有更多限制的Mojo函數(shù)。這意味著默認(rèn)情況下參數(shù)是不可變的,并且需要顯式鍵入和聲明局部變量等。def
fn
語法比較示例
在示例中,我們將創(chuàng)建一個 Mojo 函數(shù),該函數(shù)將添加兩個參數(shù)。
要運行 Mojo 函數(shù),請執(zhí)行以下操作:
- 必須為函數(shù)的參數(shù)指定類型。
- 必須使用箭頭聲明返回類型。
使用 Python 編程時,我們可以選擇定義函數(shù)而無需顯式聲明參數(shù)和輸出類型。它使過程更加動態(tài)和直接。但是,相比之下,Mojo的功能比.fn
def
Matplotlib in Mojo
Mojo不僅增強(qiáng)了性能,還使開發(fā)人員能夠?qū)肴魏蜳ython庫并將其與Mojo函數(shù)集成。通過使用CPython解釋器,Mojo無縫支持當(dāng)前可用的所有Python模塊。
在下面的示例中,我們導(dǎo)入并可視化了線圖。有關(guān)高級示例,請查看Mojo中的Mandelbrot。matplotlib.pyplot
人們普遍認(rèn)為,Python是AI/ML最流行的語言。 參加機(jī)器學(xué)習(xí)科學(xué)家與Python職業(yè)軌道將為你提供必要的Python技能,以獲得機(jī)器學(xué)習(xí)科學(xué)家的工作。
與Mojo Lang一起編程
Mojo是Python的超集,就像TypeScript是JavaScript的超集一樣。除了新的關(guān)鍵字和函數(shù),任何Python程序員都可以理解并使用它構(gòu)建程序。
在這一部分中,我們將介紹使其高性能和安全的Mojo編程功能。
低級編程
Mojo 是一種高級編程語言,它通過 MLIR(多級中間表示)提供對低級基元的訪問,這是一種可擴(kuò)展的中間表示格式。這使得Mojo程序員能夠?qū)崿F(xiàn)零成本抽象,同時仍然利用強(qiáng)大的編譯器優(yōu)化。
切片優(yōu)化和自動調(diào)諧
Mojo 有一個內(nèi)置的平鋪優(yōu)化工具,通過將計算劃分為適合快速緩存內(nèi)存的較小平鋪來改善緩存局部性和內(nèi)存訪問模式。
Mojo中的自動調(diào)諧模塊提供了用于自適應(yīng)編譯的接口。它通過自動調(diào)整代碼來幫助您找到目標(biāo)硬件的最佳參數(shù)。
所有權(quán)和借款
Mojo使用所有權(quán)和借用系統(tǒng)來管理內(nèi)存,無需垃圾收集器并確保一致的運行時性能。Mojo的編譯器通過靜態(tài)分析分析變量生存期,并在不再使用數(shù)據(jù)時立即釋放數(shù)據(jù)。
手動內(nèi)存管理
Mojo 還提供了一個使用類似于 C++ 和 Rust 的指針的手動管理系統(tǒng)。
魔術(shù)中的矩陣乘法
在矩陣乘法示例中,我們觀察到將Python代碼導(dǎo)入Mojo導(dǎo)致性能提高了17.5倍。
通過在 Python 實現(xiàn)中引入類型,性能進(jìn)一步提高了?1866.8 倍。
此外,他們還利用矢量化、并行化、平鋪和自動調(diào)諧等技術(shù)實現(xiàn)了?14050.5 倍的性能提升。這太棒了。即使是 Julia 和 Rust 也無法提供這種級別的優(yōu)化。
魔郎代碼示例
在這個汽車示例中,我們將創(chuàng)建一個使用 Mojo 語法的類。CAR
- 我們將使用 創(chuàng)建一個類。
CAR
struct
- 使用 啟動突變變量。
var
- 設(shè)置變量類型。“速度”是 Float32,“模型”是字符串。字符串不是內(nèi)置類型,因此我們必須導(dǎo)入它。
- 我們將創(chuàng)建兩個類似于 Python 但使用該函數(shù)的初始化函數(shù)。一個只有車速,另一個只有車速和車型。
fn
- 之后,使用 300 速度創(chuàng)建一個對象。
CAR
- 打印汽車模型。
正如你可能觀察到的,Mojo的編程風(fēng)格和功能與Python相似。它作為Python的擴(kuò)展,增強(qiáng)了其性能和內(nèi)存管理功能。借助 Mojo,您可以快速訓(xùn)練模型,實現(xiàn)更快的模型推理(即使使用 CPU),在幾秒鐘內(nèi)分析海量數(shù)據(jù)集,并實時模擬。
您可以查看模塊化文檔上的所有代碼示例,并在操場上的Jupyter筆記本上運行它們。
Mojo會取代Python嗎?
目前,由于Mojo的早期開發(fā)階段和缺乏必要的功能,很難確定Mojo作為通用編程語言的潛力。但是,它可能有能力在高性能至關(guān)重要的機(jī)器學(xué)習(xí)和AI應(yīng)用程序中超越Python。
盡管如此,Mojo不太可能很快完全取代Python在數(shù)據(jù)科學(xué)和其他軟件開發(fā)領(lǐng)域的領(lǐng)導(dǎo)地位。
Mojo 專為機(jī)器學(xué)習(xí)應(yīng)用程序而設(shè)計,不適用于其他領(lǐng)域,例如 Web 后端、流程自動化或 Web 設(shè)計。雖然開發(fā)人員將來可能會擴(kuò)展其功能,但Mojo目前的重點是針對機(jī)器學(xué)習(xí)應(yīng)用程序進(jìn)行優(yōu)化。
此外,值得注意的是,與Python相比,Mojo的模塊和庫選擇有限,Python受益于龐大的開發(fā)人員社區(qū)不斷為AI和數(shù)據(jù)科學(xué)創(chuàng)建新的和改進(jìn)的工具。Mojo可能需要數(shù)年時間才能趕上Python的發(fā)展水平。
通過參加 DataCamp 的生成式 AI 概念課程,了解如何開發(fā)生成 AI 模型以及它們將如何影響社會向前發(fā)展。
結(jié)論
總之,雖然Mojo作為一種為AI / ML量身定制的快速,與Python兼容的語言顯示出前景,但它不太可能在不久的將來完全取代Python。Python 受益于龐大的生態(tài)系統(tǒng)、社區(qū)以及數(shù)據(jù)科學(xué)和 ML 領(lǐng)域的根深蒂固。充其量,Mojo可能會成為Python的補(bǔ)充語言,用于速度至關(guān)重要的地方。文章來源:http://www.zghlxwxcb.cn/news/detail-705552.html
原文鏈接:Mojo語言:AI的新編程語言 (mvrlink.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-705552.html
到了這里,關(guān)于AI人工智能Mojo語言:AI的新編程語言的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!