본문 바로가기
백엔드기술/개발언어

Python의 대안 🔥Mojo 언어를 소개합니다.

by RevFactory 2023. 5. 5.

ChatGPT가 가져온 새로운 AI 시대를 맞아 그 어느 때보다 Python의 열기가 대단한 상황인데요.

Python이 배우기 쉽고, 빠르게 코딩할 수 있는 장점이 있는 반면에 파이썬을 다루는 분들이라면 누구나 Python이 가진 한계를 잘 알고 계실겁니다.

 

바로 성능 이슈인데요.

그 태생적 특성으로 인해 다른 언어들에 비해 매우 느립니다.

 

이를 해결하기 위한 새로운 언어가 출시를 앞두고 있는데요. 그 관심이 매우 뜨겁습니다.

 

바로 🔥Mojo Lang 입니다.

https://www.modular.com/

 

Modular: AI development starts here

The worlds fastest unified AI execution engine, a new programming language for all of AI and the most cost effective and performant compute platform.

www.modular.com

 

왜 Mojo 인가?

https://docs.modular.com/mojo/why-mojo.html

처음 모듈러를 시작했을 때는 새로운 프로그래밍 언어를 만들 생각이 없었습니다. 하지만 전 세계의 ML/AI 인프라를 통합하려는 의도로 플랫폼을 구축하면서 전체 스택에 걸친 프로그래밍이 너무 복잡하다는 것을 깨달았습니다. 게다가 많은 MLIR을 수작업으로 작성하고 있었기 때문에 시간이 많이 걸렸습니다.

우리가 원했던 것은 머신 러닝에 널리 퍼져 있는 가속기 및 기타 이기종 시스템을 대상으로 할 수 있는 혁신적이고 확장 가능한 프로그래밍 모델이었습니다. 즉, 강력한 컴파일 시간 메타프로그래밍, 적응형 컴파일 기술 통합, 컴파일 흐름 전반에 걸친 캐싱 등 기존 언어에서 지원하지 않는 기능을 갖춘 프로그래밍 언어가 필요했습니다.

액셀러레이터도 중요하지만, 가장 널리 퍼져 있지만 간과되는 '액셀러레이터' 중 하나는 호스트 CPU입니다. 오늘날 CPU에는 텐서 코어와 같은 수많은 가속기 블록과 기타 AI 가속 장치가 있지만, 데이터 로딩, 전처리 및 후처리, 외부 시스템과의 통합 등 전문 가속기가 처리하지 못하는 작업을 위한 '후방 지원' 역할도 합니다. 따라서 특정 프로세서에서만 작동하는 '가속기 언어'로는 AI를 끌어올릴 수 없다는 것이 분명했습니다.

응용 AI 시스템은 이러한 모든 문제를 해결해야 하며, 단 하나의 언어로 이를 해결하지 못할 이유가 없다고 판단했습니다. 그래서 Mojo가 탄생했습니다.

Mojo의 사명에는 컴파일러 내부의 혁신과 현재 및 새로운 가속기에 대한 지원이 포함되지만, 언어 구문이나 커뮤니티에 대한 혁신은 필요하지 않다고 판단했습니다. 그래서 우리는 널리 사용되고 있고, AI 생태계에서 사랑받고 있으며, 정말 훌륭하기 때문에 Python 생태계를 수용하기로 결정했습니다!

 

 

 

1. 성능

그래서 Mojo 가 얼마나 빠르냐구요?

Python에 비해 무려 35,000 배나 빠르다고 합니다.

 

2. 병렬 처리

 Mojo 는 멀티 코어에서 병렬 처리가 가능합니다.

 

3. Python의 상위 집합

Mojo는 Python의 상위 집합으로 기존의 파이썬 코드를 실행할 수 있습니다.

Javascript 와 Typescript 와 같은 상위 집합의 개념이라고 이해하시면 됩니다.

다만, 아직 초기 단계라서 모든 파이선 구문을 사용할 수는 없지만 공개된 바로는 머지 않아 모두 지원할 것으로 기대됩니다.

 

 

4. Mojo 개발사

Mojo는 Clang컴퍼일러와 Swift 언어, 그리고 LLVM 개발의 주역인 Chris Lattner 가 설립한 회사에서 개발을 진행하고 있습니다. Swift 가 Object-C 의 한계를 극복하고 성공적으로 안착했던 것을 고려해보면 Mojo 도 기대가 되는 부분이죠.

참고로 Mojo는 오픈소스로도 공개할 예정이라고 합니다.

 

 

 

5. AI 를 위한 프로그래밍 언어

세계에서 가장 진보된 컴파일러와 이기종 런타임으로 다중 코어, 벡터 유닛, 이색 가속기 유닛 등 하드웨어의 모든 성능을 활용할 수 있습니다. 복잡성 없이 C++ 및 CUDA와 동등한 성능을 목표로 하고 있습니다. 특히, 언어 통합 자동 튜닝을 통해 대상 하드웨어를 활용하기 위해 매개변수에 대한 최적의 값을 자동으로 찾아주는 기능도 포함하고 있습니다.

 

 

6. 새로운 Type 및 Type Checking

  int, struct, fn 같은 요소들을 통해 메모리 크기에 딱 맞게 값을 할당할 수 있습니다.  그리고  let, var 같은 타입 선언 을 통해 immutable binding 과 mutable binding 을 선언 가능합니다. 안정적인 라이브러리를 만드는데 매우 중요한 유형 검사를 통해 정적 분석기가 강화되었습니다.

 

 

7. Playground 

Jupyter와 같은 Playground 를 제공합니다.

 

 

그래서 어떻게 사용할 수 있나요?

아직 초개 개발 단계이며, waitlist 를 받아 일부 개발자들에게 엑세스를 풀어주고 있습니다..

여기서 신청할 수 있습니다.

https://www.modular.com/get-started

 

 

Mojo Document

Modular Docs - Mojo🔥

 

 

 

아래 더 보기 영상들을 통해 추가 정보를 확인하실 수 있습니다.

Fireship 영상에서는 엑세스 권한이 있어, 실제 코드 동작하는 것도 확인하실 수 있습니다.

 

 

 

더 보기

- Mojo Lang… a fast futuristic Python alternative - YouTube

- Mojo 🔥— NEW Language for AI (FIRST Look) - YouTube

- python 의 생태계를 활용할 수 있는 새로운 프로그래밍 언어 Mojo - Ai 언어모델 로컬 채널 (arca.live)

 

python 의 생태계를 활용할 수 있는 새로운 프로그래밍 언어 Mojo - Ai 언어모델 로컬 채널

https://docs.modular.com/mojo/Mojo는 파이썬 구문의 장점과 시스템 프로그래밍 및 메타프로그래밍을 결합하여 연구와 프로덕션 간의 격차를 해소하는 새로운 프로그래밍 언어입니다. Mojo를 사용

arca.live

- Jeremy Howard demo for Mojo launch - YouTube

 

 

tairov/llama2.mojo: Inference Llama 2 in one file of pure 🔥 (github.com)

llama2.c의 Mojo 기반 구현을 제공하는 포트