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

tensorflow GPU训练环境布置

tensorflow GPU训练环境布置

  • 一、显卡驱动安装
    • 1.1 如何处理**Failed to initialize NVML: Driver/library version mismatch的问题**
    • 1.2 卸载旧的版本
    • 1.3 驱动安装
      • 1.3.1 利用apt 安装
      • 1.3.2 手动安装
  • 二、安装CUDA
    • 2.1 确定CUDA版本
    • 2.2 下载文件
      • 1. 找匹配版本
      • 2. 选合适的平台
    • 2.3 安装文件
    • 2.4 验证
      • 2.4.1 下载cuda samples
      • 2.4.2 编译
  • 3.安装 cudnn
    • 3.1 选择版本
    • 3.2 下载
    • 3.3 安装
    • 3.4 验证
  • 4.tensorflow测试
  • 5 大功告成!!!!!!!!!!!!!!!!!!!!!!!!

一、显卡驱动安装

1.1 如何处理Failed to initialize NVML: Driver/library version mismatch的问题

运行如下命令:

nvidia-smi

在服务器上,刚开始测试的时候,驱动的时候,会报如下错误:

Failed to initialize NVML: Driver/library version mismatch

根据网上方法,尝试了各种:如重启、配置环境变量、卸载重新安装等。都没有起作用。根本原因在于:

我的服务器虚拟的,而且我无法控制宿主机

此时,需要查看是那两个版本不匹配:

dmseg |tail -n 10 #后面这个数字可以根据机器上的错误消息的大小进行调整。我在写这篇文章的时候,由于错误已经被处理了,消息内容很难找,我直接加到1000了

会显示如下的内容:

可以看到,我的当前版本内核中的驱动版是525.85.12,而运行在用户太的版是525.105.17

此时,网上有说直接让自动装,需要看当前最新的安装版本是不是与内核版一致。如果不一致,则需要将内核中的卸载掉。而我这个服务器是利用宿主直通的。所以没法卸载。我怀疑是宿主机的版本与内核的一致。而我无法修改宿主机的。所以只能让我能安装的部分与内核保持一致。

1.2 卸载旧的版本

卸载可以使用如下命令:

sudo apt purge nvidia*

卸载后,可以查看当前 apt支持的驱动版本是什么?

1.3 驱动安装

1.3.1 利用apt 安装

如果与你的内核一致或你能控制内核的版本,则可以直接安装,请跳到下节,安装CUDA部分

如果不一致。那么请继续往下看,阅读完本节。

查看可安装版本:

sudo apt list |grep nvidia-driver*

显示内容如下:

在最新的更新中,并没有我需要的版本,其中最后的一行,

在确定无法利用apt` 安装的情况下,可以利用下面的方法来找合适的驱动版本。

1.3.2 手动安装

驱动查找地址:地址

下载完成之后,使用dpkg 进行安装:

 sudo dpkg -i nvidia-driver-local-repo-ubuntu1804-525.85.12_1.0-1_amd64.deb

提示信息如下:

sudo cp /var/nvidia-driver-local-repo-ubuntu1804-525.85.12/nvidia-driver-local-CDA22FB5-keyring.gpg /usr/share/keyrings/
sudo apt update

此时,在apt中还看不到其更新信息,需要在 `/etc/apt/source.list.d/ `下面添加一个list文件:

再进行更新,就会看到以下信息:

sudo apt udpate

查找驱动:

 sudo apt list |grep nvidia-driver

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BfjSQNkx-1683716939458)(https://pic2.imgdb.cn/item/645b6c9c0d2dde57778772ba.jpg)]

可以看到,在上图中,出现了想要安装的驱动。可以直接手动安装:

sudo apt install nvidia-driver-525 # 或者
sudo apt install nvidia-driver-local-repo-ubuntu1804-525.85.12

安装完成后,就不要再更新了,如果升级了,会导致开始进的问题。

此时,驱动已经安装完成了。

nvidia-smi

二、安装CUDA

2.1 确定CUDA版本

安装的CUDA要tensorflow能支持的版本。这一点很重要。如果你安装最新或最高支持的版本,但tensorflow不支持,也没啥用。

可以在以下的地址查看支持信息:地址

部分截图如下:

可以看见:最新版本的tensorflow-2.12.0也就最高支持11.8,所以即使你安装了cuda12.0也没法利用。

2.2 下载文件

下载地址

1. 找匹配版本

2. 选合适的平台

2.3 安装文件

利用给出的命令直接安装。如果之前安装过,就直接清理。

sudo apt purge cuda*

2.4 验证

2.4.1 下载cuda samples

地址

wget https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v11.8.tar.gz
tar -zxvf v11.8.tar.gz
cd Samples/1_Utilities/deviceQuery/
ls

2.4.2 编译

make
./deviceQuery

3.安装 cudnn

3.1 选择版本

同cuda,选择tensorflow支持的版本:8.6

3.2 下载

地址

需要注册一下,注册后,下载页面如下:

3.3 安装

下载完成后,直接利用dpkg进行安装

 sudo dpkg -i cudnn-local-repo-ubuntu1804-8.9.1.23_1.0-1_amd64.deb

这个会自动提示复制签名信息的,我已经安装过了,所以不再提示了。操作如下:

sudo cp /var/cuda-repo-ubuntu1804-11-8-local/cuda-7D65C20C-keyring.gpg /usr/share/keyrings/

更新:

sudo apt update

这三个挨个安装。

3.4 验证

cp -r  /usr/src/cudnn_samples_v8 ~/src/
cd src/cudnn_samples_v8/mnistCUDNN/
make
./mnistCUDNN

上面只是部分截图信息,如果能运行,环境基本部署成功了。

4.tensorflow测试

import tensorflow as tf 
tf.test.is_gpu_available()

5 大功告成!!!!!!!!!!!!!!!!!!!!!!!!

相关文章:

tensorflow GPU训练环境布置

tensorflow GPU训练环境布置 一、显卡驱动安装1.1 如何处理**Failed to initialize NVML: Driver/library version mismatch的问题**1.2 卸载旧的版本1.3 驱动安装 1.3.1 利用apt 安装1.3.2 手动安装 二、安装CUDA2.1 确定CUDA版本2.2 下载文件1. 找匹配版本2. 选合适的平台 2…...

理解和使用Java中的枚举

枚举是一种特殊的数据类型,用于定义一组具名的常量。Java中的枚举类型可以包含多个枚举常量,每个常量都具有唯一的名称和值。本文将详细介绍Java中的枚举,包括为什么要使用枚举、枚举的好处、如何定义和使用枚举等。 为什么要使用枚举&#…...

C++和Java:哪种语言更适合你

C和Java:哪种语言更适合你 一、引言1 背景介绍2 问题阐述3 目的和意义 二、C与Java的介绍1 C的特点和优缺点2 Java的特点和优缺点3 两种语言的比较4 选择C的理由4.1 适合底层开发的特点4.2高效的编译器和运行速度4.3 自由且灵活的语言风格4.4 良好的内存管理能力 5 …...

FE_Vue学习笔记 框架的执行流程详解

1 分析脚手架结构 (1)CLI就是 command line interface 的缩写。Vue CLI官网:Vue CLI (2)安装过程: (PS: 提前安装过node.js了,没有安装的可以打开这个:Downl…...

KingbaseES V8R6 等待事件之LWLock Buffer_IO

等待事件含义 当进程同时尝试访问相同页面时,等待其他进程完成其输入/输出(I/O)操作时,会发生LWLock:BufferIO等待事件。其目的是将同一页读取到共享缓冲区中。 每个共享缓冲区都有一个与LWLock:BufferIO等待事件相关联的I/O锁,每次都必须在共…...

桂院导航小程序 静态项目 二次开发教程

Gitee代码仓库:桂院导航小程序 先 假装 大伙都成功安装了静态项目,并能在 微信开发者工具 和 手机 上正确运行。 接着就是 将项目 改成自己的学校。 代码里的注释我就不说明了,有提到 我的学校 的文字都改成你自己的就行 1. 全局 app.json…...

即时通讯APP开发费用成本多少?

移动互联网的发展,为人们的通讯交流提供了非常多的便利,一些即时通讯APP的出现,将人与人的距离再一次缩短。通过即时通讯APP软件,人们可以随时随地了解身边发生的新鲜事物,以及和朋友探讨各类趣事,甚至可以…...

女生学大数据好找工作么

好不好找工作和性别无关,无论你是男生还是女生,找工作的时候首先要看的都是学历,然后是个人能力,其中还有一定的面试经验和简历加分项~ 不要自己先把这个性别限定死,你有能力都能找到工作,不满足企业要求都…...

02-mysql升级篇(rpm方式+压缩包升级)

文章目录 升级方式一、二进制方式安装1、下载mysql-5.7.42安装包(mysql-5.7.37升级mysql-5.7.42)2、备份数据库、my.cnf文件,停止mysql服务(重要)3、查看当前数据库版本3、上传 mysql-5.7.42-1.el7.x86_64.rpm-bundle.…...

【Java零基础入门篇】第 ④ 期 - 继承(三)

【Java零基础入门篇】第 ④ 期 - 继承(三) 博主:命运之光专栏:Java零基础入门 学习目标 1.掌握继承性的主要作用、实现、使用限制; 2.掌握this和super的含义及其用法; 3.掌握方法覆写的操作; 4.…...

Python Selenium搭建UI自动化测试框架

自动化测试是软件测试中非常重要的一部分,可以提高测试效率和测试覆盖率。在UI自动化测试中,Selenium是非常流行的工具。本文将介绍如何使用Python和Selenium搭建UI自动化测试框架。 一、环境准备 在开始搭建UI自动化测试框架之前,需要先安装…...

开发大语言模型需要数据?算法?算力?

开发大语言模型的关键是什么。最近看到不少文章为了流量,甚至连 5G 通讯都说成了是开发大语言模型的关键 其实从前面的原理介绍,不难看出,大语言模型的其中一个关键点是数据。 关键一:数据​ 训练数据主要是所谓的语料库。今天的很多语言模型的语料库主要有以下几种: …...

CSS选择器的常见用法

目录 1、CSS编写方式 2.CSS选择器 1.标签选择器 2.类选择器 3.id选择器 4.后代选择器 3.CSS属性 CSS叫做"层叠样式表",作用就是装饰网页.类似于我们平时所说的化妆。 字体、大小、间距、颜色、位置、边框、背景等等统称为样式,用来描述一个网页。 …...

Oracle EBS修改密码

FNDCPASS修改密码 用户名必须出现在FND_USER或FND_ORACLE_USERID表中。FNDCPASS实用程序和ALLRACLE功能是为应用程序用户/模式设计的。 对于FND_USER或FND_ORACLE_USERID中不存在的用户,可以使用alter命令更改密码。 查询用户是否存在FND_USER或FND_ORACLE_USERI…...

《花雕学AI》33:如何用XMind制作AI思维导图、鱼骨图和组织结构图

思维导图是一种有效的思维工具,它可以帮助我们整理信息,激发创意,提高效率。思维导图是一种以中心主题为核心,以分支结构为形式,以关键词和图像为内容的图形表示法。它可以让我们一目了然地看到知识的层次和逻辑&#…...

【rust】| 06——语言特性 | 所有权

系列文章目录 【rust】| 00——开发环境搭建 【rust】| 01——编译并运行第一个rust程序 【rust】| 02——语法基础 | 变量(不可变?)和常量 【rust】| 03——语法基础 | 数据类型 【rust】| 04——语法基础 | 函数 【rust】| 05——语法基础 | 流程控制 【rust】| 06——语言特…...

AUTOSAR入门

简介 AUTOSAR(AUTomotive Open System ARchitecture)是一种汽车软件架构标准,由德国大陆、博世、宝马等汽车及零部件制造商共同发起,拥有广泛的行业参与。其目标是为了解决汽车电子和软件系统日益复杂的问题,提高可重…...

运维高可用架构的 6 大常规方案

在介绍高可用架构的方案之前,先说一下什么是高可用架构,高可用架构应具备但不限于以下特征: 主从切换 很好理解,当其中一台机器的服务宕机后,对于服务调用者来说,能够迅速的切换到其他可用服务,…...

Java设计模式-桥接模式

简介 桥接模式(Bridge Pattern)是一种结构性设计模式,它的主要作用是将抽象部分和实现部分解耦,使它们可以独立变化而不会互相影响。桥接模式最早由GoF(Gang of Four)提出,在《设计模式》一书中…...

计及N-k安全约束的含光热电站电力系统优化调度模型【IEEE14节点、118节点】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下&#xf…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...

作为点的对象CenterNet论文阅读

摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表,并对每一个位置进行分类。这种做法既浪费又低效,并且需要额外的后处理。在本文中,我们采取了不同的方法。我们将物体建模为单…...

基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解

在我的上一篇博客:基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目,该项目展示了一个强大的框架,旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人,更是一个集…...