우리가 쿠다(CUDA) 스터디를 하는 이유

Corca
Corca
Published in
6 min readFeb 3, 2023

Written by 김준홍 (ML Engineer)

코르카에서는 모두 열심히 일하면서 성장합니다.

코르카 멤버들은 업무 외 시간에도 개인적으로 성장하고자 퇴근 후에도 열심히 공부하는 엄청난 열정을 보입니다.

이를 위해 코르카 멤버들은 공통 관심 분야에서 공부하고 싶은 영역의 사내 스터디를 구성하기도 합니다.

그렇게 시작하게 된 첫 사내 스터디는 바로 “CUDA 진심으로 공부하기”입니다!

CUDA란?

시작하기에 앞서 CUDA를 처음 접하시는 분들을 위해 CUDA가 무엇인지 간략히 소개합니다.

CUDA란 NVIDIA에서 개발한 소프트웨어로서, 일반인이 GPU device 언어를 몰라도 C/C++, Python 등을 사용하여 GPU를 다룰 수 있게 해줍니다.

그렇다면 우리는 왜 이것을 공부를 해야 할까요?

  1. RAPIDS, PyTorch, TensorFlow, CuPy와 같이 미리 CUDA를 사용하기 쉽게 만든 ML 툴들이 있지만, 이 툴들에는 한계점이 있습니다.
  • 이러한 툴들은 CUDA application을 Python으로 wrapping한 구조이기 때문에 복잡도는 줄어들었지만 적지 않은 performance degradation을 보여줍니다. 물론 상응하는 프레임워크를 C++ frontend 를 사용하는 방법 등 효율을 높이는 방법이 있겠지만, 그 무엇도 가장 lowest level을 건드리는 것 보다 높은 효율을 낼 순 없습니다.
  • Python frontend는 절대로 가능한 모든 flexibility를 제공하지 않습니다. 이를 직접 다룰 수 있고, 원하면 상황에 맞추어 modification — build 까지 가능하게 하려면 하급 프로그래밍이 가능해야 됩니다.

2. 가장 중요하게, CUDA를 통해 기존에 없는 새로운 GPU 소프트웨어를 직접 개발을 할 수 있습니다. Google의 OR-Tools에 상응한다고 볼 수 있는 GPU accelerated 상용 software는 아직 없고, 따라서 더 좋은 효율을 위해서는 이를 직접 개발해야 합니다.

우리가 필요한 문제를 해결하기 위해 늘 open source에만 의존하는건 테크 회사답지 않겠죠.

이렇게 우리는 CUDA의 중요성을 이해하고 스터디를 진행하게 되었습니다.

CUDA Study

  • CUDA C++, Thrust, Python wrapping 공부
  • CUDA 프로그래밍의 convention, 실제 application 분석

스터디는 멤버 모두가 돌아가면서 발표하는 형식으로 진행되었습니다.

진행 방식:

  1. 각자 배정받은 논문 내용을 읽고 공부를 한다.
  2. 발표자는 최대한 모르는 부분이 없도록 꼼꼼히 공부한 후, 공부한 내용을 자료로 만든다.
  3. 나머지 멤버들은 발표를 들으며 궁금증이나 이견이 있을 경우 발표 중간 언제든지 참여해 자유롭게 이야기한다.
  4. 발표가 마무리되면 공부한 부분에 대해 각자 느낀 점, 배운 점을 공유하고 다음 발표 내용과 발표자를 정한 뒤 마무리한다.

또한 스터디 멤버들 재량으로 과제를 진행하기도 했습니다.

다들 과제에 열중하는 모습들이 보기 좋았습니다!

코르카의 스터디 문화

스터디를 직접 진행하며 우리 회사의 문화에 대해 느낀 점들입니다.

1. 토론 지향적인 분위기

진행 방식의 3번 항목에서 볼 수 있듯, 코르카는 언제나 자유롭고 열린 토론 문화를 지향합니다. 논의 중에 “혹시 내가 이걸 물어보면 민폐가 아닐까?”, 또는 “별로 중요하지 않은 질문 아닐까?”라는 생각으로 의견을 제시하지 못하는 사람들이 많습니다. 저 역시 처음에는 그랬지만, 코르카에서 모두가 적극적으로 참여해 의견을 제시하는 모습을 보고 저도 자연스럽게 변화하게 된 것 같습니다.

2. 자유로운 문화

코르카 스터디는 온전히 자율적이며 스터디 참여 역시 멤버들의 자발적인 의지로 이뤄지기 때문에 참석에 관해서는 절대 눈치를 주거나 페널티를 부여하지 않았습니다.

3. 코르카 멤버들의 뛰어난 역량

코르카 멤버들 개개인 모두 뛰어난 역량을 보유하고 있습니다. 열정적이고 숙련된 멤버들과 같이 스터디를 진행하면서 스터디의 퀄리티와 결속력이 매우 높다고 느꼈습니다. 멤버들이 스스로 과제를 만들고 같이 해결해나가는 모습을 보며 다시금 애사심이 자라났습니다.

과제 사진

스터디 후기

첫 사내 스터디인 “CUDA 진심으로 공부하기”는 총 10번의 강의로 마무리되었습니다.

이렇게 모아보니 감회가 남다른데요,

스터디를 통해 배운 CUDA programming은 우리 스터디 멤버들에게 많은 영감을 주었고, 특히 parallel processing 쪽으로 시야가 트이게 해주었습니다.

개인적으로 분산 처리가 처음이기도 하고 CUDA의 개념 역시 추상적으로만 알고 있었는데, 이렇게 스터디를 통해 제대로 공부를 하게 되어 뿌듯했습니다.

사실 스터디는 불을 지피는 것과도 같습니다.

처음에 확 불타오르는 열정을 끝까지 끌고가기 보다는, 그 후에 남은 열정의 불씨를 꺼뜨리지 않도록 유지하며 조절하는 것이 중요합니다.

열정적이고 적극적인 코르카 멤버들 덕분에 오늘도 코르카는 모두가 성장할 수 있는 문화를 형성해나가고 있습니다.

우리가 살아가는 세상을 AI 기술로 변화시키는 팀 Corca는 고도화된 기술력과 기획력을 토대로 새로운 가치를 창출하고 있습니다.
Corca의 여정에 함께하실 분들은 corca.team 페이지를 확인해주세요!

--

--