brunch

You can make anything
by writing

C.S.Lewis

by TEN Jan 22. 2024

AI 개발하면, 모르는 사람이 없대요! CUDA!

GPU로 AI 개발하면 안다 안다 다 안다! 

AI산업에서 주목해야 할 키워드, 바로 인프라입니다!


요새 주식회사 텐은 분주합니다. AI 모델 개발 프로젝트에 착수하는 기업들이 계속 늘어나고 있기 때문이죠. 그게 TEN과 무슨 연관이 있냐고 물으신다면, AI를 시작하는 기업에 제일 먼저 필요한 것은 ‘인프라’이기 때문입니다. :) 


TEN은 고객의 AI 개발과 운영을 위해 어떤 구성으로 인프라를 구축해야 할 지에 주목합니다. 각 구성 제품이 어느 회사의 것이어야 하는지도 생각하고요. 실제 AI를 개발할 고객의 개발 환경까지 함께 고려하는 거죠. 


그 과정에서 기획자, 개발자분들의 이야기를 옆에서 들을 기회가 여럿 있었는데요. 그때 ‘쿠다(CUDA)’를 처음 알게 되었습니다. 머신러닝 프레임워크 종류 몇 가지만 겨우 알고 있었기에, ‘쿠다(CUDA)’ 역시 그와 비슷한 것 아닌가, 하고 넘겨짚어 생각하곤 했는데요. 듣다 보니 그게 아닌 것 같았습니다. ‘쿠다(CUDA)’. 이름이 참 귀엽다고 생각했었는데, 그 존재감만큼은 귀엽지 않았던 거예요. @.@




[ 쿠다가 뭐예요? 이름이 너무 귀엽다! ]

‘쿠다(CUDA)’는 AI 개발자나, GPU를 활용한 프로그래밍 프로젝트를 맡고 있는 개발자라면 다 알고 있을 툴입니다. 하지만 이제 막 ‘AI’에 대해 알게 되신 분들이나, AI 개발 프로젝트를 처음 맡은 기획자에게는 다소 생소한 존재일 수도 있습니다. 저 역시 마찬가지였는데요. 


‘쿠다’는 ‘Compute Unified Device Architecture’라는 긴 정식 명칭에서, 각 단어의 앞 글자인 C, U, D, A 4개 글자를 따온 이름입니다. :) NVIDIA에서 개발 및 관리하는 GPU . CUDA를 사용하려면 엔비디아 GPU와 특별한 스트림 처리 드라이버가 필요한데요. G8X GPU로 구성된 G-Force 8 시리즈급 이상에서 동작한다고 알려져 있습니다.




GPU는 우리에게 ‘보는 즐거움’을 주는 그래픽 처리 유닛이지만, 2006년부터 CPU의 응용 프로그램 계산에 쓰이기 시작했습니다. 이렇게 GPU의 병렬 연산 처리를 사용해서 범용 계산을 하는 것을 GPGPU(General-Purpose computing on Graphics Processing Units)라고 합니다. :)


CUDA는 이 GPGPU를 C 프로그래밍 언어를 비롯한 산업 표준 언어를 사용하여 작성할 수 있도록 하는 기술이 적용되어 있어요. CUDA 플랫폼은 컴퓨터 커널 실행을 위해 GPU의 가상 명령 집합과 병렬 연산 요소들에 직접 접근할 수 있도록 해줍니다. GPU로 활용하여 AI 등을 개발한다면, 실용성과 편의성의 측면에서 CUDA를 대체할 선택지는 찾기 어려울 것 같아요. 




[ 인공지능 개발에 쿠다를 왜 사용하나요? ]

쿠다에 대한 설명을 들으셨으니, 인공지능 개발에 왜 쿠다를 사용하는지도 짐작이 되실 거예요. 인공지능 개발에는 GPU가 필요합니다. 꼭 GPU가 필요한 것이냐 물으신다면, 이전에 [AI, 더 쉽게]를 통해서 설명해 드렸던 GPU 이야기로 답을 대신하겠습니다.


▶ 인공지능 시장에서 제일 귀하신 몸, GPU를 알아보자


AI 개발에 있어서 GPU를 대체할 방법은 아직 나오지 않았습니다. 고속 병렬 계산의 가장 큰 수요처인 AI 산업에서는 GPU를 무조건 사용해야 하기에, CUDA처럼 C언어와 같은 표준 언어로 GPU를 편리하게 활용할 수 있다는 점은 굉장한 매력 포인트겠지요?


CUDA가 등장하기 전까지는 전문가들만 GPU를 활용한 프로그래밍을 할 수 있었다고 합니다. CUDA가 없이 GPU로 병렬 연산 처리를 하려면, Cg, DirectX, Open GL 등의 셰이더 명령어를 사용해야 하거든요. GPU를 활용한 개발 자체가 전문가의 영역인데, AI에 대해서도 잘 알고, GPGPU를 위한 셰이더 명령어도 이해하고 있으면서 API의 복잡성도 커버할 수 있는 전문가는 몇이나 될까요…?




Installing CUDA Toolkit on Windows (https://www.youtube.com/watch?v=nRSxp5ZKwhQ)


하지만 CUDA가 2006년에 등장하면서 많은 개발자가 GPU로 프로그래밍을 할 수 있게 되었으니, AI 개발에 있어서도 CUDA가 주는 편의성은 어마어마했을 거예요. 그런데 CUDA는 NVIDIA GPU와 특정 드라이버를 바탕으로 이용할 수 있는 툴이라고 말씀드렸었지요? 그래서 CUDA와 짝지어진 NVIDIA의 GPU가 GPU 시장에서 우위를 점하게 되었습니다.


인공지능을 개발하기 위해서는 엔비디아의 GPU를 사용하는 것만큼 괜찮은 선택지를 찾기 어렵게 되었습니다. 엔비디아는 GPU 프로세서를 개발하는데 멈추지 않고 관련 소프트웨어 생태계를 조성하려고 노력하고 있지요. 올해 6월 COMPUTEX에서도 젠슨 황이 신제품 소개와 더불어 ‘커뮤니티’와 ‘플랫폼’에 대한 언급을 빼먹지 않았던 것도 같은 맥락입니다.


2006년 이래로 NVIDIA GPU 와 CUDA의 조합은 막강한 힘을 가지고 있습니다. GPU를 활용한 개발에 있어 CUDA 외의 대안을 찾기 어려우니, 인공지능 개발에서도 CUDA를 제외하고 생각하기 어렵게 된 것이죠.




[ CUDA를 대체할 만한 도구는 없을까요? ]

CUDA가 GPU 사용에 편의를 가져다준 고마운 도구인 것은 사실이지만, 단점도 존재합니다. CUDA 의 단점 중 꼭 짚어야 할 것이 있는데요, 바로 엔비디아 GPU가 필요하다는 것입니다.


CUDA는 그래픽 전문가뿐 아니라 모든 프로그래머가 사용할 수 있도록 무료 공개된 도구이지만, NVIDIA GPU여야만 활용할 수 있다는 제약이 존재합니다. GPU를 사용하기 위해서 CUDA를 활용한다기보다, CUDA의 편의성을 누리기 위해서 GPU를 마련할 때 NVIDIA의 제품을 택하는 결정을 내리게 되는 경우가 생기는 거죠.


AI 개발자들은 농담처럼 “쿠다 없이는 개발을 못 한다”라는 말도 하곤 한다는데요. ‘쿠다’의 대안은 언제쯤 나오게 될까요? 올여름쯤 미국의 스타트업 모듈러가 ‘쿠다’의 대안 소프트웨어 개발에 대한 투자 유치를 진행하고 있다는 기사가 나오기도 했었는데요.


AI 개발자가 AMD, 인텔 및 구글과 같은 다른 회사에서 설계한 칩에서 AI 모델을 쉽게 훈련하고 실행할 수 있는 소프트웨어를 개발할 계획이라는 포부에, 세계 각지에서 관심이 집중되었습니다. 모듈식 구성 요소를 사용해 파이토치 및 텐서플로우와 같은 주요 AI 프레임워크의 프론트엔드를 통합해 작동할 수 있도록 한다고 하니, C 언어 기반으로 제한되어 있던 CUDA와는 전혀 다른 사용성을 보장하는 소프트웨어일 것으로 예상되네요.




AI에 있어 인프라의 중요성에 관해 이야기하면, 각 유닛의 성능, 속도, 용량 등의 기본적인 스펙을 생각하기 마련인데요. 무엇보다 가장 중요한 것은 그 인프라를 사용하는 사람에게 있습니다. 만약, 매년 출시되는 NVIDIA의 놀라운 제품들에 CUDA가 적용되지 않는다면 어땠을까요? 아무리 좋은 제품이라도 사용법이 까다롭거나 너무 어렵다면, AI 개발자들에게 그건 성능 좋은 ‘허들’로 여겨질 거예요. CUDA의 중요성을 새삼 생각해 볼 수 있었습니다.


만약 새로운 소프트웨어로 GPU를 활용한 프로그래밍을 더 쉽고 편하게 할 기회가 생긴다면 어떨까요? NVIDIA와 어깨를 나란히 할 새로운 플레이어가 시장에 등장하게 될까요? NVIDIA가 전 세계 GPU 시장의 80%를 점유하고 있는 시장 구조가 어떻게 형성되게 되었는지, AI 생태계 구축에 매진한 NVIDIA의 노력을 짐작해 볼 수 있었던 시간이었습니다. 지금까지 에디터 SA였습니다!




* 주식회사 텐의 콘텐츠를 더 빨리 만나는 방법! 텐의 AI피드를 방문해 보세요!

주식회사 텐 홈페이지

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari