For COINSTAC computations, the container must meet the following requirements and interface specifications:
-
Mounting Host Directories:
- The container must allow for the mounting of the following host directories:
/workspace/runKit/
/workspace/data/
/workspace/results
- The container must allow for the mounting of the following host directories:
-
Commands for Starting Clients:
- The container must provide commands for starting both central and edge clients. Examples include:
python entry_edge.py // edge python entry_central.py // central
- The container must provide commands for starting both central and edge clients. Examples include:
-
Communication for Central Client:
- The central client must allow for communication through ports exposed to the host machine.
-
runKit (if necessary):
- If necessary, the container must be able to generate a runKit during the provision step. A runKit is a folder containing the files necessary to start a particular run. In our current computation, this includes:
parameters.json
, which is:- Consumed by the central node.
- Specified in the desktop App GUI.
- The startup scripts for NVFLARE.
- If a runKit is necessary, the container must have a command for provisioning runKits. Example:
python provision.py
- If necessary, the container must be able to generate a runKit during the provision step. A runKit is a folder containing the files necessary to start a particular run. In our current computation, this includes:
-
Computation Author Responsibilities:
- Documenting:
- The format of the data to be consumed.
- A description and example of the parameters the consortium leader can specify (in the form of
parameters.json
).
- Ensuring Accuracy and Performance:
- Ensuring the accuracy and performance of their computation in the target domain.
- Communication:
- Managing the communication between nodes (existing computations use NVFLARE for communication).
- Documenting:
These specifications ensure that the containerized environment is flexible and compliant with COINSTAC conventions, allowing for necessary interactions with host directories, clear entry points for different computation types, and effective communication.