当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]llm或大型语言模型由于能够生成类似人类的文本而在各个领域具有广泛的应用。在现实场景中有效地部署它们带来了独特的挑战。这些模型需要大量的计算资源、无缝的可伸缩性和高效的流量管理,以满足生产环境的需求。这就是Kubernetes变得至关重要的地方。轻量级Kubernetes发行版在本地开发中越来越受欢迎,例如K3s、K3d、Kind、Minikube和microk8在这种情况下特别有用。这些工具的目的相似。他们在一台机器上管理Kubernetes。

llm或大型语言模型由于能够生成类似人类的文本而在各个领域具有广泛的应用。在现实场景中有效地部署它们带来了独特的挑战。这些模型需要大量的计算资源、无缝的可伸缩性和高效的流量管理,以满足生产环境的需求。这就是Kubernetes变得至关重要的地方。轻量级Kubernetes发行版在本地开发中越来越受欢迎,例如K3s、K3d、Kind、Minikube和microk8在这种情况下特别有用。这些工具的目的相似。他们在一台机器上管理Kubernetes。

在这篇博文中,您将学习如何开始使用k3s Kubernetes集群在NVIDIA Jetson AGX Orin开发工具包上运行LLM。K3s是一个官方的云原生计算基金会沙盒项目,它带来了一个轻量级的、完全兼容的Kubernetes发行版,专为在资源有限的生产环境中使用而设计,针对ARM64进行了优化,使其成为小规模和边缘部署的理想选择,如NVIDIA Jetson AGX Orin开发工具包。

下图显示了您在阅读本文后将获得的目标基础设施。

我相信K3s使GPU直通到集群更容易,因为它可能只需要依赖Nvidia CUDA和Docker。为了实现这一点,默认的Docker运行时位于/etc/docker/daemon.Json需要修改。带有NVIDIA运行时支持的Docker安装说明可在NVIDIA Jetson AI实验室获得:

在开始本教程之前,请确保您具有Kubernetes的基本知识。必须熟悉kubectl、部署、服务和pod。

使用Docker Runtime安装K3s

使用Docker作为容器运行时安装K3s,并使kubecconfig文件可读。

并完成了!您已经在本地安装了Kubernetes集群。只需要一行代码,就可以运行一个K3s集群(包括负载平衡器、入口、存储类、coreDNS等)。这也将自动在NVIDIA Jetson AGX Orin上安装kubectl。

安装完成后,可以通过运行以下命令来验证集群的状态:

输出应该是一个集群节点列表,目前只有一个,或者运行:

为了有效地管理Kubernetes应用程序,您可以安装Helm,它是Kubernetes的包管理器。创建一个shell脚本(例如,install_helm.sh),内容如下:

保存此脚本并使用命令执行:

要验证Kubernetes环境并可能访问pod中的GPU资源,请创建一个名为test的YAML文件。Yaml具有以下规格:

使用以下命令将此配置应用到Kubernetes集群:

一旦pod转换到Running状态,您可以获得对容器的交互式shell访问,以执行具有CUDA支持的Python代码:

执行以下命令,确认图形处理器已被识别。

输出Orin确认容器内的PyTorch环境可以成功检测和利用NVIDIA Jetson AGX Orin的GPU。既然已经创建了集群,就可以部署运行vLLM的Kubernetes Pod了。

部署vLLM生产栈

vLLM生产堆栈是构建在vLLM之上的推理堆栈的开源参考实现。我们将创建一个Kubernetes部署和服务来管理和公开LLM应用程序。

首先,我们需要为专门为NVIDIA Jetson AGX Orin Developer Kit的arm64架构设计的vLLM路由器创建一个自定义Docker映像。

创建一个Dockerfile,内容如下:

导航到包含Dockerfile的目录,在终端中执行以下命令来构建Docker镜像:

生成的Docker映像将被标记为vLLM -router-arm64,并可用于在NVIDIA Jetson AGX Orin上部署vLLM路由器。最后,将其推送到容器注册表(如Docker Hub)。

然后,克隆vLLM生产栈存储库:

添加vLLM Helm存储库:

幸运的是,已经存在vLLM的容器映像,因此您不必担心自己构建Dockerfile。

在使用Helm部署vLLM生产堆栈时,需要修改这些值。使用自定义的ARM64路由器映像。在你的值中找到routerSpec部分。Yaml文件(在tutorial /assets/values-02-basic-config中)。Yaml或您的自定义配置),并更新如下:

我们将使用vLLM在Kubernetes集群上部署一个LLM模型(meta-llama/Llama-3.2-1B-Instruct)。

使用Helm安装vLLM堆栈:

您应该看到指示成功部署Helm图表的输出:

现在已经部署了带有两个副本的Kubernetes部署,因此您可以开始测试它是否有效。

检查Kubernetes集群中pod的状态:

您应该看到vLLM路由器和服务引擎的pod处于运行状态。你可以检查路由器pod的日志,以确保它正确运行并服务API请求:

要从Kubernetes集群外部访问vLLM路由器,可能需要使用端口转发或负载平衡器公开服务。端口转发示例如下:

现在可以向vLLM路由器API发送请求。

您应该收到一个JSON响应,其中列出了vLLM堆栈提供的可用模型:

部署完成后,你可以像这样发送一个测试请求:

以下输出显示了模型响应的示例:

它像预期的那样工作。现在让我们使用jtop监控解决方案检查内存消耗情况。

要扩展副本的数量,请更新replicaccount的值。并重新部署Helm图表。扩展副本的数量可以提高性能和可用性,但监控资源消耗并确保Kubernetes集群有足够的资源来适应增加的负载是至关重要的。

将replicaccount设置为3后的输出示例:

高内存使用率可能导致性能下降,甚至出现内存不足(OOM)错误,从而导致pod崩溃。内存消耗为

在将replicaccount更新为4并重新部署后,使用kubectl get pods检查pod可能会显示由于CPU资源不足而导致挂起的pod:

在您的值中缩放replicaccount时。您正在指示Kubernetes为您的vLLM部署创建更多实例(pod)。每个pod都需要CPU和内存资源。

使用两个副本部署Llama 3.1 8B指令模型

本演练演示了如何在Kubernetes集群上部署强大的Llama 3.1 8B指令语言模型,利用vLLM推理引擎进行高效服务

现在部署已经启动并运行,让我们发送一个测试请求,以确保模型正常工作。

如果请求成功,您将收到一个类似于以下内容的JSON响应:

现在可以使用监视工具(如jtop)验证内存消耗情况。

恭喜你!您已经使用vLLM在Kubernetes集群上成功地部署了Llama 3.1 8B指令语言模型和两个副本。这种设置提供了一种可伸缩的、可能更具弹性的推理服务。

卸载堆叠,使用命令:

使用Grafana和Prometheus监控和记录

监视和日志记录对于维护和排除LLM应用程序的故障至关重要。Prometheus是一个收集和存储时间序列数据的开源监控和警报工具,而Grafana是一个流行的数据可视化平台,允许您创建交互式仪表板和可视化。

导航到observability文件夹。然后运行安装脚本:

安装输出:

已成功安装kube-prometheus-stack。将Grafana仪表板端口转发到本地node-port:

转发普罗米修斯仪表板:

现在你可以浏览Grafana Dashboard了。

通过组合这些工具,您可以对Kubernetes集群的性能和健康状况获得有价值的见解,从而更容易识别和排除问题,包括自动伸缩、监控和服务发现,并且您的设置可以有效地处理实际需求。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭