플로라도의 data workout

1년차 신입 데이터 사이언티스트, AI 엔지니어 회고 본문

끄적끄적/회고록

1년차 신입 데이터 사이언티스트, AI 엔지니어 회고

플로라도 2024. 9. 4. 00:08

 

"안구 구조상 사람은 옆이나 뒤를 볼 수 없으므로 고개를 돌리는 행위는 매우 중요하다." - 악의 마음을 읽는 자들

 
 1.
대단한 자리는 아니지만, 나의 작년 23년 한해동안은
번듯한 직장인이라는 목표를 달성시켜준 이 자리를 위해 가삐 달렸다고 해도 과언이 아니다.
철부지였던 20대 시절의 청산과 함께
 
2년의 대학원 과정을 거쳐야만 취업된다는 이 바닥의 생리와 4년의 학부생 과정을 마친 전공자가 배출되는 시국에서, 비전공자 출신으로 이들을 뚫고 1년안에 독파하기 위해서 안간힘을 썼다.
 
돌이켜봐도 작년엔 절대적인 시간과 함께, 전체적인 양과 나름의 깊이를 신경써가면서 열심히 한 것은 정말 '팩트'다. 그러나, 지금 돌이켜보면 뭐 엄청 대단한 것을 한건 아니고, 그저 '기초 열심히 했다.' 정도로 치부되는게 사실이다. 단지 지금의 시선에서는 마주보고 있는 산들의 높이가 거대해 보여서 일까.
 
그렇다고 작년의 과정을 그저 '쉬웠다' 라고 속단하긴 어려울 것 같고, 조금 순화하여 '어렵진 않았다' 라고 부연할 수 있을 것 같은데, 이유인 즉슨 어느정도 닦여진 길(이 바닥에도 무려 커리큘럼이 존재했다!)과  좋은 환경(스파크 플러스라는 공유 오피스를 1년 내내 집처럼 자유롭게 드나들었다.😀)에서, 때로는 격려와 칭찬을, 때로는 자극과 동기부여가 되는 좋은 동료와 강사님들이 있었기 때문.
 
그래서, 나는 그저 의지 조금만 부어서 나의 주어진 환경에 얹혀서 실행만 시키면 되는 것이었다.
그렇게해서 나는 Data Scientist/ AI Engineer 포지션으로서 신입으로 첫 회사에 입사하였고,  이후  6개월차에 접어드는 지금이다.
 
 
2.
회사의 선택 과정은 3달 정도의 구직활동 끝에 결정되었는데,
해당 포지션의 공고 대부분은 석졸이상의 요건인 부분에 1차적으로 많이 실망했고, 지원가능한 기업이라도 서류합격률이 좋지 않아 많이 낙담했던 상태에서, 운좋게 최종적으로 인턴 포함 3군데 정도 합격통보를 받았고, 그 중 월급을 밀리지 않을 정도의 빵빵함(?)과 앞으로의 사업적 기대감과 네임밸류 등을 고려하여 회사를 선택하게 되었다. 그리고 현재는 회사에서 OCR 모델 개발과 모델 경량화, 데이터 분석 등을 맡고 있는 와중이다.

 
 맡은 일은 다행히 곧바로 재미를 느꼈고, 업무시간  몰입도도 괜찮게 따라왔다. 무엇보다도 프로젝트를 끝까지 제대로 책임지고 배포까지 진행하고 싶은 마음이 자연스레 생겼다. 당당히 내 작품이다, 내가 만든거다! 라고 할만한 자신감을 갖고 싶었다.
그러나 넘치는 흥미와 책임감이더라도, 맡은 업무에 대해서 무지했고, 지식을 쌓아나가야 했다. 시작은 해당분야를 조사하고 관련 논문을 스터디 하는것으로 시작하였다.

 
 
 
 
 
 
3.
회사는 기본적으로 '업무'를 하는 곳이다. 업무는 해당 일로써 얻을 수 있는 '가치' 뿐만 아니라 시간적인 리소스와 비용적인 리소스가 반드시 고려되어야 한다. 논문을 보고 해당 분야를 스터디하는 것은 새로운 연구주제나 영감 찾으려고 읽는 것이 아니라 발빠르게 내가 맡은 task와 해당사항이 있는지 검토하고, 레퍼런스 삼기 위해서인데, 살피다 보면 끝이 없었고 경계를 찾기가 참 어려웠다. 이것도 알아야 할 것 같고, 저것도 알아야 할 것 같고 ... 논문의 이 얘기 저 얘기를 다 봐야될 것 같았다. 
 
개발의 영역으로 들어 가서도 새로운 요소들, 모르는게 너무 많았던 것은 매한가지였다. 기본적인 파이썬에서 나아가 오픈소스 생태계에서 사용된 코드들을 보다보니, 똑같이 파이토치를 기반으로한 모델 소스코드라고 하더라도 짜는 방식이 참 다양했고, 모델에 필요한 여러 유틸들과 이를 돕는 생소한 라이브러리들도 참 많았다. 또한 일반적으로 흔히 아는 training loop를 짜는 것이 모델에 따라 기하급수적인 난이도 상승이 있음을 느꼈고, 데이터를 어떤 배치 비율로 줄 것인지, validation을 어떤식으로 걸 것인지, 로깅을 어떻게 할 것인지 등의 스타일 차이도 있음을 보았던 것 같다.
 
또한, 완성된 모델을 클라우드 환경에서 배포하기 위한 FastAPI , 모델 추론을 위한 ONNX 포맷 컨버팅, ONNX Runtime과 OpenVINO와 같은 추론 가속 엔진, TensorRT와 같은 CUDA dependancy 엔진, 멀티 GPU 학습 등의 요소에 대해서 알게 되었고,
요즘에는 모델 경량화를 공부하면서, Pruning과 Quantization의 여러 기법들에 대한 스터디와 함께, 경량화 적용이 가능한 spaMM 알고리즘이 가능하고, 쿠다 의존성이 없는 BLAS 라이브러리, XLA와 TVM과 같은 딥러닝 컴파일러, 온디바이스 AI 관련된 부분도 찾아보고 있다.
 
 
4.
직진만 하기엔 예상된 적들과 의외의 복병도 다수 있었다

우선, 성장환경에 대한 고민이다.
연차가 낮아서든 혹은 애초에 새로운 기술과 도구들을 F/U 해야하는게 당연한 직무라서든 필연적으로 '성장'에 대해서는 개발자라면 고민하는 분야 중 하나인데, 아무튼 AI  관련 분야는 일반적인 개발보다는 신생 분야이고, 매일 발전을 거듭하고 있고, 모든 시도가 회사 내에서 처음이고 실험적이다 보니 맞게 가고 있는지 헷갈릴 때가 많았다. 롤모델 삼을 시니어의 부재는 이러저러한 이유로 어찌보면 당연했을지도 모르는데 막연히 회사 내에는 시니어가 한명쯤 있을거라 생각했다.
 
그리고 업무가 자유로운 편이라 내 입장에서는 너무 좋지만 혹여나 올바른 길을 에둘러 가는게 아닌지 의심이 지속되는 것도 사실이다.  사실 몇명 인원을 제외하고는 회사 전체적으로는 AI 업무에 대한 이해를 찾아보기 힘든 환경이라 제대로된 보고가 어렵고, 또 팀이 완벽하게 꾸려졌다 보기 어려워 종종 프로젝트 기획 과정에서의 이슈가 들려오기도 하는 것 같다. (아직은 잘 모르지만...)

그렇다 보니, 팀 스크럼 미팅이 있긴하지만 한계가 있다고 느끼고 있는 와중이고, 팀내 업무공유나 코드리뷰, 커뮤니케이션 방식 등을 어떻게하면 효과적으로 할지 모색중인 한편이다.
 
이대로는 가장 큰 동기부여중 하나인 인정 욕구 부분에서 점차 갈증을 느끼게 되는 것이 아닐까 염려하고 있다.
 
 
5.
업은 프로로서 일을 완벽히 수행하는게 모범답안이기 때문에 (물론 수행중에 크고 작은 실수들은 반드시 존재하지만)
타 개발자와의 협업 및 원활한 커뮤니케이션을 위해서라도 부족한 CS 지식을 채울겸, 최대한 사이드 프로젝트를 통해 실패를 미리 미리 경험해보려고 하고 있다.
 
또한 주어진 업무 관련 외 업계 최신 동향을 살피기가 어려워 링크드인이나 Medium을 구독하면서 최대한 트렌드를 따라가려고 노력하고 있다.
 
업무 외적으로는 지금까지 미뤄왔던 운동을 올해 드디어 시작하였고, 재테크 공부와 독서 및 정신적 자산 만들기 프로젝트도 진행중이다.!
다음 6개월뒤, 1년차 딱지가 떼질때 쯤 운동,재테크,독서가 어느정도 이뤄졌을지 몹시 궁금한 와중이다.