안녕하세요? 삼각형입니다.
카카오브레인을 떠나기로 결심한 제 이직 결정에 대해 궁금해하시는 분들이 많아, 그 이유를 공유하려고 합니다.
카카오브레인으로 이직한 이유
먼저 어떤 생각을 가지고 카카오브레인으로 이직했는지 말씀드리겠습니다. 저는 10년 동안 GPU 분야에서 일했습니다. 처음에는 그래픽스에 관련된 업무를 하였습니다. 예를 들면 OpenGL을 사용해서 렌더링 엔진을 만들거나 렌더링 엔진에 병목을 찾고 수정하여 성능을 개선했습니다.
Lineage 2: Revolution 최적화
Google Filament에 Morphing 구현
그러는 와중에 숫자를 인식하는 딥러닝 모델을 보게 되었습니다. 딥러닝 모델을 통해 숫자 인식이 얼마나 간단해질 수 있는지 목격하며, 기존 방법의 복잡함에 비해 딥러닝의 간결함과 효율성에 놀랐습니다. 이를 계기로 딥러닝에 주목하게 되었고, 이 기술이 미래의 핵심이 될 것이라고 확신하였습니다.
숫자를 분류하는 딥러닝 모델
개인적으로 딥러닝을 공부하면서, 렌더링과 딥러닝이 GPU를 유사한 방식으로 사용한다는 것을 깨달았습니다. 두 분야 모두 GPU의 많은 코어를 활용해서 벡터, 행렬 계산을 하는것이었습니다. 이 깨달음은 렌더링 최적화 기술을 딥러닝에 적용할 수 있을 것이라는 생각을 불러일으켰습니다. 게임 엔진의 역사에서 보듯, 언리얼이 GPU를 효율적으로 사용해 사실적인 실시간 렌더링으로 시장을 장악한 것처럼, 딥러닝 분야도 결국에는 GPU를 효율적으로 사용해 딥러닝 모델을 빠르게 실행하는 기술을 가진 기업이 시장을 지배할 것이라고 생각했습니다. 이러한 전망을 바탕으로, 카카오브레인으로 이직을 결심했습니다.
카카오브레인을 떠나기로 결심한 이유
카카오브레인에 합류한 후, 첫 번째 프로젝트로 딥러닝 모델의 훈련과 추론 속도를 개선하는 라이브러리 Trident 개발을 시작하였습니다. 이 프로젝트는 오픈 소스로 공개되어 있습니다. 이 프로젝트를 시작하게 된 계기는 딥러닝 모델의 훈련 과정 프로파일링을 통해 PyTorch가 GPU를 충분히 활용하지 못하고 있다는 사실을 발견했기 때문입니다. 이는 PyTorch가 다양한 텐서 크기를 처리해야 하므로 보편적으로 구현되어 있기 때문입니다. 카카오브레인에서 개발하는 모델은 텐서 크기가 고정되어 있어, 이에 맞춰 GPU 자원을 최대한 활용하면 성능을 크게 향상시킬 수 있다고 판단했습니다.
Softmax 성능 비교
위 차트는 PyTorch와 Trident의 성능을 비교하여 Trident가 특정 연산을 수행하는 데 있어 PyTorch보다 일관되게 더 우수한 성능을 보임을 확인할 수 있습니다. X축은 텐서의 크기를 나타내며, Y축은 연산 시간을 나타냅니다. Trident는 모든 텐서 크기에 대해 PyTorch보다 낮은 연산 시간을 기록하며, 가설이 맞았음을 증명했습니다. Trident를 언어 모델 훈련에 적용한 결과, 훈련 속도가 10% 이상 향상되었습니다. 이는 미미한 개선으로 보일 수 있지만, 3개월이라는 긴 훈련 기간을 고려할 때 중요한 절감 효과를 나타냅니다. 더불어 이러한 속도 향상은 GPU 임대 비용도 상당히 아낄 수 있었습니다.
Trident Start History
PyTorch에서 보낸 Docathon 초대장
Trident는 사용자들에게 큰 인기를 얻었으며, NVIDIA GTC와 PyTorch Docathon 참여 제안도 받았습니다. 그러나 회사 측에서는 이 모든 행사 참여를 금지시켰고, 더욱이 추가적인 소통 없이 팀이 해체되는 상황에 이르렀습니다. 팀이 해체되는 과정에서 경영진에 큰 실망을 하였습니다. 또한 회사 내에서 새로운 기회를 찾고자 노력했으나 모두 무산되어, 결국 회사를 떠나기로 결심하게 되었습니다.
감사합니다.