Skip to content

jolibrain/dd_platform_docker

Repository files navigation

DeepDetect Platform Docker

Installation

# Setup platform project name, directory and architecture
export PROJECT_NAME=dd_platform
export DD_PLATFORM=$HOME/deepdetect
export ARCH=cpu # gpu also available

# Install platform repository
git clone https://github.com/jolibrain/dd_platform_docker.git \
    ${DD_PLATFORM}

# Go to directory
cd ${DD_PLATFORM}/code/${ARCH}/

# Start platform docker containers
CURRENT_UID=$(id -u):$(id -g) MUID=$(id -u) \
    docker-compose -p $PROJECT_NAME up -d

# Go to http://localhost:1912

Connecting to an existing DeepDetect server

If you need to connect a new DeepDetect server to the platform, you must modify the nginx configuration to access to this server, and the platform-ui configuration to update the UI.

config/nginx/nginx.conf

Set a new upstream in the http section:

upstream UPSTREAM_NAME {
	least_conn;
	server DD_HOST:DD_PORT max_fails=3 fail_timeout=30s;
}

Set a new location in the server section:

location ~ /api/SERVER_NAME/(?<url>.*) {
	proxy_pass http://UPSTREAM_NAME/$url$is_args$args;
	proxy_http_version 1.1;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection 'upgrade';
	proxy_set_header Host $host;
	proxy_cache_bypass $http_upgrade;
}

config/platform_ui/config.json

In deepdetect.servers array, add the following item:

{
  "name": "SERVER_NAME",
  "settings": {
    "path": "/api/SERVER_NAME",
    "isWritable": true
  }
}

The flag isWritable will allow you to create and delete services on this server from the platform_ui web interface.

Monitoring another GPU

In order to monitor a GPU, you'll need to modify the platform_ui config file to update the interface, and the nginx config to let the interface access it.

config/nginx/nginx.conf

Set a new upstream in the http section:

upstream gpu_stat_GPU_NAME {
  least_conn;
  server GPU_STATS_HOST:GPU_STATS_PORT max_fails=3 fail_timeout=30s;
}

Usually, GPU_STATS_PORT is 12345

Set a new location in the server section:

location ~ /gpu/ENDPOINT {
  proxy_pass http://gpu_stat_GPU_NAME/$url$is_args$args;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection 'upgrade';
  proxy_set_header Host $host;
  proxy_cache_bypass $http_upgrade;
}

config/platform_ui/config.json

In gpuInfo.servers array, add the following item:

{
  "name": "GPU_NAME",
  "url": "/gpu/ENDPOINT"
}

Configuration of docker image type and versions

Docker-compose uses the latest tag for all docker images that correspond to the latest stable version.

You can select the wanted version with these following environment variables:

DD_SERVER_IMAGE=gpu_torch
DD_SERVER_TAG=v0.14.0
DD_PLATFORM_UI_TAG=latest
DD_JUPYTER_TAG=latest
DD_FILEBROWSER_TAG=latest

Allow direct connection to deepdetect API

You can add to deepdetect container of code/gpu/docker-compose.yml:

    ports:
      - "127.0.0.0:12345:8080"