Google Compute Engine의 Docker 컨테이너에 설치 및 실행

이 섹션에서는 Google Compute 환경에서 Docker 컨테이너를 사용하여 Driverless AI를 from scratch 에서 설치하고 시작하는 방법에 관해 설명합니다.

본 설치는 Google Cloud Platform 계정을 이미 가지고 있다고 가정합니다. 계정이 없을 경우 https://console.cloud.google.com/getting-started 로 가서 계정을 만드십시오. 또한 Google Compute 머신 유형에 대한 정보는 Google의 Machine Types documentation 를 참조하십시오.

Watch the installation video here. 이 비디오의 일부 이미지가 릴리스 사이에 변경될 수도 있지만, 설치 단계는 동일합니다.

시작하기 전

GCP를 최초로 사용하려고 시도하면서 바로 계정을 만든 경우 Google Compute Engine(GCE)의 리소스 할당량 한도를 확인하십시오. 기본적으로 GCP는 GPU 없이 최대 8개의 CPU를 할당합니다. 할당량 한도와 일치하도록 해당 설정을 변경하거나 GCP에서 더 많은 리소스를 요청할 수도 있습니다. 할당량 확인 및 추가 할당량을 요청하는 방법에 관한 정보 및 기타 자세한 내용은 https://cloud.google.com/compute/quotas 를 참조하십시오.

설치 절차

  1. 브라우저의 https://console.cloud.google.com/ 에서 Google Compute Engine 콘솔에 로그인하십시오.

  2. 왼쪽 탐색 패널에서 Compute Engine > VM Instances 를 선택하십시오.

../_images/gce_newvm_instance.png
  1. Create Instance 를 클릭합니다.

../_images/gce_create_instance.png
  1. 다음을 최소 한도로 지정하십시오.

  • 해당 인스턴스에 대한 고유 이름.

  • 필요한 zone. 모든 영역과 사용자 계정이 GPU 인스턴스를 포함한 영역을 선택할 수 있는 것은 아닙니다. GPU 추가 방법에 대한 자세한 정보는 https://cloud.google.com/compute/docs/gpus/ 를 참조하십시오.

  • 지원되는 OS, 예: Ubuntu 16.04. 또한 OS 이미지의 디스크 크기를 64GB로 늘리십시오.

완료 시, 양식 하단의 Create 를 클릭하십시오. 이를 통해 새로운 VM 인스턴스가 생성됩니다.

../_images/gce_instance_settings.png
  1. Driverless AI에 대한 방화벽 규칙을 생성하십시오. Google Cloud Platform의 좌측 탐색 패널에서 VPC network > Firewall rules 을 선택하십시오. 다음 설정을 지정합니다.

  • 해당 인스턴스에 대한 고유한 이름과 설명을 지정합니다.

  • Targets 드롭 다운을 All instances in the network 로 변경하십시오.

  • Source IP ranges0.0.0.0/0 로 지정하십시오.

  • Protocols and Ports 아래에서 Specified protocols and ports 를 선택하고 tcp:12345 를 입력하십시오.

완료 시, 양식 하단의 Create 를 클릭하십시오.

../_images/gce_create_firewall_rule.png
  1. VM 인스턴스 페이지의 SSH 드롭 다운 메뉴에서 Open in Browser Window 를 선택하여 SSH를 통해 새로운 VM 인스턴스에 연결하십시오.

../_images/gce_ssh_in_browser.png
  1. H2O는 VM 인스턴스에서 실행이 가능한 스크립트를 제공합니다. VM 인스턴스에서 편집기를 여십시오(예: vi). 다음 스크립트 중 하나를 복사하십시오(GPU 또는 CPU 실행 여부에 따라 다릅니다). 스크립트를 install.sh 로 저장하십시오.

# SCRIPT FOR GPUs ONLY
apt-get -y update
apt-get -y --no-install-recommends install \
  curl \
  apt-utils \
  python-software-properties \
  software-properties-common

add-apt-repository -y ppa:graphics-drivers/ppa
add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

apt-get update
apt-get install -y \
  nvidia-384 \
  nvidia-modprobe \
  docker-ce

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
# SCRIPT FOR CPUs ONLY
apt-get -y update
apt-get -y --no-install-recommends install \
  curl \
  apt-utils \
  python-software-properties \
  software-properties-common

add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

apt-get update
apt-get install -y docker-ce
  1. 다음 명령을 입력하여 설치 스크립트를 실행합니다.

chmod +x install.sh
sudo ./install.sh
  1. 사용자 폴더에서 다음 디렉터리를 사용자로 만듭니다.

mkdir ~/tmp
mkdir ~/log
mkdir ~/data
mkdir ~/scripts
mkdir ~/license
mkdir ~/demo
mkdir -p ~/jupyter/notebooks
  1. Docker 컨테이너에 Google Compute 사용자 이름을 추가하십시오.

sudo usermod -aG docker <username>
  1. 시스템을 재부팅하여 NVIDIA 드라이버를 활성화하십시오.

sudo reboot
  1. Https://www.h2o.ai/download/ 에서 Driverless AI Docker 이미지를 검색합니다.

  2. Driverless AI Docker 이미지를 로드합니다. 다음 예제는 Driverless AI의 로드 방법을 설명합니다. VERSION을 이미지로 바꾸십시오.

sudo docker load < dai-docker-centos7-x86_64-1.10.1.2.tar.gz
  1. CPU를 실행하고 있는 경우, 해당 단계를 건너뛸 수 있습니다. 아니면 GPU의 퍼시스턴스를 활성화해야 합니다. 재부팅 시마다 한 번씩 실행하십시오. 자세한 내용은 http://docs.nvidia.com/deploy/driver-persistence/index.html 을 참조하십시오.

sudo nvidia-smi -pm 1
  1. Driverless AI Docker 이미지를 시작하고 아래의 TAG를 이미지 태그로 바꾸십시오. 설치 버전에 따라 docker run --runtime=nvidia (Docker 19.03 이후) 또는 nvidia-docker (Docker 19.03 이전) 명령을 사용합니다. Driverless AI 인스턴스에 GCS 및 GBQ 데이터 커넥터를 추가하는 방법에 대한 내용은 데이터 커넥터 를 참조하시기 바랍니다.

Note: docker version 을 사용하여 무슨 버전의 Docker를 사용하고 있는지 확인합니다.

 # Start the Driverless AI Docker image
 docker run --runtime=nvidia \
   --pid=host \
   --init \
   --rm \
   --shm-size=256m \
   -u `id -u`:`id -g` \
   -p 12345:12345 \
   -v `pwd`/data:/data \
   -v `pwd`/log:/log \
   -v `pwd`/license:/license \
   -v `pwd`/tmp:/tmp \
   h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx

Driverless AI가 실행됩니다:

--------------------------------
Welcome to H2O.ai's Driverless AI
---------------------------------

- Put data in the volume mounted at /data
- Logs are written to the volume mounted at /log/20180606-044258
- Connect to Driverless AI on port 12345 inside the container
- Connect to Jupyter notebook on port 8888 inside the container
  1. 브라우저로 Driverless AI에 연결합니다.

http://Your-Driverless-AI-Host-Machine:12345

GCE 인스턴스 중지

Google Compute Engine 인스턴스는 포털을 닫아도 계속 실행됩니다. 다음 방법 중 하나를 이용해서 인스턴스를 중지시킬 수 있습니다.

Stopping in the browser

  1. VM 인스턴스 페이지에서 중지하려는 VM 인스턴스를 클릭하십시오.

  2. 해당 페이지 상단에서 Stop 을 클릭하십시오.

  3. 확인 페이지가 나타납니다. 인스턴스를 중지하려면 Stop 을 클릭하십시오.

Stopping in Terminal

Driverless AI를 실행하는 머신에 시큐어 셀을 사용하고 다음을 실행하십시오.

h2oai stop

Driverless AI 업그레이드하기

이 섹션에서는 Docker 컨테이너에 설치된 Driverless AI 버전의 업그레이드에 관한 지침을 제공합니다. 이 단계는 기존 실험이 저장되도록 합니다.

WARNING: Driverless AI tmp 디렉터리에는 Experiment, MLI, MOJO가 있으며, 이는 Driverless AI가 업그레이드될 때 자동으로 업그레이드되지 않습니다.

  • 업그레이드하기 전에 MLI 모델을 빌드하십시오.

  • 업그레이드하기 전에 MOJO 파이프라인을 빌드하십시오.

  • 업그레이드하기 전에 Driverless AI를 중지하고 Driverless AI tmp 디렉터리를 백업하십시오.

Driverless AI의 업그레이드 전에 모델에 MLI를 빌드하지 않은 경우, 업그레이드 후 해당 모델에서 MLI를 확인할 수 없습니다. 업그레이드 전에 향후 릴리스에서 지속적으로 해석하고자 하는 모형에 MLI 작업을 실행하십시오. 해당 MLI 작업이 현재 버전의 해석 모형 목록에 나타나면, 이는 업그레이드 후에도 유지됩니다.

Driverless AI의 업그레이드 전에 모델에 MOJO 파이프라인을 빌드하지 않은 경우, 업그레이드 후에는 해당 모델에 MOJO 파이프라인을 빌드하지 못합니다. 업그레이드 전에 필요한 모든 모델에서 MOJO 파이프라인을 빌드한 후, Driverless AI tmp 디렉터리를 백업하십시오.

Note: Driverless AI가 계속 실행 중인 경우 중지하십시오.

요구 사항

Ampere를 포함한 모든 NVIDIA 아키텍처에서 원활한 경험을 위해 호스트 환경에 설치된 471.68 (GPU만 해당) 이상의 NVIDIA 드라이버를 사용할 것을 권장합니다. Driverless AI는 GPU용 CUDA 11.2.2와 함께 제공되지만 드라이버가 호스트 환경에 있어야 합니다.

최신 NVIDIA Tesla A/T/V/P/K 시리즈 드라이버를 다운로드하려면 NVIDIA download driver 로 이동하십시오. CUDA Toolkit 및 최소 필수 드라이버 버전, CUDA Toolkit 및 해당 드라이버 버전에 대한 참고자료는 here 를 참조하십시오.

업그레이드 단계

  1. Driverless AI를 실행하는 시스템의 IP 주소에 SSH를 사용합니다.

  2. 호스트 시스템에서 Driverless AI 버전에 대한 디렉터리를 설정합니다.

# Set up directory with the version name
mkdir dai-1.10.1.2

# cd into the new directory
cd dai-1.10.1.2
  1. https://www.h2o.ai/download/에서 Driverless AI 패키지를 검색하여 이를 새 디렉터리에 추가합니다.

  2. 새 디렉터리 내에 Driverless AI Docker 이미지를 로드합니다.

# Load the Driverless AI docker image
docker load < dai-docker-centos7-x86_64-1.10.1.2.tar.gz
  1. 이전 Driverless AI 디렉터리의 데이터, 로그, 라이선스, tmp 디렉터리를 새 Driverless AI 디렉터리로 복사합니다.

# Copy the data, log, license, and tmp directories on the host machine
cp -a dai_rel_1.4.2/data dai-1.10.1.2/data
cp -a dai_rel_1.4.2/log dai-1.10.1.2/log
cp -a dai_rel_1.4.2/license dai-1.10.1.2/license
cp -a dai_rel_1.4.2/tmp dai-1.10.1.2/tmp

이 때 이전 버전의 실험이 Docker 컨테이너 내에 표시됩니다.

  1. docker image 를 사용하여 새 이미지 태그를 찾습니다.

  2. Driverless AI Docker 이미지를 시작합니다.

  3. http://Your-Driverless-AI-Host-Machine:12345 에서 브라우저로 Driverless AI에 연결합니다.