GitHub
쿠브플로우 관련 코드 내용은 GitHub에서 관리하고 있습니다.
https://github.com/Seokii/Study-MLOps
1. 공부 목적
ML/DL을 공부하면서, 단순히 학습된 모델을 가져다가 사용해보고 결과를 확인하는 것은 누구나 조금만 공부한다면 쉽게 할 수 있는 일들이라는 생각이 들었습니다. (물론, 특정 문제가 주어졌을 때 어떤 모델을 어떻게 최적화하여 고성능을 달성할 수 있느냐 혹은 SOTA급의 모델 개발은 차원이 다른 이야기라고 생각합니다.)
몇몇의 프로젝트 진행과 데이콘 경진대회 참가 경험을 해보니, 저는 모델을 고도화 시키는 일보다는 ML 혹은 DL 모델을 실제 서비스화한다는 것이 매우 매력적이라는 생각이 들었고, 이를 공부해보고 싶었습니다.
실제로 기업에서 서비스를 위한 머신러닝 모델을 개발하고 제공하기까지에는 많은 어려움이 존재하고 그 과정들이 있을 텐데 이를 공부해서 머신러닝 엔지니어가 되고 싶다는 생각을 했습니다.
실제로 찾아보면 많은 기업에서 머신러닝 엔지니어에게 요구되는 사항은 다음과 같았습니다.
당근마켓의 머신러닝 엔지니어 직무의 채용 공고이고 예시로 가져왔습니다.
이처럼, "머신러닝을 통해 사용자 서비스에 실질적인 임팩트를 만들어 본 경험" 그리고 "BigQuery, Cloud Dataflow, Kubeflow, TFX, TF Serving의 경험"을 요구합니다.
다른 기업들을 찾아보면 데이터 엔지니어 관련으로 Spark, Hive, airflow 경험 또한 찾아볼 수 있었습니다.
물론 위의 당근마켓 공고는 경력직 공고이고 신입의 입장에서 다양한 모델 Serving 경험과 단순히 ML 알고리즘에서 더 나아가 Spark, Hive, airflow 등의 경험을 쌓는 것은 매우 어렵지 않나라는 생각이 듭니다..
하지만, 결국 실무에서 사용되는 일정 수준의 기술이 있을 테고 그것을 조금이라도 공부하고 경험한다면 성장에 매우 도움이 될 것이라는 생각을 했습니다. 아직 졸업을 막 앞두고 있고, 외부 프로그램 교육을 받고 있는 초짜이지만, 실무에 최대한 가까운 수준의 공부를 진행해야 한다고 생각하고 공부를 다짐하게 되었습니다.
2. 쿠버네티스(Kubernets)
도커(Docker)라는 컨테이너라는 개념이 등장하고 기존의 단점을 극복한 컨테이너 개발 시대가 도래하였고, 컨테이너를 효율적으로 관리할 수 있는 오케스트레이션 시스템의 발전이 이루어져 왔습니다.
쿠버네티스는 구글의 '보그'라는 시스템에 영향을 받은 컨테이너 오케스트레이션 시스템입니다.
쿠버네티스를 통해 다수의 컨테이너를 배포 및 운영할 수 있게 되었습니다. 또한, 쿠버네티스의 다양한 기능들을 활용해 더 좋은 운영 환경을 다룰 수 있게 되었습니다.
https://kubernetes.io/ko/docs/concepts/overview/
쿠버네티스의 documents를 통해 더 자세한 내용을 확인할 수 있습니다.
3. 쿠브플로우(Kubeflow)
그렇다면, 쿠브플로우는 무엇일까요?
쿠브플로우 공식 사이트에서는 위와 같이 쿠브플로우에 대해 설명합니다.
"쿠브플로우의 목표는 다른 서비스를 다시 만드는 것이 아니라 ML을 위한 최고의 오픈 소스 시스템을 다양한 인프라에 배포하는 간단한 방법을 제공하는 것"
한마디로 쿠브플로우는 쿠버네티스를 이용한 ML 툴킷이라고 정의할 수 있습니다.
쿠브플로우를 사용하면 쿠버네티스의 API의 사용을 익히는 것보다 모델 학습과 개발, 테스트, 배포 등에 집중할 수 있습니다. 쿠브플로우를 사용한다면 다음과 같은 여러 장점이 있습니다.
- 더 빠르고 일관적인 배포
- 안전한 보안을 위해 포트나 컴포넌트 접근에 대한 더 나은 통제
- 리소스 공급과잉에 대한 보호로 비용 절감
- 완성된 일이 할당 해지되는 것을 보호하여 비용 절감
- 워크플로 오케스트레이션 메타데이터 수집
- 중앙화된 모니터링과 로깅
- 모델을 안전하고 확장이 가능하도록 프로덕션으로 옮기는 인프라스트럭쳐
쿠브플로우는 데브옵스 엔지니어, 플랫폼 아키텍트, 데이터 과학자, 데이터 엔지니어 등 많은 인원들이 사용할 수 있습니다. 이들은 기업의 큰 데이터웨어하우스를 운영하기 위해 함께 일해야 하고, 쿠버네티스는 어떻게 이것을 실현할지에 대한 유연성을 제공하기 때문에 해당 직무에 종사하기 위해서는 배워나가야할 기술이라고 생각합니다.
'MLOps' 카테고리의 다른 글
[MLOps] 쿠브플로우 카티브(Katib) 개념 이해와 설치하기 (0) | 2023.01.08 |
---|---|
[MLOps] 쿠브플로우 페어링(Fairing) mnist 학습하기 (2) | 2023.01.07 |
[MLOps] 쿠브플로우 페어링(Fairing) 개념 이해와 설치하기 (1) | 2023.01.05 |
[MLOps] 쿠브플로우 주피터 노트북 서버 만들기 (0) | 2023.01.02 |
[MLOps] Ubuntu 20.04에서 docker 및 쿠버네티스와 kubeflow 설치하기 (0) | 2023.01.01 |
댓글