Deploy Using Docker#
This section describes how to deploy using Docker.
Note
This page assumes you have prepared your environment as detailed in the Getting Started section (see the sections on setting up Docker, NGC CLI, and NGC registry access).
Pull the MSA Search NIM container with the following command.
docker pull nvcr.io/nim/colabfold/msa-search:1.0.0
Run the NIM container with the following command.
export LOCAL_NIM_CACHE=~/.cache/nim
export NGC_API_KEY=<Your NGC API Key>
docker run --rm --name msa-search --runtime=nvidia \
-e NGC_API_KEY \
-v $LOCAL_NIM_CACHE:/opt/nim/.cache \
-p 8000:8000 \
nvcr.io/nim/colabfold/msa-search:1.0.0
This command will start the NIM container and expose port 8000 for the user to interact with the NIM. It will pull the model to the cache at $LOCAL_NIM_CACHE
on the local filesystem. Note: This download can take a very long time (2-10 hours on a 100+Mbps internet connection).
Open a new terminal, leaving the current terminal open with the launched service.
In the new terminal, wait until the health check end point returns
200 OK
before proceeding. This may take a couple of minutes. You can use the following command to query the health check.
curl -X 'GET' \
'http://localhost:8000/v1/health/ready' \
-H 'accept: application/json'
To check the NIM’s status using Python, use the requests module (once installed via pip install requests
):
import requests
url = "http://localhost:8000/v1/health/ready" # Replace with the actual URL
headers = {
"content-type": "application/json"
}
try:
response = requests.get(url, headers=headers)
# Check if the request was successful
if response.ok:
print("Request succeeded:", response.json())
else:
print("Request failed:", response.status_code, response.text)
except Exception as E:
print("Request failed:", E)
Run inference to get a multiple sequence alignment for an amino acid sequence. Here is an example using cURL in BASH:
curl -X 'POST' \
'http://localhost:8000/biology/colabfold/msa-search/predict' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"sequence": "MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN" }' > output.json
The following is an example, in Python, that demonstrates some of the other arguments available to the NIM:
import requests
import json
url = "http://localhost:8000/biology/colabfold/msa-search/predict" # Replace with the actual URL if needed.
sequence = "MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN" # Replace with your sequence value of interest
headers = {
"content-type": "application/json"
}
data = {
"sequence": sequence,
"databases": ["Uniref30_2302", "PDB70_220313", "colabfold_envdb_202108"],
"e_value" : 0.0001,
"iterations" : 2
}
response = requests.post(url, headers=headers, data=json.dumps(data))
# Check if the request was successful
if response.ok:
print("Request succeeded:", response.json())
else:
print("Request failed:", response.status_code, response.text)
View the outputs. You can use the
cat
tool to print the outputs to the command line as with the following command.
cat output.json
You can also view the output in a text viewer, or pretty-print it using Python’s built-in JSON module:
python -m json.tool output.json
Advanced Usage#
For Advanced Usage of the NIM, see the sections on Optimization and Performance.
For details about available endpoints, see the API Reference section.