A A
패스트캠퍼스 환급챌린지: 10개 프로젝트로 한 번에 끝내는 MLOps 파이프라인 구현 초격차 패키지 Online 강의 중간 점검
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다. (https://fastcampus.info/4oKQD6b)

 

1. 지난 25일간 학습하면서 가장 기억에 남는 내용은 무엇이었나요?

가장 강력하게 기억이 나는건 일반적인 AI시스템에서 모델의 코드는 극히 일부인 내용을 인지한것과, 이를 기술적으로 뒷받침 하는 도커(컨테이너) 실습이였던것 같습니다. 과거에는 머신러닝이라고 하면 모델 아키텍처나 최신 알고리즘 같은것만 생각했습니다. 하지만 이번의 강의를 통해서 데이터 준비, 정체, 불균형 처리가 모델의 성능을 좌우하는 주요한 내용인 것을 깨달았습니다. 항공기 지연 예측 실습이나, HR관련 머신러닝 실습에서 SMOTEEN과 같은 리샘플링 기법을 사용해보면서, 소수 클래스를 살려내고, 카이제곱 검정으로 무의미한 변수를 과감히 버리는 과정은 제가 데이터를 바라보는 시간을 봐꿨다고 생각합니다. 그리고 인프라에 대해서 스터디한 내용이였습니다.직접 환경을 만들고 도커파일을 작성해서 여러 서버와 개발 환경을 만들고, 도커파일을 작성해 서버화 학습환경을 구축해면서 협업 시스템에서 발생하는 충돌 문제를 해결할 수 있는 방식이라고 배운 내용이 생각 났습니다.


2. 배운 내용을 일상/업무에 적용해본 경험이 있나요? 없다면 앞으로 적용해보고 싶은 부분은 무엇인가요?

과거에 담당했던 데이터 품질 담당 업무랑 어느정도 관련이 있다고 생각했습니다. 그리고 이걸 모델 학습에 악영향을 미치는 데이터의 노이즈를 제거하는 엔지니어링적 관점을 도입해 보고 싶습니다. 배웠던 ANOVA나 카이제곱 검정을 활용해 특정 카테고리와 속성간의 연관성을 주기적으로 분석하는 스크립트를 구축하여 만약 연관성이 깨지는 데이터가 존재하면, 이건 오류일 확률이 있으므로 다중 탐지하는 시스템을 구축해 보고 싶습니다. 또한 패션 데이터의 특징상 데이터가 부족한 경우도 많이 존재합니다. 이를 단순히 데이터가 적다. 라고 넘기는 것이 아니라, 여러 데이터 구축이나 증강 작업이 필요하다. 라고 구제적으로 해결책을 제시해 볼수도 있다는 부분이 생각났습니다. 아니면 데이터셋을 구축하는 작업에서 활용되는 도구의 환경을 통일시켜 주기 위해서 도커로 환경변수를 맞춰주어 작업을 할수도 있다라는 것도 생각이 났습니다.


3. 학습 중 어려웠던 순간과 이를 극복한 방법은 무엇이었나요?

공부하면서 가장 어려웟던 부분은 한번 환경설정을 하기 위해서 가상환경을 만드는 것이였다고 생각했습니다. 명령어가 먹히지도 않았고, 도커 인증 문제와 이미지 풀링 권한 문제로 인해 실습에 애를 먹기도 했습니다. 그래서 이 내용을 스터디를 해보거나, 로그를 보면서 분석해 보는것으로 극복해 보았습니다. 단순히 내가 에러 메시지를 복사해서 넣는것에 그치지 않고. 왜 안되는지를 많이 고민해 보았습니다. 이때, 콘다 환경설정때 파이썬 버전을 정확히 명시하지 않으면 안되는것을 깨달았고, 도커의 경우 로컬 데몬과 레지스트리간의 인증 구조를 이해하고 나어야 문제를 해결했고, 또한 vim editor 사용이 익숙하지 않아 도커파일을 수정하는데 애를 먹었지만, 반복적인 실습을 통해 리눅스 환경에 적응하려고 노력을 하였습니다. 이렇게 잘못 해서 에러가 나온것으로도 좋은 가이드, 방향이 된다고 생각하면서 기획자의 마인드, 관리자의 마인드와 엔지니어의 마인드를 동시에 가지게 된 것 같습니다.


4. 25일 동안 스스로 발견한 변화는 무엇인가요? (습관, 사고 방식, 태도 변화 등)

능동적으로 생각하고 설계할 수 있는 능력이 생긴 것 같습니다. 한번 어떻게 모델이 더 잘 학습할 수 있을까? 어떻게 데이터를 설계하고 구축해야할까? 를 혼자서 고민해 볼수 있는 능력을 키운것 같습니다. 기존의 데이터를 엑셀 시트의 텍스트로만 봤다면, 이제는 분포와 벡터로 데이터 구조를 보게 되었습니다. 이 데이터 분포가 테스트 데이터셋과 다른지, 이 변수가 진짜 유의미한 정보량을 가지는지 계속 생각을 해보게 되었습니다. 또한 이제 어떠한 개발이든 기록하고, 스크립트, 컨티에너화 하여 내가 실행한 환경이여도 다른 사람들에게도 똑같이 제공할수 있는 그런 재현성을 신경써보자. 라는 마인드가 생긴 것 같습니다. 또항 이제 직접적으로 터미널(CLI)환경을 많이 다뤄보면서 이쪽 환경도 다루고 개발을 할수 있는 능력이 생긴것 같습니다. 끈질지게 공부하고 스터디하여 혼자서도 아키텍처를 설계하고 구축하여 자동화까지 해내어 end-to-end 를 구축할수 있는 능력을 갖추기 위해서 꾸준히 노력하는 모습, 태도를 가지게 된것도 매우 크다고 생각합니다.


5. 남은 25일 동안의 목표와 실행 계획은 무엇인가요

꾸준한 학습을 진행하여 챌린지를 완수하고 싶습니다. 일단 먼저 자동 배포와 오케스트레이션에 대해서 공부하는 것이 먼저입니다. 도커 컨테이너를 하나 띄우는 것이 아닌, 수십개의 컨테이너를 관리하는 쿠버네티스라는 개념을 인지하고 학습하여 개념을 확실히 잡는것이 목표이고, github에 코드를 푸시하면 자동으로 테스트, 배포할수 있는 CI?CD 파이프라인을 구축해서 이제 혼자 능력으로 MLOps Level 1단계를 스스로 다뤄보고 만드는것이 목표입니다. 그 다음은 모델의 서빙과 모니터링 구축 작업 입니다. 학습한 모델을 실제 API 형태로 배포하고, 이 모델이 잘 동작하는지를 감시하는 모니터링 시스템에 대해서 공부하고, 어떻게 돌아가는지 직접 실습해보면서 개념을 확실히 잡는것이 목표입니다.이러한 스터디를 해보면서 단순히 도구를 잘 쓰는 사람만이 되고 싶지 않았습니다. 데이터의 본질을 익히면서 시스템을 견고하게 구축 할수 있는 엔지니어링 능력도 기르면서 ML과 클라우드를 둘다 잘하는 개발자가 되기 위해서 꾸준히 학습하고 공부하는 것이 목표입니다. 이렇게 절반정도 온 만큼 꾸준히 노력하고 복습하고 스터디 하여 남은 절반의 일자도 챌린지 성공을 위해 열심히 공부하고 노력할 것입니다. 꼭 MLOps 엔지니어의 길을 걷기 위해 노력하겠습니다.