분류 전체보기 29

NVIDIA vGPU GPU Operator install

대부분의 내용은 gpu operator 페이지에 다있다.https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/ https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/ docs.nvidia.com  1.vGPU드라이버 다운로드vGPU드라이버는 유료라이센스. 전용페이지에서 다운 2.준비물driver(.run) 파일vGPUDriverCatalog.yamlgridd.conf.tok파일 3.환경변수설정 4.driver 이미지 빌드준비물포함 5.configmap 생성 - licensing-config vGPU 라이센스- metrics-configDCGM exporter의 커스텀 메트릭 사용을 위한 csv파..

MLOps/GPU 2024.06.16

gpu operator helm 주요 파라미터

# redhat openshift 여부platform:   openshift: false  # node feature discovery 사용여부. node의 정보(cpu, gpu, mem등)을 수집nfd:   enabled: true   nodefeaturerules: false  # pod security admission 사용여부psa:   enabled: false  # containder device interface 사용여부/ true로 하면 default runtime class(nvidia)외에  2개의 runtime class(nvidia-cdi, nvidia-legacy)를 모두 사용가능# cri에서 nvidia gpu같은 복잡한 device를 활용하는데 있어서 표준 스펙을 만듬.cdi:..

MLOps/GPU 2024.06.16

NVIDIA GPU Operator 용어

GPU Driver CRD (NVIDIA Driver CRD)개별 노드에 GPU driver type과 버전을 지정할 수 있는 nvidia custom driver, custom resource를 생성할 수 있다.노드셀렉터를 통해 노드별 os에 따른 드라이버설정 가능-- Cluster Policy CRD와 NVIDIA Driver CRD 비교https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/gpu-driver-configuration.htmlKubeVirtk8s cluster상 VM환경 생성성하고 관리하게 해주는 기술.VM과 Container를 위한 개별 클러스터를 구성할 필요 없이 하나의 k8s cluster에서 모두 사용가능하게 ..

MLOps/GPU 2024.06.16

GPUDirect RDMA와 vGPU

먼저 RDMA부터 알아보자RDMA (Remote Direct Memory Access)RDMA는 네트워크를 통해 데이터 전송 시, CPU의 개입을 최소화하고 메모리 대 메모리 전송을 직접 수행하는 기술입니다. 주요 특징은 다음과 같습니다:낮은 지연 시간: 데이터 전송 중에 CPU가 관여하지 않기 때문에 지연 시간이 매우 짧습니다.높은 대역폭: 네트워크 인터페이스 카드(NIC)가 직접 메모리에 접근하여 데이터를 전송하기 때문에 높은 대역폭을 제공합니다.낮은 CPU 오버헤드: CPU의 개입이 최소화되어 CPU 사용률이 낮아집니다.제로 카피: 데이터가 직접 전송되므로 추가적인 데이터 복사가 필요 없습니다.RDMA는 인피니밴드(InfiniBand), RoCE (RDMA over Converged Ethernet..

MLOps/GPU 2024.06.11

keydb

1. keydb vs redis기본적으로 keydb는 redis에서 fork되어 개선하고자 탄생했다.특히 keydb는 기존 redis에서 더 발전한 HA구성이 돋보인다.기존 reids처럼 master-slave 구성도 지원하지만,Active-Replica와 Multi-Master 이 두가지 특성이 Redis보다 발전된 load balancing 기능을 지원한다.이 경우 keydb에서 sentinel을 사용할 필요가 없어진다.(redis-sentinel-HA proxy 더이상 안써도되나!!!)Active-Replica:Active-Replica 모드는 하나의 마스터 노드와 여러 Replica노드를 허용하는 Redis의 일반적인 Master-Slave replica 모델을 개선한 것이다.Active-Repl..

redis(keydb) 2024.05.22

custom xcom + taskflow + multi task return 케이스

우리는 s3(minIO)를 활용한 custom xcom을 구성하여 airflow를 사용중이다. 빅데이터를 처리하기위해서 task간 xcom을 통한 데이터 이동시, storage object에 pickle형태로 보관하도록 했다. 우리 airflow를 사용하는 유저가 airflow에 대한 이해도가 높지않은점을 고려해서 최대한 단순하게 사용할수있었으면 했다. task에서 return되는 변수는 pickle로 minIO의 custom xcom 버킷에 날짜별로 저장되게 되고, lifecycle 설정을 통해 생성된지 90일이 된 데이터는 삭제되도록했다. 이렇게하면 대규모 데이터 특히 pandas dataframe을 사용하는 유저가 많은데 이런 df를 쉽게 task간 전송이 가능해졌다. 그리고, 한개 df가 아닌 여..

airflow 2024.04.14

LangServe를 활용한 Langchain service

사내에서 data science팀이 제공하는 자체 LLM 모델은 제조데이터를 학습하지 않고 있다. 그래서 제조데이터를 활용한 LLM서비스를 위해서는 두가지방법이 가능해보이는데, 1. 제조데이터 finetuning을 통한 모델활용 2.langchain을 통한 RAG 구현으로 제조지식은 Retriver로,사내 LLM모델은 모델API로 활용하여 서비스제공하기 이다. 1번의 경우 해당부서와 실제로 협업하기 어려운측면이 있으나 2번은 충분히 가능해보였다. 그래서 오랜만에 Langchain을 보니 그동안 많이 또 바뀌어있었다. 그중에 Langserve는 내가 익숙한 fastapi를 통해 RAG 서비스를 제공할수 있어보였다. runnable이라는 자체 제공 객체를 통해 통해 쉽게 각종 component로부터의 데이터..

MLOps/Langserve 2024.04.14

prometheus operator- alertmanagerConfig

prometheus operator에서의 alertmanager 구성 alertmanager는 이 alertmanager configuration파일에 따라 구동된다. kubernetes의 prometheus operator에서 alertmanager를 구동하기 위해 alertmanager configuration을 제공하는 법은 아래와 같이 2가지방식이 있다. 1.alertmanager configuration파일을 secret을 통해 관리 2.AlertmanagerConfig라는 custom resource를 생성하고 Alertmanager 리소스(역시 custom resource)가 참조하도록 설정 *alertmanagerConfig 리소스 예시 apiVersion: monitoring.coreos..

kubeflow istio auth 우회하기

나는 kubeflow를 dex가 아닌 keycloak을 사용해 사내sso인증 idp연동을 통한 kubeflow인증을 하고 있다. 즉 , oidc-authservice ->keycloak->사내sso인증서비스 를 통해 istio gateway에서 인증을 하고 있는데, 문제는 istio injection을 사용하는 모든 namespace의 리소스들이 인증을 요구받게되는점이다. 그래서 이 k8s cluster의 grafana도 redirection을 통해 인증을 요청받게되었고, 이문제를 해결해야했다. 비슷한 상황의 이슈들을 발견하여, 참고하여 조치했다. https://github.com/kubeflow/kubeflow/issues/4549 Dex EnvoyFilter forces authentication t..

kubeflow 2024.03.27

minio scale out

distributed mode로 minIO의 lifecycle 정책이나, read/write가 잘반영이 안되고있었다. 운영환경의 minIO 이전 담당자가 설정을 조금 특이하게 했었다. 즉 MINIO_DISTRIBUTED_NODES = s3-minio-{0...3}.s3-minio-headless..sv.cluster.local -> 4개 headless서비스만 설정되어있는데, replica는 또 19개로 설정되어있었다. 실제로 4개 minIO pod 외 나머지 15개 pod는 접근이나 활용이 되지않고있었다. 이를 바로잡기 위해서 여러가지 시도를 해봤다. 0. statefulset scale=0 1.statefulset 수정 MINIO_DISTRIBUTED_NODES = s3-minio-{0...7}.s3..

minIO 2024.03.25