쿠버네티스

· 인프라
IT에는 어떤 직군들이 있을까? 네트워크 엔지니어: cisco의 제품으로 네트워크를 세팅하고 성능, 문제를 분석하는 엔지니어. 서버가 죽으면 서비스가 죽지만 네트워크가 죽으면 전사가 마비되기 때문에 매우 중요하다.스토리지 엔지니어: 보통 스토리지 전문 기업에서 설치부터 지원까지 담당한다.서버 엔지니어: 현재는 대부분의 서버를 가상화해서 VM(Virtual Machine)으로 나누기 때문에 서버 엔지니어가 OS 및 가상화 세팅까지 담당한다.미들웨어 엔지니어: app이 os위에서 잘 돌아가도록 하는 보조 프로그램(e.g. tomcat)을 다루는 엔지니어. 트래픽을 전달하거나 로그를 저장한다. 특정 기업의 WAS 솔루션을 사용할 수 있고 이런 경우 운영팀에서 병행한다.데이터: 데이터 분야는 다양한 직군이 존재..
이전 포스팅에서 onnx 형식의 ner 모델을 triton에 업로드하여 동작을 확인하였다.하지만 해당 onnx 모델의 input은 input_ids, attention_mask 텐서, 즉 raw text를 tokenizer로 연산한 결과이다.따라서 tokenizing 하는 전처리 과정을 추가하기 위해 python backend model을 추가해야 한다.마찬가지로 onnx 모델의 output logit 만으로는 각 token이 어떠한 ner tag를 가지는지 알 수 없기 때문에,output logit을 ner tag 결과로 변환하는 후처리 과정을 추가해야 한다. 그러면 아예 모델 내부에 전처리/후처리 로직을 넣어서 onnx 모델로 변환하면 안되나 싶겠지만유연성, 재사용성, 확장성, 유지보수 등 다양한 측..
model repository 구조 알아보기Triton은 model repository 내부의 모델을 일괄적으로 로드하게 된다.트리톤 실행시 아래 명령어처럼 명시적으로 model-repository의 경로를 지정할 수도 있고,기본 경로는 "/opt/tritonserver/models/"이며 이전 포스팅의 volumeMounts에서 확인할 수 있다.$ tritonserver --model-repository= model repository 내부는 정해진 layout을 따라 파일을 구성해야하며 다음과 같다. / / [config.pbtxt] [ ...] [configs]/ [ ...] / / ... / ..
NVIDIA Triton 서버는 다양한 프레임워크의 AI 모델에 대해 AI Inference를 지원하는 오픈 소스이다.대부분의 Train/Inference 프레임워크를 모두 지원하며 Dynamic batching, Parallel Processing, Model Ensemble 등 다양한 기능을 지원하여 고성능 추론을 가능하게 만들어준다.또한 DevOps, MLOps를 위한 설계가 되어있어 Kubernets에 통합하여 모니터링과 확장이 용이하다는 장점이 있다. 거두절미하고 바로 쿠버네티스 환경에서 triton 서버를 띄우기 위한 환경설정을 시작하자.GPU-Operator 설치먼저 쿠버네티스가 NVIDIA GPU 리소스에 접근할 수 있도록 gpu-operator를 설치해야 한다.gpu-operator는 자..
· DevOps
Argo Rollouts 설치하기ArgoCD와 ArgoCD Image Updater 설치와 마찬가지로 helm 레포와 차트를 다운받는다.이후 차트 내부에 values-dev.yaml 파일을 생성해 아래 내용을 추가한다.controller: replicas: 1dashboard: enabled: true service: type: NodePort portName: dashboard port: 3100 targetPort: 3100 nodePort: 30003 이후 아래 helm 명령어로 설치를 수행한다. 마찬가지로 kubeconfig는 제외 가능.helm upgrade argo-rollouts ./argo/helm/argo-rollouts-f ./argo/helm/argo-..
· DevOps
배포를 새로 해야하는 상황은 다음과 같다.리소스 스펙 변경App 버전 업그레이드1번은 담당자가 수작업으로 변경해 yaml이나 helm의 values 파일에서의 항목을 수정해주어야 한다.하지만 2번은 컨테이너 이미지 변경, 즉 이미지의 tag를 변경하는 사항인데 이를 ArgoCD Image Updater를 이용하여 자동화할 수 있다. 특히 개발서버에서 App의 기능사항을 지속적으로 개발 업데이트하며 변경사항을 확인하는 경우가 잦아지는데, 이 때 직접 배포파일을 수정하지 않고 자동으로 업데이트 되기 때문에 굉장히 편리하고 유용하다. 배포 방식에 대한 차이점Image Updater의 유용성을 알기 위해 App 컨테이너 이미지 업데이트 시 각 배포 방식에 따른 차이점을 알아보도록 하자.Jenkins 배포소스 빌..
· DevOps
Repository 관리 방법repository 분리의 장점은 접근 유저별로 권한 관리가 가능하고, 불필요한 코드 다운을 방지한다는 점이다.App 소스 전용: App의 기능을 위한 코드의 저장소.1명 이상의 개발자가 공유하며 CI/CD 서버에서 해당 코드를 다운받아 배포한다.App 배포 전용: App을 배포하기 위한 release 파일들의 저장소. 관리 주체는 DevOps 엔지니어이지만 개발자도 자신의 코드를 배포할 수 있다.Addon 설치 전용: Argo나 Prometheus 같이 서비스를 운영하는데 필요한 소스들의 저장소. 운영자가 관리.ArgoCD 설치Argo Project는 Helm repo를 추가하여 간편하게 각 제품별로 설치할 수 있다.자신의 배포 전용서버에서 편한 위치에 argo 디렉토리를 ..
· DevOps
Argo Project 제품 설명CD: 쿠버네티스 전용 배포 툴. Release 파일 저장소로 Git repository가 필요하다.Image Updater: ArgoCD의 추가 기능. Docker Hub의 컨테이너 이미지 변경을 감지하여 배포를 수행한다.Rollouts: 고급 배포 지원 (Blue/Green, Canary).Events: Kafka와 같은 이벤트 버스 아키텍처에 대한 솔루션.Workflow: Airflow, Kubeflow 같은 워크플로우 관리도구.Argo 제품으로 다음과 같은 아키텍처가 만들어질 수 있다.ArgoEvents가 시스템들 간의 이벤트를 주고받는 메인 통로 역할.이 중 Workflow로 보내지는 이벤트가 발생. Workflow는 이벤트를 받고 내부 값에 의해 특정 작업을 실..
EBEL
'쿠버네티스' 태그의 글 목록 (2 Page)