Machine Learning 시스템이란?
머신러닝이란 데이터로부터 복잡한 패턴을 학습하여 이를 기반으로 처음 보는 데이터에 대해서 예측하는 방법론이다.
패턴이 반복적이며, 잘못된 예측에 대한 비용이 적고, 대량의 예측을 해야하는 문제들에 적합하다.
연구 환경과 프로덕션 환경에서 어떻게 다른가?
연구 환경에서의 머신러닝/딥러닝 모델은 고정된 벤치마크 데이터셋에 대해서 State-of-art 성능을 도달하도록 모델을 훈련하는 것이 최종 목표다. 하지만 프로덕션 환경에서는 끊임없이 변하고 생겨나는 데이터들에 대해서 빠르게 예측하는 것에 더 초점을 둔다. 연구 환경에서는 모델이 아무리 복잡하더라도 정확도가 1프로 올라간다면 매우 큰 성과겠지만, 프로덕션 환경에서는 성능이 조금 부족하더라도 자원과 비용이 덜 들어가는, 빠른 예측을 하는 모델을 선택한다. 또한 프로덕션 환경에서는 모델의 예측 결과에 대해 설명이 가능해야 한다. 현재 연구와 프로덕션 환경의 ML 시스템의 gap을 극복하는 것에 초점을 두어 MLops 공부를 하고자 한다.
ML 시스템이 갖춰야할 조건
- ML 시스템은 어느 정도의 원하는 정확도에 도달해야 하며, 하드웨어나 소프트웨어의 한계가 있더라도 지속적으로 목표 수준을 달성해야한다. (신뢰성)
- ML 시스템을 운영하게 되면 데이터가 계속 늘어나게 될 텐데, 이에 따라 시스템이 확장 가능해야한다. (확장성)
- 작업을 구조적으로 정리해야하며, 코드 문서화는 필수적이다. (유지보수성)
- 빠르게 변화하는 데이터에 맞추어 서비스 간섭 없이 성능을 개선하고 업데이트를 하는 것이 편리해야한다. (적응성)
개발 과정
목표/성능 지표 설정 → 데이터 수집 및 정제 → 모델 개발 → 배포 → 모니터링 및 지속 학습 → 분석 (이 과정 반복)
※ Chip Huyen의 Designing Machine Learning Systems의 Chap 1,2를 참고하여 쓴 글입니다.
'Dev Notes > ML' 카테고리의 다른 글
[debug] tokenizer special token 추가 시 임베딩 사이즈 조절 하기 (0) | 2024.07.30 |
---|---|
Deepspeed 배치 사이즈 관련 파라미터 정리 (0) | 2023.08.20 |
머신러닝 프로덕션 코드를 구성하는 방법 (0) | 2023.06.25 |
C++에서 ONNX runtime 사용하기 (0) | 2023.06.11 |
Torchserve 사용 방법과 경로 설정 (0) | 2023.04.20 |