Install on Google Compute

Driverless AI can be installed on Google Compute using one of two methods:

  • Install via the available Cloud Launcher offering (recommended)
  • Install from source

Install the Google Cloud Platform Offering

Preview Documentation

This section describes how to install and start Driverless AI in a Google Compute environment using the available Cloud Launcher offering.

  1. In your browser, log in to the Google Compute Engine Console at https://console.cloud.google.com/.
  2. In the left navigation panel, select Cloud Launcher.
../_images/google_cloud_launcher.png
  1. On the Cloud Launcher page, search for Driverless and select the H2O.ai Driverless AI offering. The following page will display.
../_images/google_driverlessai_offering.png
  1. Click Launch on Compute Engine.
  • Select a zone that has p100s or k80s (such as us-east1-)
  • Optionally change the number of cores and amount of memory. (This defaults to 32 cpus and 120 GB ram.)
  • Specify a GPU type. (This defaults to a p100 GPU.)
  • Optionall change the number of GPUs. (default is 2.)
  • Specify the boot disk type and size.
  • Optionally change the network name and subnetwork names. Be sure that whichever network you specify has port 12345 exposed.
  • Click Deploy when you are done. Driverless AI will begin deploying. Note that this can take several minutes.
../_images/google_deploy_compute_engine.png
  1. A summary page displays when the compute engine is successfully deployed. Click on the Instance link to retrieve the external IP address for starting Driverless AI.
../_images/google_deploy_summary.png
  1. In your browser, go to https://[External_IP]:12345 to start Driverless AI.
  2. Agree to the Terms and Conditions.
  3. Log in to Driverless AI using your preferred user name and password. Driverless AI currently accepts any username and password. These are tied to experiments, so to see existing experiments, be sure to log in to future sessions using the same username and password that were provided when experiments were created.
  4. In order to enable GCS and Google BigQuery access, you must pass the running instance of a service account json file configured with GCS and GBQ access. This Driverless AI image provides a file called services_account.json. Copy this file to the ubuntu user on the running instance.
gcloud compute scp /path/to/service_account.json ubuntu@<running_instance_name>:/service_account.json
  1. SSH into the machine running Driverless AI, and verify that the service_account.json file is in the /home/ubuntu/ folder.
  2. Stop (if running) and then restart Driverless AI for the services_account.json changes to take effect.
# Check to see if Driverless AI is running
h2oai status

# Stop Driverless AI if it is running
h2oai stop

# Start Driverless AI
h2oai start

Install from Source

This section describes how to install and start Driverless AI from source in a Google Compute environment. Refer to Google Compute Instance Types for information on Google Compute instance types.

Watch the installation video here. Note that some of the images in this video may change between releases, but the installation steps remain the same.

  1. In your browser, log in to the Google Compute Engine Console at https://console.cloud.google.com/.
  2. In the left navigation panel, select Compute Engine > VM Instances.
../_images/gce_newvm_instance.png
  1. Click Create Instance.
../_images/gce_create_instance.png
  1. Specify the following at a minimum:
  • A unique name for this instance.
  • The desired zone. Note that not all zones and user accounts can select zones with GPU instances. Refer to the following for information on how to add GPUs: https://cloud.google.com/compute/docs/gpus/.
  • A supported OS, for example Ubuntu 16.04. Be sure to also increase the disk size of the OS image to be 64 GB.

Click Create at the bottom of the form when you are done. This creates the new VM instance.

../_images/gce_instance_settings.png
  1. Create a Firewall rule for Driverless AI. On the Google Cloud Platform left navigation panel, select VPC network > Firewall rules. Specify the following settings:
  • Specify a unique name and Description for this instance.
  • Change the Targets dropdown to All instances in the network.
  • Specify the Source IP ranges to be 0.0.0.0/0.
  • Under Protocols and Ports, select Specified protocols and ports and enter the following: tcp:12345.

Click Create at the bottom of the form when you are done.

../_images/gce_create_firewall_rule.png
  1. On the VM Instances page, SSH to the new VM Instance by selecting Open in Browser Window from the SSH dropdown.
../_images/gce_ssh_in_browser.png
  1. H2O provides a script for you to run in your VM instance. Open an editor in the VM instance (for example, vi). Copy one of the scripts below (depending on whether you are running GPUs or CPUs). Save the script as 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

wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
# 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. Type the following commands to run the install script.
chmod +x install.sh
sudo ./install.sh
  1. In your user folder, create the following directories as your user.
mkdir ~/tmp
mkdir ~/log
mkdir ~/data
mkdir ~/scripts
mkdir ~/license
mkdir ~/demo
mkdir -p ~/jupyter/notebooks
  1. Add your Google Compute user name to the Docker container.
sudo usermod -aG docker <username>
  1. Reboot the system to enable NVIDIA drivers.
sudo reboot
  1. If you are running CPUs, you can skip this step. Otherwise, enable persistence of the GPU. Note that this only needs to be run once. Refer to the following for more information: http://docs.nvidia.com/deploy/driver-persistence/index.html.
sudo nvidia-persistenced --user <USER>
sudo nvidia-smi -pm 1
  1. Retrieve the Driverless AI package from https://www.h2o.ai/driverless-ai-download/.

Note: You can optionally run

wget https://s3-us-west-2.amazonaws.com/h2o-internal-release/docker/driverless-ai-docker-runtime-latest-release.gz

to retrieve the latest tagged version. In this case, you will not know the actual Driverless AI version until you start the software.

  1. Load the Driverless AI Docker image, replacing VERSION below with your Driverless AI Docker image version (for example, 1.1.3).
sudo docker load < driverless-ai-docker-runtime-rel-VERSION.gz
  1. Tag the Driverless AI version with latest. For example, the command below tags driverless-ai-docker-cuda9-runtime-rel-1.1.3.cuda9.gz as latest. Why do I have to tag this as latest? Refer to the FAQ. (Note: If you downloaded driverless-ai-docker-runtime-latest-release.gz, then you do not need to perform this step. That version is already tagged as latest.)
docker tag opsh2oai/h2oai-runtime:1.1.3.cuda9 opsh2oai/h2oai-runtime:latest
  1. Start the Driverless AI Docker image with nvidia-docker run (GPUs) or docker run (CPUs). Note that you must have write privileges for the folders that are created below. You can replace ‘pwd’ with the path to your user /home/<username> or start with sudo nvidia-docker run.
# Start the Driverless AI Docker image
nvidia-docker run \
    --pid=host \
    --init \
    --rm \
    -u `id -u`:`id -g` \
    -p 12345:12345 \
    -p 54321:54321 \
    -p 9090:9090 \
    -v `pwd`/data:/data \
    -v `pwd`/log:/log \
    -v `pwd`/license:/license \
    -v `pwd`/tmp:/tmp \
    opsh2oai/h2oai-runtime

Driverless AI will begin running:

---------------------------------
Welcome to H2O.ai's Driverless AI
---------------------------------
   version: X.Y.Z

- Put data in the volume mounted at /data
- Logs are written to the volume mounted at /log/YYYYMMDD-HHMMSS
- Connect to Driverless AI on port 12345 inside the container
- Connect to Jupyter notebook on port 8888 inside the container
  1. Connect to Driverless AI with your browser:
http://Your-Driverless-AI-Host-Machine:12345

Stopping the GCE Instance

The Google Compute Engine instance will continue to run even when you close the portal. You can stop the instance using one of the following methods:

Stopping in the browser

  1. On the VM Instances page, click on the VM instance that you want to stop.
  2. Click Stop at the top of the page.
  3. A confirmation page will display. Click Stop to stop the instance.

Stopping in Terminal

SSH into the machine that is running Driverless AI, and then run the following:

h2oai stop

Upgrading Driverless AI

This section provides instructions for upgrading Driverless AI so that existing experiments are saved. The instructions show an example of upgrading Driverless AI from version 1.0.18 to version 1.1.3.

WARNING: Experiments, MLIs, and MOJOs are not automatically upgraded when Driverless AI is upgraded.

  • Build MLI models before upgrading.
  • Build MOJO pipelines before upgrading.

If you did not build MLI on a model before upgrading Driverless AI, then you will not be able to view MLI on that model after upgrading. Before upgrading, be sure to run MLI jobs on models that you want to continue to interpret in future releases. If that MLI job appears in the list of Interpreted Models in your current version, then it will be retained after upgrading.

If you did not build a MOJO pipeline on a model before upgrading Driverless AI, then you will not be able to build a MOJO pipeline on that model after upgrading. Before upgrading, be sure to build MOJO pipelines on all desired models.

Note: Stop Driverless AI if it is still running.

  1. SSH into the IP address of the machine that is running Driverless AI.
  2. Set up a directory for the version of Driverless AI on the host machine:
# Set up directory with the version name
mkdir dai_rel_1.1.3

# cd into the new directory
cd dai_rel_1.1.3
  1. Retrieve the Driverless AI package from https://www.h2o.ai/driverless-ai-download/ and add it to the new directory.

Note: You can optionally run the following to retrive the latest tagged version. In this case, you will not know the actual Driverless AI version until you start the software.

# Download latest release
wget https://s3-us-west-2.amazonaws.com/h2o-internal-release/docker/driverless-ai-docker-runtime-latest-release.gz
  1. Tag the Driverless AI version with latest. For example, the command below tags driverless-ai-docker-cuda9-runtime-rel-1.1.3.cuda9.gz as latest. Why do I have to tag this as latest? Refer to the FAQ. (Note: If you downloaded driverless-ai-docker-runtime-latest-release.gz, then you do not need to perform this step. That version is already tagged as latest.)
docker tag opsh2oai/h2oai-runtime:1.1.3.cuda9 opsh2oai/h2oai-runtime:latest
  1. Load the Driverless AI Docker image inside the new directory:
# Load the Driverless AI docker image
docker load < driverless-ai-docker-runtime-rel-VERSION.gz
  1. Copy the data, log, license, and tmp directories from the previous Driverless AI directory to the new Driverless AI directory:
# Copy the data, log, license, and tmp directories on the host machine
cp -r dai_rel_1.0.18/data dai_rel_1.1.3/data
cp -r dai_rel_1.0.18/log dai_rel_1.1.3/log
cp -r dai_rel_1.0.18/license dai_rel_1.1.3/license
cp -r dai_rel_1.0.18/tmp dai_rel_1.1.3/tmp

At this point, your experiments from the previous versions will be visible inside the Docker container.

  1. Start the Driverless AI Docker image.
  2. Connect to Driverless AI with your browser at http://Your-Driverless-AI-Host-Machine:12345.