NVIDIA 分发版
llamastack/distribution-nvidia
分发版包含以下提供者配置。
API |
提供者 |
---|---|
智能体 |
|
datasetio |
|
评估 |
|
推理 |
|
训练后处理 |
|
安全 |
|
评分 |
|
遥测 |
|
工具运行时 |
|
向量 IO |
|
环境变量
可配置以下环境变量
NVIDIA_API_KEY
:NVIDIA API 密钥(默认值:``)NVIDIA_APPEND_API_VERSION
:是否将 API 版本附加到 base_url(默认值:True
)NVIDIA_DATASET_NAMESPACE
:NVIDIA 数据集命名空间(默认值:default
)NVIDIA_PROJECT_ID
:NVIDIA 项目 ID(默认值:test-project
)NVIDIA_CUSTOMIZER_URL
:NVIDIA Customizer URL(默认值:https://customizer.api.nvidia.com
)NVIDIA_OUTPUT_MODEL_DIR
:NVIDIA 输出模型目录(默认值:test-example-model@v1
)GUARDRAILS_SERVICE_URL
:NeMo Guardrails Service 的 URL(默认值:http://0.0.0.0:7331
)NVIDIA_EVALUATOR_URL
:NeMo Evaluator Service 的 URL(默认值:http://0.0.0.0:7331
)INFERENCE_MODEL
:推理模型(默认值:Llama3.1-8B-Instruct
)SAFETY_MODEL
:用于安全检查的模型名称(默认值:meta/llama-3.1-8b-instruct
)
模型
默认提供以下模型
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)
meta/llama-3.3-70b-instruct (aliases: meta-llama/Llama-3.3-70B-Instruct)
nvidia/llama-3.2-nv-embedqa-1b-v2
nvidia/nv-embedqa-e5-v5
nvidia/nv-embedqa-mistral-7b-v2
snowflake/arctic-embed-l
先决条件
NVIDIA API 密钥
确保您拥有 NVIDIA API 密钥。您可以通过访问 https://build.nvidia.com/ 获取。将此密钥用于 NVIDIA_API_KEY
环境变量。
部署 NeMo Microservices 平台
NVIDIA NeMo Microservices 平台通过 NeMo Microservices Helm Chart 支持在您的 Kubernetes 集群上端到端部署完整的 AI 飞轮微服务。请参考 NVIDIA NeMo Microservices 文档,了解平台先决条件以及安装和部署平台的说明。
支持的服务
每个 Llama Stack API 都对应于一个特定的 NeMo 微服务。核心微服务(Customizer、Evaluator、Guardrails)由同一端点公开。平台组件(Data Store)各自由独立的端点公开。
推理:NVIDIA NIM
NVIDIA NIM 用于对注册模型运行推理。有两种访问 NVIDIA NIM 的方式:
托管(默认):托管在 https://integrate.api.nvidia.com 上的预览 API(需要 API 密钥)
自托管:运行在您自己基础设施上的 NVIDIA NIM。
部署的平台包括 NIM Proxy 微服务,该服务用于访问您的 NIM(例如,对模型运行推理)。设置 NVIDIA_BASE_URL
环境变量以使用您的 NVIDIA NIM Proxy 部署。
Datasetio API:NeMo Data Store
NeMo Data Store 微服务作为 NeMo Microservices 平台的默认文件存储解决方案。它公开了与 Hugging Face Hub 客户端 (HfApi
) 兼容的 API,因此您可以使用该客户端与 Data Store 进行交互。NVIDIA_DATASETS_URL
环境变量应指向您的 NeMo Data Store 端点。
有关支持的功能和示例用法,请参阅NVIDIA Datasetio 文档。
评估 API:NeMo Evaluator
NeMo Evaluator 微服务支持 LLM 的评估。使用 NeMo Evaluator 启动评估作业需要一个 Evaluation Config(一个包含作业所需元数据的对象)。Llama Stack Benchmark 映射到 Evaluation Config,因此注册 Benchmark 会在 NeMo Evaluator 中创建一个 Evaluation Config。NVIDIA_EVALUATOR_URL
环境变量应指向您的 NeMo Microservices 端点。
有关支持的功能和示例用法,请参阅NVIDIA Eval 文档。
训练后处理 API:NeMo Customizer
NeMo Customizer 微服务支持模型微调。您可以参考此支持的模型列表,这些模型可以使用 Llama Stack 进行微调。NVIDIA_CUSTOMIZER_URL
环境变量应指向您的 NeMo Microservices 端点。
有关支持的功能和示例用法,请参阅NVIDIA 训练后处理文档。
安全 API:NeMo Guardrails
NeMo Guardrails 微服务位于您的应用和 LLM 之间,为模型添加检查和内容审核。GUARDRAILS_SERVICE_URL
环境变量应指向您的 NeMo Microservices 端点。
有关支持的功能和示例用法,请参阅 NVIDIA 安全文档。
部署模型
为了将注册模型与 Llama Stack API 一起使用,请确保相应的 NIM 已部署到您的环境中。例如,您可以使用 NIM Proxy 微服务部署 meta/llama-3.2-1b-instruct
。
注意:为了提高推理速度,我们需要使用带有 fast_outlines
引导式解码系统(在请求体中指定)的 NIM。如果您使用 NeMo Microservices Helm Chart 部署了平台,则这是默认设置。
# URL to NeMo NIM Proxy service
export NEMO_URL="http://nemo.test"
curl --location "$NEMO_URL/v1/deployment/model-deployments" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "llama-3.2-1b-instruct",
"namespace": "meta",
"config": {
"model": "meta/llama-3.2-1b-instruct",
"nim_deployment": {
"image_name": "nvcr.io/nim/meta/llama-3.2-1b-instruct",
"image_tag": "1.8.3",
"pvc_size": "25Gi",
"gpu": 1,
"additional_envs": {
"NIM_GUIDED_DECODING_BACKEND": "fast_outlines"
}
}
}
}'
此 NIM 部署大约需要 10 分钟才能上线。请参阅文档,了解如何部署 NIM 并验证其可用于推理的更多信息。
如果需要,您也可以移除已部署的 NIM 以释放 GPU 资源。
export NEMO_URL="http://nemo.test"
curl -X DELETE "$NEMO_URL/v1/deployment/model-deployments/meta/llama-3.1-8b-instruct"
使用 NVIDIA 运行 Llama Stack
您可以通过 Conda 或 venv(构建代码)或 Docker(包含预构建镜像)来完成此操作。
通过 Docker
此方法可让您快速上手,而无需构建分发版代码。
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
通过 Conda
INFERENCE_MODEL=meta-llama/Llama-3.1-8b-Instruct
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
通过 venv
如果您已经设置了本地开发环境,您也可以使用本地虚拟环境构建镜像。
INFERENCE_MODEL=meta-llama/Llama-3.1-8b-Instruct
llama stack build --template nvidia --image-type venv
llama stack run ./run.yaml \
--port 8321 \
--env NVIDIA_API_KEY=$NVIDIA_API_KEY \
--env INFERENCE_MODEL=$INFERENCE_MODEL