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).

  1. Pull the MSA Search NIM container with the following command.

docker pull nvcr.io/nim/colabfold/msa-search:1.0.0
  1. 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).

  1. Open a new terminal, leaving the current terminal open with the launched service.

  2. 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)
  1. 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)

  1. 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.