話題のAIソフトウェア開発向けプログラム言語『Mojo』を使ってみた
『Mojo』は2023年5月2日にModular Inc. から発表されたAI開発用のプログラム言語です。
特徴としては、Pythonのスーパーセットとして設計されていることと、約35,000倍とも公式が謳っている処理速度です。
『Mojo Playground』という同社サイト上の実行環境で試用することができたのですが、ついに、2023年9月7日からローカルで開発ができるようになりました。
今回は時代の最先端を少しだけ触ってみて、簡単な性能比較をしてみたいと思います。
比較対象
比較としては、ループ処理と再帰処理の二つの簡単な処理の速度で、 Python と Mojo、そして、参考としてこちらも最近リリースされた Python を高速化するコンパイラである codon の3つを比較対象としました。
ループ処理
Python
import time
start_time = time.time()
result = 0
# n の数値を変えて処理速度を比較します
n = 10 ** 10
# 単純なループ処理
for i in range(n):
result += 1
end_time = time.time()
print(result)
print(end_time - start_time)
Mojo
from time import now
fn main():
let start_time = now()
var result = 0
# n の数値を変えて処理速度を比較します
let n = 10 ** 10
# 単純なループ処理
for i in range(n):
result += 1
let end_time = now()
print(result)
# mojo の time は ns で出力されるので、 *1e-9 しています
print((end_time - start_time) * 1e-9)
処理結果
(単位:秒)
n | python | mojo | codon |
---|---|---|---|
100,000,000 | 3.359339 | 0.000000046 | 0.048680 |
1,000,000,000 | 37.679238 | 0.000000047 | 0.490931 |
10,000,000,000 | 428.612758 | 0.000000055 | 4.811030 |
100,000,000,000 | 4875.826876 | 0.000000057 | 47.655400 |
ループ処理に関しては、mojo の処理速度の速さが顕著に表れています。 codon も数十倍の高速化に至っていますが、mojo はそれを遥かに凌ぐ処理速度となり、圧勝と言わざるを得ません。
フィボナッチ数列(再帰処理)
Python
import time
# フィボナッチ数列の計算式
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
start_time = time.time()
# n の数値を変えて処理速度を比較します
n = 50
result = fibonacci(n)
end_time = time.time()
print(result)
print(end_time - start_time)
Mojo
from time import now
# フィボナッチ数列の計算式
fn fibonacci(n: Int) -> Int:
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
def main():
let start_time = now()
# n の数値を変えて処理速度を比較します
let n = 50
let result = fibonacci(n)
let end_time = now()
print(result)
# mojo の time は ns で出力されるので、 *1e-9 しています
print((end_time - start_time) * 1e-9)
処理結果
(単位:秒)
n | python | mojo | codon |
---|---|---|---|
35 | 0.701877 | 0.021244 | 0.022000 |
40 | 8.105023 | 0.226062 | 0.247272 |
45 | 94.926369 | 2.630815 | 2.651900 |
50 | 1012.234829 | 28.637981 | 29.855800 |
再帰処理ということもあり、ループ処理のように顕著に処理速度が変わるということはありませんでしたが、それでも Python と比較すると30倍以上の速度で処理していることが分かります。
mojo と codon に関しては、若干ではありますが mojo の方が処理速度は早く、またmojoのコードでは処理速度の単位を揃えるため ns ⇒ s の処理をしている為、その分を差し引いた純粋な計算処理速度では mojo に軍配が上がるのではないかと考えられます。
使ってみての感想
フロントエンド業務では使用しませんが、元々 Python ユーザでちょっとした作業であれば Python を使うことが多いのですが、 そこまで書き味も変わらず、かつ処理速度が上がったということで、とても驚きました。
今回は numpy などのライブラリを使用しない純粋な計算処理だけでしたが、ライブラリを交えた処理や並列化処理などにおいても高速化を図ることができると考えられます。
このように時代の最先端に触れたことで、AI開発はますます飛躍していくことを肌で実感することができました。
この記事を書いた人
-
システムエンジニアへの夢をあきらめきれず、建築業界からIT業界へ転職。
アーティス入社後はフロントエンドエンジニアとして、webアプリケーションサービスの開発に従事している。趣味は、ラーメン屋巡り。
この執筆者の最新記事
- 2024年9月27日WEB話題の『ChatGPT o1』をコーディングに使ってみた(ChatGPT 4oとの比較)
- 2024年7月30日WEB【CSS】display:none に対してアニメーションを付けてみた
- 2024年5月21日LIFE人気のキーボード「Wooting 60HE+」を触ってみた
- 2024年3月27日WEBZodを使用したバリデーション実装ではまったこと【メールアドレス必須エラー 編】
関連記事
最新記事
FOLLOW US
最新の情報をお届けします
- facebookでフォロー
- Twitterでフォロー
- Feedlyでフォロー