본문 바로가기

MLOps21

MLOps - 21. Further (앞으로 더 공부하면 좋을 내용) 출처 : 변성윤님 블로그. 출처 : 부스트캠프 AI Tech. 1. 앞으로 더 공부하면 좋을 내용 1.1 개발 AI Engineer, ML Engineer는 결국 “엔지니어” 코드 레벨에서 깊은 이해, 고민이 필요함 Data Engineer도 데이터를 처리하기 위한 개발 학습이 필요 데이터 분석가에 가깝다고 하면 데이터 분석 역량에 집중해야 하지만, 코드 역량이 뛰어날수록 퍼포먼스가 높아짐 Python 우리는 Python을 잘 알고 있는가? 엄청 Low Level까진 필요하지 않을 수 있지만, 기본적으로 학습한 내용보단 한단계 더 학습하는 습관 가지기 Generator, Decorator, GIL 등 멀티프로세싱은 어떻게 동작하는가 메모리 영역에서 어떤 일이 발생하는가 Linux 서버에서 사용하는 Lin.. 2022. 6. 5.
MLOps - 20. 머신러닝 디자인 패턴 출처 : 변성윤님 블로그. 출처 : 부스트캠프 AI Tech. 1. 디자인 패턴 1.1 디자인 패턴이란? 디자인 패턴 문제를 해결하는 방법을 패턴화해서 표현 반복적으로 발생하는 문제를 어떻게 해결할지에 대한 솔루션 추상화된 패턴 개발할 때 구조화된 패턴을 설명하는 용어 안티 패턴 : 좋지 않은 패턴 처음 개발할 때는 main.py, inference.py, predict.py, utils.py 등 간단하게 시작 점점 규모가 커지면, 하나의 시스템에 여러 역할이 필요한 경우가 존재 복잡한 비즈니스 로직을 해결하기 위해 코드 아키텍처도 잘 설계하는 것이 필요 1.2 머신러닝 디자인 패턴 일반적인 개발 디자인 패턴에도 포함할 수 있지만, 머신러닝의 특수성으로 별도의 디자인 패턴이 생김 머신러닝 개발의 특수성 .. 2022. 6. 4.
MLOps - 19. Airflow 출처 : 변성윤님 블로그. 출처 : 부스트캠프 AI Tech. 1. Apache Airflow 소개 1.1 Batch Process란? 예약된 시간에 실행되는 프로세스 일회성(1회)도 가능하고, 주기적인 실행도 가능 ex. 이번 주 일요일 07:00에 1번 실행되는 프로세스 ex. 매주 일요일 07:00에 실행되는 프로세스 Batch Process를 AI 엔지니어가 알아야 하는 이유 모델을 주기적으로 학습시키는 경우 사용(Continuous Training) 주기적인 Batch Serving을 하는 경우 사용 그 외 개발에서 필요한 배치성 작업 1.2 Batch Process - Airflow 등장 전 대표적인 Batch Process 구축 방법 : Linux Crontab (서버에서) crontab -.. 2022. 6. 3.
MLOps - 18. BentoML 출처 : 변성윤님 블로그. 출처 : 부스트캠프 AI Tech. 1. BentoML 1.1 Introduction FastAPI로 직접 머신러닝 서버 개발 1~2개의 모델을 만들 때는 시도하면서 직접 개발 가능 만약 30개~50개의 모델을 만들어야 한다면? 많은 모델을 만들다보니 반복되는 작업이 존재(Config, FastAPI 설정 등) 여전히 Serving은 어렵다 이 조차도 더 빠르게 간단하게 하고 싶다. 더 쉽게 만들고 싶다. 추상화 불가능할까? 더 쉬운 개발을 위해 본질적인 “Serving”에 특화된 라이브러리를 원하게 됨 이런 목적의 라이브러리들이 점점 등장하기 시작 모든 라이브러리는 해결하려고 하는 핵심 문제가 존재 어떻게 문제를 해결했는지가 다른 라이브러리 1.2 BentoML이 해결하는 문.. 2022. 6. 2.
MLOps - 17. MLFlow 출처 : 변성윤님 블로그. 출처 : 부스트캠프 AI Tech. 1. MLflow 개념 잡기 MLflow가 없던 시절 사람들이 각자 자신의 코드를 Jupyter Notebook에서 작성 머신러닝 모델 학습시 사용한 Parameter, Metric을 따로 기록 개인 컴퓨터, 연구실 서버를 사용하다가 메모리 초과로 Memory Exceed 오류 발생 -> 중간에 끊긴 기록 학습하며 생긴 Weight File을 저장해 다른 동료들에게 공유 Weight File 이름으로 Model Versioning을 하거나 아예 Versioning을 하지 않음 1) 실험을 추적하기 어렵다 2) 코드를 재현하기 어렵다 3) 모델을 패키징하고 배포하는 방법이 어렵다 4) 모델을 관리하기 위한 중앙 저장소가 없다 1.1 MLflow.. 2022. 6. 1.
MLOps - 16.Logging 출처 : 변성윤님 블로그. 출처 : 부스트캠프 AI Tech. 1. Logging Basics 1.1 로그란? 로그의 어원 통나무 과거 선박의 속도를 측정하기 위해 칩 로그라는 것을 사용 배의 앞에서 통나무를 띄워서 배의 선미까지 도달하는 시간을 재는 방식에 로그를 사용 요즘엔 컴퓨터에 접속한 기록, 특정 행동을 한 경우 남는 것을 로그라고 부름 데이터는 이제 우리의 삶 어디에서나 존재 앱을 사용할 때마다 우리가 어떤 행동을 하는지 데이터가 남음 이런 데이터를 사용자 로그 데이터, 이벤트 로그 데이터 등으로 부름 위처럼 머신러닝 인퍼런스 요청 로그, 인퍼런스 결과를 저장해야 함 1.2 데이터의 종류 데이터베이스 데이터(서비스 로그, Database에 저장) 서비스가 운영되기 위해 필요한 데이터 예) 고객.. 2022. 5. 31.
MLOps - 15. Docker 출처 : 변성윤님 블로그. 출처 : 부스트캠프 AI Tech. 1. Docker 소개 1.1 가상화란? 도커에 대해 알기 전에 먼저 “가상화” 라는 개념을 잘 알아야 수월함 가상화란 무엇이고, 왜 알아야 하는걸까요? 개발할 때, 서비스 운영에 사용하는 서버에 직접 들어가서 개발하지 않음 Local 환경에서 개발하고, 완료되면 Staging 서버, Production 서버에 배포 개발을 진행한 Local 환경과 Production 서버 환경이 다른 경우 예) Local 환경은 윈도우 - 서버 환경은 Linux OS가 다르기 때문에 라이브러리, 파이썬 등 설치할 때 다르게 진행해야 함 Local 환경과 서버가 같은 OS를 사용해도, 서버에서 올바르게 작동하지 않을 수 있음 예) Local의 환경 변수 Pro.. 2022. 5. 30.
MLOps - 14. FastAPI 출처 : 변성윤님 블로그. 출처 : 부스트캠프 AI Tech. 1. FastAPI 익숙해지기 1.1 Event Handler 이벤트가 발생했을 때, 그 처리를 담당하는 함수 FastAPI에선 Application이 실행할 때, 종료될 때 특정 함수를 실행할 수 있음 @app.on_event(“startup”) @app.on_event(“shutdown”) 예시 startup 할 때 머신러닝 모델 Load shutdown 할 때 로그 저장 @app.on_event(“startup”) @app.on_event(“shutdown”) 1.2 API Router API Router는 더 큰 애플리케이션들에서 많이 사용되는 기능 API Endpoint를 정의 Python Subpackage APIRouter는 Mi.. 2022. 5. 29.
MLOps - 13. FastAPI 출처 : 변성윤님 블로그. 출처 : 부스트캠프 AI Tech. 1. FastAPI 기본 지식 1.1 Path Parameter, Query Parameter 웹에서 GET Method를 사용해 데이터를 전송할 수 있음 ID가 402인 사용자 정보를 가져오고 싶은 경우 방식 Path Parameter 방식 /users/402 서버에 402라는 값을 전달하고 변수로 사용 Query Parameter 방식 (Query String) /users?id=402 API 뒤에 입력 데이터를 함께 제공하는 방식으로 사용 Query String은 Key, Value의 쌍으로 이루어지며 &로 연결해 여러 데이터를 넘길 수 있음 네이버에서 검색할 경우 https://search.naver.com/search.naver?wh.. 2022. 5. 28.