「AIの世界に向けたPythonの再設計」
『美容とファッションに関するエキスパートが語る、鮮やかで活気に満ちた記事!』
Pythonは存在する中で最も人気のあるプログラミング言語の1つです。学びやすく、使いやすいため、何年もの間存在しており、Pythonの開発者コミュニティが互いをサポートし、必要な機能を追加できるライブラリのエコシステムを構築しています。しかし、Pythonには欠点もあります:プログラムの実行が遅い傾向があり、並列処理が不得意なため、最新の人工知能(AI)プログラミングには適していません。
これらの困難を克服するため、コンピュータサイエンティストのクリス・ラトナーは新しい言語Mojoを作成することを目指しました。MojoはPythonの使いやすさを提供し、C++やRustなどの複雑な言語のパフォーマンスを備えています。彼は2022年1月に、Googleで共に働いていたティム・デイビスと協力し、Modularという会社を設立しました。ラトナーは最高経営責任者(CEO)、デイビスは最高製品責任者(CPO)となっており、AIに取り組む企業をサポートし、Mojoを開発しています。
モダンなAIプログラミングスタックでは一般的にPythonが上位にありますが、効率が悪いため、実装を処理するためにC++を使用します。その後、C++はパフォーマンスアクセラレータやグラフィックスプロセッシングユニット(GPU)と通信する必要があります。そのため、開発者はCompute Unified Device Architecture(CUDA)などのプラットフォームを追加して、これらのGPUを効率的に利用します。「Mojoは、スタックのこれら3つの異なるパートを統一し、スケーラブルなソリューションを構築できるようにする必要性から生まれました。」とラトナーは語っています。
- デジタル図書館とインターネットアーカイブの保存
- 「量子的な精度をスケールで達成する物質シミュレーションに授与されるゴードン・ベル賞」
- 「ホログラムがフィリピンのマルコス氏がシンガポールで話すことを可能にし、アメリカを訪れています」
その結果、Pythonと同じ構文を持つ言語が生まれました。Pythonでプログラミングに慣れている人々は、ほとんど困難なくMojoを取り入れることができますが、いくつかの指標では、Mojoは最大で35,000倍高速に実行することができます。AIにおいて、Mojoは多くのニューラルネットワークで使用される行列の乗算を特に高速に実行する能力があります。なぜなら、Mojoは乗算コードをコンパイルしてGPU上で直接実行するため、CUDAをバイパスするからです。
ラトナーはプログラミング言語の開発には精通しています。彼はイリノイ大学アーバナ・シャンペーン校で修士論文を書く際、いくつかの同僚とともに他のプログラムを最適化するためのコンパイラとプログラミングツールのセットであるLLVMを作成しました。また、Apple向けのプログラミング言語であるSwiftも開発し、開発者がAppleのiOSオペレーティングシステム向けに独自のアプリを書くことができるようにしました。
オーストラリアクイーンズランド大学の名誉教授であり、深層学習アプリケーション向けの無料のプログラミングコースとソフトウェアライブラリを提供するfast.aiの共同創業者であるジェレミー・ハワード氏は、大量のデータを扱うニューラルネットワークを実装するためにPythonよりも優れた言語が必要だと述べています。ハワード氏によれば、プログラマは通常、C、C++、またはRustなどの言語でこのようなプログラムを書き、その実行速度はPythonの100,000倍から1,000,000倍高速です。ハワード氏はModularのアドバイザーでもあります。「ただし、これにはニューラルネットワークの実装方法を考えるだけでなく、メモリの割り当てや解放、文字列の終了処理などのさまざまな作業を考える必要があります」と彼は述べています。「Cで何かを書きたい場合、Pythonで書くよりも10倍、または100倍長い時間がかかるでしょう。」
さらに、GPUやTensor Processing Unit(TPU)はCベースのプログラムを、中央処理装置(CPU)よりもはるかに高速に実行することができます。しかし、ハワード氏は、GPUまたはTPU向けにCを書く方がCPU向けに書くよりも難しいと言います。「そこで、開発時間がさらに数桁遅くなることになります。」ハワード氏は、ライブラリが開発を加速するためのコードを提供できる一方で、他の人が既に作成した操作に限定されるため、イノベーションが抑制される可能性があると主張しています。
これらはコンピュータプログラマにとって十分な課題であるとハワード氏は述べていますが、Pythonのような一般のユーザーにも使いやすい言語が必要です。「コンピュータプログラマだけでなく、医師やジャーナリスト、化学者、ゲーマーなどがコードを書いています」とハワード氏は言います。「すべてのデータサイエンティストがコードを書くものの、プロのコンピュータプログラマだと考える人は非常に少ないです。」
MojoはPythonのスーパーセットであることで、この需要を満たそうとしています。Pythonで書かれたプログラムはMojoにコピーするだけで、即座に高速に実行されると同社は述べています。スピードアップはさまざまな要因によるものです。例えば、Mojoは他のモダンな言語と同様にスレッドを有効にし、順次ではなく同時に実行できる小さなタスクです。Pythonのようにコードを実行するためのインタプリタを使用せず、Mojoはコンパイラを使用してコードをアセンブリ言語に変換します。Mojoはまた、静的型付けを使用するオプションも開発者に提供し、データ要素を定義し、エラーの数を減らす役割を果たします。
Pythonを遅くする要因の一つは、グローバルインタプリタロックです。これにより、一度に実行されるスレッドは1つだけです。これは1990年代初頭にPythonが作成された時には理にかなっていました。それは、ほとんどの人が1つのCPUコアしか持っていなかったためです。Pythonでは一部の並列プロセスを作成することは可能ですが、それは手間がかかり、Pythonは複数のスレッドを効率的に使用することができないため、利用可能なハードウェアの全容力を利用することはできません。”電話には8つのCPUコアがあります。モダンなデスクトップにはおそらく16個あります。そのうちの1つしか使えないなら、システムの計算能力の1/16しか手に入れることができません”、ラトナーは言います。
さらに、彼は言います、”インタプリタではなくコンパイラを使用することで、オーバーヘッドが大幅に削減されます。 “それにより、プログラムをコードを変更せずに10倍から20倍高速化することができます。その他の変更により、プログラムをPythonで実行するよりも100倍から1000倍高速化することができます。会社はMojoを使用してマンデルブロ集合を作成しました。マンデルブロ集合は、異なるスケールで同じジオメトリを持つフラクタル形状です。実用的な応用ではありませんが、それはベンチマークを示し、MojoはPythonに比べて35,000倍速く集合を作成することができました。
オプションの型
Pythonは動的型付け言語のため、型チェックは実行時に行われます。これはコンパイル時ではないため、プログラムのパフォーマンスが低下します。Mojoは、開発者が動的型付けを継続して使用することも可能にしますが、静的型付けのオプションも提供します。”静的な振る舞いはパフォーマンスにつながるので良いです。静的な振る舞いは、より正確さと安全性を保証します”、ラトナーは言います。
彼が追加した革新の一つは、自動チューニングです。プログラマーは、プログラムのさまざまな側面に対して値の範囲を指定します。例えば、タイルのサイズを2、4、8、または16にするか、特定の関数をさまざまな方法で実装するかなどです。コンパイラは、それらの変数のすべての異なる組み合わせを実装し、最も速いものを実行します。そのため、プログラムは実行するハードウェアに自動的に最適化されます。
Pythonを生み出し、2018年まで言語の”寛大な独裁者”として知られていたプログラマーのグイド・ヴァン・ロッサムは、Mojoの開発とラトナーが設定している目標の達成を注視することに興味があると言います。”クリスが話すとき、MojoはPythonの完全なスーパーセットになる予定であり、Pythonのコードだけを書いても、Pythonとまったく同じようにMojoで実行され、さらに高速になるでしょう”。彼はまだMojoがそれを達成できるかどうかはわかりませんが、言語は初期段階にあり、2023年7月時点ではMojoはまだダウンロードできません。
ヴァン・ロッサムは、C++やRustで効率的なコードを書く方法をすでに知っている経験豊富な開発者にとって、Mojoがより有用となる可能性があると考えています。”Pythonの初心者がPythonよりもはるかに高速に実行されるMojoコードを書くことはできません”、彼は言います。
5月には、Modularは一部のユーザーに対してJupyterノートブックでMojoを利用可能にしました。Jupyterノートブックは、人々がコードを実験するためのインタラクティブな開発環境です。同社は、2023年の秋にダウンロードを許可する予定だと述べました(Linuxでは9月に、MacOSでは10月にリリースされました)、完全リリースは2024年の夏になるかもしれません。
ラトナーは、MojoではPythonで機能しない場合があるかもしれないが、それは些細なものに過ぎないと述べています。彼は、MojoはC++がCに関係するようにPythonと関係しており、Cをより高レベルの言語に変えるクラスやテンプレートなどの追加が含まれていると言います。”Cで書くことができるプログラムでも、C++では同じ方法で機能しないプログラムやコンパイルさえできないプログラムがあるが、それらは非常に小さいので問題ではありません。Mojoでも同じことが言えます”、彼は言います。”私たちの目標は、問題となるすべての場合にできるだけ互換性があり、既存のエコシステムと連携することです。Pythonを壊したいのではなく、Pythonをより良くしたいのです。”
新しいプログラミング言語について書いてきたソフトウェアアーキテクトのダグ・メイルは、MojoはAIのためのPython++だと述べています。”彼はPythonをサポートし、人々がいる場所で人々に合わせようと一生懸命努力している。それは非常に実用的だと思います”、メイルは言います。”彼らは完全に新しい構文を考え出すことはせず、複数のハードウェアプラットフォームを横断してスケールするようになるでしょう。本当に素晴らしいですね。”
さらに読む
Mojo: AIのための超高速Python; https://twimlai.com/podcast/twimlai/mojo-a-supercharged-python-for-ai/ .
Don, E. AIのためのMojoプログラミング言語入門. LogRocket. (2023); https://blog.logrocket.com/getting-started-mojo-programming-language/ .
Loy, J. Pythonでゼロからニューラルネットワークを構築する方法. Towards Data Science. (2018年5月14日); https://towardsdatascience.com/how-to-build-your-own-neural-network-from-scratch-in-python-68998a08e4f6 .
Meil, D. なぜたくさんのプログラミング言語が存在するのか? BLOG@CACM. (2022年7月5日); https://cacm.acm.org/blogs/blog-cacm/262424-why-are-there-so-many-programming-languages/fulltext .
Yegulalp, S. Mojoプログラミング言語の初めの一歩. InfoWorld. (2023年6月7日); https://www.infoworld.com/article/3697739/a-first-look-at-the-mojo-language.html .
著者
Neil Savageは、アメリカ・マサチューセッツ州ローウェルを拠点にする科学技術ライターです。
©2023 ACM 0001-0782/23/12
この作品の一部または全部のデジタルまたは印刷したコピーを個人使用または教室内で非営利目的で作成または配布する場合、料金は免除されます。ただし、作品のコピーは営利または商業的な利益を目的とせず、この通知と初頁の完全な引用が付されている限り、この通知と完全な引用を含める必要があります。ACMが所有するこの作品のコンポーネントに関する著作権は、ACM以外の他者に帰属します。クレジット付きで要約することは許可されています。それ以外の場合は、事前の明示的な許可と/または料金が必要です。発行の許可を求めるには、[email protected] またはファックス(212) 869-0481 への連絡をお願いします。
デジタルライブラリは、Association for Computing Machineryによって発行されています。Copyright © 2023 ACM, Inc.
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「DeepMindがデスクトップコンピュータ上で正確に天気予報を予測する」
- 現代の時代において、信頼性のある量子コンピューティングの鍵は猫キュービットなのか?
- MicrosoftエンジニアのAIイノベーションとリーダーシップへのガイド
- 「マイクロソフトが初のAIチップ、Maia 100チップとコバルトCPUを公開」
- GoogleのプロジェクトOpen Se Curaをご紹介しますこれは、セキュアでスケーラブル、透明性の高い、効率的なAIシステムの開発を加速するためのオープンソースフレームワークです
- ランウェイの新しい「モーションブラシ」機能は、Gen-2においてあなたのジェネレーションに制御された動きを追加することを可能にします
- 「OpenAI、マイクロソフトの支援を受けてGPT-5開発に向けて準備を進める」