Gemini Enterprise Agent Platform 학습 클러스터는 클러스터에서 작업을 관리하고 예약하는 조정자로 Simple Linux Utility for Resource Management(Slurm)를 사용합니다.
Slurm은 확장성과 내결함성으로 유명한 널리 사용되는 오픈소스 클러스터 관리 및 작업 예약 시스템입니다.
Slurm 주요 기능
- Slurm은 정의된 기간 동안 특정 작업을 독점적으로 사용할 수 있는 컴퓨팅 노드 집합을 할당합니다. 이렇게 하면 작업에 간섭 없이 실행하는 데 필요한 리소스에 대한 전용 액세스 권한이 부여됩니다.
- Slurm은 제출 및 실행부터 모니터링 및 완료에 이르기까지 작업의 전체 수명 주기를 관리하는 프레임워크를 제공합니다. 이 시스템은 할당된 노드 집합에서 실행되는 병렬 작업을 처리하도록 특별히 설계되었습니다.
- Slurm은 정교한 우선순위 지정 엔진을 사용하여 컴퓨팅 리소스에 대한 액세스를 중재해 대기 중인 작업의 큐를 유지보수합니다. 이 시스템은 작업 크기, 사용자 우선순위, 대기 시간과 같은 요인을 고려하여 클러스터 전반에서 공정하고 효율적인 리소스 활용을 보장합니다.
기본 클러스터 구성
작업을 실행하려면 먼저 Slurm 클러스터 기본 구조를 정의해야 합니다. 이 섹션에서는 컴퓨팅 노드를 파티션으로 구성하고 전용 로그인 노드 풀을 지정하고 사용자를 위한 공유 홈 디렉터리를 구성하는 방법을 포함한 필수 구성 설정을 자세히 설명합니다.
파티션
파티션은 노드를 논리적 집합으로 그룹화하며 이는 다양한 머신 유형이나 액세스 등급을 관리하는 데 유용할 수 있습니다. slurm_spec의 파티션 필드 내 목록으로 정의됩니다.
각 파티션 객체에는 다음과 같은 필수 입력란이 있습니다.
id: 파티션의 고유 식별자입니다.node_pool_ids: 이 파티션에 속하는 노드 풀 하나 이상의 ID가 포함된 목록입니다.
예를 들면 다음과 같습니다.
"partitions": [
{
"id": "a4",
"node_pool_ids": [ "a4" ]
}
]
--partition 없이 제출된 작업은 기본 파티션에서 실행됩니다. 기본 파티션을 지정하려면 slurm_spec의 default_partition_id을 파티션 중 하나의 id로 설정합니다. 설정하지 않으면 목록의 첫 번째 파티션이 기본값입니다.
로그인 노드
로그인 노드 풀은 사용자가 클러스터와 상호작용하는 데 사용할 수 있는 기본 진입점 역할을 하는 전용 노드를 제공합니다. login_node_pool_id 필드는 이 풀의 고유 식별자를 지정합니다.
예를 들면 다음과 같습니다.
"login_node_pool_id": "login"
홈 디렉터리 스토리지
home_directory_storage 필드는 클러스터의 모든 노드에 /home 디렉터리로 마운트할 Filestore 인스턴스를 지정합니다. 이렇게 하면 모든 사용자를 위한 영구 공유 홈 디렉터리가 제공됩니다.
이 값에 Filestore 인스턴스의 전체 리소스 이름을 제공해야 합니다.
예를 들면 다음과 같습니다.
"home_directory_storage": "projects/PROJECT_ID/locations/REGION-ZONE/instances/FILESTORE_INSTANCE_NAME"
고급 Slurm 구성
Gemini Enterprise Agent Platform 학습 클러스터를 사용하면 slurm.conf 매개변수를 설정하고 실행 중인 클러스터에서 변경할 수 있습니다. Slurm 구성 맵을 참조하세요.
계정, 선점, 우선순위
Slurm 회계는 모든 클러스터에서 사용 설정되므로 CPU 시간 및 메모리와 같은 작업별 리소스 사용량을 추적할 수 있습니다. 예시 클러스터 사양과 같이 config를 통해 계정 한도를 적용하고, 작업 우선순위에 가중치를 부여하고, 선점을 사용 설정할 수도 있습니다. 작동 방식은 회계, 멀티 요소 우선순위 플러그인, 선점에 대한 Slurm 문서를 참조하세요.
프롤로그 및 에필로그 스크립트
다음 필드를 사용하여 각 작업의 시작(프롤로그)과 끝 (에필로그)에서 자동으로 실행되는 커스텀 Bash 스크립트를 구성할 수 있습니다.
prolog_bash_scripts: 문자열 목록입니다. 각 문자열에는 작업이 시작되기 전에 실행될 Bash 스크립트의 전체 콘텐츠가 포함됩니다.epilog_bash_scripts: 문자열 목록입니다. 각 문자열에는 작업이 완료된 후에 실행될 Bash 스크립트의 전체 콘텐츠가 포함됩니다.
이는 고유한 작업 환경을 설정하거나 자동 정리 태스크를 수행하는 데 유용합니다.
클러스터 사양 예시
다음 예시는 학습 클러스터를 만들기 위한 JSON 구성을 보여줍니다. 이 사양을 자체 니즈에 맞게 조정할 수 있습니다.
{ // ... other cluster configurations ... "orchestratorSpec": { "slurmSpec": { "partitions": [ { "id": "a4", "node_pool_ids": ["a4"] } ], "login_node_pool_id": "login", "home_directory_storage": "projects/PROJECT_ID/locations/REGION-ZONE/instances/FILESTORE_INSTANCE_ID", "config": { "AccountingStorageEnforce": "associations,limits,qos", "PriorityType": "priority/multifactor", "PriorityWeightAge": "1000", "PriorityWeightFairshare": "10000", "PreemptType": "preempt/partition_prio", "PreemptMode": "REQUEUE", "PreemptExemptTime": "00:10:00" }, "prolog_bash_scripts": [ "#!/bin/bash\necho 'First prolog script running'", "#!/bin/bash\necho 'Second prolog script running'" ], "epilog_bash_scripts": [ "#!/bin/bash\necho 'Epilog script running'" ] // ... other Slurm settings ... } } }
클러스터 관리 및 운영
실행 중인 클러스터 관리
선택한 회계 및 선점 설정으로 클러스터를 만든 후 Slurm의 명령줄 도구를 사용하여 사용자 계정을 관리하고 작업 일정을 모니터링할 수 있습니다.
sacctmgr을 사용한 계정 관리
sacctmgr 명령어는 Slurm 데이터베이스에서 사용자와 계정 정보를 관리하는 기본 도구입니다. 예를 들어 계정에 새 사용자를 추가하고 새 사용자에게 파티션에 대한 액세스 권한을 부여하려면 다음 명령어를 실행합니다.
sudo sacctmgr add User Accounts=<account> Partition=<partition> <user>
모든 sacctmgr 옵션의 전체 목록은 공식 Slurm 계정 문서를 참조하세요.
작업 우선순위 확인
큐에 있는 각 작업의 우선순위 구성요소를 확인하려면 sprio 유틸리티를 사용합니다. 이는 특정 작업이 다른 작업보다 먼저 실행되도록 예약된 이유를 이해하는 데 유용합니다.
자세한 사용 방법은 sprio 유틸리티 문서를 참조하세요.
선점 예시
공식 Slurm 문서에서는 다양한 선점 전략 작동에 대한 여러 가지 예시를 제공합니다. Slurm 선점 페이지에서 이러한 예시를 확인할 수 있습니다.
다음 단계
다음에서는 학습된 모델을 관리, 배포, 모니터링하는 머신러닝 수명 주기의 마지막 단계에 중점을 둡니다.
- 추론을 위해 모델 배포: 학습된 모델을 Gemini Enterprise Agent Platform 엔드포인트에 배포하여 대규모로 온라인 추론 요청을 처리합니다.
- 모델 수명 주기 관리: Gemini Enterprise Agent Platform Model Registry를 사용하여 모델을 버전 관리하고 비교하고 관리합니다. 학습이 성공하면 새 모델을 자동으로 등록하도록 파이프라인을 구성할 수 있습니다.
- 파이프라인 실행 및 모델 성능을 모니터링합니다.
- 파이프라인 모니터링: 파이프라인 실행의 실행 그래프, 아티팩트, 성능을 추적하여 문제를 디버그하고 조정을 최적화합니다.
- Gemini Enterprise Agent Platform 모델 모니터링: 배포 후 모델의 예측 성능에서 드리프트와 이상치를 감지하도록 모니터링을 설정하여 시간이 지남에 따라 모델의 정확도를 유지할 수 있습니다.
- 비용 최적화 및 클러스터 수명 주기 관리: 자동화된 파이프라인을 사용할 때는 실행 빈도를 고려하여 클러스터의 수명 주기를 관리합니다.
- 실행 빈도가 낮은 경우 마지막 파이프라인 단계에서 클러스터를 삭제하여 비용을 절감하세요. 일반적으로 삭제 함수를 호출하는 커스텀 파이프라인 구성요소를 만들어야 합니다.
- 자주 실행하는 경우 클러스터를 활성 상태로 유지하여 작업 시작 시간을 줄이세요.