centos 7.9 离线环境安装GPU服务环境

news/2024/12/22 22:25:32/

文章目录

  • centos 7.9 离线环境安装GPU服务环境
      • 系统配置
      • 更新 gcc
      • 更新内核
      • 安装显卡驱动
      • 安装cuda
      • 安装docker 和 nvidia-container-runtime
      • 验证

centos_79_GPU_1">centos 7.9 离线环境安装GPU服务环境

基于centos 7.9 离线安装gpu 服务基础环境,用于在docker 中运行算法服务

系统配置

limits.conf 配置

$ vim /etc/security/limits.conf*  soft nofile   1024000
*  hard nofile   1024000
*  soft nproc   1024000
*  hard nproc   1024000

sysctl.conf 配置

$ vim  /etc/sysctl.conf
#内核默认参数
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.sem=500 64000 64 256
##打开文件数参数(20*1024*1024)
fs.file-max= 20971520
##WEB Server参数
net.ipv4.tcp_tw_reuse=1
#net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=1200
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_rmem=4096 87380 8388608
net.ipv4.tcp_wmem=4096 87380 8388608
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_max_tw_buckets = 5000
##TCP补充参数
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 65535
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
##禁用ipv6
net.ipv6.conf.all.disable_ipv6 =1
net.ipv6.conf.default.disable_ipv6 =1
##swap使用率优化
vm.swappiness=0
fs.inotify.max_user_watches = 1048576

关闭防火墙

systemctl stop firewalld 
systemctl disable firewalld

更新 gcc

[gcc 环境下载地址](Index of /gnu/gcc)

各种gnu环境相关依赖地址

我这里使用的 gcc9 的包,里面是携带好了依赖包的,可以通过解压后直接执行(上面的地址需要自己处理依赖包,缺啥下啥就行)

$ yum localinstall ./*.rpm

直接 执行 localinstall 命令,可能会出现依赖问题报错,可以在本地搭建yum 仓库,把rpm 包都扔到仓库里面再执行 yum install 命令(缺基础环境时,可以吧centos 的iso 镜像挂载到服务器上作为yum仓库)

在这里插入图片描述

第一步:挂载安装光盘

$ mount /dev/*.iso /mnt/os

第二步:编辑repo yum源文件

$ cd /etc/yum.repos.d/
$ mkdir backup
$ mv *.repo backup/ #备份原repo文件
$ vim local.repo
[local]
name=local
baseurl=file:///mnt/os   # 目录
gpgcheck=0   # 跳过检查
enabled=1    # 启用

第三步:检查yum makecache

$ yum makecache

在这里插入图片描述

出现这个就代表搭建成功了

可以把 你要用到的 rpm 包直接放到 /mnt/os/Package 目录下,就可以直接下载了,但是不太建议这么干。可以重新再弄一个本地repo

1. 创建一个目录
$ mkdir /mnt/local-repo
2. 创建 repodata 
$ cd  /mnt/local-repo
$ createrepo .    # 创建repo的配置包  repodata 目录
3. 安装上述编辑 repo yum 配置文件即可

配置好yum repo 后 执行

$ yum install gcc -y # 即可

更新内核

更新内核需要先卸载内核,但是卸载完内核后,若未安装新的内核,重启服务器,那么就重装系统吧

  1. 卸载内核

    rpm -e kernel-headers --nodeps
    rpm -e kernel-devel --nodeps
    rpm -e kernel-tools-libs --nodeps
    rpm -e kernel --nodeps
    rpm -e kernel-tools --nodeps
    
  2. 安装新内核

    1. 提前准备好 rpm 包

      # 解压后进入目录
      $ yum localinstall ./*.rpm
      
    2. rpm 包放入本地yum 仓库中

      $yum install kernel-lt-devel
      
    3. 查看内核启动顺序、设置内核启动

      $ awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
      $ grub2-set-default 0
      
    4. reboot(如果是包含GPU的新环境,最好更改完GPU的相关配置再重启机器)

    5. uname -a 查看

安装显卡驱动

官网显卡驱动下载地址

在这里插入图片描述

红框部分根据需要选择,然后点击search,点击下载即可

验证检查命令: rpm -qa | grep kernel

chmod +x NVIDIA-Linux-x86_64-515.105.01.run
#按需卸载原有驱动(强烈建议使用该方法卸载,卸载的最干净)
./NVIDIA-Linux-x86_64-515.105.01.run --uninstall
#禁用Nouveau驱动(Root权限) 
vi /lib/modprobe.d/dist-blacklist.conf
#添加下列两行
blacklist nouveau
options nouveau modeset=0
# 注释掉
# blacklist nvidiafb
#备份原来的 initramfs-nouveau-image镜像并重新建立initramfs-image文件
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
dracut /boot/initramfs-$(uname -r).img $(uname -r)  # 可能没有源来的镜像,报错无所谓
systemctl set-default multi-user.target
init 3
reboot
#查看是否禁用nouveau成功
lsmod | grep nouveau
#没有信息输出则成功,反之重新操作禁用nouveau操作
#安装驱动
./NVIDIA-Linux-x86_64-515.105.01.run#####如果出现安装不上可以使用如下方案cat > /etc/modprobe.d/nvidia.conf << EOFoptions nvidia NVreg_EnablePCIeGen3=1options nvidia NVreg_EnableGpuFirmware=0options nvidia NVreg_OpenRmEnableUnsupportedGpus=1EOFnvidia-uninstall  后再重新安装
# 然后一直enter,注意弹窗提示,没有error则安装成功,如果出现error,截图反馈到运维
#验证
nvidia-smi

在这里插入图片描述

出现这个就成功了

安装cuda

cuda 下载官网

根据图中红框部分根据具体情况选择(如选择centos版本或ubuntu版本),因为前面安装好了驱动,所以这里只单独安装cuda
在这里插入图片描述

sh cuda_11.4.1_470.57.02_linux.run#只选择安装CUDA ToolKit 11.4 具体安装如下图,其他不要安装 切记!!!开始会解压一小会儿,弹窗让你选择安装哪些东西,我们只需要cuda_toolkit,上下方向键和enter键控制勾掉不需要的安装,cuda里面也有驱动,一定要取消掉,不然会有冲突,大约几分钟后就安装好,安装目录一般为/usr/local/cuda-11.4#等待安装完成

在这里插入图片描述
在这里插入图片描述

#添加环境变量
vi /etc/profileexport PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATHsource /etc/profile
#验证: nvcc --version,如下图所示

在这里插入图片描述

安装docker 和 nvidia-container-runtime

  1. 离线下载docker.tgz 文件

    我的包里面是包括 systemctl 管理的配置和 docker-compose

    cp ./docker/* /usr/bin/
    rm -rf ./docker
    # 上面是安装docker的
    mkdir -p /etc/systemd/system
    cp docker.service /etc/systemd/system/docker.service
    chmod +x /etc/systemd/system/docker.service
    mkdir -p /etc/docker/
    cp daemon.json /etc/docker/daemon.jsoncp docker-compose /usr/local/bin/
    chmod +x /usr/local/bin/docker-compose
    systemctl daemon-reload
    systemctl start docker
    systemctl enable docker.service
    
  2. 安装 nvidia-container-runtime

    在官网或者github 上下载好对应的 nvidia-container-runtime 包,里面是有部分依赖的rpm 包

    可以直接  yum localinstall ./*.rpm 如果报错就直接把rpm 包放到本地repo里面
    yum install nvidia-container-runtime
    
  3. 修改 daemon.json

    {"default-runtime": "nvidia","runtimes": {"nvidia": {"path": "nvidia-container-runtime","runtimeArgs": []}},# 上面的配置是配置 runtimes 的 "registry-mirrors": ["https://4p5gxeik.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"storage-driver": "overlay2","storage-opts":["overlay2.override_kernel_check=true"],"log-driver": "json-file","log-opts": {"max-size": "500m","max-file": "3"},"oom-score-adjust": -1000,"bip": "172.20.0.1/16","fixed-cidr": "172.20.0.0/16","metrics-addr" : "0.0.0.0:9323","experimental" : true,"default-address-pools": [{"base": "10.252.0.0/16", "size": 16},{"base": "10.253.0.0/16", "size": 16},{"base": "10.254.0.0/16", "size": 16}]
    }
    

    配置完重启docker即可

验证

安装完后,找一个gpu镜像,执行

docker run -it image  nvidia-smi

有正常结果就表示ok,也可以通过python 调用测试下 cuda


http://www.ppmy.cn/news/1472580.html

相关文章

【华为OD机试B卷】解压报文、压缩报文还原(C++/Java/Python)

题目 题目描述 为了提升数据传输的效率,会对传输的报文进行压缩处理。输入一个压缩后的报文,请返回它解压后的原始报文。压缩规则:n[str],表示方括号内部的 str 正好重复 n 次。注意 n 为正整数(0 < n <= 100),str只包含小写英文字母,不考虑异常情况。输入描述 输…

ESP32-C3(基本信息)

ESP32-C3 是一款低功耗、高集成度的 MCU 系统级芯片 (SoC)&#xff0c;它集成了 2.4 GHz Wi-Fi 和低功耗蓝牙 (Bluetooth LE) 无线通信功能&#xff0c;并拥有丰富的外设接口和先进的电源管理机制。 主要特性&#xff1a; 无线通信&#xff1a; 支持 2.4 GHz Wi-Fi (802.11b/…

【Linux】虚拟机安装openEuler 24.03 X86_64 教程

目录 一、概述 1.1 openEuler 覆盖全场景的创新平台 1.2 系统框架 1.3 平台框架 二、安装详细步骤 一、概述 1.1 openEuler 覆盖全场景的创新平台 openEuler 已支持 x86、Arm、SW64、RISC-V、LoongArch 多处理器架构&#xff0c;逐步扩展 PowerPC 等更多芯片架构支持&…

[leetcode]avoid-flood-in-the-city 避免洪水泛滥

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> avoidFlood(vector<int>& rains) {vector<int> ans(rains.size(), 1);set<int> st;unordered_map<int, int> mp;for (int i 0; i < rains.size(); i) {i…

【PyTorch单点知识】神经元网络模型剪枝prune模块介绍(下,结构化剪枝)

文章目录 0. 前言1. 结构化剪枝 vs 非结构化剪枝1.1 非结构化剪枝的特征1.2 结构化剪枝1.3 结构化剪枝的好处&#xff1a; 2. torch.nn.utils.prune中的结构化剪枝方法3. PyTorch实例3.1 random_structured3.2 prune.ln_structured 4. 总结 0. 前言 按照国际惯例&#xff0c;首…

Flutter【组件】点击类型表单项

简介 flutter 点击表单项组件&#xff0c;适合用户输入表单的场景。 点击表单项组件是一个用户界面元素&#xff0c;通常用于表单或设置界面中&#xff0c;以便用户可以点击它们来选择或更改某些设置或输入内容。这类组件通常由一个标签和一个可点击区域组成&#xff0c;并且…

【AI原理解析】—支持向量机原理

目录 1. 支持向量机&#xff08;SVM&#xff09;概述 2. 超平面与支持向量 3. 间隔最大化 4. 优化问题 5. 核函数 6. 总结 1. 支持向量机&#xff08;SVM&#xff09;概述 定义&#xff1a;支持向量机是一种监督学习模型&#xff0c;主要用于数据分类问题。其基本思想是…

EE trade:利弗莫尔三步建仓法

在股市投资领域&#xff0c;利弗莫尔这个名字代表着无数的智慧和经历。他的三步建仓法成为了投资者们趋之若鹜的学习对象。本文将详细解析利弗莫尔的著名买入法&#xff0c;通过分步进攻方式&#xff0c;有效掌控市场并实现盈利。 一、利弗莫尔的三步建仓法详解 利弗莫尔三步…