在 Vertex AI 上部署#
使用本文档了解如何在 Google Cloud Vertex AI 上部署 Nemo Retriever 文本嵌入 NIM。
注意
目前,Vertex AI 仅支持 NV-EmbedQA-E5-v5 模型。
前提条件#
在 GCP Vertex AI 上部署 Nemo Retriever 文本嵌入 NIM 之前,您需要以下条件
访问 NVIDIA 模型的 NGC_API_KEY
已启用 Vertex AI 的 Google Cloud 帐户
Google Cloud SDK 已安装
环境设置#
在 Artifact Registry 中创建一个仓库,用于存储 NIM Docker 镜像。
在您的终端中设置以下 Google Cloud 环境变量
export REGION={REGION}
export PROJECT_ID={PROJECT_ID}
export ARTIFACT_NAME_ON_GCP_ARTIFACT_REGISTRY={ARTIFACT_REGISTRY}
下载并推送最新的嵌入 NIM 镜像#
设置您的 NGC API KEY 以进行 NGC 身份验证。
export NGC_API_KEY= <your_ngc_api_key>
从 NGC 下载镜像到本地机器。
docker pull nvcr.io/nvstaging/nim/nv-embedqa-e5-v5:1.3.0
使用以下命令标记镜像,以便 Google Cloud 可以识别存储镜像的位置和仓库。
docker tag nvcr.io/nvstaging/nim/nv-embedqa-e5-v5:1.3.0 ${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_NAME_ON_GCP_ARTIFACT_REGISTRY}/nv-embedqa-e5-v5:1.3.0
使用您的 Google 帐户验证 Google Cloud SDK。
gcloud auth login
配置 Docker 以使用 gcloud 身份验证,从而拉取和推送镜像到仓库。
gcloud auth configure-docker ${REGION}-docker.pkg.dev
将镜像推送到您上面创建的 GCP Artifact Registry。
docker push ${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_NAME_ON_GCP_ARTIFACT_REGISTRY}/nv-embedqa-e5-v5:1.3.0
上传 NIM 到 Vertex AI#
通过运行以下代码,将镜像作为模型资源上传到 Vertex AI。
gcloud ai models upload \
--region=${REGION} \
--display-name=nv-embedqa-e5-v5:1.3.0 \
--container-image-uri=${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_NAME_ON_GCP_ARTIFACT_REGISTRY}/nv-embedqa-e5-v5:1.3.0 \
--container-ports=8080 \
--container-predict-route="/v1/embeddings" \
--container-health-route="/v1/health/ready" \
--container-shared-memory-size-mb=16000 \
--container-env-vars="NGC_API_KEY=$NGC_API_KEY"
创建 Vertex AI 端点#
通过运行以下代码,创建一个 Triton 客户端用于发送请求的端点。
gcloud ai endpoints create \
--region=${REGION} \
--display-name="nv-embedqa-endpoint"
通过运行以下代码,提取 MODEL_ID 和 ENDPOINT_ID。
export MODEL_ID=$(gcloud ai models list --format="value(MODEL_ID)")
export ENDPOINT_ID=$(gcloud ai endpoints list --format="value(ENDPOINT_ID)")
将模型部署到端点#
通过运行以下代码,将模型部署到端点。
gcloud ai endpoints deploy-model ${ENDPOINT_ID} \
--region=${REGION} \
--model=${MODEL_ID} \
--display-name=nv-embedqa-e5-v5:1.3.0 \
--machine-type=a2-ultragpu-1g \
--accelerator=type=nvidia-a100-80gb,count=1 \
--traffic-split=0=100
测试端点#
通过运行以下代码,确认端点处于活动状态并准备好接收请求。
curl -X POST "https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/endpoints/${ENDPOINT_ID}:rawPredict" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"input": ["Hello world"],
"model": "nvidia/nv-embedqa-e5-v5",
"input_type": "query"
}'