forked from phoenix-oss/llama-stack-mirror
# What does this PR do? adds nvidia template for creating a distribution using inference adapter for NVIDIA NIMs. ## Test Plan Please describe: Build llama stack distribution for nvidia using the template, docker and conda. ```bash (.venv) local-cdgamarose@a4u8g-0006:~/llama-stack$ llama-stack-client configure --endpoint http://localhost:5000 Done! You can now use the Llama Stack Client CLI with endpoint http://localhost:5000 (.venv) local-cdgamarose@a4u8g-0006:~/llama-stack$ llama-stack-client models list ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓ ┃ identifier ┃ provider_id ┃ provider_resource_id ┃ metadata ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩ │ Llama3.1-8B-Instruct │ nvidia │ meta/llama-3.1-8b-instruct │ {} │ │ meta-llama/Llama-3.2-3B-Instruct │ nvidia │ meta/llama-3.2-3b-instruct │ {} │ └──────────────────────────────────┴─────────────┴────────────────────────────┴──────────┘ (.venv) local-cdgamarose@a4u8g-0006:~/llama-stack$ llama-stack-client inference chat-completion --message "hello, write me a 2 sentence poem" ChatCompletionResponse( completion_message=CompletionMessage( content='Here is a 2 sentence poem:\n\nThe sun sets slow and paints the sky, \nA gentle hue of pink that makes me sigh.', role='assistant', stop_reason='end_of_turn', tool_calls=[] ), logprobs=None ) ``` ## Before submitting - [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case). - [x] Ran pre-commit to handle lint / formatting issues. - [x] Read the [contributor guideline](https://github.com/meta-llama/llama-stack/blob/main/CONTRIBUTING.md), Pull Request section? - [x] Updated relevant documentation. - [ ] Wrote necessary unit or integration tests. --------- Co-authored-by: Matthew Farrellee <matt@cs.wisc.edu>
58 lines
1.7 KiB
YAML
58 lines
1.7 KiB
YAML
services:
|
|
nim:
|
|
image: ${DOCKER_IMAGE:-nvcr.io/nim/meta/llama-3.1-8b-instruct:latest}
|
|
network_mode: "host"
|
|
volumes:
|
|
- nim-llm-cache:/opt/nim/.cache
|
|
ports:
|
|
- "8000:8000"
|
|
shm_size: 16G
|
|
environment:
|
|
- CUDA_VISIBLE_DEVICES=0
|
|
- NIM_HTTP_API_PORT=8000
|
|
- NIM_TRITON_LOG_VERBOSE=1
|
|
- NGC_API_KEY=${NIM_NGC_API_KEY:-${NGC_API_KEY:-ngcapikey}}
|
|
command: []
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
# that's the closest analogue to --gpus; provide
|
|
# an integer amount of devices or 'all'
|
|
count: 1
|
|
# Devices are reserved using a list of capabilities, making
|
|
# capabilities the only required field. A device MUST
|
|
# satisfy all the requested capabilities for a successful
|
|
# reservation.
|
|
capabilities: [gpu]
|
|
runtime: nvidia
|
|
healthcheck:
|
|
test: ["CMD", "curl", "http://localhost:8000/v1/health/ready"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 30
|
|
start_period: 120s
|
|
llamastack:
|
|
depends_on:
|
|
- nim
|
|
image: distribution-nvidia:dev
|
|
network_mode: "host"
|
|
volumes:
|
|
- ~/.llama:/root/.llama
|
|
- ./run.yaml:/root/llamastack-run-nvidia.yaml
|
|
ports:
|
|
- "5000:5000"
|
|
environment:
|
|
- INFERENCE_MODEL=${INFERENCE_MODEL:-Llama3.1-8B-Instruct}
|
|
- NVIDIA_API_KEY=${NVIDIA_API_KEY:-}
|
|
entrypoint: bash -c "python -m llama_stack.distribution.server.server --yaml-config /root/llamastack-run-nvidia.yaml"
|
|
deploy:
|
|
restart_policy:
|
|
condition: on-failure
|
|
delay: 3s
|
|
max_attempts: 5
|
|
window: 60s
|
|
volumes:
|
|
nim-llm-cache:
|
|
driver: local
|