2. 作者・誕生の背景・MLIR
2.1. この章で学ぶこと
Modular 社と Mojo の関係
AI インフラで新しい言語が求められる理由
MLIR をどう理解すればよいか
新しい言語の話では、「誰が作ったのか」が注目されがちです。 でも、この章で大事なのは人物紹介そのものではありません。 なぜ今、Mojo のような言語が出てきたのか をつかむことです。
ここでは、会社の背景とコンパイラ基盤である MLIR の 2 つから、Mojo の立ち位置を見ていきます。
2.2. Modular と Mojo の関係
Mojo は Modular Inc. が開発している言語です。 Modular は、AI の推論やデプロイを含む AI インフラ を作っている会社です。
その文脈の中で Mojo は高水準のコードを書いても、低水準の最適化まで同じコンパイラ基盤の上で扱えるよう設計された言語です。
特に公式では、CPU、GPU、そのほかのアクセラレータ のような、いろいろなハードウェアを意識しながら、生産性と性能を両立することが強調されています。
出典: Mojo Vision / Modular 公式サイト
2.3. Chris Lattner(クリス・ラトナー)について
Mojo や Modular の話では、Chris Lattner の名前がよく出てきます。 Chris Lattner は、LLVM、Clang、Swift などのコンパイラや言語の開発に深く関わってきた人物として知られています。
ここで大事なのは、肩書きを覚えることではありません。 コンパイラや言語設計の経験が深い人たちが、Mojo の基盤づくりに関わっている と理解すれば十分です。
それによって、Mojo が 強いコンパイラ基盤 や 単一の言語スタック を重視していることにも納得しやすくなります。
2.4. なぜ AI インフラで新しい言語が必要なのか
AI の研究や開発では、Python がとてもよく使われています。 実際、Python は AI の世界でいちばん身近な入口です。
ただし、本番環境で高い性能を出す部分 になると事情が変わります。 そこでは昔から、次のようなものが混ざりやすくなっていました。
Python
C / C++
CUDA
専用ランタイム
複数の中間表現(IR)
つまり、書く言語と、高速化のための仕組みが分離しやすい ということです。
Mojo が目指しているのは、その分離をできるだけ小さくすることです。 できるだけ一つの言語の流れで書き、コンパイルの段階で必要な最適化や変換を行う、という考え方です。
出典: Mojo Manual / Vision
2.5. MLIR とは何か
Mojo が「書きやすさと性能の両立」を目指せる理由は、文法だけにあるのではありません。 コンパイラ基盤まで含めて設計しているからこそ 可能であり、その鍵が MLIR です。
Mojo のコンパイラは MLIR を基盤として構築されています。 つまり、Mojo で書いたコードは MLIR の仕組みを通じて変換・最適化され、CPU や GPU などの実際のハードウェアで動くコードになります。
前の節で、AI インフラには「Python・C++・CUDA・複数の中間表現(IR)」が混ざりやすいという話をしました。 Mojo はその混在を解消したい、という動機から設計されており、MLIR がその一つの答えです。
MLIR は Multi-Level IR の略です。
簡単に言うと、いろいろな段階の中間表現をまとめて扱うための仕組み です。
ここでいう中間表現(IR)は、ソースコードと機械語のあいだにある、コンパイラ内部の表現のことです。
MLIR のポイントは、抽象的な表現から低水準な表現まで、段階を分けて変換していけることです。 これを lowering と呼びます。
Mojo では、この MLIR を基盤として使うことで、
高水準で書いたコードを
少しずつ低水準な形に変換しながら
CPU や GPU などに合わせて最適化していく
という流れを取りやすくしています。
出典: MLIR プロジェクト(LLVM) / Mojo Vision
2.6. この本での MLIR の理解のしかた
MLIR について、命令名や細かいパスの名前まで覚える必要はありません。 この本では、次の 2 つがわかれば十分です。
Mojo は、ただ Python に似ているだけの言語ではない
Mojo は、強いコンパイラ基盤を前提にした言語 であり、その中心に MLIR がある
このイメージを持っておくと、あとで出てくる GPU、レイアウト、compile-time の話がつながりやすくなります。
2.7. まとめ
Mojo は Modular の AI インフラ の文脈で生まれた言語です。
目標は、書きやすさと高性能の両立 です。
Python は入口として強いですが、性能が必要な部分では多くの技術が混ざりやすいです。
Mojo は、その境界をできるだけ一つの流れにまとめようとしています。
その基盤として MLIR が使われています。
2.8. 出典
補足: この章では、MLIR の細かい技術よりも、なぜ Mojo の説明で MLIR が出てくるのか をつかめれば十分です。