회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
IT 지식이 무엇보다 중요해진 요즘, 여러분은 어떻게 공부하고 있나요? 가장 먼저 눈길이 가는 건 다양한 IT 강의 영상일 겁니다. 강의를 제공하는 교육 기업들과 함께, 요즘IT에서 ‘IT 강의 시리즈’를 준비했습니다. 엄선한 교육 영상을 텍스트로 읽고 필요한 정보를 빠르게 가져가세요.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
IT 지식이 무엇보다 중요해진 요즘, 여러분은 어떻게 공부하고 있나요? 가장 먼저 눈길이 가는 건 다양한 IT 강의 영상일 겁니다. 강의를 제공하는 교육 기업들과 함께, 요즘IT에서 ‘IT 강의 시리즈’를 준비했습니다. 엄선한 교육 영상을 텍스트로 읽고 필요한 정보를 빠르게 가져가세요.
이번 강의는 ‘서비스 향 AI 모델 개발하기’입니다. AI 스타트업 업스테이지의 CTO이자 전 네이버 클로바 임원인 이활석 님의 특강을 텍스트로 옮겼습니다. 실제 서비스에서 쓰는 AI 모델 개발부터 올바른 조직 구성 방법까지, 이론이 아닌 AI 개발의 실재를 만나 보세요. 전체 영상은 네이버 부스트코스에서 확인할 수 있습니다.
서비스향 AI 모델 개발하기 시리즈
①‘진짜 서비스’에 쓸 AI 모델 만들기: 서비스 요구 사항과 학습 데이터셋
② ‘진짜 서비스’에 쓸 AI 모델 만들기: 테스트와 모델 요구 사항
③ AI 커리어를 시작하려는 개발자를 위한 조언
앞서 글에서는 “서비스향으로 AI 모델을 개발한다”라고 할 때, 무엇이 다를지 설명했습니다. 들여다봤더니 정말 많은 일이 있죠? 그 많은 업무는 결국 기술팀에서 감당해야 합니다.
그래서 “효율적으로 이를 잘 감당하려면 조직 구성을 어떻게 하면 좋겠느냐”라는 물음에 대한 답을 제 개인적인 의견을 담아 만들어 봤습니다. 또, 이런 조직 구조를 바탕으로 AI 쪽에서 커리어를 시작하거나, 직종을 전환하려는 개발자를 위한 조언을 몇 가지 준비했습니다.
서비스 요구 사항이 들어오면 그 요구 사항에 맞는 AI 모델을 만들어 주는 것, 이것이 근본적인 AI 기술팀의 역할입니다.
그 팀에는 당연히 AI 모델을 개발하는 인력이 필요하겠죠. 이렇게 모델링하는 분들을 저는 보통 모델러(Modeler)라고 합니다.
이 모델러들은 AI 모델 구조를 제안합니다. 정해진 평가 지표(Metric)에 맞춰 그 성능을 좋게 만드는 어떠한 구조들을 제안하는 일을 하죠. 또 그렇게 성능을 올리려다 보면 꼭 필요한 모델 자체 분석 혹은 디버깅 같은 일도 수행합니다.
그다음으로 필요한 역할이 무엇일까요? 앞서 실제 업무와 학습에서 제일 다른 것이 무언가 했을 때, ‘데이터를 준비하는 일’이라고 한 적이 있습니다.
이처럼 데이터 준비하는 일이 아주 큰 일이기 때문에 또 전문적인 역할이 필요합니다. 그래서 그 역할을 담당하는 분들을 저는 데이터 큐레이터(Data Curator)라고 불러요.
데이터 큐레이터는 학습 데이터셋을 준비합니다. 주요 업무로는 외주 업체 대응, 작업 가이드 문서 만들기, QnA 대응과 모델러나 서비스 기획팀과 커뮤니케이션하는, 그런 일들이 있습니다.
자연스레 데이터 큐레이터들은 서비스 기획팀과 얘기할 일이 많습니다. 그러다 보니 정성 평가를 할 때도 작업에 많이 관여하게 됩니다. 정량 평가는 어떨까요? 이런 정량 평가의 수립도 정성 평가랑 맞물려 있습니다. 그래서 평가 방법을 수립하는 일도 보통 데이터 큐레이터들이 주도적으로 하는 경우가 많습니다.
그다음 중요한 인력은 툴 개발자(IDE Developer)입니다. 이렇게 데이터 관련 업무, 모델링 관련 업무를 하다 보면 나름 반복적인 업무들이 꽤 많습니다. 그래서 이 업무의 효율성을 개선할 툴을 만들어 주는 전담 인력이 있으면, AI 모델을 개발하는 팀 전체의 효율과 퍼포먼스가 굉장히 많이 올라갑니다. 여력이 있다면 저는 이 툴 개발 인력을 전담으로 붙이길 꼭 원하는 편이에요.
툴 개발자들이 하는 일을 보면 크게 세 가지가 있습니다.
첫 번째, 데이터셋에 대한 정답을 매기는 라벨링 툴 개발입니다. 이 툴은 외주 업체에서 만드는 경우도 있지만, 개인적으로는 AI 기술팀에서 이 라벨링 툴을 만들어야 된다고 생각하거든요.
그다음은 모델 분석할 때인데요, 보통은 이 모델을 콘솔 창에서 본다든지, 주피터 노트북에서 본다든지 합니다. 간단한 모델 같은 경우에는 그렇게 할 수 있죠. 그런데 모델 4개가 연속으로 쓰인다고 하면 어떨까요? 무슨 모델에 어떤 문제가 있는지, 이런 분석이 굉장히 어렵습니다. 그래서 모델 분석을 위한 툴을 개발해 놓으면 디버깅 속도가 굉장히 올라갑니다.
마지막으로, 모델 개발할 때는 뒷단에 파이프라인들이 있습니다. 이 파이프라인을 자동화하면 모델링이 전반적으로 편해질 수 있어요. 그 파이프라인을 개발하는 역할도 이 툴 개발자들이 하기를 저는 바라고 있습니다.
이렇게 여러 역할이 있다 보니 커뮤니케이션 할 일도 굉장히 많습니다. 자연스레 이를 전체적으로 봐줄 역할도 또 필요해요. 그런 분을 저는 모델 품질 매니저(Model Quality Manager)라고 부르죠.
결국, AI 기술팀에서는 AI 모델이 하나 나와야 합니다. 당연하게도 이 AI 모델의 품질 전반을 관리할 매니저가 필요한 거예요.
이렇게 팀을 구성하고 나면 실제 서비스향 AI를 만들 때 필요한 그런 일들을 어느 정도 효율적으로 감당할 수 있을 겁니다.
다만 AI 개발팀에는 AI 모델까지만 딱 요구되는 게 아닙니다. 사실 서빙(serving)까지 해달라는 요청이 빈번해요. 그러면 그 작업을 할 인력이 또 필요하겠죠.
AI 기술팀에서 나오는 산출물은 결국 모델입니다. 이 모델이라고 함은 파이토치(Pytorch)나 텐서플로(Tensorflow)로 구현한 상태죠.
그 모델을 받으면 서빙팀에서 엔드 디바이스(End device)에 맞춰서 서빙이 되게끔 어떤 작업을 해주어야 합니다.
여기에는 어떤 작업이 있을까요? 우선 모델 엔지니어링이 필요할 겁니다. 저는 이 역할을 하는 분들을 모델 엔지니어(Model Engineer)라고 부릅니다.
예를 들어볼게요. “모바일에서 AI 모델을 구동하고 싶다”라고 하겠습니다. 최근*에는 모델러들이 주로 파이토치로 작업하는데요, 모바일에 적합한 모델을 만들려면 이 파이토치 모델을 텐서플로로 변경해야 합니다. 또, 이렇게 텐서플로로 구축한 모델을 모바일에서 구동하기 편하도록 텐서플로 라이트 버전으로 바꾸는 작업이 필요하죠. 이런 변환 작업을 모델 엔지니어링 작업이라고 합니다.
*강의 영상은 23년 3월에 게시되었습니다.
하나 더 볼까요? 비슷하게 “GPU 서버에서 서빙을 하고 싶다”라고 하면 요즘은 텐서RT를 좀 많이 씁니다. 텐서RT로 변환하려면 역시 파이토치로 구축한 모델을 텐서플로로, 그리고 텐서플로 버전을 다시 텐서RT로 변환하는 작업이 필요해요.
이렇게 변환할 때는 우리 모델에서 쓰는 오퍼레이션(operation)을 텐서플로 라이트나 텐서RT에서 지원해야 합니다. 하지만 경우에 따라 변환이 안 되는 오퍼레이션을 쓰기도 해요. 그럴 때는 변환되는 오퍼레이션으로 바꿔 모델을 다시 학습하거나, 아니면 그 오퍼레이션 그대로 텐서플로 라이트나 텐서RT에서 구동시키기 위해 커스텀 레이어로 직접 구현하기도 합니다.
또 다른 작업, 모델의 메모리를 줄이는 경량화 작업이 있습니다. 여기에는 굉장히 많은 테크닉이 들어가요. 기술뿐만 아니라 하드웨어 쪽으로도 여러 지식이 많이 필요합니다. 대표적인 예로 증류(distillation)라는 연구 분야가 있습니다. 또 양자화(quantization)도 하드웨어 의존성이 있는 데다 연구가 많이 필요한 분야고요.
아니면 GPU 고속 처리를 위해 아예 CUDA 프로그래밍을 할 수도 있고, “이 모든 작업이 굉장히 번거롭다” 하면 보통은 모든 것에 통용되는 솔루션, C++ 혹은 C로 변환하는 작업을 해버리기도 하죠. 그러면 모바일에서 동작하든, GPU에서 동작하든 굉장히 편할 때가 많아요. 모델에서 필요한 모든 연산을 아예 C++로 변환하는 작업을 하는 겁니다.
이러한 작업을 해주는 사람을 모델 엔지니어라고 부르고 있어요. 모델링도 좀 해야 하지만 개발 일도 좀 알아야 하는 역할이에요. 그래서 원래 개발자인데, “AI로 커리어 전환을 하고 싶다” 하는 분들에게 제가 처음 권하는 업무 영역이기도 하고요.
아직 끝이 아닙니다. 사실 모델이 진짜 모바일에서 동작하려면, 또 앱 관련 작업이 필요할 겁니다. 그 모바일 환경이 안드로이드냐, 아이폰이냐 따라 각각 작업이 필요하죠.
이렇게 만든 모델을 API 서빙하려면 어떨까요? CPU냐, GPU냐가 하나의 큰 구분, 클라우드냐, 서버 팜(Server Farm)이냐가 한 구분, 이에 따라 백엔드 영역별 작업이 마찬가지로 들어갑니다.
서비스 요구 사항에 맞는 AI 모델을 실제 사용자가 쓸 수 있을 때까지, 이런 작업이 다 들어가는 겁니다.
마지막으로 AI 쪽으로 커리어를 쌓고자 하시는 분들에게 몇 가지 조언을 드리고자 합니다.
이런 질문을 제가 사실 많이 받습니다. 이미 회사를 다닌 분, 웹 개발을 공부한 학생을 비롯해 많은 개발자가 “AI 쪽으로 업무 전환을 하고 싶다”라는 의견을 많이 주세요. “어떻게 하면 좋겠냐”라고 묻죠.
제가 딱 하나 하고 싶은 말은 “한 번에 난 AI 모델링을 할래”라고 넘어가지 말라는 거예요. 우리가 보았듯 그 중간 레이어를 보면 수많은 업무가 있습니다. 그런 업무부터 하면서 점차 모델링까지 넘어오는 것이 어떨까, 사실 제 생각은 이렇습니다.
모델 엔지니어링, 툴 개발, 서빙, 이런 작업은 개발 능력이 많이 필요한 일이에요. 그래서 요즘 AI 대학원 나와서 석사, 박사했다 하는 친구들한테 이런 일을 시키면 오히려 잘 못해요. AI 모델 개발하는 능력이랑 이런 서빙이나 모바일 동작, 이런 개발하고는 좀 성격이 좀 다르잖아요. 그래서 잘 못하는 경우가 많더라고요.
그러다 보니 ‘내가 프론트엔드 엔지니어다’라고 하면, 우선 툴 만드는 쪽으로 해보고, AI에 친숙해지면 그다음에 모델링 쪽으로 넘어오는 게 어떻겠냐, 이런 얘기를 많이 드려요. 툴 개발은 프론트 영역 작업이 꽤 많거든요.
앱 개발자는 당연히 저런 텐서플로 라이트 모델을 받아서 앱으로 구동시키는 그런 작업부터 해보는 게 저는 좋다고 봐요.
백엔드 하는 분들은 어떨까요? 백엔드 영역은 할 일이 워낙 이런저런 곳에 많아요. 그러니 모델을 실제 서비스에 올리는 일들부터 해보며 점차 모델링 쪽으로 넘어오는 게 어떨지 조언하죠.
특히 모델 엔지니어링, 이 작업은 정말 개발의 교집합이거든요. 모델 다루는 일, 그러니까 모델링도 할 수 있어야 하고 모델 학습을 시키는 경우도 있죠. 그런 만큼 또 모든 개발자가 다 뛰어들 수 있는 AI 업무라고 할 수 있습니다.
그다음 AI 모델을 개발할 모델러들에게 하고 싶은 조언도 있습니다. “어떤 분야에서 모델링을 잘한다” 이는 여전히 유효한 전문성이에요. 그런데 이 전문성도 점점 희귀함이 떨어질 것 같아요.
모델링 관련 업무조차 많이 자동화되고 있거든요. 오토ML 같은 기술만 해도 예전에는 비효율적인 부분이 있었는데, 관련 툴이나 자동화된 파이프라인들이 나오기 시작하면서 모델러의 전문성이 조금씩 떨어지고 있어요.
인력 수도 점점 늘어나고 있죠. AI 대학원이 늘어나고, 또 다른 개발자로 일하다 AI 모델링하겠다며 전직하는 분들이 생기고요. 이렇게 인력 수가 늘어나니까 희귀성이 앞으로는 조금씩 떨어지지 않을까 생각해요.
그래서 “난 한 분야에서 모델링을 잘해” 이는 당연히 갖춰야 할 역량이고, 여기에만 머무르지 말고 좀 더 주변으로 역량을 확대하는 걸 권하는 편입니다. 이를테면 “나는 컴퓨터 비전(CV)을 해”라고 한정 짓지 말고, 이제 자연어 처리(NLP) 버전으로 좀 더 확장을 해볼 수 있겠죠.
이렇게 AI 기술 분야를 확장할 수 있고요, 혹은 “내가 컴퓨터 비전을 하는데, 기존 모델의 정확도를 올리는 작업에 더해 경량화까지 할 수 있어”라고 하면 또 다른 경쟁력이 될 겁니다. 그런 분야로도 또 확장할 수가 있을 겁니다.
아예 개발 능력을 조금씩 더 갖춰가는 것도 방법이겠죠.
모델링을 하는데 프론트엔드를 조금씩 익히는 거예요. 그러면 “나는 모델링을 하는데, 여기 필요한 데이터 어노테이션(data annotation) 툴도 만들 수 있어” 혹은 “이 모델을 분석할 디버깅 툴도 만들 수 있어”라면 굉장히 큰 경쟁력이 될 것 같아요.
유사하게 백엔드 방향으로도 확장할 수 있어요. “모델링도 잘하지만 이 모델을 서빙하는 것까지 내가 구현할 수 있어” 혹은 모델링할 때 요새는 대용량 GPU를 쓰는 경우도 있으니, “클라우드 혹은 GPU 팜에 있는 GPU를 활용해 학습시킬 수도 있어”라고 하면 정말 큰 차별화가 되겠죠.
그래서 한 분야의 전문성을 확보한다, 이는 필수로 보고, 그 주변으로도 조금씩 역량을 확장하는 노력을 기울이는 것이 좋아요. 앞으로 5년, 10년 이후를 생각해 보면 이런 일이 커리어에 큰 도움이 될 거라고 믿어 의심치 않습니다.
마지막으로 이 글을 보는 모든 분에게 조언을 드리자면, AI 기술 트렌드에 정말 민감해야 합니다.
이미 많이 들었겠지만, 지금 현업에서 뛰고 있는 저도 정말 많이 느끼는 것이 있습니다. AI의 기술 발전 속도가 다른 기술에 비해서 훨씬 빠르다는 거죠. 게다가 어디로 튈지도 모르게 변화무쌍해요. 기술뿐만 아니라 이 기술과 얽힌 주변 여러 곳도 빠르게 변합니다.
그래서 이제는 “왜 이렇게 빨리 변하냐” 푸념하기보다, 이를 당연하게 받아들이고 어떻게 나와 관련된 AI 기술 트렌드, 혹은 전반적인 변화를 빠르게 잡아낼지 고민해야 해요. 만약 서비스 기획자라고 하면 AI 기술 혹은 서비스 트렌드를 어떻게 빠르게 캐치할지, 이에 대한 노하우를 스스로 쌓아야 한다고 생각합니다.
지금까지 나름 서비스향 AI 모델을 만들 때 필요한 일들을 설명했습니다.
그 마지막에 하고 싶은 조언이 하나 더 있습니다. 지금까지 설명한 모든 것이 언제까지 유효할지 저도 모르겠다는 것입니다. 이조차도 계속 바뀌고 있으니까요. 또 예전에는 미처 경험하지 못한 새로운 일도 늘 생겨날 테고요. 참고할 사례도 없다 보니 맨땅에 헤딩하며 새로운 길을 개척하는 경우가 적지 않을 거예요. AI 쪽으로 발을 들인 모두 이런 상황을 염두에 두길 바랍니다.
그래도 제가 전한 내용이 앞으로 여러분이 걸어가는 길에 조금이나마 가이드가 될 수 있지 않을까, 그런 마음으로 강의 마칩니다.
서비스향 AI 모델 개발하기 시리즈
①‘진짜 서비스’에 쓸 AI 모델 만들기: 서비스 요구 사항과 학습 데이터셋
② ‘진짜 서비스’에 쓸 AI 모델 만들기: 테스트와 모델 요구 사항
③ AI 커리어를 시작하려는 개발자를 위한 조언
원본 강의 보러 가기 https://www.boostcourse.org/ai101
요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.