RED Container Engines

RED Container Engines are used to execute programs in a virtual environment like a docker container. Currently only Docker is supported as a container engine in Curious Containers.

Docker

Docker makes it possible to run the applications specified in the RED file in an isolated and secure environment with optional resource limitations. To run your application inside a docker container you have to specify which docker image to use. Information about how to build such an image can be found in the Container Images documentation.

Nvidia GPUs

If you are using the local RED execution engine ccfaice and want your application to use Nvidia GPUs for CUDA support, you have to install the proprietary Nvidia GPU driver and the Nvidia Container Toolkit or its predecessor Nvidia-Docker 2.

It is not required to have CUDA installed on the host operating system, but it must be installed in the container image. See the CUDA section in the container images documentation for more information on building compatible images.

Settings

Access Type Optional Default Description
image dict no   The image
image.url string no   The URL of the image
image.auth dict yes   Authentication information
image.auth.username string no   Username
image.auth.password string no   Password
ram int CC-FAICE: yes; CC-Agency: no   The RAM limitation for the container in MB
gpus dict yes   Make Nvidia GPUs available in a Docker container
gpus.vendor string no   Currently only “nvidia” allowed
gpus.count int if gpus.devices is specified   The number of GPUs to allocate
gpus.devices list if gpus.count is specified   A list of GPU devices with specified requirements
gpus.devices.${item}.vramMin int no   The minimal VRAM that must be present in MB

Example Configuration

container:
  engine: "docker"
  settings:
    image:
      url: "example-image"
      auth:
        username: "username"
        password: "password"
    ram: 256

Example Configurations with Nvidia GPUs

container:
  engine: "docker"
  settings:
    image:
      url: "example-image"
      auth:
        username: "username"
        password: "password"
    ram: 256
    gpus:
      vendor: "nvidia"
      devices:
        - vramMin: 256
        - vramMin: 256

The executing container will only use 256 MB RAM and two GPUs with at least 256 MB VRAM. A vramMax parameter does not exist, because GPUs are always allocated as a complete device.

container:
  engine: "docker"
  settings:
    image:
      url: "example-image"
      auth:
        username: "username"
        password: "password"
    ram: 256
    gpus:
      vendor: "nvidia"
      count: 1

This is an alternative way to specify the number of required GPUs, without specifying vramMin for each device.