2023. 6. 13. 23:19ㆍTech News
1. 탄생 배경
Python은 배우기 쉽고, 빠르게 코딩할 수 있는 장점으로 세계에서 가장 많이 사용되는 프로그래밍 언어 중 하나이다.
현재 웹 개발자, 데이터 과학자, 마케터, AI 관련 전문가 등 다양한 도메인에서 쓰이고 있다.
하지만 이런 Python도 명확한 단점이 있다. 바로 성능이슈인데, Python은 태생적 한계로 인해 C++나 Rust등의 언어에 비해 실행속도가 수백배나 느리다.
그림을 통해 알 수 있듯이 Mojo는 Python에 비해 무려 35,000 배나 빠르다고 한다.
또한 Python은 배포하기도 쉽지 않은데, Python으로 프로그램을 만들고 이를 실행할 수 있도록 서비스를 제공하려는 경우, 프로그램이 실행되는데 필요한 모든 패키지와 Python을 설치해야 만한다.
이를 해결하기 위한 새로운 언어의 출시가 임박했는데, 사람들의 관심이 매우 뜨겁다.
바로 🔥Mojo Lang 이다.
2. 그래서 Mojo 가 무엇인가요?
Mojo는 완전히 새로운 프로그래밍 언어가 아니라 Python의 상위 집합이다. 즉, Python 위에 구축된다는 것을 의미한다.
누구나 알고 있는 Python의 모든 기능과 구문을 사용가능하며, 여기에 몇가지 새로운 기능들을 추가했다.
이를 통해, Mojo는 Python을 C++와 Rust만큼 빠르고 강력하게 만들어준다.
def hello_world():
print("Hello World!")
hello_world()
위 코드는 Mojo와 Python에서 모두 정상적으로 작동한다. Mojo는 Python과 완벽하게 호환되는것을 목표로 한다.
즉, 기존의 모든 Python 패키지와 라이브러리는 기본적으로 Mojo에서 정상적으로 작동한다.
from PythonInterface inmport Python
pd = Python.import_module("pandas")
np = Python.import_module("numpy")
df = pd.read_csv("DATA_PATH")
arr = np.array([1, 2, 3])
이 경우는 Mojo에서 pandas와 numpy를 사용하는 방법이다. 다음과 같이 간단한 선언만으로 Python에서와 동일하게 다양한 Python 라이브러리를 사용할 수 있다.
모조는 '.mojo'라는 파일 확장자 뿐만 아니라 '🔥' 이모티콘으로도 확장자 사용이 가능하다.
3. Python과의 차이점
새로운 Type 및 Type Checking
def hello_world():
print("Hello World!")
hello_world()
다음 함수는 Mojo에서 실행되기는 하지만 빠르게 실행되지는 않는다.
from String import String
fn hello(nema: String):
print("Hello", name)
hello("world")
Mojo에서 함수를 빠르게 실행시키고 싶을때는 다음과 같이 수정해 주어야 한다.
함수를 정의할 때 'def'를 사용하는 대신 ‘fn’을 사용하고, ‘name’ 매개변수의 타입이 ‘string’이라고 Mojo에게 알려주어야 한다. 함수를 'fn'으로 선언하면 Mojo의 컴파일러는 함수의 동작을 강력하게 보장할 수 있고, 컴파일 시점에 최적화할수 있다.
클래스를 선언하는 방법도 알아보자.
왼쪽 코드도 Mojo에서 정상적으로 실행은 가능하다. 하지만 빠르게 실행하고 싶다면, 'class' 대신 'struct'로 선언하고 각각의 매게변수의 타입을 함께 표기해주면 된다.
또한 Mojo는 기존에 파이썬에서 없었던 키워드인 'let'와 'var'을 도입했다.
'let'은 불변변수를 'var'은 가변변수를 의미한다. 이를 통해 immutable binding 과 mutable binding 선언이 가능하다.
병렬 처리
세계에서 가장 진보된 컴파일러인 'MLIR'와 이기종 런타임으로 다중 코어, 벡터 유닛, 이색 가속기 유닛 등 하드웨어의 모든 성능을 활용할 수 있다. 특히, 언어 통합 자동 튜닝을 통해 대상 하드웨어를 활용하기 위해 매개변수에 대한 최적의 값을 자동으로 찾아주는 기능도 있다.
또한 컴파일러 인프라스트럭처인 MLIR을 사용하기 때문에 병렬 처리가 가능하다. 이는 단일 스레드인 Python에 비하면, AI 개발에 있어 장점을 가지고 있다.
배포 용이성
Mojo는 컴파일이 되기 때문에 Mojo를 이용해 프로그램을 완성하면 모든 파일을 하나의 파일로 패키징 하여 배포할 수 있다. 또한 Mojo는 Rust 처럼 메모리 안전을 위한 소유권 및 차용 검사기를 함께 제공한다.
4. 어떻게 사용할 수 있나요?
이 글을 쓰는 시점에서 Mojo는 아직 beta 이며, 버전은 0.1이다. 아직 클래스를 지원하지 않고 오픈소스도 아니다.
아직 초기 개발 단계이기 때문에, 이메일 통해 waitlist 를 받아 베타 테스터로 참여 가능하며, 일부 개발자들에게 엑세스를 풀어주고 있다.
신청은 아래 링크에서 할 수 있다.
https://www.modular.com/get-started
Modular: Get started today
Get started with Modular and tell us how we can help you scale your AI workloads with our next generation developer platform.
www.modular.com
현재 베타테스터로 참여해 볼 수 있으며, Jupyter와 같은 Playground를 제공하고있다.
Reference
Mojo 🔥: Programming language for all of AI
Mojo combines the usability of Python with the performance of C, unlocking unparalleled programmability of AI hardware and extensibility of AI models.
www.modular.com
https://www.youtube.com/watch?v=V4gGJ7XXlC0
https://www.youtube.com/watch?v=fYb2DkFo01U
https://arca.live/b/alpaca/75478889
python 의 생태계를 활용할 수 있는 새로운 프로그래밍 언어 Mojo - Ai 언어모델 로컬 채널
https://docs.modular.com/mojo/Mojo는 파이썬 구문의 장점과 시스템 프로그래밍 및 메타프로그래밍을 결합하여 연구와 프로덕션 간의 격차를 해소하는 새로운 프로그래밍 언어입니다. Mojo를 사용
arca.live