5 篇文章带有标签 “nfs”

华为 Atlas 800I A2 大模型部署实战(八):GPUStack 实现 GPU 集群化管理

本文章详细介绍了华为 Atlas 800I A2 推理服务器上部署大型AI模型的实践过程,重点围绕GPUStack这一开源GPU集群管理工具。文章首先阐述了GPUStack的核心特性,包括其广泛的兼容性、对多种模型和推理框架的支持、灵活的部署能力以及智能管理功能。随后,文档提供了在主服务器和从服务器上安装、配置和使用GPUStack的详尽步骤,并展示了如何通过NFS实现模型文件的统一存储,以优化多服务器集群中的模型调度效率。文中还包含了GPUStack用户界面的截图,帮助读者直观理解其各项功能。

服务器配置

AI 服务器:华为 Atlas 800I A2 推理服务器 X 5

组件 规格
CPU 鲲鹏 920(5250)
NPU 昇腾 910B4(8X32G)
内存 1024GB
硬盘 系统盘:450GB SSDX2 RAID1
数据盘:3.5TB NVME SSDX4
操作系统 openEuler 22.03 LTS

GPUStack 介绍

GPUStack 是一款开源的 GPU 集群管理器,专为运行 AI 模型设计,其核心特点如下:

  • 广泛的兼容性:支持多厂商 GPU,覆盖苹果 Mac、Windows 电脑及 Linux 服务器,还能适配多种推理后端(如 vLLM、Ascend MindIE 等),并可同时运行多个版本的推理后端,满足不同模型的运行需求。
  • 丰富的模型支持与灵活部署:支持 LLM、VLM、图像模型、音频模型等多种类型模型,可实现单节点和多节点多 GPU 推理,包括跨厂商和不同运行环境的异构 GPU,且能通过添加更多 GPU 或节点轻松扩展架构。
  • 稳定与智能管理:具备自动故障恢复、多实例冗余和推理请求负载均衡功能,保障高可用性;能自动评估模型资源需求、兼容性等部署相关因素,还可基于可用资源动态分配模型。
  • 实用的附加功能:采用轻量级 Python 包,依赖少、运维成本低;提供与 OpenAI 兼容的 API,便于无缝集成;支持用户及 API 密钥管理,可实时监控 GPU 性能、利用率以及令牌使用量和 API 请求速率。

在 Kubernetes 上部署 MySQL

部署单实例 MySQL

创建 PVC(NFS)

mysql-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: nfs-client
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

创建 Deployment mysql-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql:5.

使用 StorageClass 动态创建 NFS 持久卷

PVC 操作流程

Volume

卷的核心是一个目录,其中可能存有数据,Pod 中的容器可以访问该目录中的数据。 所采用的特定的卷类型将决定该目录如何形成的、使用何种介质保存数据以及目录中存放的内容。

使用卷时, 在 .spec.volumes 字段中设置为 Pod 提供的卷,并在 .spec.containers[*].volumeMounts 字段中声明卷在容器中的挂载位置。

emptyDir 卷的存储介质(例如磁盘、SSD 等)是由保存 kubelet 数据的根目录(通常是 /var/lib/kubelet)的文件系统的介质确定。 Kubernetes 对 emptyDir 卷或者 hostPath 卷可以消耗的空间没有限制,容器之间或 Pod 之间也没有隔离。

PersistentVolume

持久卷(PersistentVolume,PV) 是集群中的一块存储,可以由管理员事先创建, 或者使用存储类(Storage Class)来动态创建。 持久卷是集群资源,就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样, 也是使用卷插件来实现的,只是它们拥有独立于任何使用 PV 的 Pod 的生命周期。

PV 对象是由运维人员事先创建在 Kubernetes 集群里待用的。

PersistentVolumeClaim 持久卷声明(PersistentVolumeClaim,PVC

Kubernetes中的卷:将磁盘挂载到容器

通过卷在容器之间共享数据

Build [Date HTML Generator] Image

编写 HTML 生成器(date-html-generator.sh)

#!/bin/sh
mkdir /var/htdocs
while :
do
  echo $(date +'%Y-%m-%d %H:%M:%S') Writing to /var/htdocs/index.html
  echo $(date +'%Y-%m-%d %H:%M:%S') > /var/htdocs/index.html
  sleep 1
done
  • %Y : 完整年份 (0000-9999)
  • %m : 月份 (01-12)
  • %d : 日 (01-31)
  • %H : 小时(00-23)
  • %M : 分钟(00-59)
  • %S : 秒(00-60)

编写 Dockerfile

FROM busybox
ADD date-html-generator.sh /bin/date-html-generator.sh
RUN chmod +x /bin/date-html-generator.sh
ENTRYPOINT /bin/date-html-generator.sh

生成 date-html-generator 镜像 docker build -t wangjunjian/date-htm

NFS配置

Ubuntu

服务端

  • 安装服务端
sudo apt install nfs-kernel-server
  • 查看服务状态
sudo systemctl status nfs-server
  • 查看开启的NFS协议
sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
  • 配置访问的路径
sudo nano /etc/exports
/data/nfs        172.16.33.0/24(rw,sync,fsid=0,crossmnt,no_subtree_check)
  • 应用配置
sudo exportfs -ra
  • 查看当前应用
sudo exportfs -v
  • 重启服务
sudo systemctl restart nfs-server

客户端

  • 安装客户端
sudo apt install nfs-common
  • 查看NFS服务器导出列表
showmount -e 172.16.33.157
Export list for 172.16.33.157:
/data/nfs 172.16.33.0/24,172.16.128.164
  • 挂载NFS
sudo mount -t nfs 172.16.33.157:/ $(pwd)/nfs
  • 移除挂载
sudo umount $(pwd)/nfs

参考资料 如何在Ubuntu 18.04上安装和配置NFS服务器 ubuntu18.