Clara Deploy Clara Deploy AI COVID-19 Classification Pipeline
How to Run a Reference Pipeline
Clara Deploy SDK comes bundled with a set of reference pipelines. This section provides general guidelines on how to execute them on your local development machine. For information specific to a reference pipeline, please view the documentation of that pipeline.
Download the Reference Pipeline
Please refer to Setup section for downloading this Pipeline.
Run Reference Pipelines by Sending DICOM Instances Over Network
Many reference pipelines are triggered by Clara DICOM Adaptor after it has received DICOM instances from external sender to one of its mapped AE Titles. This section explains the process with an example pipeline COVID-19 Pipeline.
External DICOM Sender and DICOM Receiver
You need an external DICOM Service Class User (SCU) application to send images to the Clara DICOM Adapter (acting as a DICOM SCP). Similarly, when your pipeline finishes executing, you may want to send the output to an external DICOM receiver.
For this example, we will use the open-source DICOM toolkit DCMTK to provide the external DICOM sender and DICOM receiver functionality.
Install DCMTK
Install DCMTK utilities by issuing the following command:
sudo apt-get install dcmtk
Setup an External DICOM Receiver
You can use the storescp utility as an external DICOM receiver. Open a terminal and run the following command to set up a DICOM Receiver. Create a directory in your machine where DICOM images produced by Clara Deploy SDK will be stored. We will refer to that directory as "dicom-destination-directory"
mkdir dicom-destination-directory
cd dicom-destination-directory
sudo storescp -v --fork -aet MYPACS 1004
MYPACS is the Application Entity (AE) title of the external DICOM Receiver.
1004 is the port number where storescp would be listening for any incoming DICOM traffic. Please note that the IP address will be the same as the local system.
Setup an External DICOM Sender
You can use the storescu utility from DCMTK as a DICOM sender.
Customize the Pipeline
Before publishing a pipeline, default settings in the pipeline definition YAML file can be modified to configure the resource request and orchestration mode. We will use the COVID-19-pipeline.yaml to show the steps.
Customize GPU request
The number of GPU's requested for an operator and/or a pipeline dependent service e.g. TensorRT Inference Server, can be customized if multiple GPU's are available.
The GPU request for TensorRT Inference Server is set at 1 by default shown below,
- name: trtis
# TensorRT Inference Server, required by this AI application.
container:
image: nvcr.io/nvidia/tensorrtserver
tag: 19.08-py3
command: ["trtserver", "--model-store=$(NVIDIA_CLARA_SERVICE_DATA_PATH)/models"]
requests:
gpu: 1
With this setting, the TensorRT Inference Server can only access one GPU. When more GPU's are available and intended to be used to increase the inference performance, the GPU request number must be customized to match desired number, e.g. 4, as shown below,
- name: trtis
# TensorRT Inference Server, required by this AI application.
container:
image: nvcr.io/nvidia/tensorrtserver
tag: 19.08-py3
command: ["trtserver", "--model-store=$(NVIDIA_CLARA_SERVICE_DATA_PATH)/models"]
requests:
gpu: 4
Note: If another pipeline with a lesser number of GPU's for TensorRT Inference Server has been published and triggered, the changes made here will not affect the running instance of TensorRT Inference Server.
Customize the Orchestration Mode
In this release of the Clara Deploy Platform, Clara Pipeline Driver [cpd] orchestration is supported, in addition to the Argo based orchestration mode.
This mode can be customized with the api-version attribute in the pipeline definition YAML file, setting the api-version to 0.3.0 makes the pipeline run in Argo mode, whereas setting this attribute to 0.4.0 Clara Pipeline Driver mode. The following example from the COVID-19-pipeline.yaml specifies Argo mode.
api-version: 0.3.0
name: COVID-19-pipeline
Create the Pipeline
Please refer to Setup section to create this Pipeline.
Note: Note down the pipeline ID as it would be used in a later section to define a new pipeline mapping in the DICOM adapter.
Configure the Clara DICOM Destination
When you send images to the Clara Deploy SDK, the DICOM Adapter component acts as the internal DICOM Service Class Provider or a receiving agent.
- Open the file
~/.clara/charts/dicom-adapter/files/dicom-server-config.yaml. - In the dicom->scp->sources section, ensure sender host-ip and ae-titles are correct. Alternatively, set reject-unknown-sources to false, which will allow any DICOM sender to create an association.
dicom:
scp:
reject-unknown-sources: false
sources:
- host-ip: 172.22.8.156
ae-title: DCM4CHEE
- In the dicom->scp->ae-titles section, add a new ae-title with the name
COVID-19Cls
dicom:
scp:
ae-titles:
- ae-title: COVID-19
Note Per the DICOM standards, the length of AE-Title should not exceed 16 characters.
- In the pipeline-mappings section, define a new mapping with:
COVID-19-Classas the name andCOVID-19as theclara-ae-title, and use the pipeline-id that was created before.
pipeline-mappings:
- name: COVID-19-Class
clara-ae-title: COVID-19
pipeline-id: [your-pipeline-id-from-above]
- Update the IP address of the destination with the name
MYPACSby updating the field host-ip with the IP of your local development machine.
dicom:
scu:
destinations:
- name: MYPACS
host-ip: [IP-address-of-remote-PACS]
port: 1004
ae-title: MYPACS
- Restart the DICOM server by issuing the following commands:
# Stop DICOM Adapter by running the following command:
clara dicom stop
# Run the following command to check whether the DICOM adapter pod is still running:
kubectl get pods | grep clara-dicom-adapter
# Once the DICOM adapter pod is fully stopped and no pod is returned with the above command, the DICOM adapter can be started by running the following command:
clara dicom start
- Verify that the DICOM Adapter is correctly started:
helm ls | grep dicom-adapter
kubectl get pods | grep dicom-adapter
Trigger Pipeline
A pipeline is triggered when a DICOM series is sent to the specific AE title of the Clara DICOM Adapter which is associated with that pipeline. To trigger this pipeline, you will need to have a set of relevant DICOM images that can be used as source input data.
For this pipeline, a sample test dataset in dicom format is available within the package in <unzipped input>/dcm.
-
Open a terminal and go to the directory which contains all your DICOM images.
-
Trigger the pipeline (push DICOM data to the proper ae title)
storescu -v +sd +r -xb -aet "DCM4CHEE" -aec "COVID-19" AA.BB.CC.DD 104 ./
Replace "AA.BB.CC.DD" with the IP of your local machine.
When the above step is completed, you should see the following result in the terminal
I: Received Store Response (Success) <br>
I: Releasing Association
Verify the Pipeline Execution in Dashboard
- Go to the Clara dashboard UI using a web browser:
The URL is:
<IP of the machine>:8000 - You should see a job with a name that includes the name of the pipeline you created
- You can inspect the status of each operator inside that job
- Viewing status on a UI for Pipeline Jobs executed using the Clara orchestrator option is currently not available.
Verify That the External DICOM Receiver Received Your Images
If your pipeline outputs DICOM images and sends them to an external DICOM receiver, you may want to verify that the images were indeed received. If you used the storescp utility from DCMTK as mentioned earlier, please use a terminal to navigate to the "dicom-destination-directory" and verify whether the expected images are stored there. Also, you may want to use a third-party DICOM
viewer to view those images.