缓存模型#
关于模型配置文件和缓存#
NVIDIA NIM 微服务的模型使用针对特定 NVIDIA GPU、GPU 数量、精度等进行调整的模型引擎。NVIDIA 为几种流行的组合生成模型引擎,这些引擎被称为模型配置文件。
NIM 微服务支持自动配置文件选择,通过确定节点上的 GPU 型号和数量,并尝试匹配最佳模型配置文件。或者,NIM 微服务支持运行指定的模型配置文件,但这需要您查看配置文件并了解配置文件 ID。有关更多信息,请参阅 NVIDIA NIM for LLMs 文档中的 模型配置文件。
Operator 通过以下方式补充 NIM 微服务的模型选择
支持缓存和运行指定的模型配置文件 ID,就像 NIM 微服务一样。
支持缓存所有模型配置文件。
支持通过指定引擎、精度、张量并行度等来影响模型选择以进行匹配。NIM 缓存自定义资源提供了指定模型选择标准的方法。
缓存模型的优势#
NVIDIA 建议为 NVIDIA NIM 微服务缓存模型。通过缓存模型,可以缩短微服务的启动时间。对于扩展到多个 NIM 微服务 Pod 的部署,具有网络存储类的持久卷中的单个缓存模型可以为多个 Pod 提供服务。
对于单节点集群,来自 Rancher Labs 的本地路径 Provisioner 足以用于研究和开发。对于生产环境,NVIDIA 建议安装提供网络存储类的 Provisioner。
关于 NIM 缓存自定义资源定义#
NIM 缓存是 Kubernetes 自定义资源,nimcaches.apps.nvidia.com
。您可以创建和删除 NIM 缓存资源来管理模型缓存。
当您创建 NIM 缓存资源时,NIM Operator 会启动一个 Pod,列出可用的模型配置文件。Operator 创建模型配置文件的 ConfigMap。
如果您指定一个或多个要缓存的模型配置文件 ID,Operator 将启动一个 Job,缓存您指定的模型配置文件。
如果您未指定模型配置文件 ID,但指定了 engine: tensorrt_llm
或 engine: tensorrt
,Operator 将尝试将模型配置文件与集群中节点上的 GPU 匹配。Operator 使用由 Node Feature Discovery 设置的 nvidia.com/gpu.product
节点标签的值。
您可以让 Operator 自动检测要缓存的模型配置文件,也可以通过为 spec.source.ngc.model
指定值来约束模型配置文件,例如引擎、GPU 型号等等,这些值必须与模型配置文件匹配。
如果您删除使用 spec.storage.pvc.create: true
创建的 NIM 缓存资源,NIM Operator 将删除持久卷 (PV) 和持久卷声明 (PVC)。
请参阅以下示例清单
apiVersion: apps.nvidia.com/v1alpha1
kind: NIMCache
metadata:
name: meta-llama3-8b-instruct
spec:
source:
ngc:
modelPuller: nvcr.io/nim/meta/llama-3.1-8b-instruct:1.3.3
pullSecret: ngc-secret
authSecret: ngc-api-secret
model:
engine: tensorrt_llm
tensorParallelism: "1"
storage:
pvc:
create: true
storageClass: <storage-class-name>
size: "50Gi"
volumeAccessMode: ReadWriteMany
resources: {}
请参阅下表,了解有关常用修改字段的信息
字段 |
描述 |
默认值 |
---|---|---|
|
指定 HTTP 代理环境中可能需要的自定义 CA 证书。有关更多信息,请参阅 支持自定义 CA 证书。 |
无 |
|
为缓存 Job 指定环境变量名称和值。 |
无 |
|
指定 Pod 的组。此值用于在 |
|
|
指定节点选择器标签以调度缓存 Job。 |
无 |
|
指定 Pod 的资源需求。 |
无 |
|
指定 Pod 的运行时类名称。 |
无 |
|
根据引擎指定模型缓存约束。常用值如下:
每个 NIM 微服务都确定支持的引擎。有关最新信息,请参阅微服务文档。 默认情况下,缓存 Job 匹配所有引擎的模型配置文件。 |
无 |
|
指定模型缓存约束列表,以使用指定的 GPU 型号(按 PCI ID 或产品名称)。 默认情况下,缓存 Job 检测集群中的所有 GPU 型号,并匹配所有 GPU 的模型配置文件。 以下部分规范请求与 NVIDIA L40S 兼容的模型配置文件。 spec:
source:
ngc:
model:
...
gpus:
- ids:
- "26b5"
如果 GPU Operator 或 Node Feature Discovery 在您的集群上运行,您可以通过查看以 以下部分规范请求与 NVIDIA A100 兼容的模型配置文件。 spec:
source:
ngc:
model:
...
gpus:
- product: "a100"
产品名称(例如 |
无 |
|
设置为 有关更多信息,请参阅 使用 LoRA 模型和适配器。 |
|
|
指定要匹配的模型配置文件量化。常用值包括 |
无 |
|
指定要缓存的模型配置文件数组。 当您指定此字段时,自动配置文件选择将被禁用,并且所有其他 以下部分规范请求特定的模型配置文件。 spec:
source:
ngc:
model:
modelPuller: nvcr.io/nim/meta/llama3-8b-instruct:1.0.3
profiles:
- 8835c31...
您可以通过运行 list-model-profiles 命令来确定模型配置文件。 您可以指定 |
无 |
|
指定要匹配的模型配置文件服务质量。值为 |
无 |
|
指定要匹配的模型配置文件张量并行度。运行 NIM 微服务并为模型提供服务的节点必须至少具有指定数量的 GPU。常用值为 |
无 |
|
指定可以缓存模型配置文件的容器镜像。 |
无 |
|
设置为 |
|
|
指定 PVC 名称。 如果您指定 |
带有 |
|
指定要创建的 PVC 的大小,单位为 Gi。 如果您指定 |
无 |
|
指定要创建的 PVC 的存储类。 |
无 |
|
指定在 PVC 上创建子路径并在目录中缓存模型配置文件。 |
无 |
|
指定要创建的 PVC 的访问模式。 |
无 |
|
指定缓存 Job 的 容忍度。 |
无 |
|
指定 Pod 的用户 ID。此值用于在 |
|
先决条件#
已安装 NVIDIA NIM Operator。
使用网络存储(如 NFS、S3、vSAN 等)的持久卷 Provisioner。模型被下载并存储在持久存储中。
您可以创建 PVC 并在创建 NIM 缓存资源时指定名称,也可以请求 Operator 创建 PVC。
NGC API 密钥。Pod 使用 API 密钥作为镜像拉取密钥,从 NVIDIA NGC 下载容器镜像和模型。有关更多信息,请参阅 NVIDIA NGC 用户指南中的 生成您的 NGC API 密钥。
示例清单显示了
spec.source.ngc.modelPuller
字段常用的容器镜像。要缓存替代模型,请考虑以下方法来了解容器镜像名称:在 https://build.nvidia.com/explore/discover 浏览模型。对于可以随处运行的模型,单击 Docker 选项卡以查看镜像名称和标签。
浏览 https://catalog.ngc.nvidia.com/containers。您可以通过启用 NVIDIA NIM 复选框来过滤镜像。
运行
ngc registry image list "nim/*"
以显示 NIM 镜像。有关该命令的信息,请参阅 NVIDIA NGC CLI 用户指南中的 ngc registry。请参阅 NVIDIA NIM 文档页面。
步骤#
创建命名空间
$ kubectl create namespace nim-service
添加使用您的 NGC API 密钥的 Secret。
添加 Docker 注册表 Secret,用于从 NVIDIA NGC 下载 NIM 容器镜像
$ kubectl create secret -n nim-service docker-registry ngc-secret \ --docker-server=nvcr.io \ --docker-username='$oauthtoken' \ --docker-password=<ngc-api-key>
添加通用 Secret,模型拉取器 init 容器使用该 Secret 从 NVIDIA NGC 下载模型
$ kubectl create secret -n nim-service generic ngc-api-secret \ --from-literal=NGC_API_KEY=<ngc-api-key>
创建一个文件,例如
cache-all.yaml
,内容如下例所示apiVersion: apps.nvidia.com/v1alpha1 kind: NIMCache metadata: name: meta-llama3-8b-instruct spec: source: ngc: modelPuller: nvcr.io/nim/meta/llama-3.1-8b-instruct:1.3.3 pullSecret: ngc-secret authSecret: ngc-api-secret model: engine: tensorrt_llm tensorParallelism: "1" storage: pvc: create: true storageClass: <storage-class-name> size: "50Gi" volumeAccessMode: ReadWriteMany resources: {} --- apiVersion: apps.nvidia.com/v1alpha1 kind: NIMCache metadata: name: nv-embedqa-e5-v5 spec: source: ngc: modelPuller: nvcr.io/nim/nvidia/llama-3.2-nv-embedqa-1b-v2:1.3.1 pullSecret: ngc-secret authSecret: ngc-api-secret model: profiles: - all storage: pvc: create: true storageClass: <storage-class-name> size: "50Gi" volumeAccessMode: ReadWriteMany resources: {} --- apiVersion: apps.nvidia.com/v1alpha1 kind: NIMCache metadata: name: nv-rerankqa-mistral-4b-v3 spec: source: ngc: modelPuller: nvcr.io/nim/nvidia/llama-3.2-nv-rerankqa-1b-v2:1.3.1 pullSecret: ngc-secret authSecret: ngc-api-secret model: profiles: - all storage: pvc: create: true storageClass: <storage-class-name> size: "50Gi" volumeAccessMode: ReadWriteMany resources: {}
应用清单
$ kubectl apply -n nim-service -f cache-all.yaml
可选:查看有关缓存进度的信息。
确认已创建持久卷和声明
$ kubectl get -n nim-service pvc,pv
示例输出
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE persistentvolumeclaim/meta-llama3-8b-instruct-pvc Bound pvc-1d3f8d48-660f-4e44-9796-c80a4ed308ce 50Gi RWO nfs-client <unset> 10m NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE persistentvolume/pvc-1d3f8d48-660f-4e44-9796-c80a4ed308ce 50Gi RWO Delete Bound nim-service/meta-llama3-8b-instruct-pvc nfs-client <unset> 10m
查看 NIM 缓存资源以查看状态
$ kubectl get nimcaches.apps.nvidia.com -n nim-service
示例输出
NAME STATUS PVC AGE meta-llama3-8b-instruct Ready meta-llama3-8b-instruct-pvc 2024-09-19T13:20:53Z nv-embedqa-e5-v5 Ready nv-embedqa-e5-v5-pvc 2024-09-18T21:11:37Z nv-rerankqa-mistral-4b-v3 Ready nv-rerankqa-mistral-4b-v3-pvc 2024-09-18T21:11:37Z
显示 NIM 缓存状态#
显示 NIM 缓存状态
$ kubectl get nimcaches.apps.nvidia.com -n nim-service
示例输出
NAME STATUS PVC AGE meta-llama3-8b-instruct Ready meta-llama3-8b-instruct 2024-08-09T20:54:28Z nv-embedqa-e5-v5 Ready nv-embedqa-e5-v5-pvc 2024-08-09T20:54:28Z nv-rerankqa-mistral-4b-v3 Ready nv-rerankqa-mistral-4b-v3-pvc 2024-08-09T20:54:28Z
NIM 缓存对象可以报告以下状态
状态 |
描述 |
---|---|
失败 |
Job 未能下载和缓存模型配置文件。 |
进行中 |
Job 正在从 NGC 下载模型配置文件。 |
未就绪 |
Job 未就绪。创建 NIM 缓存资源后不久可能会报告此状态,此时 Pod 的镜像正在从 NGC 下载。 有关更多信息,请运行 |
待处理 |
Job 已创建,但尚未启动并变为活动状态。 |
PVC-已创建 |
如果您设置 |
就绪 |
Job 已下载并缓存模型配置文件。 |
已启动 |
Operator 创建一个 Job,从 NGC 下载模型配置文件。 |
显示缓存的模型配置文件#
查看自定义资源的
.status.profiles
字段$ kubectl get nimcaches.apps.nvidia.com -n nim-service \ meta-llama3-8b-instruct -o=jsonpath="{.status.profiles}" | jq .
示例输出
[ { "config": { "feat_lora": "false", "llm_engine": "vllm", "precision": "fp16", "tp": "2" }, "model": "meta/llama3-8b-instruct", "name": "19031a45cf096b683c4d66fff2a072c0e164a24f19728a58771ebfc4c9ade44f", "release": "1.0.3" } ]
在气隙环境中缓存模型#
您可以在具有网络访问权限的主机上运行 NIM 微服务容器,缓存模型,创建一个包含模型缓存的容器,然后运行一个 Job 将模型缓存复制到 PVC。
有关以下步骤中运行 NIM 容器和下载模型配置文件的更多信息,请参阅 NVIDIA NIM for LLMs 文档中的 从本地资产提供模型服务。
以下部分展示了一种缓存模型并将其添加到 PVC 的方法。
支持自定义 CA 证书#
如果您的集群具有需要自定义证书的 HTTP 代理,您可以在 ConfigMap 中添加这些证书,并将它们挂载到 NIM 缓存 Job 中。您可以使用自签名或自定义 CA 证书。
创建包含证书的 ConfigMap
$ kubectl create configmap -n nim-service ca-certs --from-file=<path-to-cert-file-1> --from-file=<path-to-cert-file-2>
当您创建 NIM 缓存 Job 时,指定 ConfigMap 的名称和要在容器中挂载它们的路径,并指定代理信息
spec: certConfig: name: ca-certs mountPath: /usr/local/share/ca-certificates/ env: - name: HTTPS_PROXY value: http://<example.proxy.com:port> - name: HTTP_PROXY value: http://<example.proxy.com:port> - name: NO_PROXY value: <example.com> - name: https_proxy value: http://<example.proxy.com:port> - name: http_proxy value: http://<example.proxy.com:port> - name: no_proxy value: <example.com>
对于 OpenShift Container Platform 安装,您必须启用证书注入。
创建一个文件,例如
ca-inject.yaml
,内容如下例所示apiVersion: v1 data: {} kind: ConfigMap metadata: labels: config.openshift.io/inject-trusted-cabundle: "true" name: ca-inject-cm namespace: nim-service
应用清单
$ oc apply -n nim-service -f ca-inject.yaml
有关更多信息,请参阅 OpenShift Container Platform 文档中的 使用 Operator 进行证书注入。
下载模型#
将您的 NGC API 密钥导出为环境变量
export NGC_API_KEY=M2...
在本地运行 NIM 容器镜像,列出模型配置文件,并下载模型配置文件。
启动容器
$ mkdir cache $ docker run --rm -it \ -v ./cache:/opt/nim/.cache \ -u $(id -u):$(id -g) \ -e NGC_API_KEY \ nvcr.io/nim/meta/llama3-8b-instruct:1.0.3 \ bash
将容器镜像和标签替换为您要为其缓存模型的 NIM 微服务。
列出模型配置文件
$ list-model-profiles
部分输出
... MODEL PROFILES - Compatible with system and runnable: - 19031a45cf096b683c4d66fff2a072c0e164a24f19728a58771ebfc4c9ade44f (vllm-fp16-tp2) ...
下载并缓存模型配置文件
$ download-to-cache --profile 1903...
退出容器
$ exit
将模型复制到容器#
创建一个
Dockerfile
,将模型配置文件复制到容器中FROM nvcr.io/nvidia/base/ubuntu:22.04_20240212 COPY cache /cache
构建包含模型配置文件的容器并将其推送到气隙集群可以访问的容器注册表
$ docker build <private-registry-name>/<model-name>:<tag> $ docker push <private-registry-name>/<model-name>:<tag>
将模型从容器复制到 PVC#
可选:如果您还没有 PVC,请创建一个 PVC
创建一个清单文件,例如
model-cache-pvc.yaml
,内容如下例所示apiVersion: v1 kind: PersistentVolumeClaim metadata: name: model-cache-pvc namespace: nim-service spec: storageClassName: <storage-class> resources: requests: storage: 10Gi
应用清单
$ kubectl apply -f model-cache-pvc.yaml
创建一个 Job,将模型配置文件复制到 PVC。
创建一个清单文件,例如
copy-cache-job.yaml
,内容如下例所示apiVersion: batch/v1 kind: Job metadata: name: copy-cache namespace: nim-service spec: ttlSecondsAfterFinished: 3600 template: spec: restartPolicy: Never containers: - name: copy-cache command: - "/bin/sh" args: - "-c" - "cd /cache && cp -R . /model-store && find /model-store" image: <private-registry-name>/<model-name>:<tag> imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false runAsGroup: 2000 runAsNonRoot: true runAsUser: 1000 volumeMounts: - mountPath: /model-store name: nim-cache-volume readOnly: false imagePullSecrets: - name: my-secret securityContext: fsGroup: 2000 runAsNonRoot: true runAsUser: 1000 volumes: - name: nim-cache-volume persistentVolumeClaim: claimName: model-cache-pvc backoffLimit: 4
应用清单
$ kubectl apply -f copy-cache-job.yaml
使用 LoRA 模型和适配器#
NVIDIA NIM for LLMs 支持由 NeMo Framework 和 Hugging Face Transformers 库训练的 LoRA 参数高效微调 (PEFT) 适配器。
您必须手动下载 LoRA 适配器,并使其可用于 NIM 微服务。以下步骤描述了一种满足此要求的方法。
在您应用的 NIM 缓存清单中指定
lora: true
kind: NIMCache metadata: name: meta-llama3-8b-instruct spec: source: ngc: modelPuller: nvcr.io/nim/meta/llama3-8b-instruct:1.0.3 pullSecret: ngc-secret authSecret: ngc-api-secret model: tensorParallelism: "1" lora: true gpus: - product: "a100" storage: pvc: create: true size: "50Gi" storageClass: <storage-class> volumeAccessMode: ReadWriteMany resources: {}
应用清单并等待直到
kubectl get nimcache -n nim-service meta-llama3-8b-instruct
显示 NIM 缓存为Ready
。使用 NGC CLI 或 Hugging Face CLI 下载 LoRA 适配器。
构建一个包含 CLI 的容器,如下例所示
FROM nvcr.io/nvidia/base/ubuntu:22.04_20240212 ARG NGC_CLI_VERSION=3.50.0 RUN apt-get update && DEBIAN_FRONTEND=noninteractive && \ apt-get install --no-install-recommends -y \ wget \ unzip \ python3-pip RUN useradd -m -s /bin/bash -u 1000 ubuntu USER ubuntu RUN wget --content-disposition --no-check-certificate \ https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions/${NGC_CLI_VERSION}/files/ngccli_linux.zip -O /tmp/ngccli_linux.zip && \ unzip /tmp/ngccli_linux.zip -d ~ && \ rm /tmp/ngccli_linux.zip ENV PATH=/home/ubuntu/ngc-cli:$PATH RUN pip install -U "huggingface_hub[cli]"
将容器推送到集群中节点可以访问的注册表。
应用类似于以下示例的清单,该清单运行容器。
当您创建清单时,请参阅 Pod 规范的关键注意事项
挂载 NIM 微服务访问模型的同一 PVC。
指定 NIM 缓存容器使用的同一用户 ID 和组 ID。以下清单显示了默认值。
指定
NGC_CLI_API_KEY
和NGC_CLI_ORG
环境变量。组织的价值可能有所不同。在
nim-service
命名空间中启动 Pod,以便 Pod 可以访问ngc-secret
Secret。
apiVersion: v1 kind: Pod metadata: name: ngc-cli spec: containers: - env: - name: NGC_CLI_API_KEY valueFrom: secretKeyRef: key: NGC_API_KEY name: ngc-api-secret - name: NGC_CLI_ORG value: "nemo-microservices/ea-participants" - name: NIM_PEFT_SOURCE value: "/model-store/loras" image: <private-registry>/<image-name>:<image-tag> command: ["sleep"] args: ["inf"] name: ngc-cli securityContext: capabilities: drop: - ALL runAsNonRoot: true volumeMounts: - mountPath: /model-store name: model-store restartPolicy: Never securityContext: fsGroup: 2000 runAsGroup: 2000 runAsUser: 1000 seLinuxOptions: level: s0:c28,c2 volumes: - name: model-store persistentVolumeClaim: claimName: meta-llama3-8b-instruct-pvc
访问 Pod
$ kubectl exec -it -n nim-service ngc-cli -- bash
Pod 可能会报告
groups: cannot find name for group ID 2000
。您可以忽略此消息。从 Pod 中的终端,下载 LoRA 适配器。
为 LoRA 适配器创建一个目录
$ mkdir $NIM_PEFT_SOURCE $ cd $NIM_PEFT_SOURCE
下载适配器
$ ngc registry model download-version "nim/meta/llama3-8b-instruct-lora:nemo-math-v1" $ ngc registry model download-version "nim/meta/llama3-8b-instruct-lora:nemo-squad-v1"
重命名目录以匹配 LoRA 模型目录结构的命名约定
$ mv llama3-8b-instruct-lora_vnemo-math-v1 llama3-8b-math $ mv llama3-8b-instruct-lora_vnemo-squad-v1 llama3-8b-squad
按 Ctrl+D 退出 Pod,然后运行
kubectl delete pod -n nim-service ngc-cli
。
当您创建 NIM 服务实例时,指定 NIM_PEFT_SOURCE
环境变量
apiVersion: apps.nvidia.com/v1alpha1
kind: NIMService
metadata:
name: meta-llama3-8b-instruct
spec:
...
env:
- name: NIM_PEFT_SOURCE
value: "/model-store/loras"
NIM 微服务运行后,监控日志中是否有如下记录
{"level": "INFO", ..., "message": "LoRA models synchronizer successfully initialized!"}
{"level": "INFO", ..., "message": "Synchronizing LoRA models with local LoRA directory ..."}
{"level": "INFO", ..., "message": "Done synchronizing LoRA models with local LoRA directory"}
上述步骤是用于下载 NeMo 格式 LoRA 适配器的示例命令。有关使用 Hugging Face Transformers 格式、模型目录结构、其他模型的适配器等信息,请参阅 NVIDIA NIM for LLMs 文档中的 参数高效微调。
故障排除#
NIM 缓存报告无状态#
如果您运行 kubectl get nimcache -n nim-service
并且输出未报告状态,请执行以下操作以获取更多信息
确定缓存 Job 的状态
$ kubectl get jobs -n nim-service
示例输出
NAME COMPLETIONS DURATION AGE meta-llama3-8b-instruct-job 1/1 8s 2m57s
使用类似
kubectl logs -n nim-service job/meta-llama3-8b-instruct-job
的命令查看 Job 的日志。如果缓存 Job 不再可用,请删除 NIM 缓存资源并重新应用清单。
描述 NIM 缓存资源并查看条件
$ kubectl describe nimcache -n nim-service <nim-cache-name>
部分输出
Status: Conditions: Last Transition Time: 2024-09-19T13:20:53Z Message: The PVC has been created for caching NIM model Reason: PVCCreated Status: True Type: NIM_CACHE_PVC_CREATED Last Transition Time: 2024-09-19T13:26:24Z Message: Reason: Reconciled Status: False Type: NIM_CACHE_RECONCILE_FAILED Last Transition Time: 2024-09-19T13:24:36Z Message: The Job to cache NIM has been created Reason: JobCreated Status: True Type: NIM_CACHE_JOB_CREATED Last Transition Time: 2024-09-19T13:25:50Z Message: The Job to cache NIM is in pending state Reason: JobPending Status: True Type: NIM_CACHE_JOB_PENDING Last Transition Time: 2024-09-19T13:25:50Z Message: The Job to cache NIM has successfully completed Reason: JobCompleted Status: True Type: NIM_CACHE_JOB_COMPLETED
上述输出显示了一个 NIM 缓存资源,该资源最终成功下载并缓存了模型配置文件。
在 Operator 创建缓存 Job 的时间间隔内报告了
NIM_CACHE_RECONCILE_FAILED
条件,但在 Pod 运行之前,因为镜像正在从 NGC 下载。在输出中,该条件的状态设置为False
,表示该条件不再准确。通过运行
kubectl logs -n nim-operator -l app.kubernetes.io/name=k8s-nim-operator
查看 Operator 日志。
未选择任何配置文件进行缓存#
如果 NIM 缓存控制器未自动选择要缓存的模型配置文件,您可以使用两种方法查看可用的模型配置文件
缓存控制器将模型配置文件复制到 ConfigMap 中。您可以使用类似以下示例的命令查看 ConfigMap,以识别使用社区后端(如 vLLM 或 ONNX)的模型配置文件。
$ kubectl get cm -n nim-service meta-llama3-8b-instruct-manifest -o yaml | less
在配置了 Docker、NVIDIA Container Toolkit 和 NVIDIA GPU 的主机上运行容器。请参阅 NVIDIA NIM for LLMs 文档中的 list-model-profiles 命令。
在您确定与您的 GPU 兼容的模型配置文件后,在 spec.source.ngc.model.profiles
字段中指定模型配置文件 ID,然后重新应用清单。
删除 NIM 缓存#
要删除 NIM 缓存,请执行以下步骤。
查看 NIM 缓存自定义资源
$ kubectl get nimcaches.apps.nvidia.com -A
示例输出
NAMESPACE NAME STATUS PVC AGE nim-service meta-llama3-8b-instruct ready model-store 2024-08-08T13:14:30Z
删除自定义资源
$ kubectl delete nimcache -n nim-service meta-llama3-8b-instruct
如果 Operator 在您创建 NIM 缓存时创建了 PVC,则 Operator 将删除 PVC 和缓存的模型配置文件。您可以通过运行类似以下示例的命令来确定 Operator 是否创建了 PVC
$ kubectl get nimcaches.apps.nvidia.com -n nim-service \ -o=jsonpath='{range .items[*]}{.metadata.name}: {.spec.storage.pvc.create}{"\n"}{end}'
示例输出
meta-llama3-8b-instruct: true