AI 학사 취업, 왜 어려울까? [ML 엔지니어 도전기 1편]
필자는 나름 개발, 특히 AI 분야에 잔뼈가 굵은 이른바 "중고 신입"에 가깝다고 생각한다.
고등학생 때 프로그래밍을 시작하여 웹 개발과 앱 개발을 두루 경험했고, 인서울 대학의 컴퓨터공학과에 진학하여 1학년 때부터 교내외의 대회를 휩쓸고 다녔다. 군대에서조차 SW 개발병으로서 컴퓨터 앞에 앉아 일하고, 그 와중에 군 해커톤에서 입상하거나, 군부대에서 컨퍼런스를 개최하기도 하는 등 쉼 없이 달려왔고, 전역한 지 한 달도 지나지 않아 자대의 컴퓨터 비전 연구실에 학부 연구생으로 들어가 1년간 바쁘게 연구 경험을 쌓았다.
컴퓨터공학에 발을 들이고 9년, 숱한 실패와 약간의 성취를 맛보며, 나름 열심히 살아왔다고 자부하는 나였다.
그런데, 취직이 안된다.
호기롭게 취업 도전을 시작한 지 2개월, 면접은커녕 서류 탈락만 몇 번을 한 건지 모르겠다.
ML 학사 취업 어렵다고 말로만 들었지, 이 정도일 줄이야.
하지만 그렇다고 좌절하고 포기할 내가 아니다. 항상 그래온 것처럼, 문제를 확실히 파악하고, 하나씩 정복해서, 결국은 취직을 이뤄내리라.
취준 과정에서 얻은 깨달음과 고통으로 가득할 ML 엔지니어 취업 도전기, 그 첫 이야기는 도대체 왜 ML Engineer 취업이 이토록 어려운가에 대한 분석이다.
AI 분야 채용 분석
먼저 각 회사 채용 홈페이지와 링크드인, 잡플레닛 등 채용 공고 사이트들을 훑었다. 회사마다 차이는 있지만 대부분의 AI 관련 직무는 아래와 같이 귀결되었다.
- AI/ML Researcher
- AI/ML Engineer ≈ SW Engineer, ML
- MLOps Engineer
전반적으로 AI와 ML은 단어가 혼용되는 느낌이 강했지만, Researcher와 Engineer는 확실하게 구분된 느낌이 있었다.
직무적으로 Researcher가 논문 등을 통해 최신 기술 동향을 파악하고, 회사의 필요에 맞게 더욱 높은 수준의 솔루션을 새롭게 연구하고 개발하는 역할이라면, Engineer는 기존의 검증된 방법론(LLM 등)을 서비스에 적용할 수 있도록 구현하거나 파인튜닝하여 API와 같은 형태로 서비스화하는 것까지의 역할을 커버했다.
따라서, Researcher에게는 논문 작성을 포함한 연구 능력(논문 경험)이나 프로젝트 경험을 중점적으로 요구되는 반면, Engineer의 경우 ML에 대한 지식과 경력에 FastAPI 등을 활용한 API 구성과 Kubernetes를 활용한 배포, 때로는 전문적인 백앤드 개발 지식까지가 중점적으로 요구되었다.
한편, MLOps Engineer는 데이터 수집부터 학습, 배포 전반의 파이프라인을 관리하는 MLOps를 다루는 직무로, 이와 관련하여 mlflow, BentoML 등 정말 다양한 라이브러리와 도구들이 존재했다. 대부분의 경우 ML Engineer에게는 Docker와 Kubernetes 수준의 지식이 요구되었으나, 우대사항에 MLOps 관련한 내용이 존재하거나 아예 MLOps 업무가 자격요건으로 들어간 회사도 존재했다. MLOps를 따로 뽑는 공고의 경우, 전반적으로 머신러닝 지식을 가진 SW/클라우드 전문가에 가깝다는 느낌을 받았다.
특이한 직무들
한편 위에 언급한 직무들 외에도, 일부 회사에서는 특정한 업무를 전담하는 AI 관련 직무를 두기도 하였다. 머신러닝 모델의 설계와 실험에 중점을 둔 ML Modeler, 자연어 처리 분야에서 Prompt Engineer을 전문적으로 수행하는 Prompt Engineer, 데이터 라벨링을 중점적으로 수행하는 Data Labeler 등이 그랬다.
직무보다 복잡한 전문 분야
앞서 이야기한 것처럼 대부분의 직무가 AI/ML Researcher 혹은 Engineer로 나뉘었지만, 실제로는 회사의 연관 분야에 따라 더욱 세부적으로 직무가 나뉘었다. 크게는 자연어 처리, 추천 시스템, 컴퓨터 비전과 같이 나누는 경우가 일반적이었지만 자세히 보면 회사에 따라 분야가 매우 세부적이어서, 회사의 연관 분야와 지원자의 전문 분야가 맞지 않으면 합격이 상당히 어려울 것으로 느껴졌다.
2024년 상반기 필자가 확인한 채용공고를 기준으로 하면, 자연어 처리(NLP) 분야가 압도적으로 많으며, 그중에도 GPT나 LLAMA와 같은 대규모 모델을 활용한 경험이 요구되는 경우가 많았다. 그 외에도 추천 시스템, 로보틱스, Edge AI, OCR, Detection 분야 채용공고가 있었으나 NLP 대비 그 수가 매우 적었다. 또한, 채용 공고 대부분이 석사 이상 혹은 3년 이상의 경력을 요구하는 것도 눈에 띄었다.
요컨데, 대부분의 취업 공고가 회사에서 진행하는 프로젝트와 연관된 분야의 전문성이 높은 인재를 요구하다보니, ML 분야에서 깊이 있는 전문성을 갖기 어려운 학사 지원자에게는 절대적인 기회 자체가 적을 뿐 아니라, 수많은 석사 경쟁자들과 경쟁해야 하기에 취업이 한층 어려워지는 것이다.
학사 ML Engineer 취준은 어떻게 해야 할까
그렇다면 전문성을 어필하기 어려운 학사 지원자가 ML Engineer로서 가질 수 있는 경쟁력은 무엇이 있을까. 기술력으로 승부하는 AI 분야에서 전문성을 어필할 수 없다면, 결국 당장 회사에서 써먹을 수 있는 인재라는 점을 어필할 수밖에 없는 것 같다.
지원자가 낯선 업무를 수행하는 회사에서 빠르게 성과를 낼 수 있는 경우는 두 가지가 있다.
- 지원자의 머리가 아주 좋거나
(명문대 고학점, 알고리즘 대회 입상 등으로 증명할 수 있다.) - 지원자가 이미 해당 분야의 경험이 출중한 경우
너무나 슬프게도 전자에 해당하지 않는 필자와 같은 지원자라면, 결국 학부 단계에서 경험할 수 있는 프로젝트나 부트캠프 등을 통해 회사에서 요구하는 분야의 경험을 충분히 쌓는 것이 합격을 가르는 중요한 요소가 될 것이다.
전문 분야 설정하기
먼저, 수많은 머신러닝 분야 중 어떤 분야의 경험을 쌓을지 결정해야 한다.
현재 취업 시장에서 주로 요구되는 전문 분야는 아래와 같다. (2024년 5월 기준)
- 자연어 처리 (NLP)
- RAG, 프롬프트 공학 등 LLM 활용
- LLM 파인튜닝, 멀티 노드 GPU/TPU 환경에서의 학습 등 언어 모델 학습
- 생성형 모델
- STT, TTS 등 음성 합성
- Diffusion 모델 등 이미지 생성
- Super Resolution, Deblurring 등 이미지 개선
- 컴퓨터 비전
- Object Detection, Segmentation 등 일반적인 CV 기술
- Sensor Fusion, Calibration 등 광학 관련 기술 (주로 로봇이나 자율주행 회사)
- 추천 시스템
대분류 4가지와 소분류 2-3가지로 정리하기는 했지만, 실제로는 회사에 따라 더욱 세부적인 분야의 기술과 경험을 요구하는 경우가 많다. 각 분야의 차이가 상당히 크기 때문에, 본인이 취업하고자 하는 회사 한 곳에 맞춤형으로 준비를 하고자 하는 것이 아니라면 특정 세부 영역에 집중하기보단 대분류에 해당하는 자연어 처리, 생성형 모델, 컴퓨터 비전, 추천 시스템 중 한 분야에 대한 폭넓은 경험을 쌓을 필요가 있다.
물론, 한 대분류를 공부하기로 했다고 다른 영역을 하나도 공부하지 않아서는 안될 것이다.
필자의 경우, 취업 기회가 가장 많으면서 여러 분야에 응용이 가능한 자연어 처리와, 필자에게 익숙한 컴퓨터 비전 분야를 함께 발전시키기로 했다. 필자가 전문 분야를 설정하게 된 계기와 발전 계획은 다음 글에서 더 자세히 다뤄보겠다.
프로젝트 경험하기
어떤 분야로 포트폴리오를 준비할지 결정했다면, 이제 구체적으로 어떤 프로젝트를 수행하며 학습하고, 포트폴리오를 쌓아나갈지 결정해야 한다.
SW 분야에서 흔히 경험할 수 있는 프로젝트들의 특징을 살펴보자.
- 사이드 프로젝트 (웹, 앱) 개발
- 개인적으로, 혹은 팀을 구성하여 SW를 개발하는 가장 무난한 형태의 프로젝트이다.
- 개발 기간부터 프로젝트 규모까지 자유도가 높지만, 그만큼 퀄리티가 낮아지거나 중간에 포기하게 될 수도 있다.
- 실제로 서비스를 완성하고, 배포하여 사용자가 존재한다면, 높은 평가를 기대할 수 있다.
- 특히, ML 모델을 실제 서비스나 SW 형태로 만들었다는 점에서 Engineer적 역량을 강조할 수 있다.
- 오픈소스 기여
- 오픈소스 프로젝트(pytorch, sklearn 등)에 기여하거나 소스코드가 공개되어 있지 않은 논문의 코드를 구현하는 등의 프로젝트다.
- 기여한 내용에 따라 ML 이론과 프로그래밍 능력을 효과적으로 강조할 수 있다.
- AI 대회 (Kaggle, Dacon 등) 참여
- 높은 순위로 입상한다면 회사에서 요구하는 고성능 AI를 만들 수 있다는 명확한 증거가 될 수 있다.
- 경쟁이 치열한 만큼 좋은 성과를 내기 어렵고, 특히 AI 대회에서 사용되는 테크닉들에 대한 이해가 필요할 수 있다.
- 부트캠프
- 수개월간 풀타임을 투입해야 하지만, 종료 시 부트캠프와 연계된 취업 기회와 기업 수요에 맞는 지식을 얻을 수 있다.
- 개인적으로 알고 있는 내용이더라도 다시 학습하는데 시간을 소모해야 할 수 있으며, 다른 프로젝트와 병행하기 어렵다.
ML Engineer 취업을 준비하는 입장에서, 우리는 프로젝트를 통해 기업에서 요구하는 분야에 대한 깊이 있는 경험과 개발 역량을 보여줄 필요가 있다. 따라서 단순히 "경험" 수준의 프로젝트 n개보다는, 유의미한 성과를 낸 알찬 프로젝트 1,2개가 경쟁력 있을 것이다.
필자의 경우, 필자의 포트폴리오에 잘 드러나지 않는 최신 논문 이해 능력과 개발 능력을 강조하기 위해 최신 논문 구현을 통한 오픈소스 기여와 Engineering 역량 강조를 위한 사이드 프로젝트를 진행하기로 했다.
취업 준비 2막을 시작하며
취준을 시작하고 처음에는 근본적인 연구와 개발, 소통 역량만 뛰어나면 큰 어려움이 없으리라 생각했다. 그러나 2개월간 경험한 취준은 예상외로 더 어렵고, 회사와 나의 방향성이 잘 맞아야 하는 일이었다.
생각해 보면 우리가 어떤 제품을 살 때도 중요한 것은 단순히 제품의 수치적 성능이 어떤지가 아니라, 이 제품이 나에게 필요한 것인가 하는 것이다.
그렇다면 회사라는 소비자에게 나는 어떤 가치를 제공할 수 있는 Engineering Service Provider일까?
지금의 내게 어떤 요소가 추가되어야 더욱 매력적인 ML Engineer가 될 수 있을까?
이 고민을 계속하며, 담대하게 계속 나아가야겠다.