본문 바로가기

분류 전체보기23

[MLOps, Kubernetes] Kubernetes 워크로드 API 리소스 카테고리 란? 이번 포스팅에서는 Kubernetes 의 워크로드 API에 대해서 살펴보도록 할 생각 입니다. 이 부분을 정리하는 이유는 실제로 k8s의 리소스 카테고리 5가지 종류 중 컨테이너의 실행과 관련된 제일 중요한 부분이기 때문에 정리해 두고자 하는 이유입니다. 우선 k8s의 리소스 카테고리는 다음과 같이 5가지 입니다. 워크로드 API : 컨테이너 실행을 관리 서비스 API : 컨테이너의 외부로부터의 접속을 위한 엔드포인트 관리 컨피그 & 스토리지 API : PV, Secret, Config 등에 관련된 정보 관리 클러스터 API : 보안이너 쿼터 등에 관한 정보 관리 메타데이터 API : 클러스터 내부의 다른 리소스를 관리 오늘 다루고자 하는 리소스는 클러스터에 컨테이너를 가동시키기 위해서 사용되는 워크로드.. 2021. 12. 16.
[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.
[GluonCV, OpenSource 분석하기] GluonCV의 multiprocessing 이해하기 [2] Introduction 지난 포스팅에 이어서 GluonCV의 DDP 활용법에 대해서 살펴보도록 하겠습니다. Train train_ddp_pytorch.py 스크립트에서 모델을 생성하고 데이터셋을 로드하는 부분까지는 지난 포스팅에서 살펴보았습니다. 이제 train 하는 과정에서의 DDP로 인한 변화된 부분을 살펴볼 차례입니다. 우선, optimizer를 선언하는 것에 있어서는 기존에 익숙한 방식대로 똑같이 선언해주면 됩니다. 하지만 차이점은 criterion을 설정할 때는 .cuda() 함수를 통해서 GPU에 올려주는 것이 필요합니다. 실제로 차이가 나는 부분은 train_sampler.set_epoch() 함수가 처음 등장하게 됩니다. # create dataset and dataloader train_.. 2021. 10. 27.
[GluonCV, OpenSource 분석하기] GluonCV의 multiprocessing 이해하기 [1] Introduciton 이번 포스팅에서는 Mxnet과 PytorchTS등 다양한 ML OpenSource 의 기반이 되고 있는 GluonCV의 multiprocessing 이 어떻게 동작하는지에 대해서 한번 살펴보려고 합니다. pytorch에서는 data parallel의 기법으로 nn.DataParallel을 지원하고 있지만 이 함수를 통한 데이터 병렬화 기법은 비효율적인 측면이 많이 있습니다. 대표적으로 GPU의 불균형적인 사용과 multi-thread 기반의 동작으로 python의 GIL (Global Interpreter Lock) 등의 문제가 존재하며, multiple nodes의 multi-gpu에서는 사용이 불가능한 형태입니다. pytorch는 multiple nodes 에서 multi-gp.. 2021. 10. 27.