Driverless AI Health API

다음 섹션에서는 Driverless AI Health API에 관해 설명합니다.

개요

Driverless AI Health API는 기본 시스템 메트릭 및 통계를 노출하는, 공개적으로 사용 가능한 API입니다. 주요 목적은 Driverless AI multinode 클러스터의 리소스 모니터링 및 자동 크기 조정에 대한 정보를 제공하는 것입니다. API는 KEDA 또는 K8S Autoscaler 와 같은 도구에서 사용할 수 있도록 JSON 형식의 메트릭 세트를 출력합니다.

Notes:

  • Health API는 multinode 또는 singlenode 모드에서만 사용할 수 있습니다. 자세한 내용은 worker_mode config.toml 옵션을 참조하십시오.

  • 보안 목적을 위해 enable_health_api config.toml 옵션을 false 로 설정하여 Health API 엔드포인트를 비활성화할 수 있습니다. 이 설정은 기본적으로 활성화되어 있습니다.

  • Health API는 사용자가 Multinode Driverless AI 에 대한 자체 자동 크기 조정 로직을 작성하는 데 필요한 정보를 제공하기 위한 의도로 설계되었습니다. Enterprise Puddle 과 같은 서비스와 함께 사용하여 인증 단계를 건너뛰고 대신 필요한 정보를 직접 검색할 수도 있습니다.

DAI Health API 사용

Driverless AI의 건강 상태를 검색하려면 GET 요청을 생성하십시오.

GET http://{driverless-ai-instance-address}/apis/health/v1

이는 다음의 JSON 응답을 반환합니다.

{
  "api_version": "1.0",
  "server_version": "1.10",
  "timestamp": "ISO 8601 Datetime",
  "last_system_interaction": "ISO 8601 Datetime",
  "is_idle": true,

  "resources": {
    "cpu_cores": 150,
    "gpus": 12,
    "nodes": 5,
  },

  "tasks": {
    "running": 45,
    "scheduled": 123,
  },

  "utilization": {
    "cpu": 0.12,
    "gpu": 0.45,
    "memory": 0.56,
  },
}

속성 정의

다음은 관련 JSON 속성 정의 목록입니다.

  • api_version (문자열): API 버전

  • server_version (문자열): Driverless AI 서버 버전

  • timestamp (문자열): ISO8601 포맷에서 현재 서버 시간

  • last_system_interaction (문자열): Driverless AI 서버와의 마지막 상호 작용의 ISO8601 포맷 타임스탬프. 다음은 시스템 상호 작용으로 간주됩니다.

  1. 클라이언트에서 들어오는 RPC 요청

  2. 사용자의 로그인/로그아웃

  3. 실행 또는 완료한 실험에서 _sync_ 메시지와 같은 시스템 이벤트

  4. 데이터 세트 업로드 초기화

  5. 사용자 정의 레시피 업로드

  • is_idle (부울): 실행 중이거나 예약된 작업이 없을 때 시스템이 유휴 상태로 간주합니다.

  • resources.nodes (int): Driverless AI 클러스터에서의 노드 수

  • resources.gpus (int): Driverless AI 클러스터에서 GPU의 전체 수

  • resources.cpu_cores (int): Driverless AI 클러스터에서 CPU 코어의 전체 수

  • tasks.running (int): 시스템에서 실행 중인 작업의 전체 수

  • tasks.scheduled (int): 스케줄링 큐에서 실행을 기다리는 전체 작업 수

  • utilization.cpu (float [0, 1]): 모든 노드에서 집계된 CPU 활용 백분율

  • utilization.gpu (float [0, 1]): 모든 노드에서 집계된 GPU 활용 백분율

  • utilization.memory (float [0, 1]): 모든 노드에서 집계된 메모리 활용 백분율