매일 업데이트
2023-06-05 12:40 7 min

AI 개발자를 위한 Mojo 언어

기술 세계는 끊임없이 변화하고 있으며, 그 중심에는 최근 주목받는 모조(Mojo) 프로그래밍 언어가 있습니다. 파이썬 기반 프로젝트의 실행 속도를 향상시켜 개발자들에게 C 언어에 버금가는 속도를 제공하는 것을 목표로 합니다.

파이썬은 가장 인기 있는 프로그래밍 언어 중 하나이며, 프로그래밍이나 컴퓨터 과학을 처음 접하는 사람들에게 훌륭한 입문 도구입니다. 또한 복잡한 애플리케이션을 개발하는 숙련된 개발자에게도 강력한 도구로 활용됩니다. 하지만 파이썬의 가장 큰 단점 중 하나는 실행 속도입니다. 바로 이 지점에서 모조가 등장합니다.

이 글에서는 모조와 파이썬 생태계의 관계를 살펴보고, 모조가 가진 잠재력과 특징에 대해 자세히 알아보겠습니다.

모조란 무엇인가?

모조는 현대적인 고급 프로그래밍 언어로, 개발자들이 애플리케이션을 빠르고 효율적으로 구축할 수 있도록 직관적인 디자인을 제공합니다. 파이썬의 구문과 생태계를 활용하면서 메타 프로그래밍 기능과 시스템 프로그래밍을 가능하게 하여 개발 및 연구 분야 사이의 격차를 해소하는 데 중점을 두고 있습니다.

모조는 러스트(Rust) 언어의 많은 부분을 차용하여 파이썬 생태계에 빠른 실행 속도를 제공하는 것을 목표로 합니다. 기술적으로 모조는 파이썬의 상위 집합으로, 파이썬의 기능에 대한 접근성을 높여줍니다.

모조 개발팀은 인공지능 인프라 회사인 모듈러(Modular)에서 나왔습니다. 이는 모조가 인공지능 개발자를 위한 프로그래밍 언어임을 의미합니다. 모조와 함께, 개발자들이 워크플로우를 개선하고, 인공지능 제품을 확장하며, 추론 대기 시간을 줄일 수 있도록 지원하는 간섭 엔진(Inference Engine)도 함께 도입했습니다. (이에 대한 자세한 내용은 나중에 설명하겠습니다.)

모듈러의 CEO인 크리스 래트너(Chris Lattner)에 따르면, 모조는 파이썬보다 최대 35,000배 빠릅니다. 그는 또한 빠른 프로그래밍 언어 개발의 핵심 인물입니다. 이러한 속도 향상은 모조가 LLVM 컴파일러 도구 체인과 MILR(Multi-level Intermediate Representation Overview) 컴파일러 인프라를 활용하기 때문에 가능합니다.

모조 프로그래밍 언어의 주요 목표는 다음과 같습니다.

  • 파이썬 생태계와의 완벽한 호환성
  • 개발자들이 코드의 일부를 가속기에 배포할 수 있는 기능
  • 예측 가능한 성능을 위한 저수준 제어
  • 생태계의 분열 방지

모조를 사용하려면 클라우드 기반 호스팅 환경인 모조 플레이그라운드(Mojo Playground)를 통해 접근해야 합니다. 계정 로그인 후 개발 환경을 사용할 수 있습니다.

왜 모조가 필요한가?

모조의 핵심 아이디어는 ML/AI 인프라를 통합하기 위해 전체 스택에서 작동하는 프로그래밍 언어를 제공하는 것입니다. 또한 MLIR 코드를 작성할 필요가 없으므로 사용 편의성이 향상됩니다.

모듈러에 따르면 모조는 확장 가능하고 혁신적인 프로그래밍 모델을 제공할 것입니다. 이를 통해 AI 분야의 사용자들은 가속기 및 이기종 시스템과 쉽게 작업할 수 있습니다.

기술적으로 모조는 컴파일 타임 메타프로그래밍을 지원하는 프로그래밍 언어입니다. 또한 컴파일 과정 중 캐싱, 적응형 컴파일 기술 등과 같은 다양한 기능을 제공하며, 이는 다른 프로그래밍 언어에서는 찾아보기 어렵습니다.

모조의 철학에 대해 더 자세히 알고 싶다면 모듈러 문서의 "Why Mojo🔥"를 참고하시기 바랍니다.

모조 프로그래밍 언어의 특징

이제 모조 프로그래밍 언어의 주요 특징들을 자세히 살펴보겠습니다.

#1. 파이썬과의 완벽한 호환성

모조는 파이썬 생태계에 대항하는 것이 아니라, 함께 협력하는 것을 목표로 합니다. 모조는 파이썬이 제공하는 것과 동일한 기능, 라이브러리 및 도구를 사용할 수 있습니다. 따라서 모조 환경 내에서 원하는 모든 파이썬 라이브러리를 자유롭게 활용할 수 있습니다.

파이썬 라이브러리를 가져오려면 다음 코드를 사용해야 합니다.

from PythonInterface import Python

코드를 실행한 후, Python.import_module() 함수를 사용하여 파이썬 라이브러리를 가져올 수 있습니다.

예를 들어, numpy를 가져오려면 다음 코드 줄을 사용해야 합니다.

let np = Python.import_module(“numpy”)

이는 파이썬에서 "import numpy as np"를 실행하는 것과 동일한 결과를 냅니다.

가져온 라이브러리를 사용해서 배열 생성 및 다양한 계산 등을 수행할 수 있습니다.

array = np.array([1, 2, 3])

print(array)

마찬가지로 matplotlib.pyplot을 가져와서 모조 내에서 플롯을 생성할 수도 있습니다.

다음은 모조 플레이그라운드에서 코드를 실행했을 때의 모습입니다.

직접 코드를 테스트해 보려면 아래 코드를 복사해서 붙여넣으세요.

from PythonInterface import Python

let np = Python.import_module("numpy")

array = np.array([1, 2, 3, 4, 5])

print(array)

#2. MILR

MILR은 Multi-Level Intermediate Representation의 약자입니다. 모조는 MILR을 지원하며, 이를 통해 개발자들은 다양한 고급 기능을 활용할 수 있습니다. 이러한 기능에는 AI 하드웨어 장치, 스레드 및 벡터 등이 포함됩니다.

MILR은 동시성을 지원하여 모조의 성능을 파이썬보다 훨씬 빠르게 만들어 줍니다. 또한 개발자들이 여러 코어를 효과적으로 활용할 수 있도록 도와줍니다.

#3. 소유권 및 차용자 검사기

파이썬의 메모리 관리는 가비지 수집기를 사용하여 안전성을 확보하지만, 프로그래머는 코드의 경합 상태를 방지해야 합니다.

모조는 러스트와 유사하게 엄격한 소유권 및 차용자 검사기 모델을 구현합니다. 현재 이 모델은 부분적으로 적용되고 있습니다. 이 모델을 사용하는 주된 이유는 동시성을 개선하고 향상된 메모리 관리를 제공하기 위함입니다.

소유권 모델은 또한 뛰어난 동시성 지원을 보장하는 데 이상적인 스레드 안전 접근 방식을 제공합니다. 이를 통해 프로그램이 경합 상태로 실행되지 않도록 합니다. 또한 차용자 검사기는 변수가 실행 시간 동안 항상 올바르게 사용되도록 보장합니다.

#4. 추상화 비용 제로

모조는 추상화 비용이 없는 기능을 제공하여 개발자들이 스토리지에 대한 완벽한 제어를 할 수 있도록 지원합니다. 프로그래머는 구조체에 값을 인라인으로 할당할 수 있습니다.

#5. 자동 튜닝

모조는 자동 튜닝 기능을 제공합니다. 이를 통해 대상 하드웨어에 따라 매개변수에 대한 최적 값을 자동으로 할당할 수 있습니다.

자동 튜닝 기능을 사용하면 대상 하드웨어에 맞춰 코드를 수동으로 최적화할 필요가 없습니다.

속도: 모조 언어는 얼마나 빠를까?

파이썬은 사용 편의성과 유지 보수성을 강조한 고급 프로그래밍 언어입니다. 하지만 이러한 특징 때문에 다른 솔루션이나 프로그래밍 언어에 비해 속도가 느리다는 단점이 있습니다.

모듈러의 테스트 결과, 모조가 파이썬보다 최대 35,000배 빠른 것으로 나타났습니다. 그들은 Mandelbrot 알고리즘을 사용하고, 인텔 제온 프로세서가 탑재된 AWS 인스턴스에서 실행했습니다. 파이썬과 함께 PYPY, SCALAR C++, 그리고 모조를 테스트한 결과, 모조가 압도적으로 빠른 속도를 보여주었습니다. 아래에서 그 결과를 확인할 수 있습니다.

출처: module.com

모조 속도에 대한 자세한 내용은 Julialang 커뮤니티의 게시물을 참조하시기 바랍니다.

모듈식 추론 엔진 – AI 모델을 저렴하게 실행

모듈러는 또한 프로덕션 환경에서 AI 모델을 실행하는 비용을 줄여주는 모듈식 간섭 엔진(Modular Interference Engine)을 개발하고 있습니다. 모조는 기본적으로 모듈식 간섭 엔진을 지원하며, 이를 통해 팀은 워크플로우를 단순화하고, 개발자들은 추론 대기 시간을 줄여 AI 제품을 쉽게 확장할 수 있습니다.

또한, 개발자는 엔진을 사용하기 위해 모델을 변경할 필요가 없습니다. 일단 로드되면, 폭넓은 하드웨어 지원을 통해 고성능으로 실행될 수 있는 PyTorch 및 TensorFlow 모델을 강화할 수 있습니다.

파이썬을 대체할 것인가?

모조는 아직 비교적 새로운 언어입니다. 하지만 잠재력이 매우 크기 때문에 데이터 과학자나 프로그래밍 언어와 같은 특정 대상 고객에게 도달하는 데 시간이 걸릴 수 있습니다. 모조는 인공지능 애호가와 학습자에게 특정 문제에 대한 해결책을 제시하지만, 파이썬 언어의 속도를 향상시키는 다른 솔루션들도 존재합니다. 예를 들어 Jax, Codon, Julia와 같은 데이터 과학에 특화된 언어들을 찾아볼 수 있습니다.

따라서 모조의 미래는 두 가지 방향으로 나아갈 수 있습니다. 첫째, 기능이 크게 향상되고 커뮤니티에서 폭넓게 채택될 수 있습니다. 둘째, 파이썬 라이브러리와 모듈식 간섭 엔진을 활용하는 임시 프로그래밍 언어로 남을 수도 있습니다.

그렇다면 모조가 파이썬을 대체할 수 있을까요? 오직 시간만이 답을 줄 수 있을 것입니다.

다음으로 일반적인 작업을 단순화하는 유용한 파이썬 원라이너에 대해 알아보시기 바랍니다.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.