Back to Projects List
3DSlicerHub
Key Investigators
- Rafael Nebot (ITC - Instituto Tecnológico de Canarias)
- Paula Moreno (ITC)
- Juan Ruiz (ULPGC)
- Idafen Santana (ULPGC)
- Steve Pieper
Project Description
Multiuser approach to Slicer in a browser, based on Slicer Docker
Main Features
- Browser based 3D Slicer using Slicer Docker, similar to AWS AppStream.
- Per-user workspace, with persistent data and configuration.
- Session control, including quick URL sharing convenience, for educational and collaborative purposes.
- Authentication using OpenLDAP.
Objective
- Use private clouds with GPU virtual machines.
- Make the software configuration persistent after deleting the container.
- Migrate from Docker+DockerCompose to Kubernetes+podman.
- Set the size of 3DSlicer web window to fit the size of the user’s screen and other novnc settings.
- USB over IP + OpenIGTLink + Slicer in Docker.
Approach and Plan
- (o.1) GPU in Slicer Image: modify Slicer image to add nVidia drivers.
- (o.1) GPU using separate MONAI Label images: analyze and design how to improve session manager to allow users to launch “pod-sets” (e.g. Slicer+MONAI, Slicer, Slicer+Orthanc, …).
- (o.2) Share current status of the feataure with people knowing about Slicer to fix the issue “saving config in laptop works, in VM it does not”.
- (o.3) Play with “kubernetes” package to familiariaze ourselves with the capabilities.
- (o.3) Rewrite parts of 3d slicer hub accessing to containers to be able to work with “kubernetes” Python package.
- (o.3) Start testing
- (o.4) Gather information with participants knowing about websockify.
- (o.5) Compile information about IGT protocol with participants in NAMIC.
- (o.5) Modify design of 3dslicerhub architecture to enable IGT capabilities for Slicer containers
Progress and Next Steps
- Slicer in Docker with GPU.
- Approach: modify root image to one by nVidia.
- Slicer works and detects the GPU.
- But X11 server and the window manager do not start correctly
- Next:
- from AWS/GCE instance image build scripts (https://github.com/pieper/SlicerMachines) extract X11 config sections to prepare nVidia configuration.
- modify to ensure the image works on computers without GPU.
- fork original repository (https://github.com/pieper/SlicerDockers), prepare pull request.
- use as base image for SlicerHub spawner.
- Persistence of configuration
- A bug in the preparation of Slicer.ini was detected and solved.
- A custom Slicer image is built using a Slicer.ini containing a connection to the Orthanc server of the OpenDx28 platform.
- Migration from Docker Compose to Kubernetes
- Study of Kubernetes. Two “technology scope” adjustments:
- “podman” not ready for production, Docker used (also better for images with CUDA support).
- Use of “kubectl” instead of Python package (direct REST calls).
- Refactor current 3dslicerhub to enable switching between Container Orchestrator managers: baseline implementation, new implementation.
- Efforts adapting for K8s concepts: because of the different scopes of Docker Compose and Kubernetes, concepts do not match exactly.
- Next:
- Find ways, using kubectl and resource files to (see diagram below):
- Deploy NGINX service, using a volume containing “nginx.conf”.
- Deploy SlicerHub service, using the same volume.
- Execute “kubectl” from SlicerHub service to access its own K8s cluster.
- Continue adaptation of Container Orchestrator implementation for Kubernetes.
- Test locally.
- Deploy at Teide VMs.
Illustrations
Screenshots
–>
–>
–>
Background and References