Installation scripts for H2O driverless AI
Launch order
- install.sh (requires sudo)
- need to exit and re-ssh into machine for "docker usage without sudo" to take effect
- for GPU, refer to init-gpu.sh
- dropbox.sh (optional)
- start.sh
Installation scripts for H2O driverless AI
Launch order
| # Note 1: At the step of installing dropbox, open link displayed in screen to link your dropbox account | |
| # for convenience, link the driverless AI folders to a dropbox folder | |
| # This script is not meant to be run automatically in one shot | |
| # Instead, run it manually one step at a time, modifying steps as needed | |
| ############################# | |
| # install requirements for dropbox headless for convenience to upload files into driverless AI | |
| # https://www.dropbox.com/install-linux | |
| sudo apt-get -qq -y install \ | |
| python | |
| sudo wget https://www.dropbox.com/download?dl=packages/dropbox.py -O /usr/bin/dropbox | |
| sudo chmod +x /usr/bin/dropbox | |
| # mount a volume from /dev/xvdf into /mnt/ec2vol | |
| # and put the dropbox folder there | |
| # to format a new volume: mkfs -t ext4 /dev/xvdf | |
| sudo mkdir /mnt/ec2vol | |
| sudo mount /dev/xvdf /mnt/ec2vol | |
| sudo chown ubuntu:ubuntu /mnt/ec2vol -R | |
| # This is where the prompt in Note 1 will show up | |
| # move dropbox folder to /mnt/ec2vol | |
| cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf - | |
| ~/.dropbox-dist/dropboxd # manually click the link, when done linking the account, press Ctrl+C to terminate | |
| # selective sync | |
| # http://rkulla.blogspot.com/2014/03/headless-dropbox.html | |
| dropbox exclude add "AEE-Office" | |
| dropbox exclude add "AEE-Stores" | |
| dropbox exclude add "Akiki VHS" | |
| dropbox exclude add "Lebanon2014_Jim" | |
| # start again | |
| dropbox start | |
| #------------------------------------------------------------------------------------ | |
| # migrate an existing dropbox folder | |
| # NOT SURE IF THIS WORKS. HAVE FAILED EVERYTIME SO FAR | |
| watch dropbox status # wait till it starts syncing, then do dropbox stop | |
| mv ~/Dropbox /mnt/ec2vol/Dropbox | |
| ln -s /mnt/ec2vol/Dropbox ~/Dropbox | |
| # At this step, make sure no files get "deleted" by dropbox unintentionally | |
| # If it happens, log into the web interface, click "show deleted files", select them, and click "restore" | |
| dropbox start | |
| #------------------------------------------------------------------------------------ | |
| # link the dropbox folder to the /var/lib/h2o-driverless-ai folder that will be mount into the docker image | |
| mkdir ~/Dropbox/Shadi_Datasets/h2o-driverless-ai/{mkdir,log,license} | |
| cd /var/lib | |
| sudo mv driverless-ai-dir driverless-ai-dir.bkp | |
| sudo ln -s ~/Dropbox/Shadi_Datasets/h2o-driverless-ai/ . | |
| cd - |
| # Script to install driverless AI from H2O | |
| # Usage | |
| # wget https://gist.github.com/shadiakiki1986/71f49c4051b68a2a9d6e449b62d00a8e/raw/install.sh -O -|sudo bash | |
| # | |
| # Requirements | |
| # needs to be used with sudo to run | |
| # minimum free disk space 13 GB | |
| # ubuntu 16 or 17 | |
| # A dropbox account for simplifying of uploading files into driverless AI's data folder | |
| # Adds the user "ubuntu" to the docker group to be able to run docker without sudo | |
| # | |
| # Note: permalink from https://gist.github.com/atenni/5604615 | |
| ###################################################################################################################################################################### | |
| set -e | |
| export DEBIAN_FRONTEND=noninteractive | |
| # install docker | |
| # prepend h2o's documentation with getting the docker's official gpg key | |
| # https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#os-requirements | |
| apt-get -qq -y remove docker docker-engine docker.io | |
| apt-get -qq -y update | |
| apt-get -qq -y install \ | |
| apt-transport-https \ | |
| ca-certificates \ | |
| curl \ | |
| software-properties-common | |
| curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - | |
| apt-key fingerprint 0EBFCD88 | |
| # continue with h2o's documentation | |
| add-apt-repository \ | |
| "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ | |
| $(lsb_release -cs) \ | |
| stable" | |
| apt-get -qq -y update | |
| apt-get -qq -y install docker-ce | |
| docker run hello-world | |
| # add user to docker group | |
| gpasswd -a ubuntu docker | |
| # Install nvidia-docker. Required only if GPU is used | |
| 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 | |
| # without this, the nvidia-docker run... below would fail | |
| apt-get -qq -y install nvidia-modprobe | |
| # download the driverless ai docker image (2GB) | |
| wget -P /tmp https://s3-us-west-2.amazonaws.com/h2o-internal-release/docker/driverless-ai-docker-runtime-rel-0.8.2.gz | |
| # load it in docker (slow command) | |
| sleep 1 # is this necessary for the wget to move the file to /tmp ? Not sure | |
| docker load < /tmp/driverless-ai-docker-runtime-rel*.gz # <<< does this only work with bash and not /bin/sh? | |
| rm /tmp/driverless-ai-docker-runtime-rel*.gz | |
| # prepare folders | |
| mkdir -p /var/lib/h2o-driverless-ai/{data,log,license} |
| #!/bin/bash | |
| # launch h2o.ai locally | |
| # mounts the data/log/license directories from /var/lib/h2o-driverless-ai | |
| # publishes to port 3001 | |
| # cannot use this with nvidia-modprobe failing with no GPU | |
| # set -e | |
| ROOT=/var/lib/h2o-driverless-ai | |
| RUNNER=nvidia-docker | |
| # the below will exit with non-0 if no gpu | |
| nvidia-modprobe | |
| if [ $? -eq 1 ]; then | |
| echo "no gpu found" | |
| RUNNER=docker | |
| fi | |
| echo "launch on port 3001. Check http://ip:3001" | |
| $RUNNER run \ | |
| --rm \ | |
| -u `id -u`:`id -g` \ | |
| -p 3001:12345 \ | |
| -v $ROOT/data:/data \ | |
| -v $ROOT/log:/log \ | |
| -v $ROOT/license:/license \ | |
| opsh2oai/h2oai-runtime |
| # This is an example script of requirements for running a scorer.zip file | |
| # exported from h2o driverless-ai | |
| # Assumes filename is scorer.zip | |
| ############################################# | |
| # install python3.6 requirement | |
| sudo add-apt-repository ppa:jonathonf/python-3.6 | |
| sudo apt-get update | |
| sudo apt-get install python3.6 python3.6-dev | |
| # install some openmp stuff, and fix a missing link | |
| sudo apt-get install libomp5 | |
| sudo ln -s /usr/lib/x86_64-linux-gnu/libomp.so.5 /usr/lib/x86_64-linux-gnu/libomp.so | |
| unzip scorer.zip # could use -d /path/to/another/folder | |
| cd python_module | |
| # instead of using the run_example.sh which uses virtualenv | |
| # use pew, because pew is awesome | |
| # https://github.com/berdario/pew | |
| sudo pip3 install pew | |
| pew new -r requirements.txt --python=python3.6 H2O_SCORER | |
| python example.py |
You're welcome :)