英伟达显卡深度学习训练微调环境安装清单

news2024/11/26 13:42:43

可以考虑 安装完操作系统后,安装更新及其他基础软件如gcc cmake, 再安装英伟达几件套(这里列出了四个) 如果自带的python版本在3.8或以上,再安装python常用库。 python版本不能太低,看你要跑的代码的需求了。

顺序号名称全称简要描述包样例(后面的数字可能变化)安装后检查命令
1显卡驱动 好比是一个接口,提供 使用GPU 的能力NVIDIA-Linux-x86_64-535.113.01.runnvidia-smi
2cuda toolkitCompute Unified Device Architecture这个工具集 提供了很多的工具和库,让你使用GPU时 不用从头开始造轮子。cuda_11.7.0_515.43.04_linux.runnvcc -V
3cudnnCUDA Deep Neural Network library对深度学习中的卷积、池化、归一化等常用操作做了特别优化。cudnn-linux-x86_64-8.8.1.3_cuda11-archive.tar.xz 
4ncclNVIDIA Collective Communications Library用于加速多GPU之间通信的库,  单卡 可以不用安装。nccl_<version>_.txznccl-tests

新手可能分不清这些包之间的关系,这这个表格可以简单快速的了解安装步骤清单,需要的包也可以提前准备下。 其中cudnn及nccl的包一定要注册才能下载..。单机单卡可以不用装nccl。有版本配套关系可以提前查询确定的。 好多教程都有,这里不列了。

一些说明记录:

一: 

安装驱动可能会有报错: ERROR: The Nouveau kernel driver is currently in use by your system.  This driver is incompatible with the NVIDIA driver, and must be disabled before proceeding.   解决这个错误需要禁用 系统自带的nouveau驱动,具体的操作搜一下有很多。
   安装完成后记得用 nvidia-smi命令检查结果,再进入下一步 

二:

CUDA是运算平台名称、CUDA Toolkit是工具包。如果有的文章写 如何安装cuda / 如何安装 cuda toolkit,可以当成是同一样东西。
   NVCC就是CUDA的编译器, 类似于gcc就是c语言的编译器。
   每个CUDA的版本(cudatoolkit)会要求一个 最低的显卡驱动版本;
   而显卡驱动会提供一个 最高支持的CUDA 版本。
   CUDA有两种API,分别是 运行时API和驱动API:Runtime API 与 Driver API。
   nvcc的结果是对应 CUDA Runtime API(运行API)的版本
   nvidia-smi是 CUDA Driver API(驱动API)的版本,也是 当前驱动支持的 最高CUDA版本

安装cuda成功 会提示:
===========
= Summary =
===========

Driver:   Installed
Toolkit:  Installed in /usr/local/cuda-11.7/

Please make sure that
 -   PATH includes /usr/local/cuda-11.7/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.7/lib64, or, add /usr/local/cuda-11.7/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.7/bin
To uninstall the NVIDIA Driver, run nvidia-uninstall
Logfile is /var/log/cuda-installer.log

如果没有出现这个提示,要你去看日志,应该是没装成功的,本人之前遇到的错误主要还是与驱动安装有关,可能之前的没有卸载干净。


加入环境变量后, 记得source /etc/profile
vi /etc/profile
export PATH=$PATH:/usr/local/cuda-11.7/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.7/lib64

安装完成后记得用nvcc --version命令检查结果,再进入下一步。

三:

cudnn的安装主要是替换和加多头文件及包。很多安装指导解包后都是下面两步:
tar -xf cudnn-linux-x86_64-8.8.1.3_cuda11-archive.tar.xz
cp cudnn-linux-x86_64-8.8.1.3_cuda11-archive/include/* /usr/local/cuda/include/
cp cudnn-linux-x86_64-8.8.1.3_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/include/*.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*


执行完以后,可以再运行sudo ldconfig 看看有没有报错。 
如果有报错:
/sbin/ldconfig.real: /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 不是符号链接
/sbin/ldconfig.real: /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 不是符号链接
/sbin/ldconfig.real: /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn.so.8 不是符号链接
/sbin/ldconfig.real: /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 不是符号链接
/sbin/ldconfig.real: /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 不是符号链接
/sbin/ldconfig.real: /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 不是符号链接
/sbin/ldconfig.real: /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 不是符号链接


ll看一下 解包后的文件,有很多是链接,但拷过去的不是链接。

解包后的:

拷贝过去的:

我用的最基本的方法,重新建链接。 考虑 试情况执行:
cd /usr/local/cuda/lib64/    (cd到拷贝后的目标目录)
rm -f libcudnn_adv_infer.so libcudnn_adv_infer.so.8
rm -f libcudnn_adv_train.so libcudnn_adv_train.so.8
rm -f libcudnn_cnn_infer.so libcudnn_cnn_infer.so.8
rm -f libcudnn_cnn_train.so libcudnn_cnn_train.so.8
rm -f libcudnn_ops_infer.so libcudnn_ops_infer.so.8
rm -f libcudnn_ops_train.so libcudnn_ops_train.so.8
rm -f libcudnn.so libcudnn.so.8

ln -s  "libcudnn_adv_infer.so.8.8.1"  libcudnn_adv_infer.so.8
ln -s   libcudnn_adv_infer.so.8  libcudnn_adv_infer.so
ln -s  "libcudnn_adv_train.so.8.8.1"  libcudnn_adv_train.so.8
ln -s   libcudnn_adv_train.so.8  libcudnn_adv_train.so
ln -s  "libcudnn_cnn_infer.so.8.8.1"  libcudnn_cnn_infer.so.8
ln -s   libcudnn_cnn_infer.so.8  libcudnn_cnn_infer.so
ln -s  "libcudnn_cnn_train.so.8.8.1"  libcudnn_cnn_train.so.8
ln -s   libcudnn_cnn_train.so.8  libcudnn_cnn_train.so
ln -s  "libcudnn_ops_infer.so.8.8.1"  libcudnn_ops_infer.so.8
ln -s   libcudnn_ops_infer.so.8  libcudnn_ops_infer.so
ln -s  "libcudnn_ops_train.so.8.8.1"  libcudnn_ops_train.so.8
ln -s   libcudnn_ops_train.so.8  libcudnn_ops_train.so
ln -s  "libcudnn.so.8.8.1"  libcudnn.so.8
ln -s   libcudnn.so.8  libcudnn.so

再执行ldconfig 就没有报错了。 

bitsandbytes 也可以从源码安装。装完后试一下 python3 -m bitsandbytes有没有报错。

如果你还不是一个装环境熟手 可以考虑先从头装起。 我刚开始试过在别人装了一部分anacoda及显卡驱动的包上再继续装,很折磨人,搞了很久最后还是没搞定。 GPU服务器一般不是我们个人电脑,上面没多少琐碎的东西。重要的包备份一下,就可以重来了。是的,重装操作系统,再继续。

把需要安装的 列表和执行命令记录下来,加速下一次的安装。 当然可以写个脚本,更加自动化。
重装操作系统后,记得 sudo apt-get update 或 yum -y update,这一步一定要做,省去后面好多不必要的麻烦。
接下来是安装gcc make这些。 把这些常用的软件装好之后,再开始装 英伟达驱动这些。


我最近几年也不用anacoda装包了。anacoda能装的包,pip一样能装。
英伟达相关的包,conda安装的包可能还只是全部的一部分,在其他场景用起来可能又不够.. 比如又缺少头文件之类。 我一般不使用anacoda这种方式。

看到某位大侠用的版本关系,可以参考:

操作系统: CentOS 7
CPUs: 单个节点具有 1TB 内存的 Intel CPU,物理CPU个数为64,每颗CPU核数为16
GPUs: 8卡A800 80GB GPUs
Python: 3.10 (需要先升级OpenSSL到1.1.1t版本(点击下载OpenSSL),然后再编译安装Python),
NVIDIA驱动程序版本: 515.65.01,根据不同型号选择不同的驱动程序。
CUDA工具包: 11.7
NCCL: nccl_2.14.3-1+cuda11.7
cuDNN: 8.8.1.3_cuda11

这篇文章也参考学习了:
https://blog.csdn.net/weixin_39928010/article/details/131142603
https://blog.csdn.net/qq_42406643/article/details/109545766

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1170635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode-70 爬楼梯

递归公式方法会出现超时&#xff08;时间复杂度大于On^2&#xff09; 方法一&#xff1a;依然使用递归思想&#xff0c;由于递归过程中会出现反复计算问题&#xff0c;所以定义两个变量分别记录f(n-1)和f(n-2)的值&#xff0c;避免重复计算&#xff0c;减小时间复杂度 class …

mysql索引深度学习

索引是什么&#xff1f; 索引是一种用于加快查询和索引的数据结构&#xff0c;其本质上就是一种排序好的数据结构&#xff0c;就类似书的目录。 索引的底层有多种实现的结构&#xff1a;b树&#xff0c;b树&#xff0c;Hash&#xff0c;红黑树。InnoDB和MyISAM的索引都是通过…

【安全】Java幂等性校验解决重复点击(6种实现方式)

目录 一、简介1.1 什么是幂等&#xff1f;1.2 为什么需要幂等性&#xff1f;1.3 接口超时&#xff0c;应该如何处理&#xff1f;1.4 幂等性对系统的影响 二、Restful API 接口的幂等性三、实现方式3.1 数据库层面&#xff0c;主键/唯一索引冲突3.2 数据库层面&#xff0c;乐观锁…

Flink SQL 窗口聚合详解

1.滚动窗⼝&#xff08;TUMBLE&#xff09; **滚动窗⼝定义&#xff1a;**滚动窗⼝将每个元素指定给指定窗⼝⼤⼩的窗⼝&#xff0c;滚动窗⼝具有固定⼤⼩&#xff0c;且不重叠。 例如&#xff0c;指定⼀个⼤⼩为 5 分钟的滚动窗⼝&#xff0c;Flink 将每隔 5 分钟开启⼀个新…

Activiti7工作原理

Java Activiti是一个开源的工作流引擎&#xff0c;用于管理和执行业务流程。 它是基于BPMN 2.0标准的&#xff0c;提供了丰富的功能和灵活性。 Java Activiti的工作原理如下&#xff1a; 1.Java Activiti 流程建模 使用BPMN 2.0标准的图形化编辑器&#xff0c;可以创建和定义…

基于饥饿游戏算法的无人机航迹规划-附代码

基于饥饿游戏算法的无人机航迹规划 文章目录 基于饥饿游戏算法的无人机航迹规划1.饥饿游戏搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用饥饿游戏算法来优化无人机航迹规划。 …

Docker容器技术实战3

8、docker原生网络 Docker原生网络基于Linux桥接技术和虚拟网络接口&#xff0c;使用了Linux内核的网络功能。每个Docker容器都有自己的网络命名空间&#xff0c;这使得容器之间可以使用独立的IP地址&#xff0c;并隔离了容器的网络栈。 当创建一个Docker原生网络时&#xff…

Apache Flink 1.12.0 on Yarn(3.1.1) 所遇到的問題

Apache Flink 1.12.0 on Yarn(3.1.1) 所遇到的問題 新搭建的FLINK集群出现的问题汇总 1.新搭建的Flink集群和Hadoop集群无法正常启动Flink任务 查看这个提交任务的日志无法发现有用的错误信息。 进一步查看yarn日志&#xff1a; 发现只有JobManager的错误日志出现了如下的…

JOSEF约瑟 数显三相电压继电器 HJY-931A/D 导轨安装

名称&#xff1a;数字交流三相电压继电器型号&#xff1a;HJY-93系列品牌&#xff1a;JOSEF约瑟电压整定范围&#xff1a;10~450VAC额定电压&#xff1a;200、400VAC功率消耗&#xff1a;≤5W HJY系列 数字交流三相电压继电器 系列型号 HJY-931A/D数字式交流三相电压继电器&am…

吴恩达《机器学习》5-6:向量化

在深度学习和数值计算中&#xff0c;效率和性能是至关重要的。一个有效的方法是使用向量化技术&#xff0c;它可以显著提高计算速度&#xff0c;减少代码的复杂性。接下来将介绍向量化的概念以及如何在不同编程语言和工具中应用它&#xff0c;包括 Octave、MATLAB、Python、Num…

lvgl生成图片

网址&#xff1a;https://lvgl.io/tools/imageconverter CF_TRUE_COLOR:可以生成565&#xff0c;232&#xff0c;等多种形式的数组&#xff0c;选择Carray,会生成C数组。

2023.11.2事件纪念

然而造化又常常为庸人设计,以时间的流逝,来洗涤旧迹,仅以留下淡红的血色和微漠的悲哀。 回顾这次事件&#xff0c;最深的感触就是什么是团队的力量&#xff01; 当我们看到希望快要成功的时候&#xff0c;大家洋溢出兴奋开心的表情&#xff0c;一起的欢声笑语&#xff1b;但看…

抖音群控软件的作用是什么?

随着智能手机的普及和社交媒体的兴起&#xff0c;抖音成为了人们日常生活中不可或缺的一部分&#xff0c;许多人都通过抖音平台分享自己的生活、展示才艺、开展商业活动等。 然而&#xff0c;要想在抖音上获得更多的关注和收益&#xff0c;需要投入大量的时间和精力&#xff0…

【C语言初学者周冲刺计划】3.2将一个数组中的值逆序重新存放

目录 1解题思路&#xff1a; 2代码 3运行代码如图&#xff1a; 4总结&#xff1a; 1解题思路&#xff1a; 首先学会如何利用循环输入位数和输入数值&#xff0c;然后再利用循环逆序即可 2代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int…

佳易王钟表铭表维修养护拍图留存查询手表保养跟踪记录系统软件下载

佳易王钟表铭表维修养护拍图留存查询手表保养跟踪记录系统软件下载 【软件试用版下载、软件资讯或技术支持服务可以点击文章最下方官网】 佳易王钟表养护维修管理系统V16.3&#xff0c;录入维修订单&#xff0c;维修进度查询&#xff0c;会员活动方案&#xff0c;打印服务报…

并发安全问题之--锁失效和锁边界问题

并发安全问题之–锁失效和锁边界问题 此处为新增insert无法在SQL中通过数量限制(除非插入SQL中有子查询)&#xff0c;上面改进的乐观锁失效&#xff08;前一节的乐观锁适合修改数据&#xff09; 故使用悲观锁&#xff0c;synchronized如果加在方法上范围是this是整个service&…

OSG多视口创建:osgViewer::CompositeViewer

1、效果 在osg的实际应用场景中&#xff0c;有时候需要同时创建多个场景视图&#xff0c;并保证各个场景视图中有不一样的显示和操作&#xff1a;例如&#xff1a;漫游器、照相机、粒子效果、多个模型组合等。此时就要用到OSG提供的osgViewer::CompositeViewer类来实现这个需求…

音乐推荐与管理系统Python+Django网页界面+协同过滤推荐算法

一、介绍 音乐推荐与管理系统。本系统采用Python作为主要开发语言&#xff0c;前端使用HTML、CSS、BootStrap等技术搭建界面平台&#xff0c;后端使用Django框架处理请求&#xff0c;并基于Ajax等技术实现前端与后端的数据通信。在音乐个性推荐功能模块中采用通过Python编写协…

Jmeter和Postman哪个做接口测试会更好

软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xff0c;所以今天我们就来谈谈一大部分人在做的接口测试&#xff0c;小白变高手…

gcc -static 在centos stream8 和centos stream9中运行报错的解决办法

gcc -static 在centos stream8 和centos stream9中运行报错的解决办法&#xff1a; 报/usr/bin/ld: cannot find -lc 我们下载glibc-static&#xff1a; 选择x86_64的。 还有一个是libxcrypt-static&#xff0c;依旧在这个网站里搜。 rpm -ivh glibc-static-2.28-239.el8.x…