알림 활성화¶
Driverless AI는 실험 시작과 종료 시 사용자 정의 스크립트를 트리거하도록 구성할 수 있습니다. 이 기능은 Slack과 같은 서비스에 알림을 보내거나 머신을 종료하도록 트리거하는 데 사용할 수 있습니다.
** config.toml** 파일이 다음 변수를 노출시킵니다.
listeners_experiment_start
: 실험을 시작할 때 실행되는 스크립트의 절대 위치를 등록합니다.listeners_experiment_start
: 실험이 성공적으로 마무리될 때 실행되는 스크립트의 절대 위치를 등록합니다.
Driverless AI는 모든 실행 가능한 것을 스크립트로 허용합니다(예를 들어 스크립트는 Bash 또는 Python으로 구현할 수 있습니다). 여기에 필요한 요건은 다음의 두 가지입니다.
지정된 스크립트를 실행할 수 있습니다(즉, 파일이 실행 가능한 플래그를 가지고 있습니다).
스크립트가 명령 라인 매개변수를 받을 수 있어야 합니다.
스크립트 인터페이스¶
Driverless AI가 스크립트를 실행하면 스크립트 명령 라인으로 다음 매개변수를 패스합니다.
애플리케이션 ID: 실행 중인 Driverless AI 인스턴스의 고유 식별자.
사용자 ID: 실험을 실행하는 사용자의 식별.
실험 ID: 실험의 고유 식별자.
실험 경로: 실험 결과의 위치.
예제¶
다음 예제는 시작된 모든 실험이 종료된 후 알림 스크립트를 사용하여 Driverless AI를 실행하는 EC2 머신을 어떻게 종료하는지 보여줍니다. 해당 예제는 Docker 컨테이너 및 Native 설치에서 알림 스크립트를 어떻게 사용하는지 보여줍니다. 알림 스크립트의 아이디어는 실행 중인 실험의 수를 계산하기 위한 간단한 카운터(즉, 디렉터리의 파일 수)를 생성하는 것입니다. 카운터의 값이 0에 도달하면 지정된 작업이 실행됩니다.
본 예제에서는 실제 머신을 종료하기 위해 AWS 명령 라인 유틸리티를 사용합니다. 하지만, sudo poweroff
(실사용자가 암호가 없는 sudo 기능을 구성한 경우) 또는 poweroff
(스크립트 poweroff
에 실행 가능한 비트와 setuid
비트가 함께 설정되어 있는 경우. 자세한 내용은 https://unix.stackexchange.com/questions/85663/poweroff-or-reboot-as-normal-user 에서 확인하십시오)를 실행하여 동일한 기능을 달성할 수 있습니다.
on_start
스크립트¶
이 스크립트는 실행 중인 실험의 카운터를 증가시킵니다.
#!/usr/bin/env bash app_id="${1}" experiment_id="${3}" tmp_dir="${TMPDIR:-/tmp}/${app_id}" exp_file="${tmp_dir}/${experiment_id}" mkdir -p "${tmp_dir}" touch "${exp_file}"
on_done
스크립트¶
이 스크립트는 카운터를 감소시키고 카운터의 값이 0에 도달하면 머신을 종료합니다.
#!/usr/bin/env bash app_id="${1}" experiment_id="${3}" tmp_dir="${TMPDIR:-/tmp}/${app_id}" exp_file="${tmp_dir}/${experiment_id}" if [ -f "${exp_file}" ]; then rm -f "${exp_file}" fi running_experiments=$(ls -1 "${tmp_dir}" | wc -l) if [ "${running_experiments}" -gt 0 ]; then echo "There is still ${running_experiments} running experiments!" else echo "No experiments running! Machine is going to shutdown!" # Use instance meta-data API to get instance ID and then use AWS CLI to shutdown the machine # This expects, that AWS CLI is properly configured and has capability to shutdown instances enabled. aws ec2 stop-instances --instance-ids $(curl http://169.254.169.254/latest/meta-data/instance-id) fi
config.toml 파일을 Docker 이미지에서 귀하의 로컬 파일시스템으로 복사하십시오 (비 GPU 환경에서는
nvidia-docker run
을docker run
으로 변경하십시오).
# In your Driverless AI folder (for exmaple, dai_1.5.1), # make config and scripts directories mkdir config mkdir scripts # Copy the config.toml file to the new config directory. nvidia-docker run \ --pid=host \ --rm \ -u `id -u`:`id -g` \ -v `pwd`/config:/config \ --entrypoint bash \ h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx -c "cp /etc/dai/config.toml /config"
config.toml 파일에 있는 Notification scripts 를 편집하고 변경 사항을 저장하십시오. 이 예제에서 스크립트는 dai_VERSION/scripts 폴더에 저장됩니다.
# Notification scripts # - the variable points to a location of script which is executed at given event in experiment lifecycle # - the script should have executable flag enabled # - use of absolute path is suggested # The on experiment start notification script location listeners_experiment_start = "dai_VERSION/scripts/on_start.sh" # The on experiment finished notification script location listeners_experiment_done = "dai_VERSION/scripts/on_done.sh"
DRIVERLESS_AI_CONFIG_FILE 환경 변수를 사용하여 Driverless AI를 시작합니다. 소프트웨어가 구성 파일을 찾을 수 있도록 편집된 config.toml 파일의 위치를 지정하는지 확인하십시오(비 GPU 환경에서는
nvidia-docker run
을docker run
으로 변경합니다).
nvidia-docker run \ --pid=host \ --rm \ -u `id -u`:`id -g` \ -e DRIVERLESS_AI_CONFIG_FILE="/config/config.toml" \ -v `pwd`/config:/config \ -v `pwd`/data:/data \ -v `pwd`/log:/log \ -v `pwd`/license:/license \ -v `pwd`/tmp:/tmp \ -v `pwd`/scripts:/scripts \ h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
Driverless AI config.toml 파일을 내보거나 ~/.bashrc에 추가합니다. 예:
# DEB and RPM export DRIVERLESS_AI_CONFIG_FILE="/etc/dai/config.toml" # TAR SH export DRIVERLESS_AI_CONFIG_FILE="/path/to/your/unpacked/dai/directory/config.toml"
config.toml 파일의 Notification scripts 섹션을 편집하여 새로운 스크립트를 지정하도록 하십시오. 완료한 후 변경 사항을 저장하십시오.
# Notification scripts # - the variable points to a location of script which is executed at given event in experiment lifecycle # - the script should have executable flag enabled # - use of absolute path is suggested # The on experiment start notification script location listeners_experiment_start = "/opt/h2oai/dai/scripts/on_start.sh" # The on experiment finished notification script location listeners_experiment_done = "/opt/h2oai/dai/scripts/on_done.sh"
Driverless AI를 시작하십시오. Driverless AI를 시작하는 데 사용되는 명령은 설치 유형에 따라 다릅니다.
# Deb or RPM with systemd (preferred for Deb and RPM): # Start Driverless AI. sudo systemctl start dai # Deb or RPM without systemd: # Start Driverless AI. sudo -H -u dai /opt/h2oai/dai/run-dai.sh # Tar.sh # Start Driverless AI ./run-dai.sh