Docker compose error for webodm with gpu

I am want to see if I can get GPU acceleration in webodm. My docker installation passes the sanity check.


 docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
Thu Jul 21 18:41:18 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GRID A100X-20C      On   | 00000000:00:06.0 Off |                    0 |
| N/A   N/A    P0    N/A /  N/A |      2MiB / 20480MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

But when I start the docker with --gpu option I am getting this. Any suggestions?

./webodm.sh --gpu start 
00:06.0 3D controller: NVIDIA Corporation Device 20b0 (rev a1)
GPU_NVIDIA has been found
Checking for docker...   OK
Checking for docker-compose...   OK
Starting WebODM...

Using the following environment:
================================
Host: localhost
Port: 8000
Media directory: appmedia
SSL: NO
SSL key: 
SSL certificate: 
SSL insecure port redirect: 80
Celery Broker: redis://broker
Default Nodes: 1
================================
Make sure to issue a ./webodm.sh down if you decide to change the environment.

docker-compose -f docker-compose.yml -f docker-compose.nodeodm.gpu.nvidia.yml up --scale node-odm=1
ERROR: The Compose file './docker-compose.nodeodm.gpu.nvidia.yml' is invalid because:
Unsupported config option for services.node-odm: 'deploy'

The last time this happened to me it was because i had tempered with the docker-compose.nodeodm.gpu.nvidia.yml file. Check if the content is the default.

I cloned the repo few minutes ago and didn’t tamper with anything. Everything is as is…

Does the following work?:

./webodm.sh down && ./webodm.sh --gpu start

Nope, same message:


~/WebODM$ ./webodm.sh down && ./webodm.sh --gpu start
Checking for docker...   OK
Checking for docker-compose...   OK
Tearing down WebODM...
docker-compose -f docker-compose.yml -f docker-compose.nodeodm.yml -f docker-compose.nodemicmac.yml down --remove-orphans
Removing network webodm_default
WARNING: Network webodm_default not found.
00:06.0 3D controller: NVIDIA Corporation Device 20b0 (rev a1)
GPU_NVIDIA has been found
Checking for docker...   OK
Checking for docker-compose...   OK
Starting WebODM...

Using the following environment:
================================
Host: localhost
Port: 8000
Media directory: appmedia
SSL: NO
SSL key: 
SSL certificate: 
SSL insecure port redirect: 80
Celery Broker: redis://broker
Default Nodes: 1
================================
Make sure to issue a ./webodm.sh down if you decide to change the environment.

docker-compose -f docker-compose.yml -f docker-compose.nodeodm.gpu.nvidia.yml up --scale node-odm=1
ERROR: The Compose file './docker-compose.nodeodm.gpu.nvidia.yml' is invalid because:
Unsupported config option for services.node-odm: 'deploy'

I do it this way:

  1. Run the GPU nodeODM image separately
    E.g. >docker run -dp 3001:3000 --gpus all --name nodeodmgpu opendronemap/nodeodm:gpu
  2. Start the WebODM image “normally”
    E.g. >./webodm.sh start
  3. Manually add the GPU nodeODM processing node via the WebODM GUI
  4. Select that node when configuring the project task
2 Likes

Thanks. This seems to work, thank you!


docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED         STATUS                PORTS                                         NAMES
9a0001bfe521   opendronemap/webodm_webapp   "/bin/bash -c 'chmod??"   3 minutes ago   Up 3 minutes          0.0.0.0:8000->8000/tcp, :::8000->8000/tcp     webapp
586bf26f25d0   opendronemap/webodm_webapp   "/bin/bash -c '/webo??"   3 minutes ago   Up 3 minutes                                                        worker
98993ea1b0eb   opendronemap/nodeodm         "/usr/bin/node /var/??"   4 minutes ago   Up 3 minutes          0.0.0.0:49154->3000/tcp, :::49154->3000/tcp   webodm_node-odm_1
b92959a2ddf8   redis                        "docker-entrypoint.s??"   4 minutes ago   Up 3 minutes          6379/tcp                                      broker
ac2726863c47   opendronemap/webodm_db       "docker-entrypoint.s??"   4 minutes ago   Up 3 minutes          0.0.0.0:49153->5432/tcp, :::49153->5432/tcp   db
56443438edb2   opendronemap/nodeodm:gpu     "/usr/bin/node /var/??"   5 minutes ago   Up 5 minutes          0.0.0.0:3001->3000/tcp, :::3001->3000/tcp     nodeodmgpu
61bbae11aeff   guacamole/guacamole          "/opt/guacamole/bin/??"   8 days ago      Up 3 days             0.0.0.0:49528->8080/tcp, :::49528->8080/tcp   guacamole_exo-guac-guacamole_1
4e99ceed0c18   guacamole/guacd-dev          "/bin/sh -c '/usr/lo??"   8 days ago      Up 3 days (healthy)   4822/tcp                                      guacamole_exo-guac-guacd_1
2 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.