안녕하세요. 저는 25년도 상반기 6개월간 네이버클라우드 인턴쉽을 마치고 돌아온 김현우입니다. 오늘은 지난 인턴쉽 과정중 한 일과 배운점들, 또 전달할 점들을 글로 정리해보고자 합니다.
1. 무엇을 했는가
저는 25년 2월부터 8월까지 6개월간 네이버클라우드의 HyperCLOVA X 모델 부서 내 Vision Understanding 팀에서 인턴으로서 업무를 진행하였습니다. 네이버는 HyperCLOVA X라는 자체 LLM을 가지고있고, 작년 8월에는 LLM에 비전 능력을 여럿 붙인 VLM, HyperCLOVA X Vision을 출시하였습니다. 제가 지원했던 인턴쉽 모집 공고는 24년 12월 말에 올라왔고, Vision 모델 학습 및 데이터 관련 직무의 인턴을 채용한다는 내용이었습니다.
저는 석사과정으로서 인턴쉽을 무려 네이버클라우드에서 경험한다면 그보다 좋은 경험은 없을 것 같아 한달간 인턴 채용 절차를 열심히 준비하게됩니다. 사실 지원하는 목적에 있어 제 경력을 쌓고 싶었던 것이 절반, 아직 나이에 비해 사회경험이 스스로 부족하다고 생각하여 이 점을 메우고싶다는 열망이 절반이었습니다. 이 사회경험에 대해서도 뒤에서 다시 말씀드리겠습니다.
인턴을 지내며 만난 다른 인턴분들은 처음 시작시 큰 프로젝트의 주제를 잡고 6개월간 진행하게 됩니다. 하지만 저는 큰 주제없이 실제 모델 생산 일정에 맞게 평가에 대한 지원 업무를 수행하였습니다. 아마 큰 주제를 VLM 평가로 봐도 될 것 같습니다. 6개월간 월별로 했던 일들은 아래와 같이 간단하게만 정리해두겠습니다. 사실 무슨 일을 했는지는 크게 중요하지 않을 것 같고 너무 세세히 말씀드리긴 조심스러워서, 질문 주시면 따로 답변드리겠습니다.
- 2월: 오픈소스 평가 프레임워크(lmms-eval) 비디오 평가 가속화 연구
- 3월: 사내 모델(HyperCLOVA X Vision) 비디오 벤치마크 평가 및 성능 분석
- 4월: 오픈소스용 사내 모델(HyperCLOVA X SEED 3B) 비디오 평가 및 성능 분석
- 5월-7월: 사내 모델 언어, 영상, 동영상 평가 및 평가 프레임워크 개발
- 6월: Reasoning 능력을 갖춘 사내 모델 평가 및 성능 분석
2. 회사의 업무방식
2.1 깃허브
위 일들을 하면서 ‘회사’는 일을 어떤 방식으로하는지 느낄 수 있었습니다. 인턴 면접때도 네이버는 일을 어떻게하는지 여쭤본적이 있었는데, 당시 팀장님께서는 위에서 내려오는 일도 있고, 아래에서부터 시작되는 일도 있다고 말씀해주셨습니다. 실제로 일을하다보니 제가 인턴으로 있던 기간이 한창 네이버를 비롯해 다양한 국내 LLM 회사들이 대외적인 경쟁을 펼치고 있는 시기였습니다. 그에 따라 큼직한 프로젝트와 방향성은 위에서부터 결정되어 내려오고, 그 프로젝트를 수행하는데 있어 세워야하는 작은 방향성들이나 보조 툴은 아래에서부터 직원들의 협의를 통해 만들어지는 것이었습니다.
예를 들어 4월에 공개되었던 모델(HyperCLOVA X SEED 3B)의 오픈소싱이 언제까지 진행되어야한다고 결정이 내려오면, 팀에서는 해당 모델을 어떠한 컨셉으로 공개할지에 대해 여러 방향성을 살펴보게됩니다. 살펴보는 과정에서 필요한 툴이나 평가 벤치마크를 정하고 내부적으로 업무를 진행합니다. 유리한 방향이 몇가지 결정되면 정리하여 다시 윗분들과의 미팅을 진행하고 결정하는 것이었습니다.
이 바쁘고 정신없는 과정에서 직원분들을 보고있으면, 각자가 현재 상황을 잘 파악하고있으며 그 속에서 자신이 무슨 일을 해야하는지 잘 알고있다고 느껴졌습니다. 협의를 통해 각자의 todo가 정해지면 모든 내용을 깃허브 등등에 기록하고, 언제든지 편하게 그 기록물을 두고 소통합니다. 이렇게 쌓이는 기록물과 소통 내용을 정리해서 미팅때 전달하고 의견을 주고받았습니다.
사수분께서 ‘회사에서는 기록이 전부다’라는 이야기도 해주셨습니다. 회사원은 아무래도 업무 중 개인의 기여를 계속해서 쌓아야하고 그걸 겉으로 드러낼줄 알아야한다는 점에서 말씀해주신 것도 있겠지만, 확실히 기록이 잘되어있으면 내용 전달이 깔끔하고 필요한 정보를 찾아오는데 소요되는 시간이 많이 줄어든다는 점입니다. 기본적으로 깃허브에 모든 코드 변경사항을 기록하고, 이슈에 논의사항과 결과물들을 기록하며 업무를 진행합니다.
생각해보면 이전에는 연구, 과제와 관련된 건임에도 슬랙이나 구두로만 논의하였고, 후에 그 내용을 되짚어봐야할때 ‘그때 어떻게 했었더라..?’하고 찾는데 오랜 시간을 쏟는 경험이 많았습니다. 저도 인턴중 깃허브를 활용하는 방식으로 일하며 편리함을 많이 느꼈고, 현재 저희 팀에는 이런 방식을 도입하고자 정리중에 있습니다. 사실 저는 이전에 깃허브를 한번도 써본적이 없었는데요, 인턴 초반에 사수분께서 “WIP로 PR 올려주시면 리뷰할게요”라는 한마디를 하셨을때 뭐가뭔지 아무것도 몰라 크게 당황한 기억이 있습니다. 연구원분들께서도 깃허브로 코드랑 논의사항 관리를 안해보신분들이 계시다면 시작하시는 것을 추천드립니다. 코드도 초기 세팅을 간단히 하면, vscode UI만으로도 기본적인 기능은 쉽게 써먹을수가 있습니다.
2.2 우선순위
저는 인턴기간 내내 ‘평가’를 집중적으로 다뤄왔습니다. 평가라고만하면 간단해보일 수 있지만, 하나의 평가를 위해서는 아래와 같은 요소들을 고려해야합니다.
- 모델
- 모델 구조: 구조가 리팩토링되면 전처리 코드나 추론 forward 코드도 손봐줘야합니다.
- chat_template: 사용하는 chat_template(입력 프롬프트, im 토큰, think 토큰 등)이 학습때와 동일한지 확인해야합니다.
- 벤치마크
- 모달리티: 언어, 이미지, 비디오. 모달리티마다 사용하는 프레임워크와 사용 가능한 서빙 API가 다릅니다.
- 평가 방식: Multi-Choice QA가 대부분이라 기존의 파싱 코드를 사용하지만, think 모델은 답변이 길어 파싱 방식이 달라져야합니다. 또 chat 형태의 주관식 벤치마크는 어떻게 평가할 것인지 고민 및 개발이 필요합니다.
- 대상 벤치마크: 현재 모델의 능력에 따라 어떤 벤치마크가 그 능력을 명시적으로 평가할 수 있을지, 또는 돋보이게해줄 수 있을지 찾아봐야하기도 합니다.
인턴 기간 초반에는 비디오 평가를 중점적으로 봤기에 일적으로 부하가 걸리는 일이 거의 없었는데, 3월과 4월에 진행한 업무는 특히 여러가지 스펙의 모델-여러가지 모달리티-여러가지 벤치마크에 대한 성능을 정해진 기간 내에 반드시 측정해야만 했습니다. 이렇게 몇가지 일을 동시에 하면서 어려움이 많다보니 저도 자연스럽게 일의 우선순위를 지정하게 되었습니다. 예를 들어 두 가지 평가 건을 진행중인 상황에서, 사수님이 하나의 평가 건을 더 요청해주시면 자연스럽게 3가지 일의 우선순위를 따져 어떻게 진행하겠다고 전달드리고, 일정을 함께 조정하는 습관이 생겼습니다. 우선순위를 정하고 일정을 정해야하다보니 이 일을 진행하는데 내가 어느정도 시간이 필요하겠다에 대해서도 객관적인 판단이 가능해진 것 같습니다.
연구실에서는 여러가지 일을 급하게 진행해야하는 상황이 없을때가 더욱 많고, 지금까진 선배 연구원들이 있으니 업무 전체 일정을 신경쓰기보단 어떤 일을 할당받아 처리하는 것을 반복하며 시간을 보내왔습니다. 그러다보니 우선순위를 두고 일을 스케쥴링해야겠다는 필요성을 잘 못느꼈었는데, 앞으로는 급하지 않은 일도 최소한의 시간을 투자해 해소할 수 있도록 스케쥴링을 잘해야할 것 같습니다. 이러한 스케쥴링에 관해서는 올해 초에 상인님께서도 세미나에서 언급해주신적이 있으셨던 것 같은데, 이제서야 좀 체감이 되는듯합니다.
2.3 질문
인턴 기간 초반에 사수님으로부터 ‘질문을 더 많이 해라’라는 이야기를 몇번 들었었습니다. 제 입장에서 질문은 두 종류로 나눠볼 수 있었는데, 첫 번째는 내가 정할 수 없는 것에 대한 질문이었습니다. 예를 들어 평가할때 ‘지금 GPU가 얼마만큼 필요한데, 이거 지금 잡아서 써도 되나요?’와 같은 질문은 인턴 스스로 결정할 수 없는 사안이기때문에 반드시 문의를 드려야합니다. 그리고 두번째는 어떠한 일을 할당받았을 때 그 업무 내용으로부터 생기는 궁금증에 대한 질문입니다. 초반에는 저 스스로 해결하는 것이 맞다고 생각했지만 사실 회사는 연구실이 아니기에 정말 이성적으로 생각해보면 제 개인의 성장보다 업무의 완료 여부가 더 중요하다고도 볼 수 있습니다. 언제까지 마쳐야 하는 일이 잘 이해되지 않아 일이 지연되는 것보다 다른 직원분들께 질문함으로써 저의 업무 진행상황을 알리고 함께 고민하면서 일을 마치는 것이 더 중요하다는 점을 배웠습니다.
다만 연구실에서는 상황이 다를 수 있기 때문에 아직 ‘정확히 어느 시점에 질문을 해야하는가?’에 대한 답은 잘 얻지 못한 것 같습니다. 센스있게 질문할 시기를 잘 정하는 것도 능력이라는 생각이 듭니다. 다만 한가지 확실한 것은, 질문을 할때 그 질문을 잘 준비해야한다는 것입니다. 직원분들끼리 질답을 나누는 모습을 지켜보면, 질문에 대한 답을 해야하는 상대방이 무엇에 대한 질문인지 확실히 알 수 있게 질문을 하고, 그냥 밑도끝도없이 모르겠어서 하는 질문보다 현 상황에서 어디까지 시도해봤는지, 무슨 시도가 남아있는지, 각 시도마다의 장단점은 무엇인지를 잘 정리해서 질답을 주고받곤 하였습니다. 당연한 이야기같지만 연구실에서는 지켜지지 않은 적이 많은 것 같고, 이를 지켜야 효율적으로 소통할 수 있는 것은 자명한 것 같습니다.
3. 얻어가는 것
마지막으로 제가 인턴쉽을 통해 얻어가는 것들을 정리하고 글을 마치겠습니다. 글 초반에 사회경험이 부족하여 인턴 과정을 통해 세상은 어떻게 돌아가는지 알고싶다고 말씀드렸었습니다. 거시적인 관점으로는, 우리나라 AI 기술의 미래를 이끌 회사 중 한 곳에서는 무엇에 집중하고 있는지, 어떤 방향으로 나아가고자하는지 엿볼 수 있는 기회였습니다. (물론 수년 후의 긴 미래를 내다보는 것과 관련해선 직원분들도 전망을 주시지 못합니다.) 또 작게는 이 분야에서 몇 손가락 안에 드는 대기업이 어떠한 방식으로 소통하고 일하는지, 전형적인 대한민국의 학생 인생을 살아온 제가 사회생활이 무엇인지를 배울 수 있었습니다.
제가 인턴쉽을 지내는 6개월이 마침 국내 AI 회사들이 대외적 경쟁을 활발히 하는 시기라, 운좋게도 제 작업 기여가 좋게 평가받을 수 있었습니다. 제가 평가한 오픈소스 모델은 공개 4개월간 150만 다운로드 수를 기록하기도 하고, 6월에 공개된 Think 모델 테크니컬 리포트에 Core contributor로 들어가기도 하였습니다. 세상물정 돌아가는 것이 궁금해 인턴쉽에 참여하였고, 그 전쟁터에서도, 더욱이 제가 생각한것보다 더 한복판에서 세상이 어떻게 돌아가는지 경험해보게되었고 시야를 크게 넓힐 수 있는 기회였다고 생각합니다. 연구원분들께서도 한번씩은 꼭 경험해보시면 좋겠습니다.