This project deploys a tuning API for GROMACS using Ray Tune on Kubernetes.
- Helm and kubectl must be installed and configured to interact with your Kubernetes cluster.
- Ray operator must be installed in your cluster to provide the RayCluster CRDs.
- Ensure your target namespace has sufficient resources: a minimum of 32 CPU requests and a GPU request (see helm/charts/gromacs-tuner/templates/raycluster.yaml).
- jq must be installed for processing JSON data.
- Update the API Docker image details in
values.yaml(refer toapi/Dockerfile) with your Harbor image information, including the correct image name and tag.
-
Configure
values.yaml:- Specify the
ingress.hostfor accessing the API and theingress.tlsSecretNamefor TLS configuration. - Provide the complete Docker
image.repositoryandimage.tagfor the API.
- Specify the
-
Create Authentication Secret:
Create a Kubernetes secret named
tuner-authin your target namespace containing theuserandpasswordfor API authentication.# Replace <namespace> with your target namespace (e.g., gromacs-tuner-ns) kubectl create secret generic tuner-auth \ --namespace <namespace> \ --from-literal=user=admin \ --from-literal=password=your-strong-password
-
Deploy:
cd helm/ make install -
Verify the Deployment:
Check if the pods are running correctly:
kubectl get pods -n gromacs-tuner
Verify that the Ray cluster is properly deployed:
kubectl get rayclusters -n gromacs-tuner
To remove everything:
cd helm/
make uninstall-
Submit a TPR File:
Execute the
run_submit.shscript to submit your GROMACS.tprfile (e.g.,md.tpr) for tuning:./run_submit.sh /path/to/md.tpr
This script submits the specified
.tprfile to the API. The API will return a JSON response containing atuner_run_id.The API is protected using HTTP Basic Auth. You must provide the
adminusername and the password configured in the Kubernetes Secret when accessing any endpoint. -
Poll Job Status:
Use the
poll_status.shscript to monitor the tuning process:./poll_status.sh <tuner_run_id>
Replace
<tuner_run_id>with the UUID obtained from the submission response. This script will provide updates on the tuning job's status.