2026/3/10 6:32:06
网站建设
项目流程
佛山门户网站建设公司,推广图片设计如何简洁好看,开发网站要注意什么问题,百度一下首页网页百度此前已经部署了GPUStack的v0.7.1版本,由于最近GPUStack版本有较大升级#xff0c;从官网看性能有较大提升#xff0c;最重要的是能支持比较新的模型#xff0c;所以决定将GPUStack从v0.7.1升级到v2.0.2版本。
手把手实操#xff0c;如果对您有帮助#xff0c;别忘了点个三…此前已经部署了GPUStack的v0.7.1版本,由于最近GPUStack版本有较大升级从官网看性能有较大提升最重要的是能支持比较新的模型所以决定将GPUStack从v0.7.1升级到v2.0.2版本。手把手实操如果对您有帮助别忘了点个三连(关注、点赞、收藏)。一、原部署情况说明此前已经部署了3个虚拟机器已经部署了GPUStack集群版本是0.7.1每个虚拟机挂了一块5090D的显卡每个显存为32G。虚拟机IP操作系统显卡驱动版本cuda版本GPU-1172.16.1.111Ubuntu 24.04.2 LTSNVIDIA GeForce RTX 5090 D 32G570.153.0212.8GPU-3172.16.1.113Ubuntu 24.04.2 LTSNVIDIA GeForce RTX 5090 D 32G570.153.0212.8GPU-5172.16.1.115Ubuntu 24.04.2 LTSNVIDIA GeForce RTX 5090 D 32G570.153.0212.8三个虚拟机组成集群其中113作为主节点。原来集群三个节点存储数据的地方通过NFS挂在到同一个磁盘的不同目录下gpustack-data这个是主节点挂在数据目录gpustack-worker-gpu1是GPU1这个节点上挂在数据的目录gpustack-worker-gpu5是GPU5这个节点上挂在数据的目录。如下图所示二、迁移准备从0.7.1版本升级到2.0版本从版本号就可以看出应该是有很大的变动所以一定要先看官方升级文档。确保原来的数据不会丢失。1.先备份数据一定要做数据备份如下图所示我直接通过cp -a来备份原来数据目录。2.目录授权这个主要是考虑2.0以后架构变更引入postgresSQL后防止使用非root用户时没有权限。root用户的话可以不执行不过谨慎考虑还是执行下比较好。# ${your-data-dir}是指原来存放数据的目录 dir${your-data-dir} chmod arx ${dir}/log || true chmod arx $dir while [ $dir ! / ]; do chmod ax $dir dir$(dirname $dir) done新版本以docker等容器为主的部署环境。由于我们之前就是docker部署的后面的操作就比较跟官方的操作一致。3.数据迁移由于2.0以前是通过内置嵌入式的SQLite来存储数据但是2.0以后数据库改成了PostgreSQL。所以需要将sqlite的数据迁移到Postgresql中。需要再启动容器是添加数据迁移的参数。# 这是主节点 sudo docker run -d --name gpustack \ --restartunless-stopped \ --privileged \ --networkhost \ --env GPUSTACK_DATA_MIGRATIONtrue \ --volume /var/run/docker.sock:/var/run/docker.sock \ --volume ${your-data-dir}:/var/lib/gpustack \ --runtime nvidia \ gpustack/gpustack:latest重点是–env GPUSTACK_DATA_MIGRATIONtrue 参数添加启动后将会自动将原来sqlite的数据迁移到Postgresql的数据库中。特别注意${your-data-dir}一定要换成原来挂载数据的目录。该目录千万要先备份防止中途意外导致数据损坏。我就进行中遇到停电数据损坏不得不重新从备份中复制数据万幸提前备份了数据。通过--runtime nvidia参数来指定运行环境不需要像以前一样选择带-cuda12.8这样后缀的镜像了。也可以使用外部数据库如果已经有数据库可以通过--database-url ${your-database-url}来连接到外部的数据库。latest最好换成确定的版本号我就直接换成2.0.2版本。三、执行升级如果原来容器就叫gpustack还得先把原来的容器删除。1.升级主节点准备就绪就用上面的脚本启动主节点需要等待一会儿因为需要初始化和进行数据迁移。可以通过docker logs -f gpustack命令实时查看日志了解具体进度。一会儿以后主节点服务已经启动好了如下图所示启动完成即可打开页面入口原来的账号密码登录可以看到显示1个集群3个节点和3个GPU进入到节点页面显示如下奇怪怎么显示有3个节点呢但是实际上另外两个节点是原来升级前的信息应该是记录到数据库了显示也是2个节点还没有起来是Not Ready状态这些只是原来的数据信息显示而已。我们直接删除另外两个状态为Not Ready的节点的信息留着也没有什么用。我们等下再将两个节点加进来。2.升级worker节点页面上提供了添加节点按钮我们可以直接从这里开始添加。直接在节点页面点【添加节点】在弹出的添加页面按引导步骤操作即可。第1步选择集群我们只有唯一一个启动的主节点就一个选择。选择【下一步】到第2步选择厂商。支持的厂商还挺多的我的是NVIDIA选第一个即可如下图如第3步验证环境是否准备好了。验证结果如下全是OK说明驱动和cuda以及container toolkit已经正确安装和配置了。继续添加节点信息这里是比较重要的这里的数据卷直接配置原来挂载的数据卷路径即可。IP也指定为要部署worker机器的IP即可实际上不填写默认也是该节点ip只是如果有多网卡的话避免识别错误所以最好配置。配置好后直接点下一步就会自动生成worker节点加入集群的命令执行该命令就会自动加入集群。我直接在我的GPU5的节点中执行上述提供的命令第一次由于我已经有了同名的容器要先删除原来的容器删除后在执行便成功了。这里我把镜像的地址前缀quay.io/去掉了因为我本地不能访问quay.io并且我本地已经导入了镜像不需要这个前缀。接着我们到页面看下集群节点是不是已经加入了。看到节点已经加入了继续依葫芦画瓢加入111节点。最终效果三个节点都已准备就绪。3.升级完成效果概览模型库部署但是这里不行。显示原来部署的模型没有正常启动而是显示Error重试几次也是如此。看日志是后端的llama-box不存在或者没有指定。原来的小参数模型都是GGUF格式的模型需要基于llama.cpp的llama-box部署。干脆不用原来的模型算了看下新的模型库有哪些模型可用。我们看下qwen3和deepseek有没有合适大小的模型可用。deepseek没有可用参数规模的这种动不动几百G显存的我们想都不用想了。看看qwen3的模型。只能看红色圈出来的参数小一些的模型看看有没有可能。基本只有30B内的模型勉强能用但是占用资源太高了其他的嵌入模型和排序模型可能就没资源用了。还是看看能不能以其他方式支持原来的模型文件部署。4.新增自定义推理后端遇到事情先别慌我们找啊找在菜单栏看到一个之前的版本没有的菜单这是本次升级新增的菜单项【推理后端】我们看下能不找到原因。发现支持的后端有4个但是没有看到报错提示的llama-box这个推理后端。这是因为2.0版本已经内置没有llama-box这个推理后端了看下面两个图对比。在0.7时的GGUF格式是基于llama-box推理后端部署的但是2.0以后支持的后端没有了llama-box了。而是新增了SGLang这个推理后端。由于之前基本全是gguf格式的部署文件要不重新下载能支持的文件格式重新部署要不就添加llama-box后端推理引擎在2.0看起来是是可以添加自定义推理后端引擎。果然在文档中找到了添加在定义推理后端运行GGUF格式的文件我们按这个添加试试添加的推理引擎如下回到部署这里注意看这些失败后端还是llama-box我们要先改成我们自定义的这个后端。后端选自定义的llama.cpp版本选v1-cuda又失败了不过这次是依赖镜像访问下载不下来我们把这个搞通。我在本地的私服把ghcr.io和gcr.io代理上。代理完以后镜像这里要改一下就把地址前缀去掉就会从本地镜像仓库获取由于我们本地仓库配置了镜像代理就能把镜像下载到仓库了服务器从仓库能够获取到镜像。关于如何搭建镜像仓库以及如何设置镜像在我之前的文章中已经做过详细的实操讲解。重新启动就好了注意看后端是就是我们新增加的自定义后端。运行起来了我们打开页面测试下效果。OK大功告成。后面我们就可以直接用GPUStack部署的大模型为我们服务了后面我们讲解如何利用GPUStack打造我们自己的RAG知识库。感兴趣的可以加个关注看后续四、踩坑回顾此次升级最重要的事是提前做了数据备份避免了中间出现问题时可以重新来过。如下图直接将原来的数据目录完整的备份为_backup的目录。这是我的后悔药。此次升级其实并没有那么顺利。1.突然的断电第一次在升级主节点时出现了突然由于市政电压不稳定出现了突然断电刚好在数据迁移过程中导致重启后数据故障无法完成主节点升级且数据乱了不得已把数据目录删除重新从备份目录中重新复制一份完整的新数据重新进行主节点升级。2.配错了token第二次是在升级worker节点时没有从页面开始添加节点而是直接跟之前一样用命令行的方式添加worker节点官方给出了添加命令脚本但是token从哪里来没有说清楚。导致我错误的取了连接到主节点的token。sudo docker run -d --name gpustack-worker \ --restartunless-stopped \ --privileged \ --networkhost \ --volume ${your-data-dir}:/var/lib/gpustack \ --volume /var/run/docker.sock:/var/run/docker.sock \ --runtime nvidia \ gpustack/gpustack \ --server-url ${server-url} \ --token ${token}于是我直接到主节点数据目录下找关于token的文件如下图所示有一个token的文件还有一个worker_token的文件我就想当然得一位是worker_token但是实际应该是token文件里的token。如下图所示启动节点也没有报错但是一会儿也没看到该worker显示在集群中于是docker logs -f gpustack查看日志。日志信息如下大量的异常报错信息。尝试过数据修复但是数据已经被污染找到不根源。只好删除数据重新从备份的数据中复制重新开始。后来才发现页面添加节点有明确的步骤指引了还包含了数据迁移于是直接从页面开始按照指引操作还省了不少事。如果对您有帮助别忘了点个三连(关注、点赞、收藏)。