GPUStack 是一个设计用于运行大模型的开源 GPU 集群管理器,提供私有部署的大模型服务,支持大语言模型、Embedding 文本嵌入模型、Reranker 重排序模型、Vision 多模态模型等各种模型。它可以聚合不同平台(如 Apple Macbook、Windows PC 和 Linux 服务器)的 GPU,构建一个统一的异构 GPU 集群。

在 Linux 中十分推荐使用 Docker 方式安装 GPUStack,可以避免很多依赖和冲突问题,简化安装过程。

今天带来一篇关于如何设置 NVIDIA 容器运行时并使用容器方式运行 GPUStack 的操作教程。

前置准备

验证当前环境有 NVIDIA GPU 硬件:

lspci | grep -i nvidia

验证系统已安装 GCC:

gcc --version

安装 NVIDIA 驱动

参考:https://developer.nvidia.com/datacenter-driver-downloads

为当前内核安装内核头文件和开发包:

sudo apt-get install linux-headers-$(uname -r)

安装 cuda-keyring 包:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

安装 NVIDIA 驱动:

sudo apt-get update
sudo apt-get install nvidia-open -y

重启系统:

sudo reboot

重新登录并检查 nvidia-smi 命令可用:

nvidia-smi

安装 Docker Engine

参考:https://docs.docker.com/engine/install/ubuntu/

执行以下命令卸载所有冲突的包:

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

设置 Docker 的 apt 仓库:

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装 Docker:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

检查 docker 命令可用:

docker info

安装 NVIDIA Container Toolkit

参考:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

配置 NVIDIA Container Toolkit 的生产仓库:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

安装 NVIDIA Container Toolkit:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit -y

使用 nvidia-ctk 命令配置容器运行时:

sudo nvidia-ctk runtime configure --runtime=docker

检查 daemon.json 文件的配置:

cat /etc/docker/daemon.json

重启 Docker daemon:

sudo systemctl restart docker

运行一个示例的 CUDA 容器来验证安装:

sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

安装 GPUStack

参考:https://docs.gpustack.ai/latest/installation/docker-installation/

通过 Docker 安装 GPUStack:

docker run -d --gpus all -p 80:80 --ipc=host --name gpustack \
-v gpustack-data:/var/lib/gpustack gpustack/gpustack

使用以下命令查看登录密码:

docker exec -it gpustack cat /var/lib/gpustack/initial_admin_password

在浏览器访问 GPUStack( http://YOUR_HOST_IP )以用户名 admin 和密码登录。设置密码后,登录进 GPUStack,查看识别到的 GPU 资源:

(可选)要添加额外的 Worker 节点,构建 GPU 集群,在其它工作节点上执行以下命令:

docker run -d --gpus all --ipc=host --network=host \
gpustack/gpustack --server-url http://YOUR_HOST_IP --token YOUR_TOKEN

将其中的 http://YOUR_HOST_IP 替换为你的 GPUStack 访问地址,将 YOUR_TOKEN 替换为用于添加 Worker 的认证 Token。要从 GPUStack Server 检索 Token,使用以下命令:

docker exec -it gpustack cat /var/lib/gpustack/token

完成之后,尝试从 Hugging Face 或其它模型仓库部署模型:

在 Playground 中调测模型:

加入社区

以上为配置 NVIDIA 容器运行时环境并使用容器方式运行 GPUStack 的操作教程。

对 GPUStack 感兴趣或者在使用过程中遇到问题,可以添加 GPUStack 微信小助手(微信号:GPUStack)入群交流。

如果觉得写得不错,欢迎点赞转发关注

配置NVIDIA Container Runtime和容器运行GPUStack教程的更多相关文章

  1. Kubernetes容器运行时弃用Docker转型Containerd

    文章转载自:https://i4t.com/5435.html Kubernetes社区在2020年7月份发布的版本中已经开始了dockershim的移除计划,在1.20版本中将内置的dockersh ...

  2. 使用容器运行的minio配置https(TLS)访问

    使用certgen生成证书 下载地址:https://github.com/minio/certgen/releases/tag/v0.0.2 下载地址:https://files.cnblogs.c ...

  3. [笔记] Ubuntu 18.04安装Docker CE及NVIDIA Container Toolkit流程

    之前写的[笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程已经out了,以这篇为准. Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心 ...

  4. ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(二)

    ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(二) 本教程适用于想要在远程服务器上配置docker图形界面用于深度学习的用户. (二)nvidia docker配 ...

  5. 程序员修神之路--打通Docker镜像发布容器运行流程

    菜菜哥,我看了一下docker相关的内容,但是还是有点迷糊 还有哪不明白呢? 如果我想用docker实现所谓的云原生,我的项目该怎么发布呢? 这还是要详细介绍一下docker了 Docker 是一个开 ...

  6. kubernetes/k8s CRI分析-容器运行时接口分析

    关联博客:kubernetes/k8s CSI分析-容器存储接口分析 概述 kubernetes的设计初衷是支持可插拔架构,从而利于扩展kubernetes的功能.在此架构思想下,kubernetes ...

  7. 浅析容器运行时奥秘——OCI标准

    背景 2013年Docker开源了容器镜像格式和运行时以后,为我们提供了一种更为轻量.灵活的"计算.网络.存储"资源虚拟化和管理的解决方案,在业界迅速火了起来. 2014年更是容器 ...

  8. 基于阿里云容器服务用docker容器运行ASP.NET 5示例程序

    小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动--用docker容器运行程序.首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 ...

  9. ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(三)

    ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(三) 本教程适用于想要在远程服务器上配置docker图形界面用于深度学习的用户. (三)配置远程桌面连接访问dock ...

  10. Docker下载镜像并创建容器运行

    在linux系统中安装完成docker后,我们开始进行docker的镜像.容器的使用. 在使用docker时,首先要明确的两个概念:image(镜像) 与  container (容器) image: ...

随机推荐

  1. Swahili-text:华中大推出非洲语言场景文本检测和识别数据集 | ICDAR 2024

    论文提出了一个专门针对斯瓦希里语自然场景文本检测和识别的数据集,这在当前研究中是一个未充分开发的语言领域.数据集包括976张带标注的场景图像,可用于文本检测,以及8284张裁剪后的图像用于识别. 来源 ...

  2. .NET 开源报表神器 Seal-Report

    前言 Seal-Report 是一款.NET 开源报表工具,拥有 1.4K Star.它提供了一个完整的框架,使用 C# 编写,最新的版本采用的是 .NET 8.0 . 它能够高效地从各种数据库或 N ...

  3. 全网最适合入门的面向对象编程教程:42 Python常用复合数据类型-collections容器数据类型

    全网最适合入门的面向对象编程教程:42 Python 常用复合数据类型-collections 容器数据类型 摘要: 在 Python 中,collections 模块提供了一组高效.功能强大的容器数 ...

  4. php自定义函数访问其他地方定义的变量

    新捣鼓php,很多地方有.net的思维好难改过来. 在Connection/config.php 自定义了数据库连接字符串 然后在外部页面,自定义了一个function,对数据库进行操作 然后死活都给 ...

  5. RocketMQ 下载安装及消息发送

    消息队列前文目录链接参考: 消息队列初见:一起聊聊引入系统mq 之后的问题https://www.cnblogs.com/yizhiamumu/p/16573472.html 分布式事务实战方案汇总  ...

  6. 游戏AI LOD交易员(附项目)

    游戏AI的LOD控制 这次我们来一同看看AI LOD的一个另类控制技术,如果你对AI LOD一无所知也没关系,本文会为你们做个科普.但请注意,本文着重讨论其思想, 没有讲代码细节(因为很多涉及数学,有 ...

  7. TS中简单实现一下依赖注入

    依赖注入(Dependency Injection,DI)是一种设计模式,主要用于实现控制反转(Inversion of Control,IoC).它通过将对象的依赖关系从内部管理转移到外部容器来解耦 ...

  8. CSS单位em、rem、vh和vw等及CSS3的calc()以及line-height百分比

    css单位我们常用的是px,也即是像素.随着网页开发自适应的要求,css3新增了许多单位,rem.vw和vh.vmin和vmax.ch和ex等. em 做前端的应该对em不陌生,不是什么罕见的单位,是 ...

  9. Angular Material 18+ 高级教程 – CDK Table

    前言 CDK Table 是 Angular Material 对 <table> 的抽象 (无 styles) 封装. 无 styles 的 table 有什么好封装的呢? CDK Ta ...

  10. 使用ValueConverters扩展实现枚举控制页面的显示

    1.ValueConverters 本库包含了IValueConverter接口的的最常用的实现,ValueConverters用于从视图到视图模型的值得转换,某些情况下,可用进行反向转换.里面有一些 ...