.. _install-on-nvidia-dgx:

Install on NVIDIA GPU Cloud/NGC Registry
----------------------------------------

Driverless AI is supported on the following NVIDIA DGX products, and the installation steps for each platform are the same.

- `NVIDIA GPU Cloud <https://www.nvidia.com/en-us/gpu-cloud/>`__
- `NVIDIA DGX-1 <https://www.nvidia.com/en-us/data-center/dgx-1/>`__
- `NVIDIA DGX-2 <https://www.nvidia.com/en-us/data-center/dgx-2/>`__
- `NVIDIA DGX Station <https://www.nvidia.com/en-us/data-center/dgx-station/>`__

Environment
~~~~~~~~~~~

+----------------------------+------+------------+--------------+
| Provider                   | GPUs | Min Memory | Suitable for |
+============================+======+============+==============+
| NVIDIA GPU Cloud           | Yes  |            | Serious use  |
+----------------------------+------+------------+--------------+
| NVIDIA DGX-1/DGX-2         | Yes  | 128 GB     | Serious use  |
+----------------------------+------+------------+--------------+
| NVIDIA DGX Station         | Yes  | 64 GB      | Serious Use  | 
+----------------------------+------+------------+--------------+

Installing the NVIDIA NGC Registry
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**Note**: These installation instructions assume that you are running on an NVIDIA DGX machine. Driverless AI is only available in the NGC registry for DGX machines. 

1. Log in to your NVIDIA GPU Cloud account at https://ngc.nvidia.com/registry. (Note that NVIDIA Compute is no longer supported by NVIDIA.)

2. In the **Registry > Partners** menu, select **h2oai-driverless**.

 .. image:: ../images/ngc_select_dai.png
    :align: center

3. At the bottom of the screen, select one of the H2O Driverless AI tags to retrieve the pull command. 

 .. image:: ../images/ngc_select_tag.png
    :align: center

4. On your NVIDIA DGX machine, open a command prompt and use the specified pull command to retrieve the Driverless AI image. For example:

 ::

   docker pull nvcr.io/nvidia_partners/h2o-driverless-ai:latest

5. Set up a directory for the version of Driverless AI on the host machine, replacing VERSION below with your Driverless AI Docker image version (for example, 1.4.0): 

 ::

    # Set up directory with the version name
    mkdir dai_rel_VERSION

6. Set up the data, log, license, and tmp directories on the host machine:

 ::

    # cd into the directory associated with the selected version of Driverless AI
    cd dai_rel_VERSION

    # Set up the data, log, license, and tmp directories on the host machine
    mkdir data
    mkdir log
    mkdir license
    mkdir tmp

7. At this point, you can copy data into the data directory on the host machine. The data will be visible inside the Docker container.

8. 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.

  :: 

    nvidia-persistenced --user <USER>
    nvidia-smi -pm 1

9. Start the Driverless AI Docker image. The following example starts the Driverless AI image that is tagged with ``latest``. Specify a different tag if you are using a version of Driverless AI other than ``latest``.

 ::

  nvidia-docker run \
     --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 \
     nvcr.io/h2oai/h2oai-driverless-ai:latest

 Driverless AI will begin running::

  --------------------------------
  Welcome to H2O.ai's Driverless AI
  ---------------------------------
       version: 1.4.0

  - 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

10. Connect to Driverless AI with your browser:

 ::

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

Stopping Driverless AI
~~~~~~~~~~~~~~~~~~~~~~

Use Ctrl+C to stop Driverless AI.


Upgrading Driverless AI
~~~~~~~~~~~~~~~~~~~~~~~

The steps for upgrading Driverless AI on an NVIDIA DGX system are similar to the installation steps. 

**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**: Use Ctrl+C to stop Driverless AI if it is still running.

1. On your NVIDIA DGX machine, create a directory for the new Driverless AI version. 

2. Copy the data, log, license, and tmp directories from the previous Driverless AI directory into the new Driverless AI directory.

3. Run ``docker pull nvcr.io/h2oai/h2oai-driverless-ai:latest`` to retrieve the latest Driverless AI version.

4. Start the Driverless AI Docker image. 

5. Connect to Driverless AI with your browser at http://Your-Driverless-AI-Host-Machine:12345.

