MONAILabel
MONAILabel copied to clipboard
TypeError for creating model path when running batch inference with custom monai bundle
Describe the bug I am running a custom segmentation model based on monai bundle and want to perform batch inference to speed up annotations. While single inference executed from within the monailabel slicer app works well, with batch inference I get the following error:
TypeError: join() argument must be str, bytes, or os.PathLike object, not 'list'
Server logs
myapp-monailabel-1 |
myapp-monailabel-1 | =============
myapp-monailabel-1 | == PyTorch ==
myapp-monailabel-1 | =============
myapp-monailabel-1 |
myapp-monailabel-1 | NVIDIA Release 22.10 (build 46164382)
myapp-monailabel-1 | PyTorch Version 1.13.0a0+d0d6b1f
myapp-monailabel-1 |
myapp-monailabel-1 | Container image Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
myapp-monailabel-1 |
myapp-monailabel-1 | Copyright (c) 2014-2022 Facebook Inc.
myapp-monailabel-1 | Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert)
myapp-monailabel-1 | Copyright (c) 2012-2014 Deepmind Technologies (Koray Kavukcuoglu)
myapp-monailabel-1 | Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu)
myapp-monailabel-1 | Copyright (c) 2011-2013 NYU (Clement Farabet)
myapp-monailabel-1 | Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou, Iain Melvin, Jason Weston)
myapp-monailabel-1 | Copyright (c) 2006 Idiap Research Institute (Samy Bengio)
myapp-monailabel-1 | Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, Samy Bengio, Johnny Mariethoz)
myapp-monailabel-1 | Copyright (c) 2015 Google Inc.
myapp-monailabel-1 | Copyright (c) 2015 Yangqing Jia
myapp-monailabel-1 | Copyright (c) 2013-2016 The Caffe contributors
myapp-monailabel-1 | All rights reserved.
myapp-monailabel-1 |
myapp-monailabel-1 | Various files include modifications (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved.
myapp-monailabel-1 |
myapp-monailabel-1 | This container image and its contents are governed by the NVIDIA Deep Learning Container License.
myapp-monailabel-1 | By pulling and using the container, you accept the terms and conditions of this license:
myapp-monailabel-1 | https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license
myapp-monailabel-1 |
myapp-monailabel-1 | Using PYTHONPATH=/opt:
myapp-monailabel-1 |
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: version = False
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: app = /apps/monaibundle
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: studies = /data/subset500/images
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: verbose = INFO
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: conf = [['models', 'myapp']]
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: host = 0.0.0.0
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: port = 8000
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: uvicorn_app = monailabel.app:app
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: ssl_keyfile = None
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: ssl_certfile = None
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: ssl_keyfile_password = None
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: ssl_ca_certs = None
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: workers = None
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: limit_concurrency = None
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: access_log = False
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: log_config = None
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: dryrun = False
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - USING:: action = start_server
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_API_STR =
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_PROJECT_NAME = MONAILabel
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_APP_DIR =
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_STUDIES =
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_AUTH_ENABLE = False
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_AUTH_DB =
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_APP_CONF = '{}'
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_TASKS_TRAIN = True
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_TASKS_STRATEGY = True
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_TASKS_SCORING = True
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_TASKS_BATCH_INFER = True
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_DATASTORE =
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_URL =
myapp-monailabel-1 | 2023-03-10 22:17:00,188 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_USERNAME =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_PASSWORD =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_API_KEY =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_CACHE_PATH =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_PROJECT =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_ASSET_PATH =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_DSA_ANNOTATION_GROUPS =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_USERNAME =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_PASSWORD =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_CACHE_PATH =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_QIDO_PREFIX = None
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_WADO_PREFIX = None
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_STOW_PREFIX = None
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_FETCH_BY_FRAME = False
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_CONVERT_TO_NIFTI = True
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_SEARCH_FILTER = '{"Modality": "CT"}'
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_CACHE_EXPIRY = 180
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_PROXY_TIMEOUT = 30.0
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DICOMWEB_READ_TIMEOUT = 5.0
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_AUTO_RELOAD = True
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_READ_ONLY = False
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_DATASTORE_FILE_EXT = '["*.nii.gz", "*.nii", "*.nrrd", "*.jpg", "*.png", "*.tif", "*.svs", "*.xml"]'
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_SERVER_PORT = 8000
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_CORS_ORIGINS = '[]'
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_SESSIONS = True
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_SESSION_PATH =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_SESSION_EXPIRY = 3600
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_INFER_CONCURRENCY = -1
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_INFER_TIMEOUT = 600
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_TRACKING_ENABLED = True
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_TRACKING_URI =
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_ZOO_SOURCE = github
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_ZOO_REPO = Project-MONAI/model-zoo/hosting_storage_v1
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_ZOO_AUTH_TOKEN = ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
myapp-monailabel-1 | 2023-03-10 22:17:00,189 - ENV SETTINGS:: MONAI_LABEL_AUTO_UPDATE_SCORING = True
myapp-monailabel-1 | 2023-03-10 22:17:00,189 -
myapp-monailabel-1 | [2023-03-10 22:17:00,456] [1] [MainThread] [INFO] (uvicorn.error:75) - Started server process [1]
myapp-monailabel-1 | [2023-03-10 22:17:00,456] [1] [MainThread] [INFO] (uvicorn.error:45) - Waiting for application startup.
myapp-monailabel-1 | [2023-03-10 22:17:00,456] [1] [MainThread] [INFO] (monailabel.interfaces.utils.app:37) - Initializing App from: /apps/monaibundle; studies: /data/subset500/images; conf: {'models': 'myapp'}
myapp-monailabel-1 | [2023-03-10 22:17:00,486] [1] [MainThread] [INFO] (monailabel.utils.others.class_utils:57) - Subclass for MONAILabelApp Found: <class 'main.MyApp'>
myapp-monailabel-1 | [2023-03-10 22:17:03,238] [1] [MainThread] [INFO] (monailabel.utils.others.generic:301) - +++ Adding Bundle from Local: myapp => /apps/monaibundle/model/myapp
myapp-monailabel-1 | [2023-03-10 22:17:03,239] [1] [MainThread] [INFO] (monailabel.utils.others.generic:313) - +++ Using Bundle Models: ['myapp']
myapp-monailabel-1 | [2023-03-10 22:17:03,239] [1] [MainThread] [INFO] (monailabel.interfaces.app:134) - Init Datastore for: /data/subset500/images
myapp-monailabel-1 | [2023-03-10 22:17:03,240] [1] [MainThread] [INFO] (monailabel.datastore.local:130) - Auto Reload: True; Extensions: ['*.nii.gz', '*.nii', '*.nrrd', '*.jpg', '*.png', '*.tif', '*.svs', '*.xml']
myapp-monailabel-1 | [2023-03-10 22:17:03,304] [1] [MainThread] [INFO] (monailabel.datastore.local:577) - Invalidate count: 0
myapp-monailabel-1 | [2023-03-10 22:17:03,304] [1] [MainThread] [INFO] (monailabel.datastore.local:151) - Start observing external modifications on datastore (AUTO RELOAD)
myapp-monailabel-1 | [2023-03-10 22:17:03,495] [1] [MainThread] [INFO] (main:64) - +++ Adding Inferer:: myapp => <monailabel.tasks.infer.bundle.BundleInferTask object at 0x7f27d71e6d90>
myapp-monailabel-1 | [2023-03-10 22:17:03,515] [1] [MainThread] [INFO] (main:78) - +++ Adding Trainer:: myapp => <monailabel.tasks.train.bundle.BundleTrainTask object at 0x7f27ced2dd90>
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [1] [MainThread] [INFO] (main:88) - Active Learning Strategies:: ['random', 'first']
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [1] [MainThread] [INFO] (monailabel.utils.sessions:51) - Session Path: /root/.cache/monailabel/sessions
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [1] [MainThread] [INFO] (monailabel.utils.sessions:52) - Session Expiry (max): 3600
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [1] [MainThread] [INFO] (monailabel.interfaces.app:468) - App Init - completed
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [1] [MainThread] [INFO] (timeloop:60) - Starting Timeloop..
myapp-monailabel-1 | Allow Origins: ['*']
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [timeloop] [INFO] Starting Timeloop..
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [timeloop] [INFO] Registered job <function MONAILabelApp.on_init_complete.<locals>.run_scheduler at 0x7f27d6e39c10>
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [timeloop] [INFO] Timeloop now started. Jobs will run based on the interval set
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [1] [MainThread] [INFO] (timeloop:42) - Registered job <function MONAILabelApp.on_init_complete.<locals>.run_scheduler at 0x7f27d6e39c10>
myapp-monailabel-1 | [2023-03-10 22:17:03,516] [1] [MainThread] [INFO] (timeloop:63) - Timeloop now started. Jobs will run based on the interval set
myapp-monailabel-1 | [2023-03-10 22:17:03,517] [1] [MainThread] [INFO] (uvicorn.error:59) - Application startup complete.
myapp-monailabel-1 | [2023-03-10 22:17:03,517] [1] [MainThread] [INFO] (uvicorn.error:206) - Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
myapp-monailabel-1 | [2023-03-10 22:17:12,199] [1] [MainThread] [INFO] (monailabel.utils.async_tasks.task:41) - Batch_infer request: {'model': 'myapp', 'images': <BatchInferImageType.IMAGES_ALL: 'all'>, 'device': 'cuda', 'multi_gpu': True, 'gpus': 'all', 'logging': 'WARNING', 'save_label': True, 'label_tag': 'original', 'max_workers': 1, 'max_batch_size': 0, 'bundle_path': '/apps/monaibundle/model/myapp'}
myapp-monailabel-1 | [2023-03-10 22:17:12,200] [1] [ThreadPoolExecutor-2_0] [INFO] (monailabel.utils.async_tasks.utils:49) - Before:: /opt:
myapp-monailabel-1 | [2023-03-10 22:17:12,202] [1] [ThreadPoolExecutor-2_0] [INFO] (monailabel.utils.async_tasks.utils:53) - After:: /opt::/apps/monaibundle/model/myapp
myapp-monailabel-1 | [2023-03-10 22:17:12,203] [1] [ThreadPoolExecutor-2_0] [INFO] (monailabel.utils.async_tasks.utils:65) - COMMAND:: /opt/conda/bin/python -m monailabel.interfaces.utils.app -m batch_infer -r {"model":"myapp","images":"all","device":"cuda","multi_gpu":true,"gpus":"all","logging":"WARNING","save_label":true,"label_tag":"original","max_workers":1,"max_batch_size":0,"bundle_path":"/apps/monaibundle/model/myapp"}
myapp-monailabel-1 | [2023-03-10 22:17:12,333] [116] [MainThread] [INFO] (__main__:37) - Initializing App from: /apps/monaibundle; studies: /data/subset500/images; conf: {'models': 'myapp'}
myapp-monailabel-1 | [2023-03-10 22:17:15,459] [116] [MainThread] [INFO] (monailabel.utils.others.class_utils:57) - Subclass for MONAILabelApp Found: <class 'main.MyApp'>
myapp-monailabel-1 | [2023-03-10 22:17:18,059] [116] [MainThread] [INFO] (monailabel.utils.others.generic:301) - +++ Adding Bundle from Local: myapp => /apps/monaibundle/model/myapp
myapp-monailabel-1 | [2023-03-10 22:17:18,059] [116] [MainThread] [INFO] (monailabel.utils.others.generic:313) - +++ Using Bundle Models: ['myapp']
myapp-monailabel-1 | [2023-03-10 22:17:18,059] [116] [MainThread] [INFO] (monailabel.interfaces.app:134) - Init Datastore for: /data/subset500/images
myapp-monailabel-1 | [2023-03-10 22:17:18,059] [116] [MainThread] [INFO] (monailabel.datastore.local:130) - Auto Reload: True; Extensions: ['*.nii.gz', '*.nii', '*.nrrd', '*.jpg', '*.png', '*.tif', '*.svs', '*.xml']
myapp-monailabel-1 | [2023-03-10 22:17:18,100] [116] [MainThread] [INFO] (monailabel.datastore.local:577) - Invalidate count: 0
myapp-monailabel-1 | [2023-03-10 22:17:18,100] [116] [MainThread] [INFO] (monailabel.datastore.local:151) - Start observing external modifications on datastore (AUTO RELOAD)
myapp-monailabel-1 | [2023-03-10 22:17:18,197] [116] [MainThread] [INFO] (main:64) - +++ Adding Inferer:: myapp => <monailabel.tasks.infer.bundle.BundleInferTask object at 0x7fd0081145b0>
myapp-monailabel-1 | [2023-03-10 22:17:18,217] [116] [MainThread] [INFO] (main:78) - +++ Adding Trainer:: myapp => <monailabel.tasks.train.bundle.BundleTrainTask object at 0x7fcec42411c0>
myapp-monailabel-1 | [2023-03-10 22:17:18,217] [116] [MainThread] [INFO] (main:88) - Active Learning Strategies:: ['random', 'first']
myapp-monailabel-1 | [2023-03-10 22:17:18,217] [116] [MainThread] [INFO] (monailabel.utils.sessions:51) - Session Path: /root/.cache/monailabel/sessions
myapp-monailabel-1 | [2023-03-10 22:17:18,217] [116] [MainThread] [INFO] (monailabel.utils.sessions:52) - Session Expiry (max): 3600
myapp-monailabel-1 | [2023-03-10 22:17:18,217] [116] [MainThread] [INFO] (monailabel.interfaces.tasks.batch_infer:59) - Total number of images for batch inference: 493; Max Batch Size: 0; Label Tag: original
myapp-monailabel-1 | [2023-03-10 22:17:18,299] [116] [MainThread] [INFO] (monailabel.interfaces.tasks.batch_infer:132) - Running inference for image id 1.2.826.0.1.3680043.10.474.1147302139452080037190733417686299226
myapp-monailabel-1 | Traceback (most recent call last):
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/runpy.py", line 194, in _run_module_as_main
myapp-monailabel-1 | return _run_code(code, main_globals, None,
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/runpy.py", line 87, in _run_code
myapp-monailabel-1 | exec(code, run_globals)
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/site-packages/monailabel/interfaces/utils/app.py", line 128, in <module>
myapp-monailabel-1 | run_main()
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/site-packages/monailabel/interfaces/utils/app.py", line 117, in run_main
myapp-monailabel-1 | result = a.batch_infer(request)
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/site-packages/monailabel/interfaces/app.py", line 344, in batch_infer
myapp-monailabel-1 | return self._batch_infer(request, datastore if datastore else self.datastore(), self.infer)
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/site-packages/monailabel/interfaces/tasks/batch_infer.py", line 116, in __call__
myapp-monailabel-1 | res = run_infer_task(t, datastore, infer)
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/site-packages/monailabel/interfaces/tasks/batch_infer.py", line 133, in run_infer_task
myapp-monailabel-1 | r = infer(req, datastore)
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/site-packages/monailabel/interfaces/app.py", line 306, in infer
myapp-monailabel-1 | result_file_name, result_json = task(request)
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/site-packages/monailabel/tasks/infer/basic_infer.py", line 272, in __call__
myapp-monailabel-1 | os.path.join(os.path.dirname(self.path[0]), req.get("model_filename", "model.pt"))
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/posixpath.py", line 90, in join
myapp-monailabel-1 | genericpath._check_arg_types('join', a, *p)
myapp-monailabel-1 | File "/opt/conda/lib/python3.8/genericpath.py", line 152, in _check_arg_types
myapp-monailabel-1 | raise TypeError(f'{funcname}() argument must be str, bytes, or '
myapp-monailabel-1 | TypeError: join() argument must be str, bytes, or os.PathLike object, not 'list'
Expected behavior
A running batch inference, where the model creates segmentations for each image in the dataset and stores them in the labels/original
folder.
Environment I am using the latest docker image of MONAILabel. The Docker file is just:
FROM projectmonai/monailabel:latest
The app is initialized with docker compose
version: "3.1"
services:
monailabel:
build: .
command: >
monailabel start_server
--app /apps/monaibundle
--studies /data/subset500/images
--conf models myapp
ports:
- 9147:8000
restart: unless-stopped
volumes:
- ${WORKSPACE}/${LOG_DIR}:/app/radiology/logs/
- ${WORKSPACE}/data/:/data
- ${WORKSPACE}/apps:/apps
- ${WORKSPACE}/bundle:/apps/monaibundle/model/myapp/
environment:
- MONAI_ZOO_AUTH_TOKEN=${MONAI_ZOO_AUTH_TOKEN}
ipc: host
ulimits:
memlock:
soft: -1
hard: -1
stack:
soft: 67108864
hard: 67108864
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]