docker创建gpustack节点

概要

GPUSTack 是一种专注于 GPU 资源管理和调度的云计算解决方案。它的主要目的是高效管理和调度 GPU 资源,为人工智能(AI)、机器学习(ML)、高性能计算(HPC)等需要大量计算能力的工作负载提供支持。


GPUSTack 的核心概念

  1. GPU 资源池化

    • 将服务器中的 GPU 资源虚拟化和池化,支持多个用户共享。
    • 可以根据不同任务动态分配 GPU 核心或显存。
  2. 多租户隔离

    • 支持多用户隔离,确保每个用户的任务运行在独立的环境中。
    • 提供强大的权限和配额管理。
  3. 任务调度

    • 提供智能调度算法,根据任务需求动态分配 GPU。
    • 支持按需扩展,最大化资源利用率。
  4. 兼容性

    • 与主流深度学习框架(如 TensorFlow、PyTorch)和 HPC 软件兼容。
    • 支持 Docker 和 Kubernetes 集成,用于容器化工作负载。
  5. 监控与优化

    • 实时监控 GPU 的使用情况(显存、核心利用率、温度等)。
    • 提供性能调优建议,例如任务排队优先级和资源分配优化。

GPUSTack 的架构

  1. 管理层

    • 提供 Web UI 和 API,用于管理用户、资源、调度策略等。
    • 集成身份认证和授权(如 LDAP、OAuth)。
  2. 调度层

    • 基于任务需求和资源状态进行 GPU 分配。
    • 支持抢占式任务管理,确保关键任务的优先级。
  3. 计算层

    • 由多台 GPU 服务器组成,运行用户提交的工作负载。
    • 每台服务器可运行多个隔离的任务实例。
  4. 存储与网络

    • 提供快速的分布式存储,用于存放模型、数据集和结果。
    • 高速网络互联,确保多节点协作的低延迟。

GPUSTack 的功能特性

  1. 动态 GPU 分配

    • 根据用户需求动态调整 GPU 核心、显存和带宽分配。
  2. 容器化支持

    • 集成 Docker 和 Kubernetes,方便开发者快速部署任务。
  3. 任务优先级

    • 支持任务队列和优先级调度,避免资源浪费。
  4. 多环境支持

    • 兼容各种深度学习框架、传统 HPC 应用和自定义工作负载。
  5. 高可用性

    • 支持故障恢复和任务迁移,避免单点故障影响任务。
  6. 可视化监控

    • 提供 GPU 使用率、任务状态、性能瓶颈等实时数据。

GPUSTack 的优势

  1. 高效利用 GPU

    • 避免 GPU 资源闲置或过载,提高资源利用率。
  2. 降低成本

    • 支持资源按需分配,优化 GPU 采购和使用成本。
  3. 用户友好

    • 提供简单的 Web 界面和自动化工具,降低技术门槛。
  4. 弹性扩展

    • 支持 GPU 资源的横向扩展,满足不同规模的需求。
  5. 安全可靠

    • 提供租户隔离和任务沙箱,保护用户数据和任务安全。

GPUSTack 的典型应用场景

  1. 深度学习训练

    • 快速部署和管理大规模分布式训练任务。
    • 动态分配 GPU,加速模型训练。
  2. 高性能计算(HPC)

    • 提供强大的并行计算能力,用于科学计算和工程模拟。
  3. 视频编码与渲染

    • 支持 GPU 加速的多媒体处理和 3D 渲染任务。
  4. AI 推理

    • 优化推理任务的性能,满足实时计算需求。

与其他 GPU 管理平台的比较

特性 GPUSTack Kubernetes with GPU Slurm GPU Integration
动态分配 GPU 支持 部分支持 依赖插件或手动配置
多租户隔离 完整支持 需要手动配置 支持
高性能调度 优化调度算法 依赖外部调度器 提供基础调度
容器化支持 原生支持 原生支持 部分支持
可视化与监控 丰富的监控工具 依赖外部工具(如 Prometheus) 基础监控工具

项目源码:gpustack/gpustack: Manage GPU clusters for running LLMs

项目文档:Docker Installation - GPUStack

使用docker安装部署:

1.使用docker创建bond0网络

创建独属于docker网络模式一般为桥接模式,才能更好的映射物理机网络命令如下:

docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.254 -o parent=bond0 my_macvlan_network

如图所示:

2.第二步从github上面拉取源代码,拉取单机的代码进行编译即可,因为在docker中需要映射这几个目录例如我当前的gpustack在当前/data下面

3.使用docker启动pgustack服务端

命令如下docker run -v /data/gpustack:/gpustack -d --name gpumaster --gpus all --network=my_macvlan_network --ip 192.168.2.3 gpustack/gpustack --data-dir=/gpustack --disable-worker

自动拉取gpustack镜像以及自动启动如图所示,这里是应该下载并启动成功。

4.使用docker启动gpustack客户端

docker run -v /data/gpustack:/gpustack -d --name gpuworker05 --gpus all --network=my_macvlan_network --ip 192.168.2.5 gpustack/gpustack --server-url http://192.168.2.3:80 --token xxxxxxxxxxxxxxxxxxxxxxxxx --tools-download-base-url https://gpustack-1303613262.cos.ap-guangzhou.myqcloud.com这里的token就是编译后安装的token,为当前/data下面的的token列表

5.登录网页进行查看

总结

使用gpustack单节点需要注意的需要从源码上面进行编译,将对应的目录都要映射到容器的目录这样才能进行操作,当然当前也为单节点的操作,如果要进行批量创建节点,提供一个批量创建gpustack脚本链接:docker批量创建gpustack虚拟主机脚本-CSDN博客

相关推荐
还算善良_3 分钟前
【乐企文件生成工程】搭建docker环境,使用docker部署工程
运维·docker·容器
Curtis09801 小时前
RHCE——Ubuntu Linux操作系统
linux·服务器·ubuntu
18.Show4 小时前
有趣的Docker
运维·docker·容器
wuzuyu3654 小时前
docker.io连接超时的处理,用代理网站
运维·docker·容器
zz-zjx4 小时前
nerdctl:与 Docker 兼容的 containerd CLI
运维·docker·容器
YRr YRr4 小时前
在Ubuntu 20.04和ROS中使用RViz进行数据可视化:详解Fixed Frame参数的选择与应用
linux·ubuntu·信息可视化
Hansel_Zhang4 小时前
CentOS 7 docker部署jar包
linux·docker·centos
MXsoft6184 小时前
智能运维视角下的网络设备监测与数据分析
大数据·运维·数据库
运维&陈同学5 小时前
【Dubbo03】消息队列与微服务之dubbo-admin 二进制与编译安装
linux·运维·服务器·后端·微服务·云原生·架构·dubbo
不像程序员的程序媛5 小时前
记录下nginx接口代理配置问题
运维·服务器·nginx