뜬금없이 회고하기

Michael Kim·2022년 5월 19일
0

0. Intro

Q1. 왜 회고글을 쓰게 되었는가

요새 지친다는 느낌을 많이 받는다. 생각이 많아지고, 자신감이 없어진다. 내가 가고 있는 길이 맞는 걸까? 회고 글을 쓰면서 생각을 정리하고 마음을 다시 잡아보자!

Q2. 왜 나는 지치고 생각이 많아지는 걸까?

지원하는 회사마다 떨어지면서 내가 가고 있는 방향이 잘못된 것 같다는 생각을 종종 한다. 그러면서 내가 공부하고 있는 것들과 내가 경험했던 것들이 쓸모 없어보인다.

덩달아 생활비가 점점 모자라게 되고, 급한 마음에 이것 저것 손대다가 이도 저도 아닌 게 되는 것 같다.

ML Engineer와 Data Engineer 둘 다 어려운 분야인데, 모두 다 잡겠다니, 가려는 길이 너무 허무맹랑하지 않은가?

아무래도 길을 다시 잡아야 할 것 같다.


1. AS-IS

Q1. 여태까지 난 무얼 하고 있던 걸까?

i. 학교 졸업 프로젝트(~2021.1) - 컴퓨터 비전에 관심을 갖게 된 계기

컴퓨터 비전과 머신 러닝 수업을 들으면서 머신 비전에 관심을 갖게 되었고, 의기양양하게 데이터 사이언티스트가 되고 싶어했다. 학부연구생을 하면서 비전 센서 관련 과제도 수행해보고, 졸업 작품으로 자율 주행 로봇도 만들었다.

도전적인 자세는 좋았지만, 기술에 집착하여 막무가내로 기능 개발을 해냈던 것 같다. 로봇 기능에 YOLO detection 모델이 아닌 classification 모델을 사용해도 됐었는데 말이다...

ii. 다양한 프로젝트(~2021.7) - ML 역량 강화 or '일단 좋아보이니까 다 해보자~'

반년 동안 진행했던 프로젝트는 다음과 같다.

  • 개인 프로젝트
    • Write Call: Tensorflow-lite를 이용하여 안드로이드 환경에서 CNN 분류 모델 구동시켜보기
    • 애완동물 진단챗봇: DialogFlow를 이용한 챗봇 개발
    • 틱톡 효과 따라하기: OpenCV를 이용해서 틱톡 효과를 흉내내었다
    • Image Feature Engineering: 기존 CNN 모델에 Classifier를 분리해내어 Feature 생성기를 만들어냈다. 만들어진 Feature로 군집 알고리즘을 사용하였을 때 어떤 결과가 나타나는지 관찰하였다
  • 인공지능 데브코스
    • GAN을 이용한 마스크 얼굴 이미지 생성
    • 이상형 추천 알고리즘: 사용자가 선택한 연예인 이미지를 통해, 이상형 얼굴 Feature를 얻어내고, 해당 Feature와 가까운 얼굴 이미지를 추천해주는 기능을 연구 및 개발해내었다
  • Clova AI Rush 2021
    • 계층형 이미지 분류 모델 개발
    • 17등 기록, 3등 차이로 2라운드 진출 실패

이 중에 내세울 수 있는 프로젝트는 3가지(Clova AI Rush, 이상형 추천 알고리즘 개발) 뿐이다. 프로젝트를 진행하면서 진심으로 재밋다고 느꼈으며, 며칠을 밤 샐 정도로 몰입해 있는 내 자신을 발견할 수 있었다.

반면에 나머지는 '뭐든 해보자~'라는 생각에 공장에서 찍어내듯이 진행했던 프로젝트다. 해당 프로젝트를 통해 얻을 수 있던 건 '해본 경험이 있다'라고만 말할 수 있게 됐다는 것뿐. 그닥 좋아보이는 경험은 아니다. 정말 '발만 담궜네~'라는 인상을 줄 수 있는 프로젝트라서 아무래도 기록을 지우는 게 좋을 것 같다...

iii. Nota 인턴(~2022.2) - 데이터 엔지니어 맛보기

2021년 8월부터 6개월동안 Nota ITS팀 인턴으로 근무하였다.

다음은 Nota에서 진행한 프로젝트들이다.

  • 데이터 선별 및 라벨링 데이터 검수
  • NVIDIA TAO 환경에서 Detection 모델 학습 및 ITS 데모 영상 제작
  • Superb AI-Suite의 Auto Labeling 기능을 이용한 라벨링 데이터 수집
  • 데이터 검색 및 집계를 위한 Elasticsearch & Kibana 도입 및 운영
  • ITS 라벨링 데이터 표준화 및 NAS 데이터 저장소 관리
  • CVAT를 이용한 Online 라벨링 프로세스 도입 및 데이터 파이프라인 개선
  • 데이터 및 모델 관리 프로세스 도입
  • 연구: JPEG 압축된 이미지 데이터가 딥러닝 모델에 주는 영향

정말 6개월 동안 쉬지 않고 몰입해 있었다. 내가 왜 이 일을 해야하는지 알고 있고, 열정 있는 동료들과 함께 일했기에 가능했던 것 같다.

ML Engineer 일이 아닌, Data Engineer 일을 하게 된 계기는 너무 간단하다. Endrew Ang의 Data Centric 강의를 듣고, 다량의 질좋은 데이터를 수집하는 게 정말 중요하다는 것을 느꼈다. 그 후, 좋은 데이터와 파이프라인에 대해 연구하고자 Data Engineer 일을 하게 된 것이다.

모델 성능 향상을 위해 사진의 날씨나 조명 meta 데이터를 수집하였다. 또한, 이미지 데이터 크기를 줄이기 위해 jpg 포맷을 사용하되, quality를 70%, subsampling은 False로 설정하여 모델에 줄 수 있는 악영향을 최소화하였다. 이를 통해 png 대비 이미지 크기를 1/4로 줄일 수 있었다. 데이터 파이프라인 자동화 및 개선하여, 필요 인력을 줄이고 실수로 인해 발생하는 데이터 손실을 최소화 시킬 수 있었다.

이렇게 인턴을 계기로 데이터 파이프라인에 관심을 갖게 되었다. 여기서 고민인 것은 내가 가려는 길은 Data Engineer가 맞을까 아니면 MLOps, ML Engineer가 맞을까... 애매한 위치에 서있는 것 같다.

  • Kibana Dashboard를 이용한 데이터 검색 및 집계

Q2. 지금의 난 어떠한가?

  • 내 상황은 어떠한가?

    • 별 다른 일을 하지 않고 프로젝트 및 취업 준비를 하고 있으며, 금전적인 여력이 부족하여 당장 직장을 구해야하는 상황이다.
    • 데이터 관련 일이라면 어떤 회사든 상관없이 공격적으로 지원하고 있다.
  • 어떤 것을 하고 있나?

    • 대부분 Data 직무의 우대사항인 Hadoop을 Udemy 강의를 통해 공부하고 있다. 그와 함께 Spark, HBase, Kafka에 대해서 공부하고 있다.
      • 해당 기술 사용 방법을 익히기 보다는 이 기술들이 어떤 역할을 하고, Data 분야에서 왜 유명한 지에 집중하면서 공부해볼 예정이다.
    • 이전에 개발한 이상형 추천 알고리즘을 실제 웹 서비스로 배포하는 프로젝트를 진행 중에 있다.
      • 현재 취업 준비에 급급하여 중단한 상태다...
  • 내 학습 방법은?

    1. 해당 기술에 대한 요약을 보면서 대표적인 기능이 어떤 것이 있는 지 파악한다
    2. 코드와 운영 동영상을 보면서 어떻게 생겼고, 어떻게 조작할 수 있는지 파악한다
    3. 구글링을 통해 작동 원리를 파악한다
    4. 가능하다면 공식 문서 튜토리얼을 통해 직접 운영해본다
  • 내 커리어를 어필하는 방법은?

    • 주로 개발 블로그에 글을 쓴다
    • 깃허브도 종종 관리해야할 것 같다
    • 링크드인도 관리해야할까...?

2. Goal(Direction)

  • 내가 좋아하는 일은?
    • 정말 단순하게도 S/W 기술적인 문제 해결을 좋아한다. AI Rush 해커톤에서 모델을 연구하면서, 예측 점수가 오를 때마다 희열을 느꼈다. Nota에서 데이터 파일 이름을 정규화 했을 때, 데이터 활용 및 탐색 효율이 증대되면서 다른 엔지니어 분들이 편하다고 하는 말이 너무 기분 좋게 들렸다.
    • 어려운 문제일수록 쾌감은 더해진다. 그 어려운 문제를 풀 수 있는 최신의 고도화된 기술을 탐내는 편이다. 그래도 조급해 하지 말고, 기본기 부터 꼼꼼하게 공부해 나갈 필요가 있겠다.
  • 어떤 생활을 하고싶은가?
    • 일과 개발을 즐기면서도 취미를 갖거나 가족들과 밤을 보낼 수 있는 삶을 원한다.
    • 필요한 경우엔 야근도 가능하지만, 주말 만큼은 지켜야하지 않을까?(물론, 아주 급한 경우엔 주말까지...)
  • 어떤 회사를 가고 싶은가?
    • 규모가 커서 할 수 있는 일의 범위가 자유로운 회사. 하고 싶은 실험이나 공부를 맘껏 할 수 있는 회사.
    • 서울, 경기도 내의 회사.
    • 데이터 팀이 존재하고, 이를 활용할 수 있는 AI 기술이 있는 회사.
    • 어떤 한 분야에 대해서 앞장 서고 있으며, 사회 또는 문화를 바꿀 수 있는 힘이 있는 회사. 또는 연봉이 작더라도, 관심있는 도메인의 서비스를 개발 및 운영 중인 회사.
    • 오랫동안 다니고 싶은 회사 - 성과가 인정되고 연봉 인상이 원활하게 이루어지는 회사
  • ML Engineer vs Data Engineer vs MLOps
    • 원하지 않더라도 사회의 요구를 맞출 필요가 있기 때문에 애매한 포지션에 있는 것 보다 세 개의 직무 중 하나는 골라 준비하는 게 더 취업이 유리해보인다.
    • 모두 해보고 싶은 욕심은 있지만, 하나 하나가 모두 깊은 지식을 요하기 때문에 모두 하는 건 매우 어려워 보인다.
    • MLOps는 ML 뿐만 아니라 Data Pipeline, DevOps 지식을 모두 알아야하기 때문에 제외하고, ML Engineer와 Data Engineer 중에 고르면 되겠다.
    • 딥러닝에 관심은 있지만, 논문을 보고 코드를 구현하는 것보다 문제 상황을 분석하고 새로운 기술을 도입하는 것에 더 자신이 있다.
    • 현재 내 적성으로는 Data Engineer을 준비하는 게 빠른 취업에 도움이 될 것 같다.
    • ML에도 관심이 있다는 것을 계속 표현하자.
  • 어떠한 개발자가 되고 싶은가?
    • 끈기를 갖고 좋아하는 것에 몰입할 수 있는 개발자
    • 자신만의 Speciality를 가지고 있는 개발자

3. TO-BE

  • 어떤 마음 가짐이 필요할까

    • 대부분의 채용 설명회에서 말하는 신입 개발자의 인재상은 다음과 같다.
      • 어렵다고 포기 하지 않는 끈기
      • 몰입할 수 있는 열정
      • 새로운 기술에 대한 호기심
      • 논리적 문제 분석 및 해결 능력
      • 긍정적인 태도
      • 실패를 두려워하지 않는 도전 정신
    • 모두 중요해 보이지만(특히 끈기), 나에게 가장 필요한 마음 가짐은 내가 가려는 길에 대한 확신이다. 하고 있는 일에 의심이 들면, 부정적이게 되고 흥미와 열정을 잃기 쉽다. 확신이 있다면, 얼마든지 노력을 통해 성장할 수 있을 것이라 생각한다. 본 회고 글을 쓰는 이유도 확신을 갖기 위해서다.
  • 어떤 것을 공부해야할까

    • 다음은 외부 사이트에서 가져온 DE Roadmap 일부다.
    • Fundamentals
      1. Network - TCP/IP 계층과 웹 접속, Protocols(HTTP, HTTPS, FTP, ...), VPN 개념에 대해 복습해보자
      2. Git - Github에 익숙해지자
      3. APIs, REST - 각 용어의 뜻을 알아보고 개념을 이해하자. Fast API를 통해 간단한 REST API를 만들어보자
      4. Linux - CLI 명령어를 정리하고 Cronjobs을 이용해 보자
      5. Python
        • Multi Processing과 GIL에 대해 꼬리물기로 공부해보자
        • 특수 메소드의 종류, 데코레이터
        • 이외로 파이썬 면접 질문 리스트 참고
      6. Testing - unit, integration, functional testing 용어에 대해 조사해보자
      7. DataBase Fundamentals
        • SQL
        • DB Normalization
        • ACID Transactions
        • CAP 이론
        • OLTP vs OLAP
        • 수평적 vs 수직적 확장
        • 다차원 모델링
    • Skill Set
      1. RDMBS - MySQL
      2. NoSQL - Elasticsearch, MongoDB
      3. 분산 저장 - HDFS
      4. 분산 처리 - Spark
    • (Machine Learning & Computer Vision)
  • 어떤 것을 준비해야할까

    • Github을 이용해서 프로젝트를 관리하자. SQL이나 Python 실험 코드를 Github에 올려두자.
    • velog
      • 이용해 끈기와 열정을 티내자.
      • 배운 것을 항상 기록하자. 힘들겠지만 익숙해지자.
      • github 블로그 사용하는 것도 고려해보자.
    • 코딩 테스트
      • 프로그래머스를 통해 하루 한 문제 풀이
      • 풀이를 다른 사람의 코드와 비교
    • 나에게 맞는 회사 탐색 -> 블로그 및 채용란을 통해 인재상 및 기술 스택 체크

4. Outro

  • 더 이상 의심하지 말고, 협상하지 말고, 가고자 하는 대로 쭉 밀고 나가자!
profile
정리하고 복습하고 일기도 쓰고

0개의 댓글