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

Ubuntu配置深度学习环境(TensorFlow和PyTorch)

文章目录

  • 一、CUDA安装
    • 1.1 安装显卡驱动
    • 1.2 CUDA安装
    • 1.3 安装cuDNN
  • 二、Anaconda安装
  • 三、安装TensorFlow和pyTorch
    • 3.1 安装pyTorch
    • 3.2 安装TensorFlow2
  • 四、安装pyCharm
    • 4.1 pyCharm的安装
    • 4.2 关联anaconda的Python解释器
  • 五、VScode配置anaconda的Python虚拟环境


前言:最好是去这里看一下TensorFlow对应的CUDA版本,按照要求的版本安装,我是因为有其他程序必须要11.6才没有按照这个要求安装,但是安装流程是一样的
在这里插入图片描述

一、CUDA安装

1.1 安装显卡驱动

查看推荐显卡

ubuntu-drivers devices

在这里插入图片描述

安装recommend推荐显卡版本,这里推荐的是535版本

sudo apt-get install nvidia-driver-535

要选择版本不然会自动更新内核。 但是我安装535会黑屏,只能安装了510,由于是刚安装的系统,更新了内核也没太大的影响,另外安装版本太低的话也不行,因为下面安装CUDA要求最小版本

1.2 CUDA安装

使用手动安装方法:

nvidia-smi

查看显卡驱动支持最高CUDA版本是12.1, 到cuda-toolkit-archive,选择需要的CUDA版本下载(你需要的与TensorFlow匹配的版本),如下图,选择runfile(local),并使用生成的指令进行下载和安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

回车取消安装显卡驱动,然后选择最后的安装:
在这里插入图片描述
在这里插入图片描述

安装成功之后环境配置,在.bashrc文件末尾添加环境变量:

sudo gedit ~/.bashrc
# 添加以下内容:
export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}} 
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

或者终端输入以下命令添加:

# Taken from: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions
echo 'export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc

验证是否安装成功

nvcc -V

在这里插入图片描述

1.3 安装cuDNN

成功安装完CUDA之后,官网下载CUDA对应版本的cuDNN,前往cudnn-archive(需要注册账号),这里我选择的是8.9.4版本的cuDNN(Local Installer for Linux x86_64 (Tar)),对应11.x版本的CUDA(找到与你的CUDA对应的版本):
在这里插入图片描述
下载完成后,在文件所在目录解压缩,注意自己下载文件的名称

tar -xvf cudnn-linux-x86_64-8.9.4.25_cuda11-archive.tar.xz

解压缩完成后,将部分文件复制转移/usr/local(注意:自己下载文件的名称, cudnn8.0以上会将版本信息更新到cudnn_version.h文件中,也需要将这个文件复制,否则验证的时候会没有反应) :

cd cudnn-linux-x86_64-8.9.4.25_cuda11-archive
sudo cp include/cudnn.h /usr/local/cuda/include/ 
sudo cp lib/libcudnn* /usr/local/cuda/lib64/ 
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
sudo cp include/cudnn_version.h /usr/local/cuda/include/
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2  #验证

二、Anaconda安装

进入Anaconda官网,点击Download下载(Anaconda会根据访问网页所使用的系统下载对应的版本,比如我这里下载的是Anaconda3-2023.03-Linux-x86_64.sh)

在这里插入图片描述
安装Anaconda

bash Anaconda3-2023.03-Linux-x86_64.sh

(1)查看安装协议,一直按Enter直到出现 Do you accept the license terms? [yes|no] ,输入yes即可继续安装;
(2)输入yes后会提示确认安装位置,这里点击Enter,默认即可;
(3)初始化Anaconda,这一步只需要根据提示输入yes即可;

在这里插入图片描述
在这里插入图片描述
重启终端进入conda基础环境,可以检查一下在此环境下的python位置和版本:
在这里插入图片描述
如果希望 conda 的基础环境在启动终端时不被激活,将 auto_activate_base 参数设置为 false:

conda config --set auto_activate_base false

后面想要再进入conda的base环境,只需要使用conda指令激活:

conda activate base

在这里插入图片描述

conda常用命令:

  • 创建conda环境
conda create --name 环境名 包名(多个包名用空格分隔)
# 例如:conda create --name my_env python=3.7 numpy pandas scipy
  • 激活(切换)conda环境
conda activate 环境名
# 例如:conda activate bas
  • 显示已创建的conda环境
conda info --envs
# 或者:conda info -e,亦或者conda env list
  • 删除指定的conda环境,
# 通过环境名删除
conda remove --name 要删除的环境名 --all# 通过指定环境文件位置删除(这个方法可以删除不同位置的同名环境)
conda remove -p 要删除的环境所在位置 --all
# 例如:conda remove -p /home/zard/anaconda3/envs/MaskRCNN --all

三、安装TensorFlow和pyTorch

3.1 安装pyTorch

进入pyTorch官网(https://pytorch.org/),往下拉,选择你的环境生成安装命令:
在这里插入图片描述
复制安装命令(我改成了11.6):

conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia

在这里插入图片描述
输入y安装(可能需要科学上网):
在这里插入图片描述
测试是否能够使用:

ipythonimport torch
torch.cuda.is_availbale()

3.2 安装TensorFlow2

# 创建一个虚拟环境
conda create -n tensorflow-gpu python=3.7
# 激活环境
conda activate tensorflow-gpupip install ipython
pip install tensorflow -U

在这里插入图片描述

注意不要安装tensorflow-gpu,会报以下错误,根据提示消息这时候安装tensorflow也是可以使用GPU的。
两种方法都可以让你的 TensorFlow 安装使用 GPU 加速(事实上,自 TensorFlow 2.1 版本开始,两个包在功能上基本相同),具体来说:

  • 使用 pip install --upgrade tensorflow 安装 TensorFlow 时,TensorFlow 应该能够自动检测和使用可用的 GPU 进行加速,前提是您的系统满足了相关的 GPU 驱动程序、CUDA 工具包和 cuDNN 库的要求。这是因为 TensorFlow 是一个通用框架,它可以在 CPU 和 GPU 上运行,但需要正确的配置和依赖项来利用 GPU。
  • 使用 pip install --upgrade tensorflow-gpu 安装 TensorFlow-GPU 版本时,它已经专门配置为利用 GPU 加速,无需额外的配置。

无论选择哪种方法,只要满足了 GPU 驱动程序、CUDA 工具包和 cuDNN 库的要求,TensorFlow 都应该能够正确地使用 GPU 进行加速。
在这里插入图片描述
可以通过检查可用的 GPU 数量来验证是否已启用 GPU 加速:

import tensorflow as tf
tf.test.is_gpu_available()
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

在这里插入图片描述

四、安装pyCharm

4.1 pyCharm的安装

进入官网(https://www.jetbrains.com.cn/en-us/pycharm/)下载pycharm
在这里插入图片描述
点击下载,往下翻,下载Community版本
在这里插入图片描述
下载完成后解压,进入bin目录,运行.sh文件

cd pycharm-community-2023.2.1/bin/
sh pycharm.sh

在这里插入图片描述
在这里插入图片描述
界面启动后,在打开的Pycharm软件界面左下角,点击设置图标,选择Create Deasktop Entry。关闭Pycharm,点击左下角显示应用程序,找到Pycharm,即可开始使用
点击进入plugins,选择Marketplace,搜索chinese,找到中文语言包(图标上有个“汉”字)进行安装,安装好后重启pycharm即可

在这里插入图片描述

4.2 关联anaconda的Python解释器

创建新项目之后,打开设置,选择python解释器:
在这里插入图片描述
添加python解释器,选择Conda环境,选择我们之前创建的虚拟环境:
在这里插入图片描述
可以看到我们安装的库已经有了
在这里插入图片描述
在这里插入图片描述

五、VScode配置anaconda的Python虚拟环境

实际上,我更习惯使用VScode,其简洁方便,我在使用Pycharm时总是遇到卡死的情况,并且字体,主题等等令人不爽,下面使用VScode配置anaconda的Python虚拟环境
首先我们要知道虚拟环境的python解释器位置,它位于#{YOUHOME}/anaconda3/envs/#{YOUEVN}/bin/python,例如我上面创建的虚拟环境:
在这里插入图片描述
然后在VScode左下角的设置中搜索python path,找到解释器路径设置,填入虚拟环境的解释器:
在这里插入图片描述
接下来就可以愉快使用啦(按F5运行哦):
在这里插入图片描述

相关文章:

Ubuntu配置深度学习环境(TensorFlow和PyTorch)

文章目录 一、CUDA安装1.1 安装显卡驱动1.2 CUDA安装1.3 安装cuDNN 二、Anaconda安装三、安装TensorFlow和pyTorch3.1 安装pyTorch3.2 安装TensorFlow2 四、安装pyCharm4.1 pyCharm的安装4.2 关联anaconda的Python解释器 五、VScode配置anaconda的Python虚拟环境 前言&#xff…...

【产品经理】国内企业服务SAAS平台的生存与发展

SaaS在国外发展的比较成熟,甚至已经成为了主流,但在国内这几年才掀起热潮;企业服务SaaS平台在少部分行业发展较快,大部分行业在国内还处于起步、探索阶段;SaaS将如何再国内生存和发展? 在企业服务行业做了五…...

【vue 首屏加载优化】

Vue 首屏加载优化指的是通过一系列的技术手段,尽可能地缩短首屏(即页面中可见的部分)的加载时间,提高用户体验。 以下是一些常见的 Vue 首屏加载优化技巧: 使用 Vue SSR(服务端渲染)&#xff1…...

docker--redis容器部署及与SpringBoot整合-I

文章目录 1. 容器化部署docker2. 如何与SpringBoot集成2.1. 引入依赖2.2. 添加配置信息2.3. 测试类2.4. 内置的Spring Beansredis 主流客户端比较redissonlettucejedis参考1. 容器化部署docker 拉取镜像创建数据目录data 及 配置目录conf创建配置文件redis.conf启动redis容器进…...

力扣 -- 518. 零钱兑换 II(完全背包问题)

解题步骤&#xff1a; 参考代码&#xff1a; 未优化代码&#xff1a; class Solution { public:int change(int amount, vector<int>& coins) {int ncoins.size();//多开一行&#xff0c;多开一列vector<vector<int>> dp(n1,vector<int>(amount1…...

一文搞懂UART通信协议

目录 1、UART简介 2、UART特性 3、UART协议帧 3.1、起始位 3.2、数据位 3.3、奇偶校验位 3.4、停止位 4、UART通信步骤 1、UART简介 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;通用异步收发器&#xff09;是一种双向、串行、异步的通信…...

【算法|动态规划No.7】leetcode300. 最长递增子序列

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…...

LeetCode 54 螺旋矩阵

先贴代码 ​ class Solution {public int[][] generateMatrix(int n) {int left 0;int right n-1;int up 0;int down n-1;int[][] result new int[n][n];int number 0;while(left < right && up < down) {for(int ileft;i<right;i) {number;result[up]…...

OpenCV 概念、整体架构、各模块主要功能

文章目录 1. OpenCV 概念2 OpenCV主要模块3 各模块 详细介绍3.1 calib3d 标定3.2 core 核心功能模块3.4 features2d 二维特征3.5 flann 快速近似近邻算法库3.7 highgui 高级图形用户界面3.9 imgproc 图像处理模块3.10 ml 机器学习模块3.11 objdetect 目标检测模块3.12 photo 数…...

组合数与莫队——组合数前缀和

用莫队求组合数是一种常见套路 莫队求 S ( n , m ) ∑ i 0 m ( n i ) S(n,m)\sum_{i0}^m\binom n i S(n,m)∑i0m​(in​) S ( n , m 1 ) S(n,m1) S(n,m1) 直接做个差&#xff0c;然后就相当于加上 ( n i 1 ) \binom n {i1} (i1n​) 求 S ( n 1 , m ) S(n1,m) S(n1,m)…...

stm32之雨滴传感器使用记录

一、简介 雨滴传感器、烟雾传感器&#xff08;MQ2&#xff09;、轨迹传感器、干黄管等的原理都类似&#xff0c;都是将检测到的信号通过LM393进行处理之后再输出&#xff0c;可以输出数字信号DO&#xff08;0和1&#xff09;和模拟信号A0。 雨滴传感器在正常情况下是AO输出的是…...

华硕平板k013me176cx线刷方法

1.下载adb刷机工具, 或者刷机精灵 2.下载刷机rom包 华硕asus k013 me176cx rom固件刷机包-CSDN博客 3.平板进入刷机界面 进入方法参考&#xff1a; ASUS (k013) ME176CX不进入系统恢复出厂设置的方法-CSDN博客 4.解压ME176C-CN-3_2_23_182.zip&#xff0c;把UL-K013-CN-3.2.…...

C#停车场管理系统

目录 一、绪论1.1内容简介及意义1.2开发工具及技术介绍 二、总体设计2.1系统总体架构2.2登录模块总体设计2.3主界面模块总体设计2.4停车证管理模块总体设计2.5停车位管理模块总体设计2.6员工管理模块总体设计2.7其他模块总体设计 三、详细设计3.1登录模块设计3.2主界面模块设计…...

C++:stl:stack、queue、priority_queue介绍及模拟实现和容量适配器deque介绍

本文主要介绍c中stl的栈、队列和优先级队列并对其模拟实现&#xff0c;对deque进行一定介绍并在栈和队列的模拟实现中使用。 目录 一、stack的介绍和使用 1.stack的介绍 2.stack的使用 3.stack的模拟实现 二、queue的介绍和使用 1.queue的介绍 2.queue的使用 3.queue的…...

​【Java】面向对象程序设计 课程笔记 面向对象基础

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;Java &#x1f4ac;总结&#xff1a;希望你看完之后&#xff0c;能对你有…...

Hive【Hive(五)函数-高级聚合函数、炸裂函数】

高级聚合函数 多进一出&#xff08;多行输入&#xff0c;一个输出&#xff09; 普通聚合函数&#xff1a;count、sum ... 1&#xff09;collect_list&#xff08;&#xff09;&#xff1a;收集并形成 list 集合&#xff0c;结果不去重 select sex,collect_list(job) from e…...

zabbix(二)

文章目录 1. zabbix自定义监控项【配置】2. zabbix自定义监控项【传参】3. zabbix自定义触发器4. zabbix邮件告警4. zabbix企业微信告警 1. zabbix自定义监控项【配置】 目前有主机zabbix-server: 10.0.0.10 zabbix-slave: 10.0.0.11 zabbix监控的内容&#xff0c;想平滑转移到…...

容器安全检测工具KubeHound使用

前言 Kubernetes集群攻击路径AES工具 安装 下载kubehound git clone https://github.com/DataDog/KubeHound.git 安装docker compose插件 Docker compose插件安装_信安成长日记的博客-CSDN博客 启动kubehound后端服务 即要开大内存&#xff0c;不然db起不来&#xff0c…...

机器学习笔记 - 基于强化学习的贪吃蛇玩游戏

一、关于深度强化学习 如果不了解深度强化学习的一般流程的可以考虑看一下下面的链接。因为这里的示例因为在PyTorch 之上实现深度强化学习算法。 机器学习笔记 - Deep Q-Learning算法概览深度Q学习是一种强化学习算法,它使用深度神经网络来逼近Q函数,用于确定在给定状态下采…...

C++_pen_类

类的成员函数 构造函数析构函数普通成员函数 构造函数与析构函数 #include <stdio.h> class STU{ public:STU(){printf("STU\n");}STU(int id){printf("STU(int id)\n");}~STU(){printf("STU Bye!!!\n");} };int main(int argc, char c…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...