매직코드
article thumbnail

이번에 우아한형제들에서 테크세미나의 주제를 AI와 MLOps로 정했다.

내가 일하는 직무와 관련이 많아보여 온라인으로 열심히 들었고, 내용을 기억해보고자 정리해보고 나의 의견을 좀 넣어봤다...

 

아래 유튜브가 세미나 원본이고 이 세미나에 대한 테크블로그는 https://techblog.woowahan.com/11582/ 이 주소로 들어가면 된다.

 

https://www.youtube.com/watch?v=MA5A7Xqb-7U

 

우아한 형제들의 AI 서비스

1. 리뷰 이미지 검수: 해당 이미지가 올바른 이미지인지 검수

2. 배달 예상 시간 예측

>> 생각보다 AI가 많이 들어가지는 않았고 예상하고 있던 부분에서 AI가 사용되고 있었다. 라고 생각하자마자 다른 AI도 알려주심 ㅋㅋㅋ 

 

3. 추천알고리즘

4. 이상거래탐지, 서비스 이상탐지

5. 메뉴명 분류

6. 메뉴명 어뷰징

 

>> 상품거래에서 발생할 수 있는 대부분의 문제점에 AI를 활용하고 있었는데 배민에서 문제가 되는 부분 중 하나인 진상고객 해결을 위한 AI도입이 없었다는 점이 아쉬움. 사장님이 진상이라고 등록하지 않아도 진상리뷰를 감지하여 사장님들이 현재 주문 고객이 진상임을 알아볼 수 있게 하는 시스템이 생기면 좋을 것 같다.

 

AI 서비스를 적용할 때의 어려움

문제: 개발환경에서 운영환경으로 배포가 어려움: ML시스템의 복잡함과 다양한 개발 환경에서 각각 다른 방식으로 개발하기 때문

 

해결방법

1. MLOps를 도입하여 모델 개발, 서빙, 배포를 효율적으로 하게 함

2. 이를 위해 MLOps Cycle과 AI Studio를 만들었음

 

목표

1. 모델개발에서 운영배포까지 단계 줄이기

2. 새로운 기능과 서비스 개발 확장이 가능하게 하기

 

>> 이 부분은 AI를 서비스하는 회사는 누구나 겪는 어려움이고 필수적으로 생각하고 진행해야하는 목표라고 생각함. 배달의민족이라고 해서 특별히 더 어려운점이 있다기보다 서비스의 규모만 차이나는 듯 싶었다.

 

어려움을 해결하기 위한 MLOps 구축

ML Project, Pipeline Builder, ML SDK로 구성하여 MLOps를 구축

ML Projects

ML Projects에서 AI를 개발하고 개발한 소스코드들은 container 환경에서 실행.

ML Projects는 코드 저장소이고, 여러 프로젝트를 하나의 레파지토리에서 관리하는 Monorepo 형식으로 구축

 

AI플랫폼 - ML Projects

학습/서빙/데모 코드를 Monorepo로 관리하는 이유는? 코드를 재사용하기 위해서

>> 얼핏 보면 맞는 말인데 기존에 repo를 여러개로 분리하여 사용하던 사람들이라면 놓칠수도 있는 부분이라고 생각함.

 

현재 모든 코드들은 쿠버네티스를 통해 container에서 실행되고 있으며 개발에 사용했던 환경 그대로 운영에 배포할 수 있었고 작업 소요 시간을 단축함.

>> 어떤 사람이 학습환경도 클라우드 자원을 이용해서 하는지 on-premise 환경에서 하는지 질문했는데 기존에는 on-premise에서도 했는데 현재는 aws클라우드 자원을 사용하고 있고, 별도로 on-premise가 필요한 경우에는 데이터플랫폼팀에서 별도로 환경을 구성해줘서 거기서 진행한다는 답변을 해줬는데 팀별로 할 일이 잘 나눠져있고, 두가지 환경을 모두 사용해 볼 수 있다는 점에서 경험을 잘 쌓을 수 있는 회사라는 느낌이 들었음

 

Pipeline Builder

yaml파일로 정의를 하고 파이프라인 빌더를 통해서 airflow dag를 만드는 과정임

DagFactory Kustomize 기반으로 설계

공통이 되는 base.yaml을 작성하고 각 기능별로 yaml을 작성하여 연결하는 방법으로 사용하기 때문에 유연성과 확장성이 좋음

 

operator를 조정하여 cpu, gpu를 쉽게 바꿔가면서 사용할 수 있음

>> 여기부터는 엔지니어의 영역이라서 그런지 큰 흐름은 이해가 되는데 각 기법들이 어떤 역할을 하고 어떻게 동작하는지는 잘 모르겠음.. ML Projects + Pipeline Builder + ML SDK로 구성된 AI플랫폼을 만들어주면 나는 AI개발자로써 AI플랫폼만 잘 이용하면 된다는 생각과 그래도 세부 구조를 알면 좋을 것 같다는 생각이 공존함...

 

ML SDK

ai 서비스 개발을 위한 기능을 제공하는 파이썬 라이브러리

장점: ML pipeline을 구성하는 과정에서 모델생성을 제외한 데이터다운로드, 읽기, 실험결과 저장, 예측결과 내보내기 등을 제공하여 모델개발자는 모델 개발에만 신경쓸 수 있도록 함

 

MLOps Level

우아한형제들에서는 MLOps Level을 아래와 같이 정의했고, 본인들이 만들고 위에서 설명한 AI플랫폼은 현재 1.4~1.6레벨 사이에 있다고 함. 레벨2에 도달해 누구든지 AI서비스를 만들수 있는 플랫폼이 되도록 성장하는 중

 

 

앞으로 발전해야하는 부분과 AI플랫폼 적용 사례

앞으로는 LLMOps, Vector DB 등의 부분에서 발전을 이루어야함

 

사례: 알뜰배달 시간 예측 서비스

데이터: 요일, 시간, 날씨, 거리, 라이더 상태 등

모델: 딥러닝, 실시간&준실시간 서빙 등

 

1. ML Project에 전처리, 학습, 추론, 내보내기 등의 코드 개발

2. ML SDK의 kafks, redis 클라이언트로 실시간 피처 활용

3. 실험 설정 (mlflow 연동)

4. 테스트 (docker 기반, 운영환경과 동일하게 테스트)

5. Pipeline Builder를 이용한 파이프라인 개발 (Airflow DAG 개발)

    Spark To S3 --> Train --> UploadModel --> Inference

6. airflow 테스트 및 배포

7. 서빙 / 운영

8. 추론 결과 분석 & 피드백

profile

매직코드

@개발법사

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!