MLOps 오픈소스

MLOps를 체계적으로 적용하기에 앞서 MLOps 도구를 도입할 필요가 있습니다. ML Ops의 도구 중 오픈소스는 기업이 도입하기에 유리한 방식입니다. 오픈소스 도입 전에 한가지 생각해 볼 점이 있습니다.

오픈소스 선택

MLOps에서 오픈소스를 사용하는 것은 매우 일반적인 방법입니다. 오픈소스는 머신 러닝 개발자들에게 매우 유용한 도구입니다. 다양한 머신 러닝 라이브러리와 프레임워크를 제공하며, 이를 사용하여 머신 러닝 모델을 쉽게 개발할 수 있습니다. 특히, 오픈소스를 사용하면 머신 러닝 모델의 개발 속도를 높일 수 있습니다. 또한, 오픈소스 커뮤니티에서는 다양한 문제들에 대한 해결책을 제공하며, 이를 활용하여 머신 러닝 모델을 개발할 수 있습니다. 그리고, 오픈소스를 사용하는 것은 비용 측면에서도 매우 이점이 있습니다. 상용 라이브러리와 프레임워크를 사용하는 경우 비용이 많이 들어갈 수 있지만, 오픈소스는 무료로 사용할 수 있으며, 필요한 경우 소스 코드를 수정하여 사용할 수도 있습니다.

오픈소스 사용시 주의사항

.오픈소스를 사용할 때에는 몇 가지 주의사항이 있습니다. 첫째, 오픈소스는 개발자들이 만든 것이므로, 언제든지 변경될 수 있습니다. 오픈소스 사용 중 발생하는 문제에 대해서는 오픈소스 제공자가 기술 지원을 책임지지 않을 수 있다는 점도 고려할 필요가 있습니다. 오픈소스는 무료이지만 오픈된 범위내에서 기능을 무료로 사용할 수 있고, 오픈되지 않는 기능에 대한 일부 기능은 제한될 수 있습니다.

둘째, 오픈소스 라이브러리와 프레임워크의 호환성에 주의해야 합니다. MLOps에서는 머신러닝 모델을 구축하고 운영하는 과정에서 다양한 오픈소스 라이브러리와 프레임워크를 사용합니다. 이러한 라이브러리와 프레임워크는 각각의 특성을 가지고 있으며, 서로 호환성이 있어야 전체 MLOps 시스템이 안정적으로 동작할 수 있습니다. 머신러닝 모델의 학습 및 배포 과정에서 여러 라이브러리와 프레임워크가 사용됩니다. 예를 들어, 학습을 위해 TensorFlow, PyTorch와 같은 프레임워크를 사용하고, 데이터 전처리를 위해 Pandas, NumPy와 같은 라이브러리를 사용할 수 있습니다. 이러한 라이브러리와 프레임워크는 각각의 버전이 존재하며, 호환성 문제가 발생할 수 있습니다. 따라서 MLOps에서는 오픈소스 라이브러리와 프레임워크의 호환성을 유지하기 위한 방법을 고민해야 합니다. 예를 들어, 모든 라이브러리와 프레임워크를 최신 버전으로 업그레이드하기 전에는 호환성 테스트를 수행하여 문제가 발생하지 않도록 해야 합니다. 또한, MLOps 시스템에서는 여러 개발자가 동시에 작업하기 때문에, 각자가 사용하는 라이브러리와 프레임워크가 서로 호환되지 않을 가능성이 있습니다. 이를 방지하기 위해 MLOps에서는 일관된 개발 환경을 제공하고, 팀 내에서 사용하는 라이브러리와 프레임워크의 버전을 통일하는 등의 방법을 활용합니다.

셋째, 보안에 대한 이슈가 발생할 수 있으므로, 주의해야 합니다. MLOps 오픈소스를 사용할 때 보안 이슈에 대한 몇 가지 고려 사항은 다음과 같습니다.

  1. 소스 코드 검토: 오픈소스 소프트웨어를 사용하면 소스 코드에 대한 접근 권한이 있습니다. 따라서, 코드를 검토하여 보안 문제가 없는지 확인하는 것이 좋습니다.
  2. 취약점 패치: 사용하는 오픈소스 라이브러리나 프레임워크에 보안 취약점이 발견되면, 해당 취약점이 패치되었는지 확인하고 최신 버전으로 업데이트하는 것이 중요합니다.
  3. 의존성 관리: MLOps 프로젝트에서 사용되는 라이브러리와 패키지의 의존성을 관리해야 합니다. 필요한 라이브러리를 설치하기 위해 관련 의존성 패키지를 다운로드하는 경우, 이 패키지들이 보안 문제를 가질 수 있으므로 주의해야 합니다.
  4. 데이터 보안: MLOps에서는 대부분의 경우 민감한 데이터를 다루기 때문에, 데이터 보안도 중요한 문제입니다.

MLOps에서 오픈소스를 사용하는 것은 매우 유용한 방법입니다. 하지만, 오픈소스를 사용할 때에는 위의 주의사항을 항상 염두에 두어야 합니다. 또한, 오픈소스를 사용하는 경우 커뮤니티와 협업하여 문제를 해결하는 것이 중요합니다.

큐브플로우

먼저 소개할 오픈소스는 큐브플로우(kubeflow)입니다. 큐브플로우는 머신 러닝 워크플로우를 관리하고 배포하기 위한 오픈소스 플랫폼입니다. 이를 사용해야 하는 이유는 다음과 같습니다.

  1. 간편한 워크플로우 관리 큐브플로우를 사용하면 머신 러닝 워크플로우를 쉽게 관리할 수 있습니다. 워크플로우의 데이터 수집, 전처리, 모델 학습, 배포 등을 한 곳에서 관리할 수 있어 작업의 효율성과 일관성이 높아집니다.
  2. 유연한 모델 배포 큐브플로우는 모델 배포를 위한 여러 가지 방법을 제공합니다. 쿠버네티스를 이용한 배포, 서버리스 함수를 이용한 배포 등 다양한 방식을 선택할 수 있어 프로젝트의 요구사항에 따라 유연하게 대응할 수 있습니다.
  3. 확장성 큐브플로우는 오픈소스 프로젝트이므로, 커뮤니티에서 제공하는 다양한 플러그인을 사용할 수 있습니다. 이를 통해 더욱 많은 기능과 서비스를 확장할 수 있어, 머신 러닝 프로젝트의 규모가 크고 복잡할수록 유리합니다.
  4. 개발 생산성 향상 큐브플로우는 Jupyter 노트북과 같은 환경에서 코드를 작성하고 실행할 수 있습니다. 이를 통해 머신 러닝 개발 생산성을 높일 수 있습니다.

따라서, 큐브플로우를 사용하면 머신 러닝 워크플로우를 더욱 효율적으로 관리하고 배포할 수 있으며, 개발 생산성과 확장성도 높일 수 있습니다. 큐브 플로우는 ML 작업을 간소화하기 위한 다음과 같은 컴포넌트로 구성되어있습니다.

출처 : kubeflow.org

딥러닝 학습을 위한 Pytorch/Tensorflow/sckit-learn과 같은 학습 프레임워크를 포함합니다. 이외에도 다음과 같은 컴포넌트를 포함합니다.

  • Jupiter : 주피터는 노트북을 생성하고 사용자를 지정하고 나면, 코드의 실행과 분석 결과를 제공
  • Experiments(AutoML) : 반복 실험을 자동화하는 도구이며, AutoML은 카티브(Katib)를 사용해 AutoML 기능을 제공
  • KServe : 기계학습 모델을 배포하고 추론 기능을 제공
  • KFP(Kubeflow PIpelines) : 모델 생명 주기(데이터 변환/하이퍼파라미터 튜닝/모델 학습/배포)의 워크 플로 지원
  • Central Dashboard : 브라우저를 통해 노트북, AutoML, KFP 등의 컴포넌트를 이용할 수 있다.

ML 플로우

ML Flow는 머싱러닝 엔지니어가 모델과 관련한 학습, 배포, 테스트를 통해 머신러닝 모델의 생명 주기를 관리할 수 있는 오픈소스 플랫폼입니다. 모델 성능을 모니터링하고, 주기를 관리하려는 경우 유용할 수 있습니다. ML 플로우는 다음과 같은 형태의 대시 보드를 제공할 수 있습니다.

출처 : databricks

위의 대시 보드와 유사한 기능을 수행하는 프레임워크로 TensorBoard(무료)와 Neptrune(개인에게만 무료)이 있습니다.