【深度学习】深度学习之巅:在 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.rhkb.cn/news/345117.html

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

相关文章

有序二叉树java实现

类实现: package 树;import java.util.LinkedList; import java.util.Queue;public class BinaryTree {public TreeNode root;//插入public void insert(int value){//插入成功之后要return结束方法TreeNode node new TreeNode(value);//如果root为空的话插入if(r…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十七)- 微服务(7)

11.1 : 同步调用的问题 11.2 异步通讯的优缺点 11.3 MQ MQ就是事件驱动架构中的Broker 安装MQ docker run \-e RABBITMQ_DEFAULT_USERxxxx \-e RABBITMQ_DEFAULT_PASSxxxxx \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3-management 浏览器访问1…

6、组件通信详解(父子、兄弟、祖孙)

一、父传子 1、props 用法: (1)父组件用 props绑定数据,表示为 v-bind:props"数据" (v-bind:简写为 : ,props可以任意命名) (2)子组件用 defineProps([props&…

LabVIEW电路板性能与稳定性测试系统

LabVIEW电路板性能与稳定性测试系统 概述: 开发基于LabVIEW的电路板性能与稳定性测试系统,通过集成多种测试仪器,实现对电路板的电气性能和长期稳定性的全面评估。系统涵盖了电压、电流、温度等多项参数的监测,并具备自动化测试…

IO多路复用详解

1. 概念 IO多路复用也称IO多路转接,它是一种网络通信的手段(机制),通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的,一旦检测到有文件描述符就绪( 可以读数据或者可以写数据)程序的…

Pytorch 实现目标检测一(Pytorch 23)

一 目标检测和边界框 在图像分类任务中,我们假设图像中只有一个主要物体对象,我们只关注如何识别其类别。然而,很多时候图像里有多个我们感兴趣的目标,我们不仅想知 道它们的类别,还想得到它们在图像中的具体位置。在…

atomic特质的局限性

为什么在实际的 Objective-C 开发中, 几乎所有的属性都声明为 nonatomic ? 声明为 atomic 的属性我是真的没见过 在实际的 Objective-C 开发中,大多数属性通常声明为 nonatomic,主要原因包括性能考虑和常见的设计模式。具体原因如下: 性能问…

SemiDrive X9H 平台 QT 静态编译

一、 前言 芯驰 X9H 芯片,搭载多个操作系统协同运行,系统实现了仪表、空调、中控、副驾多媒体的四屏驱动控制,在人车智能交互上可以通过显示屏、屏幕触摸控制、语音控制、物理按键控制、车身协议的完美融合,使汽车更智能。让车主…

【前端技术】 ES6 介绍及常用语法说明

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

vulnhub靶机实战_DC-2

下载 靶机下载链接汇总:https://download.vulnhub.com/使用搜索功能,搜索dc类型的靶机即可。本次实战使用的靶机是:DC-2下载链接:https://download.vulnhub.com/dc/DC-2.zip 启动 下载完成后,打开VMware软件&#xf…

2024最新 Jenkins + Docker实战教程(八)- Jenkins实现集群并发构建

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

9.2 Go 接口的实现

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Spark作业运行异常慢的问题定位和分析思路

一直很慢 🐢 运行中状态、卡住了,可以从以下两种方式入手: 如果 Spark UI 上,有正在运行的 Job/Stage/Task,看 Executor 相关信息就好。 第一步,如果发现卡住了,直接找到对应的 Executor 页面&a…

深度解析:AI Prompt 提示词工程的兴起、争议与未来发展

PART1: 提示词工程的兴起 在人工智能领域中,一个新的领域——提示词工程(prompt engineering)——开始显露头角。 这个领域的核心在于精心设计输入,以引导AI模型产生特定的、期望的输出。 随着AI技术的飞速发展,特别…

[Linux] 软链接使用绝对路径的重要性

文章目录 软链接使用绝对路径的重要性软链接路径复制软链接查看文件类型 软链接使用绝对路径的重要性 软链接路径 软链接必须指定绝对路径,否则复制软链接后,由于软链接的相对路径是从软链接所处位置开始解析的,因此使用相对路径的软链接可…

查询SQL02:寻找用户推荐人

问题描述 找出那些 没有被 id 2 的客户 推荐 的客户的姓名。 以 任意顺序 返回结果表。 结果格式如下所示。 题目分析: 这题主要是要看这null值会不会用,如果说Java玩多了,你去写SQL时就会有问题。在SQL中判断是不是null值用的是is null或…

【实战项目二】Python爬取豆瓣影评

目录 一、环境准备 二、编写代码 一、环境准备 pip install beautifulsoup4 pip intall lxml pip install requests我们需要爬取这些影评 二、编写代码 我们发现每个影评所在的div的class都相同,我们可以从这入手 from bs4 import BeautifulSoup import request…

Java面试八股之什么是反射,实现原理是什么

Java中什么是反射,实现原理是什么 Java中的反射(Reflection)是一种强大的特性,它允许程序在运行时检查和操作类、接口、字段和方法的信息。简而言之,反射机制使得程序能够在运行时动态地了解和使用自身或其他程序集中…

如何用群晖当异地组网服务器?

在当今信息化时代,远程通信成为了企业和个人之间不可或缺的一部分。特别是对于跨地区的通信需求,一个可靠的异地组网服务器是必不可少的。而群晖(Synology)作为一款功能强大的网络存储设备,可以被用作办公室或家庭的异…

pytorch笔记:自动混合精度(AMP)

1 理论部分 1.1 FP16 VS FP32 FP32具有八个指数位和23个小数位,而FP16具有五个指数位和十个小数位Tensor内核支持混合精度数学,即输入为半精度(FP16),输出为全精度(FP32) 1.1.1 使用FP16的优缺…