llama-stack-mirror/docs/source/distributions/remote_hosted_distro/nvidia.md
Rashmi Pawar 1a73f8305b
feat: Add nemo customizer (#1448)
# What does this PR do?

This PR adds support for NVIDIA's NeMo Customizer API to the Llama Stack
post-training module. The integration enables users to fine-tune models
using NVIDIA's cloud-based customization service through a consistent
Llama Stack interface.


[//]: # (If resolving an issue, uncomment and update the line below)
[//]: # (Closes #[issue-number])

## Test Plan
[Describe the tests you ran to verify your changes with result
summaries. *Provide clear instructions so the plan can be easily
re-executed.*]
Yet to be done

Things pending under this PR:

- [x] Integration of fine-tuned model(new checkpoint) for inference with
nvidia llm distribution
- [x] distribution integration of API
- [x] Add test cases for customizer(In Progress)
- [x] Documentation

```

LLAMA_STACK_BASE_URL=http://localhost:5002 pytest -v tests/client-sdk/post_training/test_supervised_fine_tuning.py 

============================================================================================================================================================================ test session starts =============================================================================================================================================================================
platform linux -- Python 3.10.0, pytest-8.3.4, pluggy-1.5.0 -- /home/ubuntu/llama-stack/.venv/bin/python
cachedir: .pytest_cache
metadata: {'Python': '3.10.0', 'Platform': 'Linux-6.8.0-1021-gcp-x86_64-with-glibc2.35', 'Packages': {'pytest': '8.3.4', 'pluggy': '1.5.0'}, 'Plugins': {'nbval': '0.11.0', 'metadata': '3.1.1', 'anyio': '4.8.0', 'html': '4.1.1', 'asyncio': '0.25.3'}}
rootdir: /home/ubuntu/llama-stack
configfile: pyproject.toml
plugins: nbval-0.11.0, metadata-3.1.1, anyio-4.8.0, html-4.1.1, asyncio-0.25.3
asyncio: mode=strict, asyncio_default_fixture_loop_scope=None
collected 2 items                                                                                                                                                                                                                                                                                                                                                            

tests/client-sdk/post_training/test_supervised_fine_tuning.py::test_post_training_provider_registration[txt=8B] PASSED                                                                                                                                                                                                                                                 [ 50%]
tests/client-sdk/post_training/test_supervised_fine_tuning.py::test_list_training_jobs[txt=8B] PASSED                                                                                                                                                                                                                                                                  [100%]

======================================================================================================================================================================== 2 passed, 1 warning in 0.10s ========================================================================================================================================================================
```
cc: @mattf @dglogo @sumitb

---------

Co-authored-by: Ubuntu <ubuntu@llama-stack-customizer-dev-inst-2tx95fyisatvlic4we8hidx5tfj.us-central1-a.c.brevdevprod.internal>
2025-03-25 11:01:10 -07:00

3.2 KiB

NVIDIA Distribution

The llamastack/distribution-nvidia distribution consists of the following provider configurations.

API Provider(s)
agents inline::meta-reference
datasetio inline::localfs
eval inline::meta-reference
inference remote::nvidia
post_training remote::nvidia
safety remote::nvidia
scoring inline::basic
telemetry inline::meta-reference
tool_runtime inline::rag-runtime
vector_io inline::faiss

Environment Variables

The following environment variables can be configured:

  • NVIDIA_API_KEY: NVIDIA API Key (default: ``)
  • NVIDIA_USER_ID: NVIDIA User ID (default: llama-stack-user)
  • NVIDIA_DATASET_NAMESPACE: NVIDIA Dataset Namespace (default: default)
  • NVIDIA_ACCESS_POLICIES: NVIDIA Access Policies (default: {})
  • NVIDIA_PROJECT_ID: NVIDIA Project ID (default: test-project)
  • NVIDIA_CUSTOMIZER_URL: NVIDIA Customizer URL (default: https://customizer.api.nvidia.com)
  • NVIDIA_OUTPUT_MODEL_DIR: NVIDIA Output Model Directory (default: test-example-model@v1)
  • GUARDRAILS_SERVICE_URL: URL for the NeMo Guardrails Service (default: http://0.0.0.0:7331)
  • INFERENCE_MODEL: Inference model (default: Llama3.1-8B-Instruct)
  • SAFETY_MODEL: Name of the model to use for safety (default: meta/llama-3.1-8b-instruct)

Models

The following models are available by default:

  • meta/llama3-8b-instruct (aliases: meta-llama/Llama-3-8B-Instruct)
  • meta/llama3-70b-instruct (aliases: meta-llama/Llama-3-70B-Instruct)
  • meta/llama-3.1-8b-instruct (aliases: meta-llama/Llama-3.1-8B-Instruct)
  • meta/llama-3.1-70b-instruct (aliases: meta-llama/Llama-3.1-70B-Instruct)
  • meta/llama-3.1-405b-instruct (aliases: meta-llama/Llama-3.1-405B-Instruct-FP8)
  • meta/llama-3.2-1b-instruct (aliases: meta-llama/Llama-3.2-1B-Instruct)
  • meta/llama-3.2-3b-instruct (aliases: meta-llama/Llama-3.2-3B-Instruct)
  • meta/llama-3.2-11b-vision-instruct (aliases: meta-llama/Llama-3.2-11B-Vision-Instruct)
  • meta/llama-3.2-90b-vision-instruct (aliases: meta-llama/Llama-3.2-90B-Vision-Instruct)
  • nvidia/llama-3.2-nv-embedqa-1b-v2
  • nvidia/nv-embedqa-e5-v5
  • nvidia/nv-embedqa-mistral-7b-v2
  • snowflake/arctic-embed-l

Prerequisite: API Keys

Make sure you have access to a NVIDIA API Key. You can get one by visiting https://build.nvidia.com/.

Running Llama Stack with NVIDIA

You can do this via Conda (build code) or Docker which has a pre-built image.

Via Docker

This method allows you to get started quickly without having to build the distribution code.

LLAMA_STACK_PORT=8321
docker run \
  -it \
  --pull always \
  -p $LLAMA_STACK_PORT:$LLAMA_STACK_PORT \
  -v ./run.yaml:/root/my-run.yaml \
  llamastack/distribution-nvidia \
  --yaml-config /root/my-run.yaml \
  --port $LLAMA_STACK_PORT \
  --env NVIDIA_API_KEY=$NVIDIA_API_KEY

Via Conda

llama stack build --template nvidia --image-type conda
llama stack run ./run.yaml \
  --port 8321 \
  --env NVIDIA_API_KEY=$NVIDIA_API_KEY
  --env INFERENCE_MODEL=$INFERENCE_MODEL