【深度学习】深度学习之巅:在 CentOS 7 上打造完美Python 3.10 与 PyTorch 2.3.0 环境

【深度学习】深度学习之巅:在 CentOS 7 上打造完美Python 3.10 与 PyTorch 2.3.0 环境

大家好 我是寸铁👊
总结了一篇【深度学习】深度学习之巅:在 CentOS 7 上打造完美Python 3.10 与 PyTorch 2.3.0 环境✨
喜欢的小伙伴可以点点关注 💝

在这里插入图片描述


引言 🍎

在当今快速发展的深度学习领域,构建一个稳定、高效的开发环境是每个研究人员和开发者的必备条件。而在 CentOS 7 这样的操作系统上,如何将最新的Python 3.10PyTorch 2.3.0焕发出最佳性能,是一项需要技巧和专业知识的挑战。本文将引导您通过一系列高级步骤和最佳实践,打造一个完美无缺的深度学习环境,让您的项目在技术之巅驰骋!


前言🍐

本文是笔者踩过无数坑后亲测出来的安装教程,按照这个教程走下来,可以正常使用pip3 install XX安装第三方包,笔者在安装过程看过近30篇安装教程博客,很多的安装步骤走下来经常会报错。例如:大家用pip3 install XX发现报错ssl ,然后你开始查找配置ssl证书,发现无论是选择任何的信任源都发现不行,最后发现是ssl版本过旧,所以,本文优先更新openssl,确保pip3 install XX成功!
如果你也是深度学习新手,正苦恼如何搭建环境,跟着笔者一步步走,过程非常丝滑!


安装场景🌈

  • Centos7操作系统

虚拟机、服务器常见安装场景

  • 容器内的Centos7操作系统

容器内部安装Centos7镜像后,也是一个Linux,安装操作教程相同,笔者亲测有效。

  • 使用dockerfile+requirements.txt安装

本质上是docker帮助我们一行行执行命令,其实也是一样的,需要注意dockerfile的编写规范,详情见下方的dockerfile文件,dockerfile也是笔者跑通安装环境的一个范本,笔者亲测有效。


在虚拟机、服务器安装🗽

一、升级openssl🍉

  • 下载必要的依赖包,使用root权限:
sudo yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel
  • 进入到opt目录,到OpenSSL官方网站下载源码,解压并进入软件包目录:
cd /opt
sudo wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz --no-check-certificate 
sudo tar -zxvf openssl-1.1.1q.tar.gz
cd openssl-1.1.1q
  • 编译安装
sudo ./config prefix=/usr/local/openss1
上面的报错可以直接用: sudo ./config
sudo make && sudo make install
  • 配置lib库:
echo "/usr/local/lib64/" | sudo tee -a  /etc/ld.so.conf
sudo ldconfig
  • 备份旧版本openssl
sudo mv /usr/bin/openssl /usr/bin/openssl.bak
  • 将新版本软链接/usr/bin/
sudo ln -s /usr/local/bin/openssl /usr/bin/openssl
  • 检查openssl version
openssl version

二、安装python3.10🍈

  • 安装依赖,使用root权限
sudo yum install -y ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel uuid-devel readline-devel bzip2-devel libffi-devel
  • 进入目录下载python3.10.6并解压
cd /opt
sudo wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz
sudo tar -zxvf Python-3.10.6.tgz
  • 编译安装
cd Python-3.10.6
sudo ./configure --prefix=/usr/local/python3
sudo make &&  sudo make install

本文指定安装目录/usr/local/python3

  • 创建软链接,centos默认安装有python2.7版本,本文两个版本共存:
sudo ln -s /usr/local/python3/bin/python3.10 /usr/bin/python3
sudo ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip3
  • 验证安装是否成功
python3

在这里插入图片描述

三、 验证pip3 install 是否成功🍅

pip3 install numpy
pip3 install numpy

安装成功如下:

在这里插入图片描述


在docker内部安装🏭

  • 容器内的Centos7操作系统

容器内部安装Centos7镜像后,也是一个Linux,安装操作教程相同,笔者亲测有效。

注意:在容器内安装Centos7用上面的教程前,要先装一下openssl

安装命令如下:

yum install openssl

后续遇到xx: not command,用yum install xx即可。

之后,按照上面的教程一步步走即可安装成功。

安装后,如果需要将容器打包成镜像,则用如下命令:

docker commit 容器id 打包后的镜像名:版本号

之后,再用如下命令:

  • 方式一

运行容器后正常启动状态,使用如下命令。

docker run -itd --entrypoint /bin/bash reqpython 
//先在后台启动 reqpython为刚才打包的镜像名docker ps //查看刚才run的容器名 如:test 
docker exec -it test /bin/bash //再进入容器内部
  • 方式二

只是做测试用,测试完后,不想保留容器,使用如下命令:

docker run -it --rm --entrypoint /bin/bash reqpython // --rm退出即删除容器

使用dockerfile安装🚀

  • 使用dockerfile+requirements.txt安装

dockerfile文件内容如下:

# 使用基础镜像 CentOS 7
FROM centos:7# 安装openssl
RUN yum install -y openssl# 安装必要的依赖
RUN yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel \ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel uuid-devel readline-devel \bzip2-devel libffi-devel wget tar sudo# 升级 OpenSSL
WORKDIR /opt
RUN wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz --no-check-certificate && \tar -zxvf openssl-1.1.1q.tar.gz && \cd openssl-1.1.1q && \./config prefix=/usr/local/openssl && \make && make install && \echo "/usr/local/lib64/" | tee -a /etc/ld.so.conf && \ldconfig && \mv /usr/bin/openssl /usr/bin/openssl.bak && \ln -s /usr/local/bin/openssl /usr/bin/openssl# 安装 Python 3.10
WORKDIR /opt
RUN wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz && \tar -zxvf Python-3.10.6.tgz && \cd Python-3.10.6 && \./configure --prefix=/usr/local/python3 && \make && make install && \ln -s /usr/local/python3/bin/python3.10 /usr/bin/python3 && \ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip3# 将requirements.txt文件复制到容器中
COPY requirements.txt /opt/requirements.txt# 安装 Python 依赖包
RUN pip3 install -r /opt/requirements.txt

requirements.txt文件如下:

numpy==1.26.4
torch_geometric==2.5.3
torch==2.3.0
torchvision==0.18.0
torchaudio==2.3.0

注意: 保证requirements.txt文件和dockerfile文件在同一个文件夹下

然后,使用如下命令打包镜像

docker build -t reqpython .     // reqpython是你给打包镜像起的名字

最后,使用如下命令进入到容器内部:

  • 方式一

运行容器后正常启动状态,使用如下命令。

docker run -itd --entrypoint /bin/bash reqpython //先在后台启动
docker ps //查看刚才run的容器名 如:test 
docker exec -it test /bin/bash //再进入容器内部
  • 方式二

只是做测试用,测试完后,不想保留容器,使用如下命令:

docker run -it --rm --entrypoint /bin/bash reqpython //先在后台启动

运行结果如下:

在这里插入图片描述

运行文件✈️

后面需要将本地的py文件放到容器内部跑,则需要使用docker cp命令将py文件复制到容器内部的路径下再用python3运行即可。

命令如下:

docker cp /local/path/directory container_name:/path/to/directory

参考文章🚊

博主写得很好,博客简洁高效

https://zhuanlan.zhihu.com/p/661077162


结语🌅

通过本文的指引和技巧,您已经了解了在 CentOS 7 上构建Python 3.10PyTorch 2.3.0的深度学习环境所需的关键步骤和优化方法。在您的掌控之下,这个环境将成为您探索人工智能的强大工具,为您的研究和项目注入新的活力。愿您在深度学习之路上驾驭风云,创造出令世界瞩目的成果。


看到这里的小伙伴,恭喜你又掌握了一个技能👊
希望大家能取得胜利,坚持就是胜利💪
我是寸铁!我们下期再见💕


往期好文💕

保姆级教程

【保姆级教程】Windows11下go-zero的etcd安装与初步使用

【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero

【Go-Zero】手把手带你在goland中创建api文件并设置高亮


报错解决

【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项

【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案

【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案

【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案

【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案

【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案

【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案


Go面试向

【Go面试向】defer与time.sleep初探

【Go面试向】defer与return的执行顺序初探

【Go面试向】Go程序的执行顺序

【Go面试向】rune和byte类型的认识与使用

【Go面试向】实现map稳定的有序遍历的方式

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

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

相关文章

股票数据集2-纳斯达克NASDAQ 100 分析

1. 数据清洗 用邻近均值的方法,去掉Non_Padding中的NaN数据 这里没用df.fillna(), 因为其只有前向(ffill )和 后向 (bfill) 插值,不适合大量连续的NaN pd转换为np,写一个函数, 返回np数组的空值,lambda的匿名函数返回y轴空值的索…

IDEA配置mybatis-config.xml模板文件

IDEA配置mybatis-config.xml模板文件 File>>Settings>>File and Code Templates 创建mybatis-config.xml模板 模板内容取自mybatis官网 mybatis官网 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configurationPUBLIC &qu…

【Java】解决Java报错:NullPointerException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 调用 null 对象的实例方法2.2 访问 null 对象的属性2.3 自动拆箱引起的 NullPointerException 3. 解决方案3.1 使用条件判断防止 NullPointerException3.2 优先使用Optional类 4. 预防措施4.1 在方法入口进行校验4.2 使用注解提高…

如何将 Windows图片查看器的背景颜色改成浅色(灰白色)?

现在大家基本都在使用Win10系统&#xff0c;我们在双击查看图片时&#xff0c;系统默认使用系统自带的图片&#xff08;照片&#xff09;查看器去打开图片。图片查看器的背景色默认是黑色的&#xff0c;如下所示&#xff1a;&#xff08;因为大家可能会遇到同样的问题&#xff…

【Linux】进程5——进程优先级

1.进程优先级 1.1.什么是进程优先级 cpu资源分配的先后顺序&#xff0c;就是指进程的优先权&#xff08;priority&#xff09;。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用&#xff0c;可以改善系统性能。还可以把进程运行到指定的CPU上&#x…

关于CodeCombat(沙漠)布朗噪声的攻略

关于CodeCombat(沙漠)//布朗噪声的攻略 总的来说怎么猥琐怎么来 1.走到墙角骷髅看不到的位置&#xff0c;让宠物制造噪音&#xff0c;然后英雄走过去&#xff0c;就是这样没错&#xff08;坐标之类能明白) 最后看看运行结果吧 Rec 0002 希望天天开心

Java SE(Java Platform, Standard Edition)

Java SE&#xff08;Java Platform, Standard Edition&#xff09; 是Java平台的一个版本&#xff0c;面向桌面应用程序、服务器和嵌入式环境。Java SE提供了开发和运行Java应用程序的基础API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&…

添加Microsoft.VisualStudio.TestTools.UnitTesting命名空间

创建“单元测试项目”&#xff0c;则自动添加 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间

例54:Draw使用

建立一个控制台工程&#xff0c;输入代码&#xff1a; Screen 13 移动到&#xff08;50,50&#xff09;而不绘图 Draw "BM 50,50" B:移动但不绘制,M:移动到指定位置 将绘图颜色设置为2&#xff08;绿色&#xff09; Draw "C2" C将颜色改为n …

计算机网络 —— 网络层 (路由协议)

计算机网络 —— 网络层 &#xff08;路由协议&#xff09; 什么是路由协议内部网关协议RIP关键特性 OSPF主要特点 外部网关协议BGP关键特性 我们今天来看路由协议&#xff1a; 什么是路由协议 路由协议是网络设备&#xff08;主要是路由器&#xff09;用来决定数据包在网络中…

【Python入门与进阶】Anaconda环境配置

目录 1.Conda换源 2.pip换源 3.环境管理 4.可视化界面完成上述操作 1.Conda换源 1.1.打开Anaconda Powershell Prompt 1.2.在界面中输入以下命名&#xff08;加入清华源并设置搜索优先级&#xff09;&#xff1a; conda config --add channels https://mirrors.ustc.edu.…

【数据结构】二叉树专题

前言 本篇博客我们来看一些二叉树的经典题型&#xff0c;也是对上篇博客的补充 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ​ 目录 1.单值二叉树 …

计网总结☞网络层

.................................................. 思维导图 ........................................................... 【Wan口和Lan口】 WAN口&#xff08;Wide Area Network port&#xff09;&#xff1a; 1)用于连接外部网络&#xff0c;如互联…

stm32中外部中断控制Led亮灭

说明&#xff1a;外部中断的方式通过按键来实现&#xff0c;stm32的配置为江科大stm32教程中的配置。 1.内容&#xff1a; 通过中断的方式&#xff0c;按下B15按键Led亮&#xff0c;按下B13按键Led灭。 2.硬件设计&#xff1a; 3.代码&#xff1a; 3.1中断底层 EXTI.c #i…

笔记95:车辆横向动力学方程转化为误差形式 -- 详细推导过程

1. 非误差型车辆横向动力学方程 注&#xff1a;关于轮胎侧偏刚度的正负 深蓝课程推导得到的车辆横向动力学返程使用的轮胎侧偏刚度是默认为正数&#xff1b;老王课程推导得到的车辆横向动力学方程使用的轮胎侧偏刚度是默认为负数&#xff1b; 1.1 深蓝课程推导得到的方程&…

如何计算 GPT 的 Tokens 数量?

基本介绍 随着人工智能大模型技术的迅速发展&#xff0c;一种创新的计费模式正在逐渐普及&#xff0c;即以“令牌”&#xff08;Token&#xff09;作为衡量使用成本的单位。那么&#xff0c;究竟什么是Token呢&#xff1f; Token 是一种将自然语言文本转化为计算机可以理解的…

kafka集成flink api编写教程

1.引入依赖&#xff08;pox.xml&#xff09; <dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.13.6</version></dependency><dependency><gro…

【C++ | 拷贝赋值运算符函数】一文了解C++的 拷贝赋值运算符函数

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-06-09 1…

深度网络及经典网络简介

深度网络及经典网络简介 导语加深网络一个更深的CNN提高识别精度Data Augmentation 层的加深 经典网络VGGGoogLeNetResNet 高速学习迁移学习GPU分布式学习计算位缩减 强化学习总结参考文献 导语 深度学习简单来说&#xff0c;就是加深了层数的神经网络&#xff0c;前面已经提到…

Java:110-SpringMVC的底层原理(上篇)

SpringMVC的底层原理 在前面我们学习了SpringMVC的使用&#xff08;67章博客开始&#xff09;&#xff0c;现在开始说明他的原理&#xff08;实际上更多的细节只存在67章博客中&#xff0c;这篇博客只是讲一点深度&#xff0c;重复的东西尽量少说明点&#xff09; MVC 体系结…