목차
필자는 데이터사이언스 분야에서 5년 넘게 일하고 있는 직장인이다.
즉, 데이터사이언스가 사람인에 처음 나올때 쯔음 신입사원으로 시작한 사람이다.
GPT가 등장한 이후 많은 것들이 변한 지금
데이터사이언티스트의 회사 업무가 어떻게 변했는지 적어본다.
최근 몇년동안 상당히 성능이 좋은 모델들이 많이 등장했고,
특정 분야를 제외하고 새로운 모델을 설계하는 업무는 거의 사라진 것 같다.
음성분야(STT, TTS), Vision 분야, LLM 분야, 머신러닝 분야 등은
성능을 더 좋게 하기 위해 연구를 하는 것 보다
이미 존재하는 모델을 더 잘 활용하는 방향으로 나아가는 것으로 보인다.
물론 더 좋은 모델을 만들기 위한
노력이 있긴 하지만
그런 업무를 실질적으로 하는 것은
큰 비용이 들 뿐만 아니라
비용 대비 효과가 크지 않기 때문에
회사 입장에서는 기존 모델을 잘 활용하는 것이 비용 면에서 훨씬 효율적이다.
기존 모델을 잘 활용하는 방법은
Few shot 이 주요한 방법이며,
언어 분야인 LLM은 RAG 를 이용해 추가적인 학습 없이 성능을 높여준다.
그렇다면, 커리어적인 측면에서 어떻게 준비를 해야할까..?
결론적으로 기존의 모델을
도메인에 맞게 잘 활용하는 기술을 함께
가지고 있어야 한다는 생각을 할 수 있겠다.
예를 들면 아래와 같다.
LLM 분야
- 도메인에 맞는 데이터를 수집하고 전처리 할 수있는 능력
- RAG를 이용해 텍스트를 검색하는 능력
- LLM 모델을 서빙하는 능력
- Fine-tunning을 위한 대규모 장비 사용 능력
- (몇 회사 안되는 것 같지만 모델 경량화... , 내가할 일은 별로 없어보임)
데이터 분석
- 도메인에 필요한 예측과 분석에 필요한 데이터 마트를 설계할 수 있는 능력
- 데이터 전처리 파이프라인을 만들 수 있는 능력
- MLops
- 모델 서빙 및 배포
- 데이터 시각화 및 배포
비전
- 이미지 데이터 전처리
- 현장에 맞는 예측 모델로 fine-tunning
- 상황에 맞는 모델을 사용할 수 있는 능력
- 모델 서빙 및 배포
그렇다...
CNN, RNN, transformer 등 모델에 대한 이해 뿐만 아니라 수많은 부수적인 기술들도 이제는 필요한 것이다.
pytorch, tensorflow는 많은 업무중에 일부분인 것이다.
또한, 모델 학습은 하이레벨 도구로 진행하는 추세이기 때문에
데이터를 넣고 돌리는 수준만 할 줄 알면
업무에서 충분히 활용이 된다.
아~ 커스텀하게 만들고 싶다고? (Pytorch, Tensorflow, C++를 활용해 나만의 모델을 만들고 싶다고?)
위에서 언급했지만 회사는 그럴 시간과 연구비용을 써서
나에게 그런 경험을 할 기회를 주지 않는다.
나의 천재적인 아이디어로 커스텀하게 만든다고 했을 때,
그것이 기존 모델에 비해 좋은 성능을 내라는 보장을 할 수도 없지 않은가?
결국... 인공지능 연구는 자연과학과 마찬가지로
당장 돈이 되지 않는 분야로 가는것 같다.
공학과는 거리가 멀어지는 것이다.
(인류의 위대한 발전과 기술적 진보를 위한 자연과학이 당장 돈이 안된다고 무시하는 것은 아니다. 오해하지말자.)
심지어 한국사회는 옛날부터 기초과학에 대한 연구 투자도 적으며
당장 경기가 안좋기 때문에 더더욱 연구에 대한 투자가 적다.
한국에 살면서 연구자로 살아가기에는
항상 미래에 대한 불확실함을 가지고 살아가야 한다는 것.
물론 지금도 활발히 연구중인 분야도 있을 것이지만
이것도 어느정도 성능이 나온 이후에는
다른 분야의 인공지능 업계 처럼 흘러갈 것이다.
현업 데이터 수집하고.... 모델 가져다 쓰고, 배포하거나 현업에 적용하는 형식으로
또한, 기존에 없던 새로운 하드웨어가 나오면 (양자컴퓨터, 저렴한 고성능 GPU)
어차피 세계적인 대기업에서 또 좋은 모델이 나오겠지 싶다.
그렇다고 해서, 모델에 대한 이해가 필요 없다는 것은 절대 아니다. 모델에 대한 이해가 없다면, 모델을 현업에 적용하고 배포하기 위한 모든 기술은 잘못된 방향으로 만들어질 가능성이 높기 때문이다.
결론적으로 모델에 대한 이해만 있고 다른 부수적인 기술이 부족하다면, 실질적으로 할 수 있는 일이 상당히 제한된다는 것이다.
필자가 중요하게 생각하는 능력은 직급에 따라 다음과 같다.
신입 사원일 경우 두가지 능력이 중요하다.
- 데이터 전처리 능력
- 자신이 사용하는 모델에 대한 이해 (모델에 대한 이해가 있어야 모델에 맞는 데이터를 준비할 수 있기 때문이다.)
다소 경력이 생긴다면
프로젝트 상황에 맞는 모델을 선택할 수 있어야 한다.
아래 사항을 고려할 수 있어야 한다.
- 상황에 맞는 모델 선택 능력
- 모델 개발 비용
- 서버 유지 비용
- 현업에서 요구하는 정확도 및 성능
- 기존 모델을 상황에 맞게 튜닝 또는 적용 능력
- 모델 모니터링
그리고 데이터를 어떻게 수집할지 비용적인 측면에서 고려할 수 있어야 한다.
- 데이터 마트 설계 (적절한 데이터베이스 선택 및 설계)
- 데이터 수집 비용 고려 (사외 데이터 수집 시 들어가는 비용도 고려)
- 적절한 데이터 파이프라인 도구 채택
여유가 있다면 배포 도구를 위한 백엔드 지식을 아는 것이 좋다.
- FastAPI
단 주의할 점은 FastAPI를 한다고 해서 모델에 대한 이해가 없다면
인공지능 개발자라고 할 수는 없다.
모델에 대한 이해가 없다면 백엔드 개발자일 뿐이다.
왜냐하면 백엔드는 인공지능을 실행하는
버튼일 뿐이기 때문이다.
우리가 핵미사일이 무서운 이유는
미사일의 폭발력이 무서운 것이지
발사 버튼이 무서운 것이 아니지 않은가?
게다가 진짜 백엔드 개발자는, 로그인/회원가입, 유저 권한 관리, 결제, 상품등록, 관리자페이지, 게시판 기능 등과 같은 기능들을 할 줄 알아야 진짜 백엔드를 한다고 말할 수 있을 것이라 본다.
인공지능 개발자가 저런 기능까지 간다는 것은
범위를 넘어서는 일이라고 볼 수 있겠다.
그리고 데이터 시각화 관련해서는 다양한 도구가 있으니 상황에 맞게 쓰면 되겠다.
- Tableau (비싸고 좋음)
- Google Lookerstudio (Google analytics, Google Big query와 연계가 좋음)
- D3 (javascript를 할 줄 안다면 좋음)
- matplotlib, seaborn (간단히 쓰기에만 좋음)
- AWS Quicksight (이미 AWS를 사용하고 있다면 나쁘지 않음)
직장인을 위한 인공지능 스킬을 요약하자
1. 도메인 데이터 수집 및 전처리
2. 문제에 맞는 모델 선택 및 튜닝
3. 모델 배포
4. 모델 평가 및 모니터링
위 과정을 최소 비용(적은인력, 빠른개발, 서비비용 및 장비값 최적화)으로 구현하는 것이다.
그리고 모델 미세조정(fine-tunning)
결론적으로
최신 모델를 정확히 이해하고,
가져와 잘 활용하는 것이 핵심이다.
이는 적은 인력과 비용으로 인공지능을 상용화 하는것 이다!
즉, 딥러닝 분야라면 취업을 하고 싶다면 더이상 연구가 아닌 엔지니어링이 유리하다.
연구는 이제 연구실에서 연구원 신분으로 해야 하는 것이다.
이는 데이터 분석 분야도 마찬가지다.
반박시 당신 말이 맞다^^
반박글은 댓글로 써주길 바란다.