一、K8s管理GPU资源技术架构

k8s默认不支持管理GPU

Capacity:
  cpu: "16"
  ephemeral-storage: "524027908Ki"
  hugepages-1Gi: "0"
  hugepages-2Mi: "0"
  memory: "65333844Ki"
  pods: "110"

安装完英伟达驱动后支持管理GPU

Capacity:
  cpu: "240"
  ephemeral-storage: "1967569888Ki"
  hugepages-1Gi: "0"
  hugepages-2Mi: "0"
  memory: "131470132Ki"
  nvidia.com/gpu: "4"
  pods: "110"

二、K8s管理大模型服务方案

针对vLLM serve、Ollama serve等各类大模型服务,可以使用资源类型为Deployment进行管理

三、K8s GPU Operator介绍

Kubernetes GPU Operator由英伟达开发,利用Kubernetest中的Operator框架,自动化管理所有用于配置GPU所需的NVIDIA软件,比t如NVIDIA Driver Manager、NVIDIA Container Toolkit、NVIDIA Device Plugin、NVIDIA DCGM等。

Kubernetes管理Deepseek大模型和GPU入门与实战-图2

  • NVIDIA Driver Manager:负责安装和管理Kubernetes节点上所需的NVIDIA驱动程序,确保GPU能够被容器和宿主机识别
  • NVIDIA Container Toolkit:提供了对运行时GPU配置的支持,得容器内的应用程序能够访问主机上的NVIDIA GPU和相关库
  • NVIDIA Device Plugin:负责上报GPU资源状态,让Kubernetes可以调度和管理GPU资源
  • NVIDIA DCGM:全称Data Center GPU Manager,主要用于采集GPU的性能指标,比如温度、利用率等,同时提供API可以与其他工具集成

四、K8s Ollama Operator介绍

Kubernetes Ollama Operator同样使用Kubernetes Operator框架实现,主要用于将Ollama-与Kubernetes调度能力结合在一起,实现在Kubernetes中轻松管理、配置和维护大模型。

Ollama Operator提供名为Model的自定义资源,可以像管理Kubernetes核心资源一样管理模型服务。同时也提供了一个名为Kollama的客户端工具,可以像Kubect1一样管理模型服务。

五、K8s Ollama Operator核心资源介绍

5.1 Model

5.1.1 Model资源定义

Model 资源是 Ollama Operator 的核心组件,用于描述和配置一个大型语言模型的部署。它通过 YAML 文件定义,包含模型的名称、镜像、存储、资源限制等信息。以下是一个典型的 Model 资源示例:

apiVersion: ollama.ayaka.io/v1
kind: Model
metadata:
  name: phi
  namespace: ollama-llms
spec:
  image: phi
  storageClassName: local-path
  replicas: 1
  imagePullPolicy: IfNotPresent
  resources:
    limits:
      nvidia.com/gpu: 1
    requests:
      cpu: "2"
      memory: "8Gi"

5.1.2 Model资源关键字段

metadata

  • name: 模型的名称,用于唯一标识该模型实例。
  • namespace: 模型所属的命名空间,用于资源隔离和管理。

spec

  • image: 指定模型的镜像名称,例如 phillama3。镜像可以从 Ollama 的模型库中拉取,也可以通过自定义 Modelfile 创建。
  • storageClassName: 指定存储类名称,用于管理模型的持久化存储。例如,local-path 表示使用本地存储。
  • replicas: 模型的副本数,用于控制模型的并发处理能力。
  • imagePullPolicy: 镜像拉取策略,例如 IfNotPresent 表示如果本地已存在镜像则不重新拉取。
  • resources: 定义模型的资源限制和请求,包括 CPU、内存和 GPU 资源。例如,nvidia.com/gpu: 1 表示分配一个 GPU 资源。

5.1.3 Model资源功能

1、模型部署

通过 Model 资源,用户可以轻松部署大型语言模型。Ollama Operator 会根据 YAML 文件中的配置自动拉取镜像、分配资源并启动模型服务

2、模型管理

  • 模型更新: 修改 Model 资源的配置(如镜像版本或资源限制)后,Ollama Operator 会自动更新模型实例。
  • 模型删除: 删除 Model 资源后,相关的模型实例和资源会被清理

3、资源优化

通过 resources 字段,用户可以精确控制模型的资源使用情况,例如限制 GPU 使用量或分配更多内存,以提高模型的运行效率

5.1.4 Model资源的应用场景

1、本地推理

Model 资源支持在本地环境中运行大型语言模型,适用于需要数据隐私或低延迟的场景

2、多模型管理

通过定义多个 Model 资源,用户可以同时部署和管理多个模型,例如同时运行 llama3phi 模型

3、自定义模型

用户可以通过 Modelfile 创建自定义模型,并将其导入 Model 资源中进行部署。例如,从 GGUF 格式的模型文件中导入自定义模型。

5.1.5 Model资源的扩展功能

1、REST API 支持

Ollama 提供了 REST API,用户可以通过 HTTP 请求与部署的模型进行交互。例如,使用 /api/generate 接口生成文本响应

2、多模态支持

Model 资源支持多模态模型,例如处理图像和文本输入的 llava 模型

3、环境变量配置

通过环境变量(如 OLLAMA_HOSTOLLAMA_KEEP_ALIVE),用户可以进一步自定义模型的行为,例如调整模型的存活时间或监听地址

六、Kollama工具使用详解

1、kollama deploy:用于部署一个大模型

./kollama deploy phi --image=phi \
--storage-class local-path -n ollama-llms

2、kollama undeploy:用于卸载一个大模型

./kollama undeploy phi -n ollama-llms

3、kollama expose:用于暴露一个模型

./kollama expose phi -n ollama-11ms