链载Ai

标题: 让生成式 AI 触手可及:NVIDIA NIM on VKE 部署实践 [打印本页]

作者: 链载Ai    时间: 2 小时前
标题: 让生成式 AI 触手可及:NVIDIA NIM on VKE 部署实践


ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);line-height: 1.75em;visibility: visible;">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);line-height: 1.75em;visibility: visible;">进入 2024 年后,企业对 LLM 的关注开始转向生产环境的大规模部署,将 AI 模型接入现有基础设施以优化系统性能,包括降低延迟、提高吞吐量,以及加强日志记录、监控和安全性等。然而这一路径既复杂又耗时,往往需要构建专门的平台和流程。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);line-height: 1.75em;visibility: visible;">在部署 AI 模型的过程中,研发团队通常需要执行以下步骤:

为了简化上述流程并降低技术门槛,火山引擎云原生团队推出 NIM on VKE 最佳实践。通过结合 NIM 一站式模型服务能力,以及火山引擎容器服务 VKE 在成本节约和极简运维等方面的优势,这套开箱即用的技术方案将帮助企业更加快捷和高效地部署 AI 模型。

AI 微服务化:NIM


NIM(NVIDIA Inference Microservice)是英伟达(NVIDIA)推出的一套经过优化的企业级生成式 AI 微服务,它封装了推理引擎,通过 API 接口对外提供服务,旨在帮助企业和个人开发者更简单地开发和部署 AI 驱动的应用程序。
NIM 使用行业标准 API,支持跨多个领域的 AI 用例,包括大型语言模型(LLM)、视觉语言模型(VLM),以及用于语音、图像、视频、3D、药物研发、医学成像等的模型。同时,它基于包括 NVIDIA Triton™ Inference Server、TensorRT™、TensorRT-LLM 和 PyTorch 在内的强大基础构建,可以在加速基础设施上提供最优的延迟和吞吐量。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);line-height: 1.75em;visibility: visible;">为了进一步降低复杂度,NIM 将模型和运行环境做了解耦,以容器镜像的形式为每个模型或模型系列打包。其在 Kubernetes 内的部署形态如下:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);line-height: 1.75em;visibility: visible;">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);line-height: 1.75em;visibility: visible;text-align: center;">NIM on Kubernetes

火山引擎容器服务 VKE(Volcengine Kubernetes Engine)通过深度融合新一代云原生技术,提供以容器为核心的高性能 Kubernetes 容器集群管理服务,可以为 NIM 提供稳定、可靠、高性能的运行环境,实现模型使用和运行的强强联合。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);line-height: 1.75em;visibility: visible;">同时,模型服务的发布和运行也离不开发布管理、网络访问、观测等能力,VKE 深度整合了火山引擎高性能计算(ECS/裸金属)、网络(VPC/EIP/CLB)、存储(EBS/TOS/NAS)、弹性容器实例(VCI)等服务,并与镜像仓库、持续交付、托管 Prometheus、日志服务、微服务引擎等云产品横向打通,可以实现 NIM 服务构建、部署、发布、监控等全链路流程,帮助企业更灵活、更敏捷地构建和扩展基于自身数据的定制化大型语言模型(LLMs),打造真正的企业级智能化、自动化基础设施。


NIM on VKE 部署流程


下面,我们将介绍 NIM on VKE 的部署流程,助力开发者快速部署和访问 AI 模型。

准备工作

部署 NIM 前,需要做好如下准备:


部署

1. 在国内运行 NIM 官方镜像时,为了避免网络访问影响镜像拉取速度,可以提前拉取相应 NIM 镜像并上传到火山引擎镜像仓库 CR,操作步骤如下:

$ export NGC_API_KEY=<value> # ngc 的 api key$ echo "$NGC_API_KEY" | docker login nvcr.io --username '$oauthtoken' --password-stdin
$ docker pull nvcr.io/nim/meta/llama3-8b-instruct:1.0.0$ docker tag nvcr.io/nim/meta/llama3-8b-instruct:1.0.0 <your-cr-host>/<your-cr-namespace>/llama3-8b-instruct:1.0.0
$ echo "<your-cr-password>" | docker login --username=<account-name>@<account-id> <your-cr-host>$ docker push <your-cr-host>/<your-cr-namespace>/llama3-8b-instruct:1.0.0

2. 下载代码到本地,进入到代码的 Helm Chart 目录中,把 Helm Chart 推送到镜像仓库(Helm 版本大于 3.7):

$gitclonehttps://github.com/NVIDIA/nim-deploy.git$cdnim-deploy/helm/nim-llmhelmregistrylogin--username=<account-name>@<account-id><your-cr-host>helmpackage./--version0.2.1helmpushnim-llm-0.2.1.tgzoci://<your-cr-host>/<your-cr-namespace>

3. 在 VKE 的应用中心的 Helm 应用中选择创建 Helm 应用,并选择对应 chart,集群信息,并点击 values.yaml 的编辑按钮进入编辑页:

4. 覆盖 values 内容为如下值来根据火山引擎环境调整参数配置,提升部署性能,点击确定完成参数改动,再继续在部署页点击确定完成部署

image:#Adjusttotheactuallocationoftheimageandversionyouwantrepository:<your-cr-host>/<your-cr-namespace>/llama3-8b-instructtag:1.0.0model:name:meta/llama3-8b-instruct#notstrictlynecessary,butenablesrunning"helmtest"belowngcAPISecret:ngc-apingcAPIKey:"<your-ngc-api-key>"persistence:enabled:truestorageClass:"<your-nas-storage-class>"annotations:helm.sh/resource-policy:keepstatefulSet:enabled:falsemetrics:enabled:trueserviceMonitor:#forusewiththePrometheusOperatorandtheprimaryserviceobjectenabled:trueadditionalLabels:volcengine.vmp:"true"service:typeoadBalancerpodAnnotations:vci.vke.volcengine.com/preferred-instance-family:vci.gni2#规格按模型和region情况具体选择,参考https://www.volcengine.com/docs/6460/76911选择适配规格vke.volcengine.com/burst-to-vci:enforceresources:limits:nvidia.com/gpu:1

5. Pod 启动过程中需要下载模型,需要等待模型下载完成时间。若 Pod 日志出现如下内容或者 Pod 状态变成 Ready,说明服务已经准备好:


INFO:Uvicornrunningonhttp://0.0.0.0:8000(PressCTRL+Ctoquit)
6.在VKE控制台获取LBService地址(Service名称为<release-name>-nim-llm)

7. 访问 NIM 服务

$curl-X'POST'\'http://<lb-ip>:8000/v1/chat/completions'\-H'accept:application/json'\-H'Content-Type:application/json'\-d'{"messages":[{"content":"Youareapoliteandrespectfulchatbothelpingpeopleplanavacation.","role":"system"},{"content":"WhatshouldIdofora4dayvacationinSpain?","role":"user"}],"model":"meta/llama3-8b-instruct","max_tokens":16,"top_p":1,"n":1,"stream":false,"stop":"\n","frequency_penalty":0.0}'

会有如下输出:

{"id":"cmpl-a98bbfec02ab4771a3d6ad81caf63e94","object":"chat.completion","created":1718878017,"model":"meta/llama3-8b-instruct","choices":[{"index":0,"message":{"role":"assistant","content":"¡hola!Spainisawonderfuldestination,andI'dbedelightedto"},"logprobs":null,"finish_reason":"length","stop_reason":null}],"usage":{"prompt_tokens":42,"total_tokens":58,"completion_tokens":16}}

监控

NIM 提供了丰富的观测指标和 Grafana Dashboard,详情可参考Observability:https://docs.nvidia.com/nim/large-language-models/latest/observability.html#prometheus。

在 VKE 中,可通过如下方法搭建 NIM 监控:

1. 参考文档搭建 Grafana:https://www.volcengine.com/docs/6731/126068。

2. 进入 Grafana 中,在 dashboard 菜单中选择 import:

3. 按照NIM 官方文档中的教程导入NIM Dashboard:

4. 观测面板效果如下:


结语


相比直接构建大模型镜像,基于 VKE 使用 NIM 部署和访问模型有如下优点:

- END-






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5