파이썬 독주 시대, AI/ML 개발의 빈틈을 채우는 언어들
컨텐츠 정보
- 조회 378
본문
AI/ML에 사용되는 언어라고 하면 아마도 파이썬이 가장 먼저 떠오를 것이다. 틀린 생각이 아니다. 그러나 이 분야에서 다른 주요 프로그래밍 언어는 어떻게 사용되고 있을까?
C++는 파이썬이 활용하는 많은 라이브러리를 만드는 데 사용된 언어인 만큼 AI/ML에서도 입지가 명확한 편이다. 자바, 러스트, 고, C#/닷넷은 어떨까? 모두 엔터프라이즈 프로그래밍 영역에서 존재감이 큰 언어임을 감안하면 AI와 머신 러닝에서도 나름의 역할을 하고 있지 않을까?
자바
어떤 면에서 자바는 파이썬에 왕좌를 빼앗기기 전까지는 AI/ML 분야의 주 언어였다. 아파치 스파크 등 데이터 과학 생태계의 중요한 여러 프로젝트가 자바 세계에서 시작됐다. 스파크가 자바 기능의 한계를 넓힌 덕분에 새로운 프로젝트들은 이를 기반으로 계속 확장해 나갈 수 있었다. 예를 들어 AI 모델 관리 기능이 포함된 아파치 플링크(Flink) 스트림 처리 시스템이 그런 프로젝트다.
자바 언어, JVM, 그리고 코틀린과 같은 다른 JVM 언어를 포함한 이른바 ‘자바 세계’는 AI/ML 라이브러리 제작을 위한 탄탄한 기반을 제공한다. 네이티브 자바 애플리케이션은 자바의 강한 타입 시스템과 JVM의 속도 덕분에 다른 언어의 라이브러리에 의존하지 않고도 우수한 성능을 낼 수 있다.
자바 네이티브 AI/ML 라이브러리도 있다. 이들은 AI/ML 스택의 모든 단계에서 사용된다. 예를 들어 스프링 생태계에 익숙한 개발자라면 스프링 AI를 활용해서 AI 모델을 사용하는 앱을 만들 수 있고, 아파치 스파크 사용자는 대규모 ML을 위해 아파치 스파크 MLib 레이어를 활용할 수 있다. GPULlama3와 같은 라이브러리는 자바에서 머신러닝의 핵심 구성요소인 GPU 가속 계산을 지원한다.
머신러닝에 자바를 사용할 때 직면하는 한 가지 큰 단점은 비교적 느린 편집-컴파일-실행 사이클이다. (이 기사에서 다루는 대부분의 언어가 마찬가지다). 이 제약으로 인해 실험 용도로는 적합하지 않지만 라이브러리와 추론 인프라 구축 용도로는 좋은 선택이다.
러스트
러스트의 역사는 13년으로, 자바의 30년보다는 짧지만 빠르게 성장해서 이제는 개발 영역 전반에서 큰 비중을 차지하고 있다. 러스트가 자랑하는 특징인 기계어 수준의 속도와 메모리 안전성, 강한 타입 시스템은 견고한 데이터 과학 툴을 만들기 위한 탄탄한 기반을 제공한다.
데이터 과학 분야에서 작업을 해본 적이 있다면 러스트 기반 툴을 적어도 하나 이상은 사용해봤을 것이다. 예를 들어 여러 언어를 위한 래퍼가 있는 데이터프레임 시스템인 폴라리스(Polaris) 라이브러리가 있다. 최근 몇 년 사이 러스트 네이티브 머신러닝 및 데이터 과학 툴(다른 곳에서만 사용되는 것이 아니라 러스트 생태계 내에서도 사용되도록 만들어진 툴) 문화도 형성되기 시작했다.
일부 프로젝트는 다른 언어에서 인기 있는 툴을 본떠서 만들어졌다. 예를 들어 ndarray는 넘파이와 비슷한 배열 처리 라이브러리다. ONNX 또는 NNEF 모델에서 추론을 수행하는 데 사용되는 트랙트(tract)와 같은 툴도 있다. 그 외에 러스트에서 머신러닝을 수행하기 위한 일급 구성 요소로 만들어진 툴도 있는데, 예를 들어 번(burn)은 러스트의 성능, 안전성, 컴파일 타임 최적화를 활용해 모든 백엔드에 대해 최적화된 모델을 생성하는 딥러닝 프레임워크다.
AI/ML에 러스트를 사용할 때 직면하는 가장 큰 단점은 자바의 경우와 마찬가지로, 컴파일 시간이 길고 규모가 큰 프로젝트는 빌드하는 데 오랜 시간이 걸린다는 것이다. 러스트의 경우 프로젝트에 누적되는 대규모 종속성 체인으로 인해 이 문제가 더욱 심화된다. 이런 단점 때문에 일상적인 AI/ML 실험을 러스트로 하기는 어렵다. 자바와 마찬가지로 러스트 역시 AI/ML 실험 자체를 실행하기보다는 라이브러리와 백엔드(즉, 인프라와 서비스)를 구축하는 데 적합하다고 할 수 있다.
고
얼핏 고 언어는 AI/ML에서 러스트, 자바에 비해 큰 장점을 가진 것으로 보인다. 인터프리터 언어에서 기대할 법한 속도와 매끄러움으로 컴파일되고 실행된다는 면에서 러스트, 자바보다 훨씬 더 실험에 이상적인 언어이기 때문이다.
다만 이런 작업을 위한 라이브러리와 문화의 전반적인 상태가 부실하다. 데이터 과학자 수터 살루는 2023년 머신러닝과 고에 대한 글에서 고 언어에는 일부 네이티브 머신 러닝 리소스가 있지만 CUDA 바인딩에 대한 지원이 미흡하고, 파이썬이나 R에 비해 수학 및 통계 라이브러리도 빈약하다고 지적한 바 있다.
2025년인 지금도 이 상황은 그다지 개선되지 않아서, AI/ML을 위한 고 하이엔드 라이브러리의 대부분이 동력을 잃고 있다. 고에서 꽤 널리 사용되던 딥러닝 라이브러리인 고런(Golearn)은 3년째 업데이트가 되지 않고 있으며, 테아노(Theano) 및 텐서플로우(TensorFlow)와 같은 용도로 만들어진 고르고니아(Gorgonia)역시 비슷한 기간 동안 업데이트가 없는 상태다. NLP 라이브러리인 스파고(SpaGo)는 개발자 본인이 러스트의 캔들(Candle) 프로젝트에 주력하면서 사실상 방치되는 상황이다.
이는 고가 머신러닝보다는 네트워크 서비스, 인프라, 명령줄 유틸리티 중심으로 기반을 잡은 데 따른 결과다. 현재 고는 AI/ML 솔루션 구축보다는 기존 모델에서 예측을 제공하거나 서드파티 AI API를 다루는 작업에서 가장 쓸모가 있다.
C#과 닷넷
마이크로소프트의 C# 언어와 그 기반인 닷넷 런타임은 오랜 기간 동안 지속적인 업데이트를 통해 기업 사용자의 변화하는 요구사항을 반영해 왔다. 머신러닝과 생성형 AI는 이런 요구사항 중에서도 최근 사용례에 해당한다. 2024년에는 닷넷 9이 출시되면서 향후 AI/ML을 위한 확장된 닷넷 라이브러리와 툴을 예고했다. 핵심적인 기능인 마이크로소프트의 시맨틱 커널 SDK는 자연어 입출력을 사용해 마이크로소프트 애저 오픈AI 서비스를 다루는 C# 툴이다.
파이썬 버전 등 시맨틱 커널의 다른 구현도 존재하지만 닷넷 버전은 C# 추상화, 대규모 언어를 위한 새로운 프리미티브 타입 등 닷넷 9의 다른 AI/ML 추가 기능과 기본적으로 잘 조화를 이룬다. 예를 들어 AI/ML 모델을 구축하거나 제공하는 데 일반적으로 사용되는 데이터 타입을 다루는 벡터데이터(VectorData) 추상화가 있다. 이는 서드파티 추가 기능이나 고수준 추상화에 의존하기보다는 C# 자체에 이런 작업과 잘 맞는 타입을 둔다는 개념을 바탕으로 한다. 그 외에 LLM의 출력 평가와 같은 관련 기능을 지원하는 다른 마이크로소프트 닷넷 라이브러리도 있다.
AI/ML 개발 작업에 C#과 닷넷을 사용하는 방식의 가장 큰 문제는 C#/닷넷 생태계에 이미 투자하지 않은 개발자들 사이에서 전체적으로 채택률이 낮다는 점이다. AI/ML용으로 중대하게 부상한 언어로 C# 또는 다른 닷넷 언어를 꼽는 개발자는 극소수에 불과하다. 즉, C#/닷넷의 AI/ML 지원은 더 넓은 사용례의 일부가 아닌 기존 닷넷 애플리케이션과 서비스에서 주로 소비되는 것으로 보인다.
결론
AI/ML 분야에서 파이썬의 독보적인 지위를 흔들기는 어렵다. 단순한 선점 효과가 아니라 파이썬의 편의성과 풍부한 유틸리티, 폭넓은 소프트웨어 문화가 모두 결합된 결과이기 때문이다.
그러나 다른 언어 역시 AI/ML 분야에서 중요한 역할을 할 수 있고, 실제로도 이미 그러한 역할을 하는 중이다. 스파크를 비롯한 자바 기반 기술은 JVM 생태계에 의존하는 다양한 AI/ML 툴을 구동한다. 마찬가지로 C#과 닷넷 런타임은 기업 환경의 충실한 툴 역할을 지속하면서 자체적인 AI/ML 네이티브 라이브러리와 기능을 확대해 나가고 있다. 정확성과 빠른 속도를 갖춘 러스트는 자체 생태계와 다른 생태계 전반에서 두루 활용되는 라이브러리를 작성하는 데 적합하다. 고는 AI/ML 앱을 만드는 용도로는 이상적이지 않지만 네트워킹과 서비스 애플리케이션에서 널리 사용되는 만큼 연결성을 제공하고 모델 예측을 서비스하는 용도로는 훌륭하다.
여기서 소개한 언어가 현재 파이썬이 주도하는 실험적 코딩 용도로 광범위하게 사용되지는 않는다고 해도, 각자 AI/ML의 발전에서 여전히 중요한 역할을 맡고 있다.
dl-itworldkorea@foundryco.com
관련자료
-
링크
-
이전
-
다음






