전체 글 99

[MLOps] Kubeflow pipeline handling (2) : SDK를 이용한 pipeline 접속 방법

Kubeflow SDK를 이용한 파이프라인 업로드 및 빌드 kubeflow SDK를 이용해 pipeline에 접속하는 방법은 크게 envoy filter 활용과 poddefault를 이용하는 방법 2가지가 있다. 1. Envoy filter를 통한 인증 우회 kubeflow namespace ML pipeline 서비스에 대한 요청이 default editor에 존재하는 지 확인하도록 authorization policy를 적용한다. 또한 kubeflow user example.com namespace에서 ml pipeline 서비스로의 요청에 대해서는 envoy filter를 이용해 kubeflow user ID에 대한 header를 추가하여 인증을 우회함 header에 추가하는 내용은 default ..

IT_Study/Ops 2023.11.13

[MLOps] Kubeflow pipeline 오류 - kf-resource-quota : must specify cpu/memory

kubeflow pipeline 실행 시 다음과 같은 오류가 발생했다. 해석해보자면 내가 생성한 pipeline에 cpu, memory resource가 정의되어있지 않다는 이야기인데, 2가지 맥락으로 볼 수 있다. 1. kubeflow namespace 내의 cpu, memory 사용량이 정의되어 있지 않다. 2. pipeline의 해당 component에서 cpu, memory 사용량이 정의되어 있지 않다. 확인해보자 1. kubeflow namespace 내의 리소스 할당 확인 및 수정 Kubernetes에서 Namespace의 리소스 할당을 수정하는 방법은 기본적으로는 Namespace에 적용된 LimitRange 및 ResourceQuota 객체를 편집하거나 새로 생성하는 것이다. LimitRa..

IT_Study/Ops 2023.11.13

[MLOps] Kubeflow pipeline handling (1) : pipeline 개념 및 기본 진행 방법

Kubeflow Pipeline Kubeflow pipeline이란, ML workflow를 생성할 수 있는 kubeflow compoenent를 말한다. Pipeline은 아래 그림처럼 workflow의 각각의 component들과 dependency를 포함하여 DAG 형식을 나타내고 있다. 즉, 파이프라인은 Component라는 단위로 쪼개지며, docker image로 packaging 되어 실행 --> 데이터가 component에 입력되어 결과를 출력하는 방식 그래서 pipeline 작업 영역은 experiment라는 단위로 논리적으로 분리시킴 --> 즉, experiment는 pipeline이 실행되는 workspace를 의미 그리고 각 pipeline은 run이라는 단위로 관리할 수 있다. 구..

IT_Study/Ops 2023.11.09

[MLOps] Kubeflow 내 Tensorboard 활용 방법 및 MinIO 사용 방법 (webconsole, linux shell, python code 활용)

Tensorboard Model의 학습 결과 또는 pipeline의 결과를 시각화하는 도구 Tensorboard에서 사용할 로그를 Object Storage 또는 Persistant Volume을 저장하여 읽어올 수 있음 Tensorboard 사용 시, Tensorboard의 이름을 정해 주고, log가 저장된 storage를 선택한 다음, 저장된 mount path의 값을 입력해주면 데이터를 읽어와 시각화를 해준다. ! 파일 권한 문제 때문에 진행이 안 될 수 있으니, 기본 계정으로 진행하기를 권장 Tensorflow path 설정 진행 상황을 바탕으로 응용해도 된다. 먼저 위와 같이 temsorflow callback을 정하고, traning을 진행할 시 해당 경로에 history가 저장된다. 이후 ..

IT_Study/Ops 2023.11.03

[MLOps] Kubeflow Notebook 핸들링 방법, custom notebook 생성

Kubeflow Notebook Kubeflow Notebook은 k8s cluster 내에 pod를 생성해 웹 기반 개발 환경을 제공하고 있다. 1. 제공 환경 크게 JupyterLab, Code server, Rstudio 3가지 환경을 제공하고 있다. ※ 노트북 생성 시 namespace의 resource에 접근 가능하도록 권한이 부여되기 때문에, kubectl을 이용해서 namespace의 내부 자원을 관리할 수 있음 -> Notebook을 이용해 다른 componenet의 resource를 생성 가능 ex) Notebook에서 model serving이 가능, Notebook에서 pipeline 생성이 가능 2. Docker Image Notebook은 container image를 미리 생성한..

IT_Study/Ops 2023.11.02

[MLOps] Kubeflow 계정 관리, PV와 PVC 개념

계정 관리 Kubeflow의 multi-tenancy는 사용자 메인 페이스를 중심으로 구축되어져 있다. User 별 namespace를 정의하고, k8s의 role-base access control policy를 사용해 user의 access를 관리하고 있다. 또한 contributor 기능을 통해 profile의 owner는 dashboard를 통해서 다른 사용자와의 작업 영역 access를 공유 및 취소할 수 있음 이를 위한 사용자 작업 요청은 Istio rbac에서 관리되고 있는 걸 확인할 수 있다. Profile 생성 Docs의 [Components] - [Multi-Tenancy] - [Getting Started ~] 의 Manual profile creation 탭에서 다음 내용을 확인할 ..

IT_Study/Ops 2023.11.01

[MLOps] AWS EC2 Ubuntu 환경에서 Kubeflow 세팅 방법

최근 AWS에서도 ML 최적화 환경(EKS cluster, sagemaker, ...)을 제공해주고 있다. 때문에 여러 ML 관련 tool들을 핸들링하기가 쉬워졌다. 그래서인지 Kubeflow 관련 세팅을 찾아보면, 대다수가 Public Cloud에 의존적으로 아키텍쳐가 모델링이 되어있다. 적용해보는 것도 나쁘지 않지만, low하게 구축해보는 것도 경험이라 생각해서, ubuntu image 위에서 활용할 수 있도록 진행해볼 예정이다. 진행 스펙 - AWS Instance Type : g4dn.xlarge - OS Image : Ubuntu Server 20.04 LTS (HVM), SSD Volume Type - Storage : 150GB, EBS, 범용 SSD(gp2) 1. cuDNN 설치AWS ..

IT_Study/Ops 2023.11.01

[MLOps] Docker 개념 및 흐름 간단 정리

Docker 개념은 자료가 방대하기에 차치하고, 내가 필요한 부분만 정리해보겠다 Docker 개념 Docker 클라이언트 (docker) - 사용자가 docker와 상호작용하는 기본 메서드 - 사용자가 docker run와 같은 명령을 사용하면 클라이언트가 이 명령을 dockerd에 전송하여 실행 - 이 docker명령은 Docker API를 사용 - Docker 클라이언트는 둘 이상의 데몬과 통신 가능 Docker 데몬 (dockerd) - Docker 데몬은 Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크 및 볼륨과 같은 Docker 객체를 관리 - 데몬은 다른 데몬과 통신하여 Docker 서비스를 관리할 수도 있습니다. Docker 레지스트리 - Docker 레지스트리는 Docker..

IT_Study/Ops 2023.10.31

[MLOps] 코드 품질 관리(Quality Control) 관련 개념

Model 개발 시 보통 From scratch로 코드를 작성하기보단, Github에서 괜찮은 구현체를 가져다가 Ctrl + C, V 를 활용해 개발을 하는 경우가 많다. 그래서 다음과 같은 코드 품질 문제가 발생한다. 1. 리서치 코드는 각자의 개인 컴퓨터에 저장되어 있다. 2. 코드는 매번 복사 붙여넣기로 개발하여 코드 중복이 많다. 3. 연구 결과는 재연이 불가능하다. (실험 관리가 안 돼있다) 4. 수많은 코드 악취가 남아있다. (한 파이썬 파일에 모든 코드가 다 들어있다든지..) 코드 관리를 하지 않으면, 깨진 유리창의 법칙에 의해 전체 리서치 조직의 코드 품질도 떨어지게 되므로 이는 중대한 문제이다. 1. 코드 중복 소프트웨어 취약점이 있는 코드가 복사될 때, 개발자가 이러한 사본을 알지 못하..

IT_Study/Ops 2023.10.30

[MLOps] Kubeflow 개요 : 아키텍쳐 및 파이프라인 이해

쿠베플로우 개요 코드 배포를 자동화하는 일반적인 소프트웨어 엔지니어링과 다르게, ML 문제에서는 다른 여러 문제도 고려된다. ML project에서는 위와 같은 여러 파이프라인을 관리할 수 있어야 하는데, 추적하고 재사용이 가능하게 만들어놓은 오픈소스가 바로 Kubeflow다. 기능 1. 조합가능성 - 각각의 단계에 필요한 툴이나 라이브러리를 독립적으로 사용할 수 있다. - End-to-End 파이프라인을 형성하기 위해 함께 구성도 가능 2. 이식성 - 컨테이너 기반 설계 + CLoud native 아키텍쳐 활용 - 특정 개발환경에 종속될 필요가 없다. 3. 확장성 - Kubernetes 기반으로, 컨테이너 개수와 크기를 클러스터의 요구에 따라 동적으로 확장 가능 쿠베플로우 아키텍쳐 1. 대시보드 쿠베플..

IT_Study/Ops 2023.10.27