"Mojo might be the biggest thing to happen in programming for decades"
Mojo (Programming Language)
세계 최대 규모의 스타트업 액셀러레이터인 Y Combinator의 Hacker News에 최근 아래와 같은 글이 올라왔습니다.
"Mojo는 수십 년 동안 프로그래밍 분야에서 가장 큰 사건일 수 있습니다."
바로 Mojo라는 언어가 Python 생태계를 상위 호환하는 형태로 Python의 고질적인 문제인 속도 문제를 개선하겠다고 소개되었기 때문인데요. 어느 특정한 개인의 의견이었지만 이 글에는 Mojo의 개발자인 크리스 래트너 (Chris Lattner)를 포함하여 200개에 가까운 댓글이 따라왔습니다.
댓글에서는 크리스 래트너가 과거에 개발했던 언어인 Swift의 문제점을 지적하며 Mojo의 가능성에 대해 의구심을 제기하는 글도 있었지만 Mojo의 개발 과정에 기대감을 보내는 댓글도 많이 볼 수 있었는데요. 특히 크리스 래트너가 Swift를 개발하는 과정에서의 경험을 바탕으로 Mojo를 개발하는 과정에서는 "다시는 같은 실수를 반복하지 않겠다."라고 직접 발언한 것이 인상 깊었습니다.
Mojo의 성공 가능성에 대한 갑론을박의 결과가 어떻든 Mojo라는 언어가 최근에 조금씩 사람들에게 알려지기 시작한 것 같은데요.
본 글에서 Mojo에 대해 간략히 설명해 보려고 합니다.
먼저, 인공지능 개발을 떠올렸을 때 가장 대표되는 프로그래밍 언어를 꼽으라면 Python을 빼놓을 수가 없을텐데요.
Python은 인공지능 개발뿐만 아니라 높은 생산성과 간결하고 읽기 쉬운 문법, 풍부한 표준 라이브러리 및 커뮤니티 지원, 유연성, 그리고 초기에 프로그래밍을 시작하기에 낮은 진입 장벽으로 많은 개발자들에게 사랑을 받고 있지만 인터프리터 언어라는 제약으로 인한 속도의 한계, 모바일 및 클라이언트 사이드 웹 개발에서 활용의 어려움, GIL (Global Interpreter Lock) 문제, 엔터프라이즈급 데이터베이스에 대한 접근 지원 부족, 낮은 메모리 효율성 등의 문제점을 지니고 있습니다.
물론 이러한 제약 사항에도 불구하고 YouTube나 Instagram, Spotify 등 다양한 대규모 서비스들이 Python을 활용하고 있긴 하지만 개선될 여지가 있음은 분명해 보이는데요.
Mojo🔥는 이러한 단점들을 극복하기 위해 탄생하게 되었습니다.
(불 모양의 이모지🔥는 Mojo의 대표 이모지로 Mojo는 .mojo와 .🔥 모두를 확장자로 사용할 수 있다고 하네요...)
Mojo는 위에서도 한 번 소개한 LLVM을 만든 크리스 래트너라는 사람이 창업한 Modular라는 회사에 의해서 현재 개발되고 있는데요. 크리스 래트너는 LLVM을 만들어낸 인물로 가장 잘 알려져 있지만 Clang 컴파일러와 Switf를 개발한 인물이기도 합니다. 이들은 Mojo가 시스템 프로그래밍 및 메타프로그래밍 기능을 통해 기존의 Python 구문과 에코시스템을 결합하는 형태로 연구와 프로덕션 사이의 간극을 메워줄 수 있다고 소개하였는데요. 쉽게 말해 Python의 사용성과 C의 성능을 결합한 형태라고 생각하시면 될 것 같습니다.
Mojo의 특징
Mojo의 공식 홈페이지와 공식 문서로 가보면 언어의 특징을 좀 더 자세하게 소개하고 있는데요. 이 중 몇 가지를 정리하면 다음과 같습니다.
- Python의 superset으로 Python 생태계를 완전히 수용 (모든 Python 구문을 그대로 Mojo로 가져와도 사용 가능한 것이 최종 목표)
- 머신 러닝 가속기 커뮤니티에서 널리 채택된 비교적 새로운 오픈 소스 컴파일러 인프라인 MLIR을 활용
- 데이터 로딩, 전처리 및 후처리 등의 작업부터 텐서 코어, 벡터 유닛, 가속기 등 하드웨어를 다루는 작업까지 단 하나의 언어로 해결
- 강력한 type checking
owned
argument를 통하여 값에 대한 배타적 소유권을 갖고자 하는 함수에 사용되는 소유 인수 규칙을 지원- 대상 하드웨어를 활용할 수 있도록 매개변수에 가장 적합한 값을 자동으로 찾아주는 빌트인 auto-tuning 제공
특히 MLIR (Multi-Level Intermediate Representation)의 활용은 AI 개발자들이 vector, thread, AI 하드웨어를 다루는 과정에서 큰 성능 개선을 보여주는데요. 대표적으로 Mandelbrot라는 특정 알고리듬에서는 아래와 같이 Python의 35,000배에 가까운 성능 향상을 보여준다고 하네요.
어느 정도 마케팅을 목적으로 기존 Python 과의 차이를 보여줄 수 있는 극단적인 예시를 제공한 것 같으니 이 부분을 감안해서 보시는 것이 좋을 듯합니다.
추가로 Mojo가 기존의 Python 구문을 그대로 활용할 수 있는 것으로 홍보되었지만 현재 시점에서의 Mojo는 기존의 Python 3버전의 코드를 그대로 사용하게 되면 호환성을 위해 CPython 런타임을 활용한다고 하네요. 즉 호환은 가능하나 성능상의 이점은 크지 않을 수 있다는 의미로 해석될 수 있을 것 같습니다.
Mojo Playground
그럼에도 Mojo를 앞서서 사용해 보고 싶으신 분이 계실 것 같은데요. 현재 Mojo는 오픈소스가 아니기 때문에 사용해 보기 위해서는 해당 사이트에서 별도의 신청이 필요합니다.
신청 양식에 따라 내용을 기입하고 제출을 하면 대기 리스트에 등록이 되고 승인이 완료되면 Mojo Playground로 초대하는 메일을 받게 됩니다.
메일에서 제공되는 링크로 접속하면 위와 같이 Jupyter Lab으로 제공되는 Mojo Playground에서 Mojo를 직접 사용해 볼 수 있습니다.
다음 글에서는 Mojo Playground를 신청 방법과 기본적인 Mojo 문법에 대해 소개해 보도록 하겠습니다.
'IT 이슈' 카테고리의 다른 글
Astro, 블로그를 위한 최고의 웹 프레임워크? (0) | 2023.08.14 |
---|---|
Google domain에서 Porkbun으로 도메인 이전하는 방법 (0) | 2023.08.14 |
구글 도메인에서 Porkbun으로 옮긴 이유, Domain Registrar 정리 (0) | 2023.08.07 |
구글 도메인 사업 Squarespace에 매각? (0) | 2023.06.28 |
np.sort는 이제부터 15배 빨라집니다. 인텔, 최대 17배 빠른 AVX-512 정렬, 새로운 알고리즘을 갖춘 x86-simd-sort 2.0 출시 (0) | 2023.06.25 |