재취업 후 2개월의 수습기간이 끝났습니다.
2개월 동안 2차례의 평가를 거쳤는데 성과가 부족하여 수습기간 종료 후 정직원 계약까지 이어지지는 못했습니다.
수습기간 중에 작성한 회고에서 언급했듯
누구나 자신의 허물을 마주하는 일은 부끄럽고 꽤 용기가 필요한 일이지요.
하지만 회고를 통해 발전해 왔던 지난 글또 8기 활동을 떠올리며
용기 혹은 객기를 부려 2개월 간의 짧은 수습기간을 회고합니다.
수습기간 중 데이터 엔지니어링과 MLOps 업무를 맡아 각각 평가를 받았습니다.
데이터 엔지니어링에 지금까지 파이썬 코드와 쉘 스크립트를 이용했지만
이번에는 Airflow 라는 데이터 수집 자동화 도구를 이용했고
MLOps 는 이번에 처음 하게 되어 TorchServe 와 Triton 의 맛을 아주 조금 보았습니다.
(이 때 얻은 지식은 '내출어' 시리즈로 정리했습니다.)
그동안 해본 적 없던 새로운 일을 할 수 있게 되어 시야가 넓어졌고
이 2가지를 효과적으로 운영(구동) 하기 위해 Docker 를 함께 이용했습니다.
Docker 는 항상 배워서 써보고 싶었는데 이번 기회에 드디어 써 보았네요.
그동안 저는 석사과정, 기계번역 스타트업을 거치며 리서쳐로서 일해 왔는데
이번 기회에 엔지니어로서도 한 뼘 더 성장할 수 있었습니다.
특히 사수님께서 파이썬 백엔드 개발자이신 덕분에 어깨 너머로 '파이썬을 잘 사용하는 법' 을 많이 엿볼 수 있었고
리서쳐 시절에는 몰랐던 파이썬의 참맛을 깨달았습니다.
비동기 처리, 모듈화, 가독성 개선(PEP8) 등등 '파이썬으로 개발을 잘 하는 방법' 에 눈을 뜬 것 같아요.
오랜만에 좋은 동료들과 함께 일하는 기쁨과 보람을 느꼈습니다.
사수와 팀장님은 바쁜 시간을 쪼개어 성심성의껏 신입사원인 저를 성장시키기 위해 최대한의 노력을 다하셨습니다.
사수님께서는 언제나 바쁘고 일이 많으신데도 제 질문은 항상 흔쾌히 받아 주셨고
그런 사수님 곁에서 저는 매일 초과근무 2시간을 찍을 만큼 일하고 공부하며 노력하는 모습으로 나름의 성의를 보였습니다.
팀장님께서는 지금의 내가 들어야 할 뼈아픈 조언과 개선을 위한 구체적인 조언을 아끼지 않으셨습니다.
특히 첫 MLOps 업무를 앞두고 갈피를 잡지 못하여 팀장님께 면담을 요청드렸는데
팀장님께서는 '못한다고 생각해서 안 하는 거고 못 하는 것' 이라며 저를 채찍질하셨고
이 말씀에 자극을 받아 처음 해 보는 MLOps 업무에 도전할 수 있는 용기를 얻었습니다.
데이터 엔지니어링의 경우 디테일이 부족했고 피드백 반영 또한 부족했습니다.
MLOps 의 경우 피드백을 받아들여 공식문서를 참고하고 기술적으로 한 단계 더 깊이 들어가는 노력을 보였으나
처음 해 보는 MLOps 라이브러리(프레임워크) 의 자료조사와 실험을 병행하느라 자료조사 완성도가 떨어졌습니다.
평가 기준은 오로지 자료조사였던 점을 고려하면 노력의 방향이 잘못되었던 셈입니다.
노력을 한 것은 좋았으나 노력의 방향이 명확해야 했고, 수시로 주어지는 피드백을 명확하게 반영해야 했습니다.
NLP를 시작한 목적이 기계번역이었기에 저의 모든 커리어는 기계번역에 대한 것뿐이었는데
다시 말해 기계번역만 했던 저로서는 새 도메인과 태스크에 대한 이해도가 제로베이스에 가까웠습니다.
예를 들어 번역은 문장 단위 모델입니다.
input : output 데이터가 모두 문장이지요.
입사한 회사의 주요 도메인은 번역이 아니었고, 데이터 또한 문장이 아니라 문서 단위였습니다.
게다가 기계번역(Transformer) 이외의 모델에 대한 지식은 거의 전무하여
현업에서 널리 쓰이는 RoBERTa 모델의 input/output 포맷조차 모를 정도였습니다.
백엔드 팀으로 입사했으나 정작 백엔드 개발은 거의 해 보지 못했습니다.
저는 백엔드를 배울 당시 Javascript 를 이용하여 개발했고,
이후 FastAPI 를 독학하여 짤막한 토이 프로젝트를 할 줄 아는 수준이었는데
입사 후에는 그 어떤 백엔드 개발 라인에도 참여할 기회가 없었습니다.
개인적으로 갈피를 잡지 못하는 점은, 여전히 저는 인간 그리고 인간의 언어가 좋다는 점입니다.
최근 NLP를 오랫동안 연구하신 지인을 만나 뵌 이후로 NLP 에 대한 그리움이 커졌는데요,
당장 다시 새 일자리를 구하기 위해서 이미 석사 졸업자들이 넘쳐나는 AI 업계로 뛰어들 것인지,
이제는 저의 새 무기가 된 백엔드 공부를 좀더 해서 AI 개발자로 약간 방향을 틀 것인지 고민입니다.
어느 쪽으로든 인간의 언어를 다루기보다는 개발 내지 엔지니어링에 치중하게 될 것 같은데
학계가 아니라 업계이므로 엔지니어링에 초점을 맞추는 것이 당연하겠지만...
아쉬운 마음은 어쩔 수 없네요.
조만간 기계번역 연구를 하시는 분을 소개받기로 했는데
빨리 만나보고 기계번역 연구부터 취업까지 많은 이야기를 나누고 싶습니다.
그러면 왠지 나아갈 길이 보일 것 같아서요.
파이썬을 잘 사용하기 위해 더욱 잘, 깊이 알아야 함을 깨달았습니다.
우선 사수님께서 추천해 주신 '고성능 파이썬' 책을 독학할 예정입니다.
앞서 언급했듯 저는 기계번역 이외의 NLP 도메인에 대한 지식이 전무합니다.
다시 NLP를 하기 위해서는 기계번역 이외의 모델을 다룰 줄 알아야 하므로 공부를 좀 해야겠어요.
좋은 책이나 공부 방법이 있다면 추천 부탁드립니다 ㅠㅠ
재취업을 위해 코딩테스트를 다시 준비해야겠어요.
일단 Dynamic Programming 까지는 무리 없이 풀도록 연습해야겠고...
2~3년 전과 달리 코딩테스트 수준이 너무 높아졌어요.
예전에는 NLP 코딩테스트에 2차원 배열은 잘 안 나왔는데 말이죠.... 😂
한국정보화사회진흥원에서 매년 여름마다 주관하는 4인 1팀 봉사활동인데요,
외국의 대학교 및 정부 기관을 대상으로 IT 교육을 합니다.
올해로 벌써 3년째네요.
올해 제 교육 주제는 '구글번역 클론코딩' 으로 잡았습니다.
구글번역과 마찬가지로 Query parameter 를 통해 번역 정보를 전달받아 번역을 수행하는 FastAPI 백엔드 코드를 짜고
작년에 이미 만들어 둔 한국어 -> 영어 번역 모델을 Ctranslate 를 이용해 가볍게 서빙했습니다.
개발 과정에서 중점을 둔 건 백엔드 특히 FastAPI 복습, 그리고 모델 서빙이었는데요,
FastAPI 튜토리얼을 기반으로 실무에 맞게 변형하여 적용하는 연습을 했고
당초 모델 서빙은 TorchServe 를 이용하려 하였으나
handler 를 만들기에는 시간의 제약이 있어 우선 Ctranslate 로 간단히 해결했습니다.
결과물은 보고 계신 제 기술 블로그에서 확인하실 수 있습니다.
velog 에 다음 문단을 적으니 글이 비공개로 등록되네요?
몇 번을 전체공개로 수정하여 등록해도 마찬가지입니다.
쓰려던 내용을 캡쳐로 대신합니다.
사랑하는 글또 8기 활동이 끝나 아쉬워하던 차에
저처럼 글또 활동을 지속하고 싶은 분들이 많아 모코숲이 만들어졌네요 🥰
다시 취업준비를 하는 동안 많은 의지와 도움이 될 것 같아서 신청했습니다!
저는 명확한 목표와 함께 협업을 즐기는 '비버' 입니다! 🦫
여름의 끝자락 그리고 가을의 시작까지 잘 부탁해요 모코숲 동물친구들! 🙌💕
좋은 글이네요. 공유해주셔서 감사합니다.