더 빠르고 효율적인 앱을 만들고 싶었지만 표준 프로그래밍 언어가 요구 사항을 충족할 수 없다는 사실을 발견한 적이 있습니까?
이것은 Mojo 언어가 작동하는 때입니다.
Mojo는 에서 개발한 새로운 프로그래밍 언어입니다. 모듈, AI 인프라 전문기업입니다.
특히 개발자가 AI 개발을 포함한 여러 사용 사례를 위해 더 빠르고 강력한 앱을 구축할 수 있도록 설계되었습니다. 이번 포스팅에서는 무엇을 알아보는지 모조 어떻게 작동하며 다음 프로젝트에서 사용해야 하는 이유입니다.
모조의 기원
Mojo의 제작자는 Python의 유용성과 C의 속도 및 효율성을 결합한 프로그래밍 언어의 필요성을 인식했습니다.
그리고 개발자가 표준 하드웨어 설명 언어를 배우지 않고도 고성능 앱을 구성할 수 있는 언어를 확립했습니다.
결과적으로 그들은 C 수준의 속도를 제공하면서 Python 생태계와 완벽하게 호환되는 Mojo를 만들었습니다.
모듈식: Mojo 언어 뒤의 조직
그렇다면 이 미래형 언어의 제작자는 누구일까요?
Modular는 Google에서 만난 Chris Lattner와 Tim Davis가 만든 세계 최고의 AI 인프라 스타트업으로, 너무 복잡하고 파편화된 인프라가 AI의 글로벌 영향력을 제한하고 있음을 깨달았습니다.
Modular의 목적과 목표는 인류를 향상시키기 위해 AI 인프라를 재고하는 것입니다. 그들의 문화와 원칙은 클라이언트, 고품질 프로덕션 소프트웨어 및 의미 있는 결과 제공에 프리미엄을 부여합니다.
모조의 목표
Mojo는 기계 학습 가속기를 위한 고유한 프로그래밍 모델을 제공하도록 설계되었습니다.
Modular는 오늘날의 CPU에 텐서 및 기타 AI 가속기가 있기 때문에 Mojo가 범용 프로그래밍을 허용해야 한다고 결정했습니다. 또한 Python은 기계 학습 및 기타 분야에서 광범위하게 사용되기 때문에 Modular는 Python 생태계에 합류하기로 결정했습니다.
Python을 사용하면 언어 설계가 더욱 쉬워집니다. 대부분의 구문이 이미 결정되었기 때문에 회사는 대신 컴파일 메커니즘을 구축하고 특수 프로그래밍 기능을 제공하는 데 집중할 수 있습니다.
고려해야 할 중요한 기능
프로그래밍
프로그레시브 유형
Mojo 언어의 프로그레시브 유형 기능을 통해 개발자는 유형 주석을 사용하여 다음을 수행할 수 있습니다. 효율성 향상 오류 검사.
개발자는 보다 철저한 유형 정보를 제공하여 컴파일 시간에 실수를 감지하고 버그를 제거하고 효율성을 높이는 보다 효과적인 코드를 설계할 수 있습니다.
제로 비용 추상화
개발자는 Mojo 언어에서 제공하는 무료 추상화 덕분에 구조에 데이터를 인라인 할당하여 스토리지를 제어할 수 있습니다.
추가 메모리 할당에 대한 요구 사항을 제거함으로써 이 기능은 코드 효율성을 개선하고 상용구 코드의 양을 줄입니다.
통합 언어 자동 조정
Mojo Language의 언어 통합 자동 조정 기능을 통해 개발자는 대상 하드웨어에서 이점을 얻을 수 있는 매개 변수의 이상적인 값을 자동으로 결정할 수 있습니다.
이 기능을 사용하면 모든 하드웨어 조합에 대해 수동으로 조정하지 않고도 코드를 최적화하는 것이 더 간단해집니다.
Mojo 언어는 MLIR(Multi-Level Intermediate Representation)의 모든 기능, 병렬 이기종 런타임 및 빠른 빌드 시간을 제공하므로 AI 개발을 위한 유연하고 효과적인 도구입니다.
병렬화
Mojo는 프로그래머가 병렬화를 위해 벡터, 스레드 및 AI용 하드웨어 장치를 활용할 수 있도록 하는 MLIR을 사용합니다. Mojo는 Python의 단일 스레드 실행과 달리 여러 코어에서 병렬 처리를 지원합니다.
Python보다 35,000배 더 빠른 Mojo는 속도 면에서 다른 언어를 능가합니다.
상호 운용성
전체 Python 생태계와의 상호 운용성은 Mojo의 고유한 장점 중 하나입니다. 이는 Mojo를 Numpy 및 Matplotlib와 같은 임의의 라이브러리 및 맞춤형 코드와 결합할 수 있음을 의미합니다.
예를 들어 Python 라이브러리 Matplotlib를 사용하여 Mojo 코드의 데이터를 시각화할 수 있습니다.
확장 성
Mojo는 또한 매우 유연하여 사용자가 모델에 전처리 및 후처리 단계를 추가하거나 기존 단계를 새 단계로 교체할 수 있습니다.
모델과 모듈식 스택을 개선하기 위해 개발자는 커널 융합, 그래프 재작성, 모양 함수 및 기타 기술을 사용할 수 있습니다.
왜 파이썬보다 그것을 선택하겠습니까?
Python은 유연성과 고성능 컴파일 라이브러리로 인해 널리 사용되는 AI 개발 언어입니다. 그러나 C++와 같은 언어보다 훨씬 느립니다.
따라서 프로그래머는 성능이 중요한 영역에 Python을 사용하지 않도록 더 빠른 언어에 대해 Python 래퍼를 사용하는 방법을 배웁니다.
이로 인해 모델을 Python에서 Python의 모든 기능을 지원하지 않는 ONNX 또는 토치 스크립트와 같은 더 빠른 구현으로 변환해야 하는 XNUMX개 언어 문제가 발생합니다. Python은 또한 성능 문제와 좋은 병렬 처리가 부족합니다.
숙련된 프로그래머조차도 XNUMX개 언어 딜레마로 인해 성능 문제를 연구, 디버그 및 해결하는 데 어려움을 겪습니다.
또한 언어가 구조화된 방식으로 인해 Python이 수행할 수 있는 작업에 대한 기본적인 제한 사항이 있습니다. 기본 구성 요소를 사용하는 알고리즘의 실제 구현은 쉬워 보일 수 있지만 훨씬 더 어렵고 더 빠른 언어를 사용해야 합니다.
시작하는 방법?
지금 Playground에서 Mojo Language를 사용하여 시작할 수 있습니다. JupyterHub 기반 플레이그라운드는 Mojo가 아직 진행 중인 작업임에도 불구하고 자신만의 Mojo 코드를 생성할 수 있는 기회와 교훈을 제공합니다.
Playground에 액세스하려면 해당 웹 사이트에서 액세스를 등록할 수 있습니다.
성능 목표를 달성하기 위해 Mojo는 캐싱, 멀티스레딩 및 클라우드 배포 기술이 통합된 차세대 컴파일러 기술을 사용합니다.
시스템 프로그래밍에 추가 프리미티브를 추가하고 시간이 지남에 따라 Python 상위 집합이 되기를 열망합니다. Mojo로 코딩을 시작하려면 Mojo 컴파일러를 사용하여 Python과 동일한 방식으로 터미널에서 Mojo 프로그램을 실행합니다.
이 언어는 현재 개발 중이며 시스템 프로그래밍 경험이 있는 개발자를 대상으로 합니다.
마무리
Mojo는 Python 상위 집합으로 간주됩니다. 또한 Python의 단순성과 C++ 및 Rust의 성능을 결합하여 프로그래밍을 혁신할 수 있는 잠재력이 있습니다.
전체를 활용할 수 있습니다. 파이썬 라이브러리 개발자가 C, C++, Rust 또는 CUDA 없이도 고성능 라이브러리를 만들 수 있습니다.
자동 튜닝 및 컴파일 타임 메타 프로그래밍 기능 덕분에 이식 가능한 코드를 생성할 수 있습니다.
아직 진행 중인 작업이지만 강력한 프로그래밍 도구가 되어 프로그래밍 산업을 변화시킬 잠재력이 있습니다. 따라서 Modular의 향후 개발을 계속 지켜봐야 합니다!
크리스 산토스
기초에서 중급 지식을 갖춘 사람이 이 새로운 언어로 공부를 시작할 수 있다고 생각하십니까? 아니면 Javascript나 Python과 같은 더 기본적인 언어를 먼저 공부하는 것이 좋습니까?
일케 칸단 벵기
안녕하세요 Chris, 답변이 늦어서 죄송합니다! Mojo를 시작하기 전에 사전에 Python에 대한 기본적인 이해/경험이 있으면 도움이 될 수 있다고 생각합니다.