테크레시피

오픈소스 신경망을 위한 프로그래밍 언어

엔비디아가 개발, 제공하는 GPU를 위한 범용 병렬 컴퓨팅 플랫폼인 쿠다(CUDA)를 넘는 생산성과 빠른 코딩이 가능하도록 오픈소스 신경망을 위한 프로그래밍 언어인 트리톤(Triton)이 공개됐다. 효율적인 딥러닝 프리미티브를 만들기 위한 언어 컴파일러로 깃허브 개발 저장소에 공개되어 있다.

AI 연구 비영리 단체인 오픈에이아이(OpenAI)가 출시한 것으로 파이썬을 기반으로 한 오픈소스 신경망을 위한 프로그래밍 언어로 버전 1.0을 선보인 상태. 오픈에이아이가 쿠다를 대체할 프로그래밍 언어로 트리톤을 개발한 이유는 단순하다. 쿠다를 포함한 엔비디아 그래픽 처리 장치는 프로그래밍이 너무 어렵다는 게 문제라며 구체적으론 GPU 네이티브 커널과 함수를 만들 때 멀티코어 GPU 메모리 계층 구조에서 할당 데이터와 명령어를 이동해야 하며 프로그래밍이 복잡해진다.

오픈에이아이에 따르면 트리톤은 쿠다를 다룬 적이 있는 연구도 GPU 코더가 만든 것과 같은 수준으로 효율적인 GPU 코드를 작성할 수 있게 해준다. 예를 들어 25줄 미만 코드 cuBLAS 성능에 필적하는 FP16 커널을 만들 수 있으며 이는 대부분 GPU 프로그래머가 실현할 수 없는 수준 성능이라고 설명하고 있다.

목표는 딥러닝을 위한 쿠다 실행 가능한 대안을 만드는 것이며 트리톤 대상은 뛰어난 소프트웨어 엔지니어링 능력을 갖췄음에도 GPU 프로그래밍에 익숙하지 않은 기계학습 엔지니어와 연구자를 위한 것이라고 밝히고 있다. 오픈에이아이 연구자는 이미 트리톤을 사용 중이며 파이토치(PyTorch) 프로그래밍보다 최대 2배나 효율적인 커널 만들기에 성공하고 있다고 어필했다.

트리톤을 이용하면 개발자는 전용 라이브러리를 이용해 파이썬으로 코드를 작성하고 GPU에서 실행하기 위해 JIT 컨파일을 한다. 따라서 기계학습 솔루션을 개발하기 위한 파이썬 생태계 나머지 부분과 통합이 가능하게 된다.

트리톤 라이브러리는 넘파이(NumPy)를 방불케 하는 일련의 기본을 제공한다며 님파이와의 유사성을 지적하기도 한다. 구체적으로는 행렬 연산이나 어떤 기준에 따라 배열 축소를 수행하는 함수를 제공하는 점을 든다. 또 프리미티브를 자신 코드와 통합해 GPU에서 실행하도록 컴파일한다는 점에서 넘바(Numba)와도 비슷하다는 평가를 하기도 한다.

트리톤은 2019년 발표된 논문을 기반으로 한 것이지만 아직 시작한지 얼마 안 된 프로젝트다. 현재는 리눅스에서만 이용 가능하며 제공 문서도 최소한이어서 조기에 써보려는 개발자는 소스와 예제를 면밀하게 조사할 필요가 있다고 한다. 관련 내용은 이곳에서 확인할 수 있다.

이석원 기자

월간 아하PC, HowPC 잡지시대를 거쳐 지디넷, 전자신문인터넷 부장, 컨슈머저널 이버즈 편집장, 테크홀릭 발행인, 벤처스퀘어 편집장 등 온라인 IT 매체에서 '기술시대'를 지켜봐 왔다. 여전히 활력 넘치게 변화하는 이 시장이 궁금하다.

뉴스레터 구독

Most popular