Getting Started#

This section describes how to get the RFD4-Proteina NIM up and running.

  1. Pull and run the NIM

  2. Submit health check requests to the NIM

  3. Run inference

Note

This page assumes you have installed and set up Prerequisite Software (Docker, NGC CLI, NGC registry access).

Pull and Run the NIM#

  1. Pull the NIM container.

docker pull nvcr.io/nim/ipd/rfd4-proteina:1.0.0
  1. Run the NIM container and expose port 8000, to which the user can submit requests.

The following command starts the NIM container and exposes port 8000. Set the LOCAL_NIM_CACHE environment variable to a location on the local filesystem with sufficient space for the model checkpoints; refer to Support Matrix for the sizing.

The container runs as a non-root user (UID 1000), so the cache directory must exist and be writable by that user before the first run. Otherwise, the NIM exits at startup with ManifestDownloadError: ... Permission denied (os error 13). Refer to Set Up Your NIM Cache.

export LOCAL_NIM_CACHE=~/.cache/nim
mkdir -p "$LOCAL_NIM_CACHE"
chmod a+rwx "$LOCAL_NIM_CACHE"
export NGC_API_KEY=<Your NGC API Key>

docker run --rm --name rfd4-proteina \
    --runtime=nvidia \
    --gpus 'device=0' \
    -p 8000:8000 \
    -e NGC_API_KEY \
    -v $LOCAL_NIM_CACHE:/opt/nim/.cache \
    --shm-size=16g \
    nvcr.io/nim/ipd/rfd4-proteina:1.0.0

Submit Health-Check Requests to the NIM as It Starts Up#

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

  2. Submit requests to the health check endpoint until you see true. The NIM reports ready as soon as its weights are loaded; it does not pre-warm every supported input size, so the very first request against a new token-count bucket after startup will run slower than steady state. Refer to Performance for measured figures.

curl -X 'GET' \
    'http://localhost:8000/v1/health/ready' \
    -H 'accept: application/json'

You can also check the NIM’s status with Python by using the request module, installed using 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)

When the response body is true, the NIM is ready to accept a request with real inputs.

Discover Supported Tasks#

After the NIM reports ready, it reports the tasks it serves and the requirements of each at /v1/tasks:

curl -X 'GET' \
    'http://localhost:8000/v1/tasks' \
    -H 'accept: application/json'

Run Inference#

Design requests go to a single endpoint:

POST /biology/ipd/rfd4-proteina/generative

Refer to Example Requests for a complete, working request and an annotated walkthrough of the response.