第一章 AI人工智能GPUStack+Deepseek分布式部署教程【保姆级入门】

目录

一、前言及概念理解

1.前言

2.概念

二、部署环境说明

1.硬件说明

2.环境说明

3.部署顺序

4.端口说明(有防火墙的自行开放)

三、DP1服务器安装GPUStack主服务端

1.在DP1上,以管理员身份运行Power Shell,设置源为腾讯源,并安装GPUStack

2.DP1服务器,开放防火墙端口:80,443

3.查询web页面账号密码

4.修改主虚拟机web登入密码

四、DP2、DP3安装GPUStack客户端

1.开放防火墙

2.查看安装客户端教程

3.查询token(和查询密码方式一致)

4.修改命令,并执行(在DP2、DP3上执行该指令)

5.查看部署状态,如图示则部署成功。

五、Deepseek分布式部署

1.选择模型,创建集群

2.测试模型是否正常

六、知识拓展提升


一、前言及概念理解

1.前言

Deepseek上线有一段时间了,作为运维人员,我一直在想这个东西,到底能给我们这样的个人群体带来什么样的改变,这个东西怎么应用付出和收益才能成正比?

后来我觉得,个人运维上来说,不懂得只是直接问线上的人工智能即可,无需大费周章私有化部署,首先训练、硬件、优化等从运维人员角度来说,付出和收益完全不成正比,所以没必要大费周章的自己折腾。而如果需要强大的AI可以API接入,利用AI厂商的计算资源完成企业的需求,相对成本效益是逐步投入,企业更能接受。

可这样的时代,作为运维人员有一种场景却非常有可能遇到,就是如果企业对AI有一点需求,且不希望资料对外开放,从而产生了私有化部署的需求,所以作为运维人员,要如何部署私有化AI,为企业提供私有化的定制AI服务呢?

所以下面我就不教同学们单机本地部署了(网上教学很多喜欢自己查阅不难),我直接教同学们分布式部署,也就是多台服务器协同运行AI,因为要知道企业中,往往一台服务器是很难支撑AI的运转的,而且安全角度来说一台服务器做AI风险太大,一个崩了就全崩了,也不合适,好了下面我们来学习如何部署。

这里为了大家快速的理解,我使用windows平台进行分布式部署,当然目前来说Ubuntu平台是最适合部署AI的,可是对于新手上手难度可能较大,我的文章主要还是教小白,毕竟我也是小白自学,哈哈,大佬们写的不好的地方可以多多指教。

2.概念

一些基础的概念还是要理解下,不然后面逻辑上来了,你的思绪可能会乱。

Deepseek:当你只安装Deepseek的时候,它并不能直接用于回答用户的问题或提供具体的知识。这是因为DeepSeek本身并不包含任何具体的知识或信息,而是提供了一个构建和部署模型的框架和工具集。

GPUStack:主要作用就是服务器硬件资源的资源的合理分配和模型的部署。

二、部署环境说明

1.硬件说明

        很多人可能会觉得,哎呀,我没有显卡,我自己玩不了deepseek,不行我得去买个显卡才行,给自己找了个很充分的理由,可在我看来,就是典型的差生文具多,哈哈

        虽然AI部署确实像玩虚拟化一样,需要较高的硬件支持,但是显卡嘛,我觉得非必要,毕竟我们做运维的,只要研究好怎么部署,深度的测试交给开发就行了,所以实验场景,只要有CPU和内存即可。

2.环境说明

准备两台虚拟机:

虚拟机1(命名DP1,为GPUStack主服务器):CPU 1个6核心,内存8G,IP:192.168.181.10,windows2022平台(便于大家快速学习),部署Stack主;

虚拟机2(命名DP2,为从服务器):CPU 1个6核心,内存18G,IP:192.168.181.20,windows2022平台(便于大家快速学习),部署Deepseek8B,Stack从;

虚拟机2(命名DP3,为从服务器):CPU 1个6核心,内存18G,IP:192.168.181.20,windows2022平台(便于大家快速学习),部署Deepseek8B,Stack从。

系统安装,自行解决,这里就不教学了。

【思路】其实我觉得GPUStack主服务单独装一个DP3更合理,毕竟主服务挂了客户端大概率也是会挂,所以DP3单独部署GPUStack主服务,不装Deepseek,然后放到高可用的集群服务器中应该更为合理,具体我还没有实践只是一个思路,有兴趣的可以去试试,这里主要教同学们入门,资源紧凑点用,先学会再说哈。

3.部署顺序

DP1安装GPUStack→DP2安装GPUStack客户端→DP1和DP2安装Deepseek→WEB页面调试

建议进行下面每个步骤前,都做个快照,避免出错,导致系统又要重装,先学会走路再奔跑对不对?

有些同学可能会问你怎么知道这些命令的,当然是官网看的,官网文档比较专业,有些指令用替代符表示,很多同学不会用,所以不用纠结这个,看着教程操作即可,命令都会有相关注释和说明,便于理解哈~

4.端口说明(有防火墙的自行开放)

GPUStack主服务器需要开放端口:

WEB:80,443

GPUStack从服务器需要开放端口:

组建集群:10150

主服务器派发任务给从服务器(随机):40000-41024
从服务器之间互协同(随机)::50000-51024

听说后续GPUStack能自定义这个随机端口的区间,截至教程发布时候,还没发现可以自定义,所以这里就按不能自定义的默认端口区间。

三、DP1服务器安装GPUStack主服务端

1.在DP1上,以管理员身份运行Power Shell,设置源为腾讯源,并安装GPUStack

#默认是国外源,如果使用默认命令,安装容易受到延时等问题出现错误,所以测试了下腾讯源不错整体安装效果不错,所以设置下源为腾讯源
$env:INSTALL_INDEX_URL = "https://mirrors.cloud.tencent.com/pypi/simple"

#安装GPUStack
Invoke-Expression (Invoke-WebRequest -Uri "https://get.gpustack.ai" -UseBasicParsing).Content

【注释】

有的同学可能会问,我既然已经设置了腾讯源,为什么安装GPUStack时候还要写网址呢?

这就好比你要去超市买东西,但是你担心去常规的大超市人多、距离远或者商品价格贵,于是你提前了解到有一家本地的小超市(腾讯云镜像源 https://mirrors.cloud.tencent.com/pypi/simple ),它里面的商品种类和大超市差不多,而且离家近、价格可能更实惠。你把这家小超市设为你这次购物的目标地点,这样在后面真正购物的时候,你就会直接去这家小超市,而不是默认的大超市。在安装软件的场景里,INSTALL_INDEX_URL 就像是指定的 “购物地点”,Python 安装包的下载就会从这个指定的镜像源去获取,而不是默认的官方源。

获取购物清单(Invoke-WebRequest -Uri "https://get.gpustack.ai" -UseBasicParsing):你去咨询了一个美食专家(https://get.gpustack.ai 这个网址),他给你了一份详细的烹饪特定美食(安装 GPUStack 软件)所需食材(软件依赖包)和烹饪步骤(安装指令)的清单。你只要求专家把清单原原本本地给你,不要添加额外的说明或者修改(-UseBasicParsing )。

拿到清单内容(.Content):你成功拿到了这份清单的具体内容。

按照清单购物和烹饪(Invoke-Expression):你拿着清单去之前设定好的小超市,按照清单上的要求购买各种食材(从腾讯云镜像源下载所需的 Python 安装包),然后回家按照清单上的步骤烹饪出美味的菜肴(完成 GPUStack 软件的安装)。

综上所述,这两个操作结合起来就是:先指定 Python 安装包的下载来源为腾讯云镜像源,然后从特定网址获取 GPUStack 软件的安装脚本,并按照脚本的指示从腾讯云镜像源下载所需的安装包,最终完成软件的安装。

2.DP1服务器,开放防火墙端口:80,443

3.查询web页面账号密码

方法1:

#显示"C:\Users\Administrator\AppData\Roaming\gpustack\initial_admin_password"文件内容
Get-Content -Path "C:\Users\Administrator\AppData\Roaming\gpustack\initial_admin_password" -Raw

【注释】

安装完成后,他告诉我们账号为admin密码“C:\Users\Administrator\AppData\Roaming\gpustack”目录下的“initial_admin_password”文件夹中,你可以输入下面命令直接查询,也可以进入到目录中使用记事本打开文件,效果是一样的

方法2:

4.修改主虚拟机web登入密码

四、DP2、DP3安装GPUStack客户端

1.开放防火墙

1)安装前,请先开启会用到的TCP端口号:10150, 40000-41024, 50000-51024

2.查看安装客户端教程

Invoke-Expression "& { $((Invoke-WebRequest -Uri "https://get.gpustack.ai" -UseBasicParsing).Content) } --server-url http://192.168.181.10 --token ${mytoken}"

这个命令让客户端指向了主服务器,但是要让我们自己查询token值,所以我们先把这个命令复制到记事本中,然后去查询token值,再修改命令参数

3.查询token(和查询密码方式一致)

方法1:

#显示安装目录下的token文件内容
Get-Content -Path (Join-Path -Path $env:APPDATA -ChildPath "gpustack\token") -Raw

方法2:

【思路】

我觉得这个值应该也是可以自定义的,有兴趣的话可以去试试。

4.修改命令,并执行(在DP2、DP3上执行该指令)
#定义安装源为腾讯源
$env:INSTALL_INDEX_URL = "https://mirrors.cloud.tencent.com/pypi/simple"

#设置token值
$mytoken = "这里写自己服务器上的值,注意双引号"

#执行安装客户端命令
Invoke-Expression "& { $((Invoke-WebRequest -Uri 'https://get.gpustack.ai' -UseBasicParsing).Content) } --server-url http://192.168.181.10 --token $mytoken"

5.查看部署状态,如图示则部署成功。

五、Deepseek分布式部署

1.选择模型,创建集群

1)根据图示,选择对应参数,保存后GPUStack会先安装Deepseek模型,然后再进行集群部署。

2)等待模型部署完成

3)安装完成后确认服务器是否加入到集群中

【重点参数注释】

常规项:

1.名称:模型的名字,后续在投喂数据的时候便于区分投喂的模型

2.后端:

名称概述应用场景
llama-box是一个灵活、兼容多平台的推理引擎。
支持Linux、Windows和macOS系统。
不仅支持各种GPU环境,也支持在CPU环境运行大模型。
是llama-box优化后的版本,对性能和稳定性进行了针对性的优化。
适用于需要多平台兼容性的场景。
适用于资源有限或需要CPU/GPU混合推理的场景。
vLLM专门针对生产推理进行了优化。
具有高吞吐量和高效内存管理,在并发和性能方面表现出色。
目前只支持Linux系统。
适用于高并发或高性能场景,可以在资源充足的情况下提高集群的弹性,有效避免单个GPU过载。
VOX-BOX专注于语音模型的推理,提供了针对语音模型优化的功能和API。特别适用于语音识别和文本转语音等语音相关的应用场景。

3.Quantization:这个参数可以这么去理解,假设给你一件事情,你是希望记录他的所有细节过程,还是大致的过程,还是只记住这个事件的结果。

FP16代表半精度浮点数,使用16位表示浮点数。与全精度浮点数(FP32)相比,FP16可以在保持相对较高精度的情况下,显著减少存储空间和计算开销。

高精度:虽然精度略低于FP32,但在许多应用场景中,FP16的精度已经足够满足需求。

低存储需求:使用FP16可以显著减少模型所占用的存储空间,特别对于大型深度神经网络模型来说,可以节省大量的存储资源。

高计算性能:由于FP16的存储需求和计算开销较小,可以加快模型的训练和推理速度,提高计算性能。

4.Size:这个就相当于脑容量,有那么事件,你能够记住多少,分析多少。

5.副本数:一般模型中的服务器最少要有一个副本,因为没有副本的服务,不会参与该模型的资源调度和推理。

高级项:

1.模型类别:

名称概述技术原理应用场景
LLM大型语言模型通过Transformer等架构,利用自注意力机制捕捉文本中的长距离依赖关系。文本生成:自动写作、机器翻译等
问答系统:回答复杂问题,进行对话式问答
语义理解和推理:情感分析、命名实体识别、文本分类等
ImageText图像文本,假设为图像识别与文本结合技术利用卷积神经网络(CNN)进行图像特征提取,结合语言模型生成描述或执行图像生成任务。图像描述:为图像生成文字描述
图像搜索:通过文本查询图像
图像生成:根据文本描述生成图像
Text-to-Speech文本到语音,简称TTS通过神经网络模型,将文本转换为语音信号,模拟人类发音。语音助手:智能音箱、车载语音系统
无障碍服务:为视障用户朗读文本
内容创作:有声书、视频配音、播客生成
Speech-to-Text语音到文本,简称STT通过复杂的算法和模型处理语音信号,提取特征并进行模式匹配,生成文本。语音助手:智能音箱、语音导航等
会议记录:自动将会议语音转换为文本
残障人士辅助:帮助听力或语言障碍者进行交流
Embedding嵌入模型通过神经网络将高维稀疏数据映射到低维稠密向量空间,保留数据的语义信息。语义搜索:从数据库中找到与查询最相关的文档
聚类分析:按主题对大量文本或图像分组
推荐系统:根据用户历史行为推荐内容
Reranker重排序模型结合上下文信息和用户意图,对候选结果进行重新排序。搜索引擎:优化搜索结果的相关性
推荐系统:结合用户历史行为优化推荐顺序
问答系统:对检索到的文档进行二次排序,提升答案质量

2.调度方式:负载均衡相关的资源的调用方法,比如轮询。

3.放置策略:

名称概述技术原理应用场景
Binpack放置策略Binpack是一种紧凑调度策略,旨在减少资源碎片化,优化整体GPU资源的利用率。当单个GPU能够满足模型的资源需求时,Binpack策略会尽量将模型的多个副本集中调度到该GPU,以最大化其利用率。直到该GPU的剩余资源不足以支持新模型时,才会选择其他GPU。适用于资源较为紧张,希望最大化单个GPU利用率的情况。
Spread放置策略Spread策略与Binpack的紧凑型调度相反,旨在将模型均匀分布到多个GPU上,避免单一GPU的资源过度集中使用。在Spread策略下,任务会优先分配给负载较低的GPU,使得所有GPU都能参与推理任务,确保每个GPU的负载更加均衡。适用于高并发或高性能场景,可以在资源充足的情况下提高集群的弹性,有效避免单个GPU过载。
指定Worker调度允许管理员为不同的Worker(GPU节点)设置标签,并在模型部署时通过Worker选择器指定将模型实例调度到具有特定标签的Worker上。管理员可以根据实际需求,如GPU型号、品牌或地理位置等,为Worker设置标签。在部署模型时,可以选择将模型调度到具有特定标签的Worker上。适用于需要对计算资源进行细粒度管理的场景,例如在异构环境下,将模型调度到特定的GPU厂商或型号上。

2.测试模型是否正常

六、知识拓展提升

给大家一些找到一些GPUStack的资料,自行琢磨,不做讲解了,看得懂的自学,看不懂的拉倒~

### DeepSeek 分布式部署教程和配置指南 #### 硬件与环境准备 为了支持分布式架构,确保集群中的每台机器满足最低硬件要求[^1]。对于大规模数据处理而言,合理的硬件规划至关重要。 #### 部署前的准备工作 在开始之前,需确认所有节点上已经安装并配置好必要的软件包和服务,比如Kubernetes集群管理平台以及Hugging Face CLI工具等[^3]。 #### 创建Kubernetes命名空间 建议专门为DeepSeek创建一个新的Kubernetes命名空间来隔离资源: ```bash kubectl create namespace deepseek-distributed ``` #### 准备阶段 通过`kubectl exec`命令进入名为`prepare`的服务容器内部执行初始化脚本,这一步骤主要用于设置环境变量、安装依赖库(如上述提到的huggingface)及预加载所需的深度学习模型文件至指定路径下: ```bash # 进入prepare容器 kubectl exec -it $( kubectl get pod -n deepseek | awk 'NR>1 {print $1}' | grep prepare ) bash -n deepseek # 安装huggingface工具 pip install huggingface_hub # 下载DeepSeek-V3模型 mkdir -p /model/deepseek-ai/DeepSeek-V3 && \ huggingface-cli download --resume-download deepseek-ai/DeepSeek-V3 --local-dir /model/deepseek-ai/DeepSeek-V3 ``` #### 构建分布式服务组件 根据官方文档指导,在各工作节点上分别启动不同角色的服务实例,例如索引构建器、查询处理器等,并确保它们能够相互通信协作完成复杂的任务流[^2]。 #### 调整参数优化性能 针对具体应用场景调整相关算法参数以达到最佳效果;同时考虑引入缓存策略降低响应时间提高用户体验度。 #### 测试验证稳定性 最后进行全面的功能性和压力测试,检查整个系统的健壮性及其应对突发流量的能力,及时修复发现的问题保证线上平稳运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故事写到这

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值