본문 바로가기

MLOps10

[MLOps, Acceleration, Jax] Google Jax 와 Flax Library 이번 포스팅 부터는 실제로 JAX를 사용한 ML 모델 구현 코드를 보면서 공부를 하고 이해하는 포스팅이 될 것 같습니다. JAX만을 가지고도 모델을 구성할 수 있지만 실제로 많은 라이브러리들이 존재하고 대표적으로 Haiku와 Flax 두 가지가 ML library로써 모델을 구축하고 학습하는 것에 큰 편리성을 제공해주는 라이브러리입니다. 두 라이브러리의 차이가 약간 존재합니다. Flax는 optimizer와 mixed precision, training loop에 관한 함수들을 자체적으로 가지고 있어서 원하는 것을 가져다가 사용할 수 있습니다. 하지만 Haiku는 조금 더 모델 구성 자체에 대한 함수에 집중하여 optimizer 와 training loop 와 관련된 모델 외적인 부분들은 다른 라이브러리.. 2021. 12. 15.
[MLOps, Acceleration, Jax] Google Jax 란? 당분간은 Google JAX에 대해서 소개하고 이에 대해 활용하는 것과 관련된 간단한 포스팅을 진행하려고 합니다. 최근 공부해서 회사의 ML 엔진에 적용할 기회가 생겨서 작업을 하고 있었는데, 역시 익숙하지 않은 상태로 적용하고 하다보니 스스로 다시 정리할 기회도 만들고 혹시나 저처럼 처음 보시는 분들에게도 도움이 되길 바라며 포스팅을 하려고 합니다. 아마 JAX에 관한 포스팅은 소개부터 시작해서 Google DeepMind의 코드를 리뷰해보는 것들까지 진행하면서 여러개의 포스팅이 될 것 같습니다. 관심있으신 분은 계속 살펴봐주세요 ㅎㅎ Google JAX JAX는 machine learning research를 돕기위해서 개발된 Pytorch와 TensorFlow처럼 automatic different.. 2021. 12. 13.
[MLOps, Git-Action, GPU] MLOps를 위한 GIt-Action with GPU MLOps 에서 중요한 요소 중 하나는 CI/CD 입니다. 지속적으로 모델이 개발되고 이 모델들이 모여 있는 AI Engine 을 운영하는 ML as a Service 의 회사들에게 코드의 변경 사항이 기존에 인지하고 있던 모델의 성능에 나쁜 영향을 주지 않았다는 것을 확인하는 것이 필요합니다. 이러한 방법을 위해서 제가 이전 포스팅에서 Jenkins를 사용하는 기초적인 방법에 대해서 포스팅을 한 적이 있습니다. 제가 Jenkins에 익숙하지 않아서겠지만, 생각보다 사용하는데 있어서 불편함이 많았고 Github에서 이쁘게 결과가 출력되지 않아서 불만족 스러운 부분들이 많았습니다. 그래서 최근에 회사의 CI/CD 시스템에서 GIthub Action을 도입하였고, 이 과정에서 기초적인 개념과 사용법을 공부했.. 2021. 12. 13.
[MLOps] Kubernetes (k8s) Persistent Volume Share w/ nfs 틈틈히 k8s 와 관련된 기본적인 내용들에 대해서도 정리해두고자 합니다. 정리를 안해두면 잊어버리는 것도 있고, 정리하면서 다시 개념을 공부하게 되는 것도 있는 것 같습니다. 이 포스팅은 대부분 References 에 있는 블로그들의 내용을 다시 정리한 포스팅입니다. 최근 ML 관련 기업들에서 Kubernetes 는 가장 필수 요소가 되고 있습니다. multi gpu 서버들을 여러대 두는 것은 당연히 기본이지만 kuberentes 를 활용해서 물리적으로 분리된 multi gpu 서버를 마치 하나의 server처럼 인식해서 남는 리로스 (gpu, cpu ..... ) 가 없이 ML 모델을 학습할 수 있도록 인프라를 구축하는 것이 대세가 되었습니다. 이때, 저희 회사의 경우는 ML 모델을 학습하는 serve.. 2021. 11. 23.
[Tensorboard] Multi Process 에서 하나의 Tensorboard 에 접근할 때 문제점 프로젝트 도중 pytorch의 nn.DataParallel이 아닌 nn.DistributedDataParallel을 사용하도록 AI Engine의 구조를 변경해야 할 일이 있었습니다. 기존에는 Tensorboard에 1개의 프로세스가 혼자 접근을 해서 log data인 events.out.tfevents. 파일이 1개만 생성이 되었기 때문에 텐서보드에서 출력을 하는데 문제가 없었습니다.. 그런나, 프로젝트 기반이 되는 엔진의 구조상 Tensorboard의 SummaryWriter를 각각의 프로젝트마다 호출해야 하는 형태가 되는 경우에 텐서보드 웹대쉬에서 업데이트가 제대로 되지 않는 경우가 있습니다. 오류 메시지는 다음과 같습니다. "File 가 있지만 를 업데이트 합니다" 라는 메시지가 ㅂ ㅏㄹ생합니다... 2021. 10. 29.
[유용한 블로그 포스팅 모음] 제가 자주 찾아보고 정보를 얻은 블로그들에 대해서 정리하는 포스트 입니다. ML [1] https://zzsza.github.io/category/mlops/ MLOps ML + DevOps = MLOps zzsza.github.io Argo [1] https://mesh.dev/20210208-dev-notes-002-ci-cd/#cicd-pipeline%EC%9D%84-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%9E%90%EB%8F%99%ED%99%94-%EA%B3%BC%EC%A0%95 CI/CD 도구 및 방법론 도입기 :: MESH KOREA | VROONG 테크 블로그 안녕하세요😃 메쉬코리아 플랫폼실 최제필입니다 :) 이번 글에서는 .. 2021. 10. 29.
[Kubernetes, Container] MLOps를 위한 기본 - Container란? [1] Introduction MLOps를 하기 위해서는 DevOps의 필수품이었던 Docker와 Kuberentes, Prometheus, Grafana 등이 거의 기본 소양이 되어가는 것 같습니다. 저는 아직은 AI 모델러의 역할에 익숙해서 하나하나 기초적인 책을 보면서 배워가고 있지만 이전에 포스팅 했던 Jenkins 를 통한 CI/CD 자동화도 하나씩 해보면서 배워가니 MLOps 쪽이 훨씬 더 재미있네요 ㅎㅎ 앞으로 Jenkins, Argo를 통한 CI/CD와 Docker의 기초부터 시작해서 Kubernetes 그리고 MLOps (MLflow, AWS model serving ..) 까지 쭉 공부했던 내용과 지속적으로 몰랐던 것들을 채우면서 공부하는 지식들을 정리를 해보려고 합니다. 1일 ~ 2일에 한번.. 2021. 10. 23.
[Github, MLOps] ML 모델 CI/CD 를 위한 Jenkins 테스트 자동화 [3] 이번 포스팅에서는 앞서 다뤘던 Jenkins 의 Unit Test 방법을 Blue Ocean이라는 plug in을 사용해서 Pipeline을 구축하는 방법에 대해서 설명해보려고 합니다. 사실 앞에 있던 포스팅들은 Jenkins의 기본을 이해하는데 중점적으로 생각하시면 좋을 것 같습니다. BlueOcean이라는 Plug-in이 훨씬 효율적으로 좋은 Unit Test를 만들 수 있어서 사용해보시면 좋을 것 같아서 포스팅을 쓰게 되었습니다. Blue Ocean 먼저 Blue Ocean에 대해서 간단히 알아보겠습니다. Jenkins의 파이프라인을 구성하는 방법은 다양하게 존재합니다. 그 중 가장 흔하게 사용되는 방법은 groovy언어를 통해 Jenkinsfile 구성하는 방법과 Snippet Generator .. 2021. 10. 22.
[Github, MLOps] ML 모델 CI/CD 를 위한 Jenkins 테스트 자동화 [2] Introduction 지난 포스팅에서는 Jenkins와 Github을 연동하고 Create Job까지 해보는 기본적인 내용을 다루었습니다. 하지만, 해당 내용대로만 하고나서 ML 모델을 학습하고 실험결과까지 테스트를 해보는 python 프로그램은 작동을 시킬 수 없다는 것을 따라해보신 분들은 확인하셨을 것 같습니다. 특히나 docker pull로 다운받은 Jenkins의 이미지에는 python 도 설치되어 있지 않고 이것 저것 설정이 안되어 있기 때문에 회사에서 사용하는 AI 시스템들에서 요구하는 CUDA, Pytorch, Tensorflow 등을 실행할 수 있는 환경이 구성되어 있지 않습니다. 다시말해 ML 을 학습하고 추론하게 하는 dependency가 갖추어져 있지 않습니다. 그래서, 저희에게 필.. 2021. 10. 15.