반응형
13. AI 데이터 센터 관리 및 모니터링
13.1 Key Messages
- 클러스터 관리 (Cluster Management)
- 인프라 프로비저닝 (Infrastructure Provisioning)
- 자원 관리 (Resource Management)
- 작업 관리 (Workload Management)
- 프로비저닝 (Provisioning Tools) : 프로비저닝은 하드웨어에 소프트웨어와 드라이버를 설치하는 과정
- 모니터링 도구 (Monitoring Tools) : 모니터링은 AI 인프라 및 해당 소프트웨어, 서비스, 실행 중인 작업(job)의 상태와 매트릭을 확인하는 과정을 포함
- 작업 관리 (Workload Management) : 자원할당, 작업 스케줄링 (Scheduling Jobs), 자원 사용량 모니터링 (Monitoring Resource Usage)
13.2 인프라 프로비저닝 (Infrastructure Provisioning)
- 설치된 하드웨어는 최신 버전이 아니거나 올바른 소프트웨어, 펌웨어 버전이 아닐 수 있음
- 프로비저닝 준비 과정에서 소프트웨어와 펌웨어의 정확한 버전을 확인하고 다운로드 해야함.
- 펌웨어와 소프트웨어 다운로드 및 시스템 업데이트 : 운영 체제(OS), GPU 드라이버, 네트워킹 드라이버, 관리도구, 서버/스위치/스토리지에서 실행해야 하는 애플리케이션 등
<프로피저닝 도구>
구분 | 특징/기능 | 자원 환경 | 활용 사례 |
Ansible ansible.com/ |
- 오픈소스 가번 IT 자동화 소프트웨어 애플리케이션 - 시스템 구성 및 소프트웨어 배포 가능 - 간단한 YAML 형식으로 플레이북 작성 - 에이전트가 필요 없는 에이전트리스(Agentless) 방식 |
온프레미즈, 클라우드 |
- 소규모 및 중소규모 서버 관리 - 빠른 배포 환경 |
Terraform terraform.io/ |
- 클라우드 및 온프레미즈 자원을 구성할 수 있는 인프라스트럭처 코드 도구 - 다양한 클라우드 플랫폼과 호환성 제공 (AWS, Azure, GCP 등) - 선언형 구문을 통해 자원 상태 관리 |
주로 클라우드 | - 복잡한 멀티 클라우드 환경 관리 - 대규모 인프라 자동화 |
Foreman theforeman.org/ |
- 서버 수명주기 전반을 관리할 수 있는 오픈소스 프로젝트 - 오케스트레이션 및 모니터링을 통해 서버 구성 - Puppet, Ansible 등 다양한 구성 관리 툴과 통합 가능 - 직관적 웹 기반 사용자 인터페이스 제공 |
온프레미즈 | - 물리적 서버 및 가상 머신 구성/관리 |
13.3 자원관리 및 모니터링 (Resource Management and Monitoring)
1) 자원 관리 및 모니터링 개요
구분 | 모니터 (Monitor) | 관리 (Manage) |
컴퓨팅 노드 Compute Nodes |
- 시스템 전반 상태 - GPU 및 CPU 지표 |
- 소프트웨어 및 OS 패치/업데이트 (보안 결함 기반) - 펌웨어 업데이트 - 새로운 장치 드라이버 설치 및 기존 드라이버 업데이트 - 고장 난 구성 요소 교체 |
네트워킹 Networking |
- 네트워크 혼잡 - 대역폭 - 연결 상태 |
- 불량 케이블 교체 - 새 연결 및 작업량 기반 업데이트/업그레이드 - 스위치 펌웨어 및 소프트웨어 업데이트 |
클러스터 구성 요소 Cluster Components |
- 디스크 공간 사용량 - 파일 시스템 - 관리 노드 상태 |
- 관리 노드 OS 업데이트 - 온프레미즈 및 클라우드 간 소프트웨어 스택 동기화 - 사용자 클러스터 접근 관리 |
2) 자원 관리 및 모니터링 도구
도구 | 주요 기능 | 설명 |
Redfish dmtf.org/standards/redfish |
AI 데이터 센터의 다양한 관리 작업 수행 | 서버, 네트워크, 스토리지 장치 및 기타 인프라의 간단하고 안전한 관리를 제공하기 위해 설계된 표준 |
DCGM Exporter docs.nvidia.com/ github.com/NVIDIA/dcgm-exporter |
GPU 메트릭 수집 및 클러스터 모니터링 | NVIDIA DCGM의 Go API를 기반으로 GPU 메트릭 수집 및 작업 부하 동작 이해 또는 클러스터 GPU 모니터링 가능 |
Prometheus & Grafana grafana.com/docs/ |
메트릭 수집, 저장 및 시각화 (시계열 데이터) |
- Prometheus는 메트릭을 수집 및 저장하는 오픈 소스 모니터인 시스템 - Grafana : 시계열 데이터 시각화를 위한 도구 |
13.4 작업 관리 및 모니터링 (Workload Management and Monitoring)
1) 작업 관리 및 모니터링 개요
관리 (Management) | 모니터링 (Monitoring) |
워크로드가 실행에 필요한 자원을 보유하고 있는지 확인 - 필요한 GPU 수 - 필요한 CPU 코어 수 |
작업(Job)의 리소스 사용량 확인 - GPU 및 CPU 사용량 추적 |
작업을 컴퓨팅 노드에 스케줄링 | 메모리 및 디스크 사용량 추적 |
작업 종료 | 작업 상태 확인 |
실패한 작업 재시작 |
2) 작업 관리 및 모니터링 도구
도구 | 주요 기능 | 설명 |
Kubernetes kubernetes.io |
워크로드 관리 및 자동화 | 컨테이너화된 워크로드를 관리하고 오케스트레이션하는 오픈 소스 도구 |
Jupyter Lab https://jupyter.org/ |
데이터 분석 및 시각화를 위한 대화형 환경 제공 | 데이터 과학자와 머신러닝 전문가가 코드 및 데이터 시각화와 같은 계산 문서를 생성하고 공유하는 데 사용하는 오픈 소스 웹 애플리케이션 |
Slurm slurm.schedmd.com/doc |
리소스 할당 및 스케줄링을 간소화하여 클러스터 환경에서 효율적인 작업 관리 제공 | 대규모 AI 및 HPC 클러스터에서 리소스 공유를 간소화하기 위해 SchedMD가 만든 도구 |
13.4 Base Commend Manager
- 엔비디아 : https://docs.nvidia.com/base-command-manager/index.html
- 베이스 커맨드 매니저의 장점 : 도구/프로세스 자동화 기반 빠른 구현, 노력/복잡도 감소, 유연성
기능 영역 | 설명 |
인프라 프로비저닝 Infrastructure Provisioning |
OS 설치 및 클러스터 무결성 관리 - 운영 체제(OS)를 설치하고, 네트워킹, 보안, DNS를 설정하며 클러스터 무결성을 보장. - 서버 관리 및 업데이트를 자동화하여 서버 일탈 방지 |
사용자 접근 및 작업 관리 User Access and Workload Management |
Kubernetes 및 Jupyter 환경 자동화와 확장 지원 - 쿠버네티스(Kubernetes)를 배포하고, 확장을 자동화하며 NVIDIA NGC™ 컨테이너를 통해 Jupter 설정을 간소화. Run:AI 통합 포함. |
자원 관리 Resource Monitoring |
클러스터 성능 및 리소스 사용량 종합 모니터링 - 클러스터 및 작업(Job) 모니터링, GPU 메트릭, 리소스 할당, 액세스 제어, 차지백 옵션 제공 |
14. 오케스트레이션, MLOps 및 작업 스케줄링
14.1 Key Messages
- 오케스트레이션 및 스케줄링 (Orchestration & Scheduling)
- 쿠버네티스 (Kubernetes) : 소프트웨어 배포, 확장 및 관리를 자동화하기 위한 오픈소스 컨테이너 오케스트레이션 시스템
- SLURM : Linux 클러스터를 위한 오픈 소스 클러스터 관리 및 작업 스케줄링 시스템
14.2 오케스트레이션 & 스케줄링 (Orchestration & Scheduling)
오케스트레이션 (Orchestration) | 작업 스케줄링 (Job Scheduling) |
컨테이너와 관련된 작업을 자동화하는 방식으로, 관리 중인 환경의 요구사항에 따라 작업을 처리함. |
사용 가능한 컴퓨팅 리소스에 워크로드를 할당하는 프로세스 |
- 컨테이너 기반 - 마이크로서비스와 AI 관련 워크로드를 지원하도록 설계됨. - 추론(서빙)을 위해 확장 가능 : 요구사항에 따라, 자동 스케일 업/다운 가능 - 고급 스케줄링 기능을 위한 메타 스케줄러 필요 - 전체 워크플로우 및 작업 프로세스 관리 - 로드 밸런싱 : 컨테이너 간 트래픽 분배 |
- 베어메탈 기반 - HPC 설계 : 고성능 컴퓨팅 환경에 적합 - 추론 기능 없음 - 고급 스케줄링 기능 내장 : 우선순위 큐(priority queues), 선점(pre-emption) 등 고급 기능 제공 - 작업 및 태스크 할당 - 호스트 리소스 선택 : 컨테이너 실행을 위한 사용 가능한 호스트 리소스 결정 |
14.3 쿠버네티스 (Kubernetes)
1) 개요
- 정의 : Kubernetes(K8s)는 소프트웨어 배포, 확장 및 관리를 자동화하는 오픈소스 컨테이너 오케스트레이션 시스템
- 작업 정의 (Job Definition)
- CUDA 컨테이너 사용
- nvidia-smi 명령으로 실행
- GPU 1개 필요
- 쿠버네티스 워크플로우
- UI 또는 CLX : 작업 생성 (Create Job), 생성된 작업은 API를 통해 처리됨
- 마스터 노드 (Marster note) : 워커 노드의 요구사항을 평가하고 적합한 워커 노드 작업에 배포
- 팟 (Pod) : 작업이 스케줄링되고, CUDA 컨테이너를 가져오는 등의 작업 수행
- 워커 노드 (Worker Nodes) : 마스터 노드의 지시에 따라 작업 실행
2) 쿠버네티스 컴포넌트
Components | 설명 |
노드 (Node) | K8s 클러스터에 추가된 서버 |
클러스터 (Cluster) | 하나 이상의 노드로 구성된 집합 |
네임스페이스 (Namespace) | 고유한 이름 객체를 포함하는 격리된 환경 |
컨테이너 (Container) | 자체 포함된 배포 가능한 애플리케이션 |
파드 (Pod) | 컨테이너와 관련 메타데이터를 포함하는 기본 실행 단위 |
볼륨 (Volume) | K8s에서 공유할 수 있는 스토리지 |
서비스 (Service) | 네트워킹, 포트 등을 포함한 네트워크 서비스 - 작업 (Job) : 특정 "작업"을 실행하고 완료하는 파드를 배포 - DaemonSet : 모든 노드에서 파드 복제본을 실행하도록 요구하는 객체 - 디플로이먼트 (Deployment) : 파드가 실행 중인지 확인하고 삭제된 경우 복사본을 다시 배포 |
3) 쿠버네티스에서 GPU 관리 (NVIDIA GPU Operator)
- Github : https://github.com/NVIDIA/gpu-operator
- Docs : https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/index.html
- 주요 기능
- GPU 노드 구성 자동화
- NVIDIA 드라이버, 컨테이너 런타임, K8s GPU 장치 플러그인, GPU 기능 검색 및 GPU 모니터링 도구 설치
- 배포 및 관리 자동화
- K8s 오퍼레이터 프레임워크 기반, 완전 오픈 소스
4) 엔비디아 Network Operator
- Network Operator 구성요소
- MLNX_OFED 드라이버
- Kubernetes RDMA 공유 장치 플러그인 ( Kubernetes RDMA Shared Device Plugin)
- NVIDIA Peer Memory 드라이버.
- Network Operator는 GPU Operator와 함께 작동하여 호스트 네트워킹 소프트웨어를 배포하고 관리함.
- Kubernetes에서 GPUDirect RDMA를 활성화
14.4 MLOps
1) 데이터센터를 위한 MLOps Ecosystem : https://www.nvidia.com/en-us/data-center/solutions/mlops/
2) Machine Learning 학습 및 추론 운영화 (Operationalizing)
- 데이터 전처리 및 피쳐 엔지니어링 (Feature Engineering)
- 데이터, 모델, 환경, 매개변수 버전 관리
- 실험, 결과 추적 및 비교, 모델 검증
- 모델 및 파이프라인의 프로덕션 배포
- 정확도 및 성능 모니터링, 재학습
3) MLOps 도구의 역할
- 사용자 생산성 향상 및 워크플로우 가속화
- 리소스 활용 극대화
- 프로젝트 확장 가능성 제공
14.5 SLURM
1) SLURM 이란 : Simple Linux Utility for Resource Management
: SLURM은 리눅스 클러스터를 위한 오픈 소스 클러스터 관리 및 작업 스케줄링 시스템으로, SchedMD에 의해 개발됨
2) 주요 특징
- 확장성 및 장애 내성
- 커널 수정 불필요
- 작업을 클러스터 리소스의 서브셋에서 실행하도록 스케줄링
- AI 학습에 최적화
- 고성능 작업 지원 (예: InfiniBand 네트워킹을 활용한 멀티 노드 작업)
- 유닉스 (Unix) 계열 시스템과 밀접한 연계 : 기존 인증/보안 메커니즘과 쉽게 통합할 수 있음.
3) 구성 요소
- 컨트롤러 : slurmctld
- 중앙관리자로 워크로드를 모니터링하고 사용 가능한 클러스터 리소스를 관리
- Primary와 Backup 구성으로 가용성 보장
- 컴퓨트 노드 : slurmd
- 컴퓨트 노드에서 실행되는 데몬으로, 작업 수신, 실행, 결과 반환을 담당
- 주요 사용자 명령어
- scontrol : 클러스터 설정 및 작업 제어
- sinfo : 클러스터 상태 정보 확인
- squeue : 실행 중인 작업 상태 확인
- scancel : 작업 취소
- sacct : 작업 계정 데이터 확인
- srun : 작업 실행
4) 컨테이너 기반 멀티 노드 학습을 위한 SLURM
- Enroot
- 엔비디아에서 개발한 도구로, 컨테이너를 샌드박스로 변환하는 기능 제공
- https://github.com/NVIDIA/enroot
- Pyxis
- 엔비디아에서 개발한 플러그인으로, Enroot를 SLURM과 통합하여 작동
- https://github.com/NVIDIA/pyxis
(source : 코세라 - 엔비디아)
반응형
'Biusiness Insight > Computer Science' 카테고리의 다른 글
[CES 2025] 놀라운 속도로 발전하는 AI, 엔비디아 젠슨 황 키노트 전문 요약 (1) | 2025.01.08 |
---|---|
[NVIDIA] 네트워킹 (3) | 2024.12.25 |
[NVIDIA] AI 인프라 및 운영 - ② AI 인프라 (2) | 2024.12.23 |
[NVIDIA] AI 인프라 및 운영 - ① AI 소개 (3) | 2024.12.18 |
Google Cloud Summit Seoul 2024 참관 (0) | 2024.07.28 |