ipd

rfdiffusion

Run Anywhere

A generative model of protein backbones for protein binder design.

Deploying your application in production? Get started with a 90-day evaluation of NVIDIA AI Enterprise

Follow the steps below to download and run the NVIDIA NIM inference microservice for this model on your infrastructure of choice.

Generate API Key

Start NIM

  1. Export NGC_API_KEY variable.
export NGC_API_KEY=<your personal NGC key>
  1. NIM container automatically downloads models. To save time and bandwidth it is recommended to provide local cache directory. This way NIM will be able to reuse already downloaded models. Execute following command to setup cache directory.
export LOCAL_NIM_CACHE=~/.cache/nim mkdir -p "$LOCAL_NIM_CACHE" sudo chmod 0777 -R "$LOCAL_NIM_CACHE"
  1. Run the NIM container with the following commands.
docker run -it \ --runtime=nvidia \ --gpus='"device=0"' \ -p 8000:8000 \ -e NGC_API_KEY \ -v "$LOCAL_NIM_CACHE":/opt/nim/.cache \ nvcr.io/nim/ipd/rfdiffusion:2

This command will start the NIM container and expose port 8000 for the user to interact with the NIM.

  1. Open a new terminal, leaving the terminal open with the just launched service. In the new terminal, wait until the health check end point returns {"status":"ready"} before proceeding. This may take a couple of minutes. You can use the following command to query the health check.
curl http://localhost:8000/v1/health/ready

Test the NIM

Python client example

  1. Save following Python example to a file named nim_client.py.
#!/usr/bin/env python3 import requests import os import json from pathlib import Path def get_reduced_pdb(): pdb = Path("1R42.pdb") if not pdb.exists(): pdb.write_text(requests.get(f"https://files.rcsb.org/download/{pdb}").text) lines = filter(lambda line: line.startswith("ATOM"), pdb.read_text().split("\n")) return "\n".join(list(lines)[:400]) r = requests.post( url="http://localhost:8000/biology/ipd/rfdiffusion/generate", json={ "input_pdb": get_reduced_pdb(), "contigs": "A20-60/0 50-100", "hotspot_res": ["A50","A51","A52","A53","A54"], "diffusion_steps": 15, }, ) print(r, "Saving to output.pdb:\n", r.text[:200], "...") Path("output.pdb").write_text(json.loads(r.text)["output_pdb"])
  1. Execute the example.
chmod +x nim_client.py ./nim_client.py
  1. The example saves results to the output.pdb file in PDB format. You can quickly view the file using the following command.
less output.pdb

Shell client example

  1. Save the following Shell example to a file named nim_client.sh.
#!/usr/bin/env bash set -e URL=http://localhost:8000/biology/ipd/rfdiffusion/generate if [ ! -e 1R42.pdb ]; then curl -O https://files.rcsb.org/download/1R42.pdb; fi pdb=$(cat 1R42.pdb | grep ^ATOM | head -n 400 | awk '{printf "%s\\n", $0}') request='{ "input_pdb": "'"$pdb"'", "contigs": "A20-60/0 50-100", "hotspot_res": ["A50","A51","A52","A53","A54"], "diffusion_steps": 15 }' curl -H 'Content-Type: application/json' \ -d "$request" "$URL"
  1. Execute the example. The example displays the results to the terminal in JSON format.
chmod +x nim_client.sh ./nim_client.sh

For more details on getting started with this NIM, visit the NVIDIA NIM Docs.