当前位置: 首页 > news >正文

GPU服务器安装MilvusDB手记

目录

背景

操作步骤回顾说明

1、关于安装方式选择

2、准备镜像方面的物料

2-1、下载镜像物料

2-2、将成功下载后的镜像输出到文件

2-3、在测试服务器上准备docker与docker-compose环境

2-4、将准备好的物料上传到测试服务器并使用docker-compose命令启动相关容器

3、对于GPU环境的思考后返工

3-1、重新下载docker-compose.yml文件

3-2、解决nvidia-smi报错:command not found的问题

​编辑

3-2-1、将nvidia-driver-local-repo-kylin10-550.163.01-1.0-1.x86_64.rpm包上传到测试服务器

3-2-2、执行前置准备工作,安装编译套件、内核开发包,用来编译NVIDIA内核模块

3-2-3、其他的前置操作

3-2-4、安装本地仓库包

3-2-5、清理旧缓存,加载本地repo

3-2-6、重启与验证

3-3、解决nvidia-smi报错:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is install的问题

3-3-1、这个报错的原因其实不太好解释,之后又补充了1个命令

3-3-2、验证命令nvidia-smi

3-4、nvidia-container-toolkit工具的适配Docker安装

3-4-1、在可以联网机器上准备好相关的.rpm包

3-4-2、将上述的.rpm包都上传到测试服务器上,做本地安装与验证

3-4-3、自动配置 nvidia 运行时

3-4-4、重启Docker

3-4-5、确认目前测试机器中的Docker镜像的情况

3-4-6、启动容器

3-4-7、验证查看容器的运行情况

3-4-8、再次验证nvidia-smi命令

4、修改配置时的踩坑记录

小结


背景

最近在项目中,有学习使用向量数据库Milvus的需要。所以,学习研究了一下怎么安装单机版本的MilvusDB。在此,也希望把一些遇到的踩坑问题,做一下笔记记录,便于后续回顾。

主要参考的文献:https://milvus.io/docs/zh

测试服务器操作系统:Kylin Linux Advanced Server V10 (Halberd)

安装的版本说明:v2.6.12-GPU

联网情况说明:无法直接连接外网,有公司内部基础功能组件的yum源

操作步骤回顾说明

1、关于安装方式选择

一开始考虑使用比较简单一些的:Docker(Linux)方式,最后,验证下来有缺少组件的问题,无法成功完成安装。从而,之后,真正选择的方案是Docker Compose(Linux)方式。

2、准备镜像方面的物料

2-1、下载镜像物料

https://github.com/milvus-io/milvus/releases/download/v2.6.12/milvus-standalone-docker-compose.yml

阅读docker-compose.yml(将下载得到的milvus-standalone-docker-compose.yml更名为docker-compose.yml,最后经过验证证明这个milvus版本其实还是使用了CPU的能力)文件内容

确认需要3个主要镜像:

使用docker镜像的拉取命令,将3个主要镜像在可联网的机器上做一下下载拉取:

docker pull quay.io/coreos/etcd:v3.5.25 docker pull minio/minio:RELEASE.2024-12-18T13-15-44Z docker pull milvusdb/milvus:v2.6.12

备注:此处需要配置国内镜像源或者可以直接访问外部网络,否则,下载过程将会非常缓慢甚至超时中断。

2-2、将成功下载后的镜像输出到文件

由于最终需要部署milvusdb的测试服务器并不存在联网的条件,所以,需要提前准备好相关的离线物料用于上传和使用。

# 输出镜像到文件 docker save -o etcd.tar quay.io/coreos/etcd:v3.5.25 docker save -o minio.tar minio/minio:RELEASE.2024-12-18T13-15-44Z docker save -o milvusdb.tar milvusdb/milvus:v2.6.12 # 做一下压缩处理,便于文件传送 tar -zcvf etcd.tar.gz etcd.tar tar -zcvf minio.tar.gz minio.tar tar -zcvf milvusdb.tar.gz milvusdb.tar

2-3、在测试服务器上准备docker与docker-compose环境

具体操作步骤可以参考:离线安装docker与docker-compose手记-CSDN博客

2-4、将准备好的物料上传到测试服务器并使用docker-compose命令启动相关容器

导入相关docker镜像:

docker load -i etcd.tar docker load -i minio.tar docker load -i milvusdb.tar

并将docker-compose.yml文件放入指定的项目文件夹下,我这边选择的项目文件夹路径是:

/root/project/milvus_db

可选操作,在该目录下再新建一个.env文件,用于管理环境变量:DOCKER_VOLUME_DIRECTORY

# .env 文件内容 DOCKER_VOLUME_DIRECTORY=/data/milvus_db

启动相关的容器:

docker-compose up -d

验证容器的运行效果:

3、对于GPU环境的思考后返工

根据以上步骤,milvus似乎是被成功安装成功,也正常运行了。但是,为啥感觉没有怎么体现GPU显卡的性能的设置呢?这个问题,则成了很困扰我的一个问题点。于是乎,我再次搜索相关Docker容器获取宿主机GPU资源的文章以及milvus官网对于这段内容的描述。

我发现之前安装的Milvus其实本身还是借助CPU的计算能力,并没有使用到GPU的计算能力。

于是,便开始了调整返工之旅。

3-1、重新下载docker-compose.yml文件

Releases · milvus-io/milvus · GitHub

找到v2.6.12版本后,进行选取和下载

修改需要拉取的milvus镜像

完整的带-gup结尾的.yml文件内容如下:

version: '3.5' services: etcd: container_name: milvus-etcd image: quay.io/coreos/etcd:v3.5.25 environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 - ETCD_SNAPSHOT_COUNT=50000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd healthcheck: test: ["CMD", "etcdctl", "endpoint", "health"] interval: 30s timeout: 20s retries: 3 minio: container_name: milvus-minio image: minio/minio:RELEASE.2024-12-18T13-15-44Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin ports: - "9001:9001" - "9000:9000" volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data command: minio server /minio_data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.6.12-gpu command: ["milvus", "run", "standalone"] security_opt: - seccomp:unconfined environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 MQ_TYPE: woodpecker volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] interval: 30s start_period: 60s timeout: 20s retries: 3 ports: - "19530:19530" - "9091:9091" deploy: resources: reservations: devices: - driver: nvidia capabilities: ["gpu"] device_ids: ["0"] depends_on: - "etcd" - "minio" networks: default: name: milvus

docker pull milvusdb/milvus:v2.6.12-gpu

再次将相关更新后的镜像和docker-compose.yml文件都上传到测试服务器,并启动容器。这次,

对应容器就启动失败了。失败的原因是,宿主机的GPU显卡驱动未安装,且docker的GPU运行时(nvidia-container-toolkit工具)也未配置,则docker容器无法使用到宿主机的GPU计算能力。

3-2、解决nvidia-smi报错:command not found的问题

目前,测试机器的基本性能参数如下:

[root@localhost ~]# lspci | grep -i nvidia 36:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1) 37:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1) 9d:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1) 9e:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1) [root@localhost yum.repos.d]# uname -a Linux localhost.localdomain 4.19.90-89.11.v2401.ky10.x86_64 #1 SMP Tue May 7 18:33:01 CST 2024 x86_64 x86_64 x86_64 GNU/Linux [root@localhost yum.repos.d]# uname -r 4.19.90-89.11.v2401.ky10.x86_64 [root@localhost yum.repos.d]# hostnamectl Static hostname: localhost.localdomain Icon name: computer-server Chassis: server Machine ID: ################################## Boot ID: ################################## Operating System: Kylin Linux Advanced Server V10 (Halberd) Kernel: Linux 4.19.90-89.11.v2401.ky10.x86_64 Architecture: x86-64

前往NVIDIA驱动官网查询并下载需要适配测试环境机器的显卡驱动.rpm包

下载 NVIDIA 官方驱动 | NVIDIA

3-2-1、将nvidia-driver-local-repo-kylin10-550.163.01-1.0-1.x86_64.rpm包上传到测试服务器
3-2-2、执行前置准备工作,安装编译套件、内核开发包,用来编译NVIDIA内核模块
yum install -y gcc gcc-c++ make kernel-devel-$(uname -r) kernel-headers-$(uname -r) libglvnd-devel
3-2-3、其他的前置操作
echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist-nouveau.conf dracut -f /boot/initramfs-$(uname -r).img $(uname -r) # 重启 reboot # 执行此命令后确认无任何输出 lsmod | grep nouveau
3-2-4、安装本地仓库包
rpm -ivh /root/nvidia-driver-local-repo-kylin10-550.163.01-1.0-1.x86_64.rpm

作用:
在 /etc/yum.repos.d/ 生成本地 nvidia 源文件;
导入 NVIDIA 官方 GPG 校验密钥;
后续 yum 会从这个本地 rpm 仓库读取驱动安装包。

3-2-5、清理旧缓存,加载本地repo
yum clean all && yum makecache # 安装DKMS版数据中心驱动(Tesla T4推荐,自动带nvidia-smi) yum -y module install nvidia-driver:latest-dkms
3-2-6、重启与验证
reboot # 预期会输出 4 张 Tesla T4 显卡信息,则代表显卡驱动安装完成。 nvidia-smi

特别备注:此处又出现了1个新的报错:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is install

其实,在一开始为了解决nvidia-smi出现"command not found"问题时候,不知道因为哪步的命令执行还曾经导致过系统基础命令完全失效的场景,不得不重装系统来解决,所以,这块还是让人感觉问题挺多的。

3-3、解决nvidia-smi报错:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is install的问题

3-3-1、这个报错的原因其实不太好解释,之后又补充了1个命令
yum -y install nvidia-driver
3-3-2、验证命令nvidia-smi
[root@localhost ~]# nvidia-smi Fri Jun 26 17:06:07 2026 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.163.01 Driver Version: 550.163.01 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 Tesla T4 Off | 00000000:36:00.0 Off | 0 | | N/A 56C P0 31W / 70W | 1MiB / 15360MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 1 Tesla T4 Off | 00000000:37:00.0 Off | 0 | | N/A 52C P0 30W / 70W | 1MiB / 15360MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 2 Tesla T4 Off | 00000000:9D:00.0 Off | 0 | | N/A 52C P0 29W / 70W | 1MiB / 15360MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 3 Tesla T4 Off | 00000000:9E:00.0 Off | 0 | | N/A 53C P0 30W / 70W | 1MiB / 15360MiB | 7% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+

这次就可以确实看到4块显卡的基础信息了。

3-4、nvidia-container-toolkit工具的适配Docker安装

3-4-1、在可以联网机器上准备好相关的.rpm包
yum install -y nvidia-container-toolkit nvidia-container-runtime

3-4-2、将上述的.rpm包都上传到测试服务器上,做本地安装与验证
yum localinstall -y *.rpm # 验证 which nvidia-container-runtime nvidia-ctk --version
3-4-3、自动配置 nvidia 运行时
# 自动配置 nvidia 运行时 nvidia-ctk runtime configure --runtime=docker 该命令会自动写入 /etc/docker/daemon.json,生成内容大致如下: { "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
3-4-4、重启Docker
# 重启 Docker 服务 systemctl restart docker # 验证docker状态 systemctl status docker
3-4-5、确认目前测试机器中的Docker镜像的情况
[root@localhost milvus_db]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE milvusdb/milvus v2.6.12-gpu a6eb81204bf4 3 months ago 6.33GB quay.io/coreos/etcd v3.5.25 ce1ffcaa22b9 7 months ago 64.7MB minio/minio RELEASE.2024-12-18T13-15-44Z 6aed1b694901 18 months ago 179MB
3-4-6、启动容器
# 启动运行容器,后台运行 docker-compose up -d
3-4-7、验证查看容器的运行情况
[root@localhost milvus_db]# docker-compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS milvus-etcd quay.io/coreos/etcd:v3.5.25 "etcd -advertise-cli…" etcd 20 hours ago Up 20 hours (healthy) 2379-2380/tcp milvus-minio minio/minio:RELEASE.2024-12-18T13-15-44Z "/usr/bin/docker-ent…" minio 20 hours ago Up 20 hours (healthy) 0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp milvus-standalone milvusdb/milvus:v2.6.12-gpu "/tini -- milvus run…" standalone 20 hours ago Up 20 hours (healthy) 0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp

STATUS均显示"healthy",说明:容器均被成功启动了。

3-4-8、再次验证nvidia-smi命令
[root@localhost ~]# nvidia-smi Tue Jun 30 17:32:31 2026 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.163.01 Driver Version: 550.163.01 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 Tesla T4 Off | 00000000:36:00.0 Off | 0 | | N/A 48C P0 29W / 70W | 1127MiB / 15360MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 1 Tesla T4 Off | 00000000:37:00.0 Off | 0 | | N/A 41C P0 29W / 70W | 1MiB / 15360MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 2 Tesla T4 Off | 00000000:9D:00.0 Off | 0 | | N/A 40C P0 28W / 70W | 1MiB / 15360MiB | 8% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 3 Tesla T4 Off | 00000000:9E:00.0 Off | 0 | | N/A 41C P0 29W / 70W | 1MiB / 15360MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 857843 C milvus 1124MiB | +-----------------------------------------------------------------------------------------+

备注:可以看到此时Processes栏出现了0号显卡被进程milvus使用的信息。初步验证说明创建的milvus数据库使用到了GPU显卡的计算分析能力。

4、修改配置时的踩坑记录

由于安装完成后,需要初始化部分新账号角色,有个登录账号验证的配置项,需要做一下开启,我看了下操作说明如下:

一开始,我以为将对应需要部的内容新建到milvus.yaml文件中即可,然后,将修改后的配置文件映射进入容器内,即可满足需要。但是,当我在往milvus.yaml文件中写入以下内容,并且

也相应修改了docker-compose.yml文件后,milvus-standalone容器始终就无法被重启成功了。

后来,我排查了很久才了解到,这样采用局部新建的方式,会大量遗漏其他需要的许多配置项内容的默认值。正确的做法是,优先从容器内将原始的配置文件milvus.yaml拷贝出来,做局部修改后,再重新做一下数据卷的映射即可。

拷贝命令:

docker cp milvus-standalone:/milvus/configs/milvus.yaml ./milvus.yaml

直接找到并修改对应的节点值为true后,再重启对应容器,即可使得配置修改生效。

小结

此次在GPU显卡环境中安装milvusdb可谓是一波多折了。从安装方式的选择,各个软件的版本确定,可联网测试机器的模拟创建,到后面首次安装了没有用到GPU计算能力的版本的milvus,再到返工过程中莫名导致系统损毁需要重装操作系统。。。。。。包括至今都不知道"nvidia-smi"命令究竟是怎么就从"command not found"状态到可以正常工作了。这其中,实在是有太多需要继续去总结,学习了解的地方了。我也希望将整个过程分享给到大家,让大家少踩坑之余,有更多信心和勇气面对陌生的技术领域。

http://www.cnnetsun.cn/news/3858259.html

相关文章:

  • 安全卸载Ubuntu双系统:从分区管理到引导修复的完整指南
  • 本地化AI模型部署与测试全指南:从环境搭建到API集成
  • Godot 4风格化天空着色器:从原理到实战,打造动态日夜循环
  • 建设部网站首页如何优化用户体验并提升政务透明度与公众信任度:深度解析建设行业门户网站的现代化转型之路
  • SAP PI Service Users 深度解析,从组件通信、角色授权到密码治理的一条完整链路
  • From Phonemes to Meaning: Evaluating Large Language Models on Tamil
  • 从零基础到专家级指南,揭秘规则网站建设的核心逻辑与实战技巧
  • 抖音批量下载器:一键打造个人专属素材库的终极方案
  • html5 国内网站建设:从传统向现代化转型的深度解析
  • MATLAB文本数据导入全攻略:从readtable到textscan的实战指南
  • 建设银行官方网站登录指南,解决卡顿报错与安全保障深度解析
  • 沈阳网站建设工作怎么做才能既省钱又出效果?资深运营人掏心窝子的避坑指南
  • python 基于Django的多商户外卖订购与配送平台
  • Git目录泄露:原理、危害与全链路防护实践
  • Unity动作游戏攻击判定系统实战:从动画事件到物理检测
  • 广东省建设工程协会网站作为行业门户如何引领广东建筑行业数字化转型与规范发展
  • VMware Workstation 17.5安装RHEL 8.0全攻略
  • 江苏建设人才网站深度解析:如何借助权威平台实现职业生涯的华丽转身与项目精准对接
  • Deform:如何在Unity中实现实时网格变形的终极指南
  • MySQL表约束:数据完整性的关键设计与实践
  • Pixel-Composer终极指南:零代码打造专业像素特效的完整教程
  • 专业靠谱北京国贸网站建设公司推荐,揭秘高转化率域名备案与源码交付全流程
  • TagUI与Robocorp:从快速原型到企业级RPA机器人的完整实践指南
  • 从零基础到项目实战:深度解析网站建设与管理专业的就业前景与核心技能体系
  • Overused Grotesk完整特性解析:多语言支持、12种样式集与5种字符变体
  • 负反馈电路设计:增益灵敏度与带宽扩展的工程实践
  • 网站建设那家公司好:揭秘避坑指南与深度评测,助你找到最合适的设计伙伴
  • aspire-sentence-embedder:革命性科学文本相似度模型,让论文匹配效率提升30%的终极指南
  • 【独家首发】全球首份《AI学习者神经认知负荷图谱》:揭示深度学习知识吸收效率峰值窗口(仅开放前500名下载)
  • 2024年揭秘网站建设公司怎么样?避坑指南与核心决策逻辑深度解析