Getting started with VALDI
Once you're logged in to VALDI, it's straightforward to get a task running on the network, especially if you already have your application or program containerized using Docker.
Create a Docker image
In order to run an application on VALDI, it must be packaged as a Docker image. For more information on building Docker images, please refer to the official Docker documentation.
Note: If your computer is running on Apple Silicon or any architecture other than AMD64, please ensure that you specify
the --platform=linux/amd64 flag when building or pulling Docker images for use on VALDI.
For the purposes of this guide, we will use the pre-existing nvidia/cuda:11.6.2-base-ubuntu20.04 Docker image. It can
be obtained by running the following command:
docker pull nvidia/cuda:11.6.2-base-ubuntu20.04
Create a repository
You'll need to create a Docker repository in the VALDI registry in order to push images. Select "Create new" under the Repositories section of the Dashboard.
Enter the name of your repository, and if desired, a short description of the purpose of the application or program you
intend to store there. For our example, we're recreating the nvidia/cuda repository, to store the image we pulled from
the nvidia/cuda repository on Docker Hub.
Push your image
Once you create the repository, you'll be returned to the dashboard. If you navigate back into the newly created repository, you'll see the Name and Description you specified, as well as a unique Repository ID. Finally, at the bottom, a sequence of commands similar to the following is shown.
docker login -u '253u686385c914en527123fc8245ca79+r4bb75c6rfbe931d2b9c2e0b18b4bE940' -p 'BR33ZEK0FZZ8KJ1XWKJ91E0HK5YO74DUPSBIP6ABYRQOB4F70DVN0Q85220BV5IX' registry.valdi.ai
docker tag <YOUR_IMAGE_ID> registry.valdi.ai/253u686385c914en527123fc8245ca79/nvidia/cuda:<YOUR_TAG>
docker push registry.valdi.ai/253u686385c914en527123fc8245ca79/nvidia/cuda:<YOUR_TAG>
Copy and paste the commands, then replace <YOUR_IMAGE_ID> with the ID of the Docker image from your local device
that you wish to push. Replace <YOUR_TAG> with any tag you choose. A version number is often included in a tag, among
other information.
Once you push the image from your local device, refresh the page to see it in the dashboard.
Later versions of the image can be pushed using the same set of commands with a different tag.
Configure and submit a task
Once you have a repository which contains at least one image, you can configure a task, or service, to run on the VALDI network. From the main dashboard, select "Launch new" under the Services section.
From the "Repository" drop-down menu, select the repository on which you want to base your task. Next, choose the specific image tag of interest from the "Tag" drop-down menu.
Upon specifying the repository and image, the number of devices on the network ready and available to process your task will be shown. More advanced filtering options can be specified by expanding the "Advanced Configuration" section.
If there are devices available, simply click "Launch service" to deploy your Docker image on VALDI and run your task.
Advanced configuration
In many cases, you will want to run a task that requires a device with some minimum technical specifications, such as a certain number of CPU cores, a particular amount of RAM, or even a specific type of GPU, among other things. For this purpose, VALDI supports the following device filtering options. Each attribute is optional. For any not relevant to your task, simply leave the field blank.
- Minimum number of CPU cores: An integer number specifying the minimum number of CPU cores (not hyper-threads) that the device should have.
- Minimum RAM: An integer number specifying the minimum amount of RAM, in GB, that the device should have.
- Docker run arguments: Any parameters you wish to pass to your Docker container upon running it should be specified here, as a comma-separated list.
- GPU Required: A checkbox indicating whether you expect the device to have a GPU available (e.g., for use with libraries like TensorFlow). When this checkbox is selected, a drop-down menu will become visible, allowing you to optionally choose a specific GPU you want to use, of those currently available on the network.
- Minimum VRAM: An integer number specifying the minimum amount of video RAM, in GB, that the GPU should have. This
field is only visible when
GPU Requiredis checked. - Minimum CUDA version: A version number specifying the minimum version of CUDA that is acceptable for your task.
It should be formatted like 11.3 or 11.3.1, i.e., the patch version is optional. This field is only visible when
GPU Requiredis checked. - Maximum CUDA version: A version number specifying the maximum version of CUDA that is acceptable for your task.
It should be formatted like 11.6 or 11.6.2, i.e., the patch version is optional. This field is only visible when
GPU Requiredis checked.
Note: Always try to run your task without specifying minimum or maximum CUDA versions to start. In most cases, you do not (and should not) need to specify minimum or maximum CUDA versions, and specifying them can have the effect of artificially limiting the number of devices your task matches with.
Monitor task progress
Once your task is submitted to the network, it will progress through the following sequence of possible states:
- Queued
: Your task is waiting for a device to pick it up.
- Preparing
: A device has picked up your task and the device's specifications and availability are being verified.
- Deploying
: The assigned device is pulling down your Docker image from the VALDI registry. Depending on the size of your image, this step might take a while.
- Running
: Your task is actively running. Note that the ability to manually stop a task is not yet supported.
- Completed
: The task has finished running successfully.
- Failed
: A problem was encountered when running your task. Tasks are automatically retried several times before being labeled as failed.
View task output
In the near future, users will have access to real-time logs for any tasks in the Running state. For now, logs are
only available after a task reaches the Completed state. They can viewed by expanding task details from the main
dashboard.
A task was run using the example nvidia/cuda:11.6.2-base-ubuntu20.04 image from earlier, with
nvidia-smi,--query-gpu=name,--format=csv specified as a Docker run argument, and GPU Required checked. The following
output logs appear upon completion, verifying that the Docker container can interface with the device's GPU(s).
name
NVIDIA GeForce GTX 1080 Ti
NVIDIA GeForce GTX 1080 Ti
NVIDIA GeForce GTX 1080 Ti
NVIDIA GeForce GTX 1080 Ti