forked from phoenix-oss/llama-stack-mirror
# 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>
3.2 KiB
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