【目标检测实验系列】AutoDL线上GPU服务器租用流程以及如何用Pycharm软件远程连接服务器进行模型训练 (以Pycharm远程训练Yolov5项目为例子 超详细)

news2024/11/28 10:49:45

目录

    • 1. 文章主要内容
    • 2. 租用AutoDL服务器详细教程
      • 2.1 注册AutoDL账号,并申请学生认证(学生认证有优惠,如果不是学生可以忽略此点)
      • 2.2 算力市场选择GPU,并选择初始化配置环境
      • 2.3 控制台参数解析,并使用相关参数登录Xftp(Windows与Linux跨平台传输软件,很关键)
        • 2.3.1 控制台参数解析
        • 2.3.2 Xftp下载以及配置
    • 3. 使用Pycharm软件远程连接服务器,并训练模型(以Yolov5项目为例)
      • 3.1 Pycharm配置服务器参数,远程连接服务器
      • 3.2 配置pytorch和yolov5所需环境,以守护进程训练模型
    • 4. 本篇总结

1. 文章主要内容

       本篇博客主要涉及两个主体内容。第一个:从AutoDL网站中租用GPU服务器。第二个:用Pycharm软件远程连接租来的线上服务器,并以Yolov5项目为例,线上训练模型。此过程中会记录重要的地方,以及本人踩坑之后,如何解决问题的所思所想(通读本篇博客大概需要15分钟左右的时间)。
       本篇博客参考的主要内容来源于
       孟孟单单-AutoDL使用教程
       嗜睡的篠龙-Pycharm连接远程服务器(AutoDL)训练YOLOv5

2. 租用AutoDL服务器详细教程

2.1 注册AutoDL账号,并申请学生认证(学生认证有优惠,如果不是学生可以忽略此点)

       首先,我们打开AutoDL的官网(AutoDL官网),选择右上角注册按钮,新用户官网是送了10元的代金卷,可以用来租用服务器。注册流程是比较简单的,这里不详细做过多的解释。
       学生认证:注册并登录成功后,点击链接学生认证手册,根据教程操作即可,需要注意到的是,如果没有教育邮箱,添加认证页面下方的客服微信进行沟通,提供学生证相关信息、注册账号信息就可以通过学生认证。(给客服发送的学生证记得隐藏关键的信息,客服只需要一个学生证兜底就行)。
       学生认证通过后,我们就会变成炼丹会员,这样我们租用GPU服务器就会较普通用户更加的便宜,时间用的越久,越划算。如下图所示,学生认证成功变成炼丹会员:
在这里插入图片描述

2.2 算力市场选择GPU,并选择初始化配置环境

       认证通过以后,点击主页导航栏上面的算力市场,来到选择租赁GPU的算力市场,这里详细内容还请参考孟孟单单-AutoDL使用教程对每个类别的详细解释。博主在这里选择的是按量计费(类似于网吧上网,多少钱一个小时)。GPU我选择的是RTX 3060、显存12GB,点击下图红色箭头按钮即可跳转到租赁界面:
在这里插入图片描述
       之后,选择服务器的镜像,说白了就是给服务器配置一些环境,这里我选择基础镜像,后续镜像中需要什么就自己配置即可(授人以鱼不如授人以渔)。选择的基础镜像如下图所示:
在这里插入图片描述
       基础镜像是安装在conda的base环境当中,如果有小伙伴熟悉Anaconda的话,应该能够理解这段话的意思,后续我们会在conda中新建一个环境来训练项目,不要什么都往base里面放,东西多了容易起冲突和混乱。

2.3 控制台参数解析,并使用相关参数登录Xftp(Windows与Linux跨平台传输软件,很关键)

2.3.1 控制台参数解析

       租赁GPU服务器之后,我们点击网页右上角的控制台,就可以看到自己租用服务器的实例,如下图所示:在这里插入图片描述
       首先博主得说明一点,如上图所示我们租用的084机器,里面的GPU显卡是共享用的,假如这台机器有8块GPU,如果租赁的是单GPU,那么当你选择开机之后就会占用一块GPU。所以当我们看到上图状态一栏下方的绿色字体GPU充足的时候,证明084这台机器中GPU至少有一块是充足的。但当084机器GPU都被占用的时候,就无法正常开机(但是可以无卡模式开机),一般的方式就是等待别人先用完再说。
       假如此时的GPU充足,如上图所示,我们在操作一栏有两个按钮,一个是开机,一个是更多。鼠标移到更多的按钮上,会显示出栏目,如下图所示:
在这里插入图片描述
       实例开机占用GPU分为两种,一种是无卡模式开机,一种是正常开机。无卡模式开机,意思是不占用GPU(一般GPU被别人占满的时候,无卡模式还是依然能开机的),有CPU,费用是0.1元/时,如下图所示:
在这里插入图片描述
       正常开机就是按操作一栏的开机按钮,在算力市场中有明码标价说是多少钱一个小时,这种开机是占用GPU资源的,博主这里租用的RTX 3060卡的费用是0.6/时,如下图所示:
在这里插入图片描述
       重要内容:无卡模式和有卡模式有什么区别?它们分别用于什么场景呢?
       无卡模式和有卡模式从字面意思就知道是有无GPU卡的区别。无卡模式收费较有卡模式少很多,一般用于Windows与服务器Linux之间传输文件,而有卡模式收费较无卡模式收费比较多,一般用于训练模型(因为要用到GPU)。
       无论是无卡模式还是有卡模式开机,之后控制台在SSH登录一栏出现登录指令和密码,这里的登录指令和密码非常重要,将会在Xftp部分和Pycharm远程连接部分详细说明,现在知道有这么回事即可,如下图所示:
在这里插入图片描述

2.3.2 Xftp下载以及配置

       首先我们介绍Xftp跨平台传输软件,这是为了能够在windows和Linux之间可以轻松、简单的传输文件,比如在服务器上训练好的模型想要下载到windows平台,只要通过Xftp界面轻松移动即可。
       进入到Xftp官网Xftp官网,点击download下载,然后找到免费授权页面,填写相关信息,收到邮箱信息之后,打开邮箱中的免费下载链接即可下载免费版的Xftp,如下图所示:
在这里插入图片描述
在这里插入图片描述
       安装完之后,我们打开Xftp软件,点击左上角新建按钮,之后会弹出一个新建链接配置信息的对话框,如下图所示:
在这里插入图片描述
在这里插入图片描述
       回到博客的上一部分,有简单说明SSH登录账号和密码相关信息,这里我们和Xftp联系起来做一个参数详解,首先我们在AutoDL控制台部分复制自己的账号和密码(这里做一个演示,账号密码为虚构,但格式都是一样,博友们按照自己的账号、密码来就行)。格式如下:
        登录指令:ssh -p 66666 root@region-8.seetacloud.com
        登录密码:123456
        参数解析66666代表的是端口号、root代表的用户名(一般都是一样的)、region-8.seetacloud.com代表的是主机域名,是什么就是什么、123456即为登录的密码。
        OK,我们介绍完参数解析,这时候将参数对应于上面的Xftp参数框,名称是可以随便取的、主机对应于参数解析的主机域名、端口号对应于参数解析的端口号、用户名对应于参数解析的用户名,一般为root密码对应于参数解析的登录密码,按照上面的例子,填写完的样例如下图所示:
在这里插入图片描述
       到这里然后点击连接按钮,即可进行连接,连接成功后跳转到如下页面,要是想要传输文件,只需要挪动文件到另外一边即可,如下图所示:
在这里插入图片描述

3. 使用Pycharm软件远程连接服务器,并训练模型(以Yolov5项目为例)

3.1 Pycharm配置服务器参数,远程连接服务器

       首先我们需要下载Pycharm软件,百度搜索进去官网下载。注意:Pycharm需要下载专业开发版本,不能下载社区版本,因为远程连接服务器的相关功能社区版本不具有(另外:Pycharm专业版本如何破解,自行搜索)。由于安装Pycharm网上有很多详细教程,并比较简单,这里不做过多解释。

       下载安装完成之后,打开Pycharm软件,选择左上角File ->Settings->Python Interpreter,如下图所示:在这里插入图片描述
在这里插入图片描述
       接着点击右上角的小齿轮按钮->add->SSH Interperter,具体操作如下图所示:
在这里插入图片描述
在这里插入图片描述
       来到SSH Interpreter界面,熟悉的服务器参数界面,和Xftp服务器参数配置页面很相似,这里做简单的解释:region-8.seetacloud.com代表的是Host,root代表的Username(一般都是一样的),port代表的是端口号。点击下方的Next按钮(记住这里连接服务器操作的前提是AutoDL控制台服务器已开机,不然是连接不上的!)
       跳转到输入密码的页面,输入服务器对应的密码即可,如下图所示:
在这里插入图片描述
       点击下方的Next按钮,跳转到服务器与本地项目连接的配置页面,这里需要关注的是三个点。第一点是Interpreter,这是解释器,也是项目配置所需的环境,还记得我们租用服务器时,选择的初始化miniconda3的环境们,它的存放路径是在**/root/miniconda3/bin/python**,我们按下图进行选择配置:
在这里插入图片描述
       第二点非常重要是Sync folders同步文件夹操作,选择windows项目文件的根目录->服务器对应的项目根目录。我们点击选择文件路径按钮,可以自定义修改windows和服务器对应根目录的路径,如下图所示:
在这里插入图片描述

       踩坑点:服务器直接选择默认路径,项目文件就会存储在系统盘中,一般来说系统盘比较小,一般尽量少放东西,不然等到系统盘满的时候会下载、安装不了很多东西,本人亲自经历过这样的问题。
       解决办法:一般项目文件以及对应的数据集存放于数据盘中,在AutoDL中对应于/root/autodl-tmp/文件夹下,如下图所示:(auto-tmp文件夹后面的project文件夹为自己所创建,根据个人的需求来。比如yolov5项目,服务器的地址可以这样创建/root/autodl-tmp/project/yolov5。需要注意到:即使服务器对应的文件夹,比如/root/autodl-tmp/project/yolov5中的yolov5不存在,也会自动创建)。
在这里插入图片描述
       第三点: 记得勾选Automatically upload复选框,这个按钮的意思是,在本地pycharm中修改的代码,会自动上传到服务器对应项目的同样地方,如下图所示:
在这里插入图片描述
       配置参数成功之后,点击Tools->Start SSH Session即可连接服务器,之后弹出一个小窗口,选择Remote Python开头的服务器地址即可(当然每个不同的项目,可以创建不同的连接)连接成功的界面如下所示:
在这里插入图片描述
在这里插入图片描述
       因为我这里开启的是无卡模式,所以没有GPU的显示信息(一般传数据集、修改相关代码都可以使用无卡模式,这样更省钱,训练模式的时候再切换有卡模式)。

3.2 配置pytorch和yolov5所需环境,以守护进程训练模型

       在选择租用服务器那一章节,我曾说到自己一步步来配置服务器的环境,不用AutoDL提供的热门主流环境。由于目前的conda环境是base,我们重新创建一个conda的环境,名为yolo,并连同安装python的版本(建议Python的版本>=3.8),并且刷新conda环境,使其生效。代码如下所示(操作都在命令行中进行):

$ conda create -n yolo python=3.8    
$ conda init bash && source /root/.bashrc
$ conda activate yolo

在这里插入图片描述
       我们已经切换成yolo环境,此时开始安装pytorch。首先我们要查看选择服务器的cuda的版本。通过如下命令查看即可:

nvcc -V

在这里插入图片描述
       可以看到博主自己的版本号是11.1。打开Pytorch官网,找到Previous versions of Pytorch,意思是pytorch以前的版本号,点击进去。
在这里插入图片描述
       然后通过ctrl+f搜索11.1关键字,就可以定位到pip的下载命令,把命令粘贴到Pycharm控制台窗口,回车下载即可(可能会比较慢),如下图所示:
在这里插入图片描述
       下载完成之后,验证pytorch的GPU版本是否成功,首先通过python进入到python命令行界面,再使用如下命令即可:

#判断是否安装了cuda
import torch
print(torch.cuda.is_available())  #返回True则说明已经安装了cuda
#判断是否安装了cuDNN
from torch.backends import  cudnn
print(cudnn.is_available())  #返回True则说明已经安装了cuDNN

       踩坑点:博主在进行测试的时候,一直返回false。最初一直怀疑自己装的pytorch版本是cpu版本,后来反复确认是gpu版本,才知道是自己的服务器开启了无卡模式。无卡模式是没有gpu的,所以会返回false。只需要开启有卡模式,也就是正常开启,则就会返回true。
       在第二节远程连接服务器的时候,我们把本地的yolov5项目映射到了/root/autodl-tmp/project/yolov5,所以我们进入到此文件夹中,通过requirements.txt下载yolov5所需要的其它环境,代码和图如下所示(记住是yolo环境,别搞错了):

pip install -r requirements.txt

在这里插入图片描述
       至此,我们将yolov5所需要的环境都配置完毕,接下来可以训练数据,收集日志信息。
       如果我们直接启动,那么相关的训练信息就会直接显示在控制台,一旦我们关闭了窗口,程序也就自动停止。我们是希望能够让程序在后台(守护进程)执行,并且收集日志到文件中,执行完毕立马进行关机。
       首先,博主的Linux是ubuntu系统,我们需要通过如下命令安装screen包(用来开启守护进程):

apt-get install screen

       下载完screen之后,配置screen收集控制台信息的日志文件路径,使用如下代码:

vim  /etc/screenrc

       我这里存放的路径是/root/autodl-tmp/logs/screenlog_%t.log,后面的%t是通配符,在接下来会进行说明,在/etc/screenrc添加如下代码,并保存退出:

logfile /root/autodl-tmp/logs/screenlog_%t.log

在这里插入图片描述
       随后,我们开启一个screen守护进程,使用如下命令:

screen -L -t xxx -S yolov5

       这里的t也就是之前日志里面的通配符%t,这里可以用来传日志文件的名字,我这里用xxx代表。后面的yolov5是守护进程的名字。通过screen -ls 命令,可以查看当前的守护进程,如下图所示:
在这里插入图片描述
       当screen小括号后面的状态变成(Dead),则为死亡状态,我们可以通过screen -wipe消除掉这些死亡进程,如下图所示:
在这里插入图片描述
       非常重要:我们开启守护进程后,切换到yolo环境,可以到存放环境的路径查看日志文件,也就是/etc/screenrc配置文件中的日志路径。我们在训练模型时,控制台会不断的输出信息,想要退出项目输出信息的控制台,只需要鼠标选中控制台,然后按ctrl+a+d即可退出screen界面。如果想看看训练的轮次多少了,第一种方法是看日志文件,第二种方法通过screen -r 657.yolov5(守护进程的名字,如上图所示)。

       关于训练技巧方面,我们上传项目和数据集的时候,建议分开,单独上传,推荐使用无卡模式上传,这样更加省钱。项目(比如yolov5)中的数据集路径要和上传到服务器的数据集的绝对路径一样,切记要检查仔细了。另外,我们在训练yolov5项目时,如果要想训练完立刻关机,切换到yolov5项目根目录,可以使用如下命令:

python train.py && shutdown

       小细节理解:其实我们用Pycharm连接远程服务器,代码和数据集都放在服务器,本质上和本地没有一点关系,由于服务器没有IDE友好界面,所以通过远程同步操作。Pycharm代码一改变,就会自动上传,这是因为在配置远程服务器中我们勾选了勾选Automatically upload复选框,如果不放心,可以在Pycharm的tools一栏,选择如下图所示的操作:
在这里插入图片描述

4. 本篇总结

       本篇主要介绍了AutoDL服务器租用流程,Pycharm远程连接服务器并进行训练。通过详细的步骤和小提示,让更多的人少折腾在环境配置上面。另外,博客中如有任何问题,或者不理解的地方,欢迎在评论区交流。如博客对您有作用,点个小赞,谢谢大家!

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

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

相关文章

Spring Boot如何实现OAuth2授权?

Spring Boot如何实现OAuth2授权? OAuth2是一种授权框架,用于授权第三方应用程序访问受保护的资源。在Web应用程序中,OAuth2通常用于授权用户访问受保护的API。 在本文中,我们将介绍如何使用Spring Boot实现OAuth2授权。我们将使…

5-python的Number类型

内容提要 主要介绍python中的Number类型: python的类型转换,oct()、hex()、bin()函数的使用。 python的整数表示:十进制、二进制、八进制、十六进制。(*,0b,0o,0x) python中ASCII码…

springboot+java+ssm教材管理系统87k61

教材管理系统,主要的模块包括查看主页、个人中心、教师管理、学生管理、教材分类管理、教材信息管理、个体预订管理、取消预订管理、集体预订管理、集体取消管理、系统管理等功能。系统中管理员主要是为了安全有效地存储和管理各类信息,还可以对系统进行…

开发微信公众号本地调试【内网穿透】

文章目录 前言1. 配置本地服务器2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道 3. 测试公网访问4. 固定域名4.1 保留一个二级子域名4.2 配置二级子域名 5. 使用固定二级子域名进行微信开发 转载自cpolar内网穿透的文章:微信公众号开发:对接本地开发…

【QT】windows下OpenSSL的使用

设计需求 在QT端实现对字符串的加密与解密 OpenSSL下载教程 本人采用 Win64OpenSSL-1_1_1t.msi,百度网盘下载链接 链接:https://pan.baidu.com/s/1vg4s_1JmCpa68TMc1F2gMw 提取码:u4js OpenSSL安装参考链接 OpenSSL使用的参考链接 OpenSS使用…

onceperrequestfilter 和 webmvcconfigurer 区别

概述 在使用Spring框架进行Web开发的时候,我们经常会遇到需要对每个请求做一些统一的处理的情况。例如,我们可能需要在每个请求到达Controller之前进行身份验证,或者在每个请求结束后记录请求的日志信息。这时候,我们可以使用两种不同的方式来实现这些功能:onceperreques…

一款免费无广、简单易用的安全软件:火绒安全软件

名人说:往者不可谏,来者犹可追。——语出《论语微子篇》 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) o(‐^▽^‐)o很高兴你打开了这篇博客,跟着步骤一步步尝试安装吧。✧ 目录…

Linux-基础篇:虚拟机环境搭建

目录 1、linux介绍 2、安装vm和centos 2.1、vmware下载 2.2、Centos 下载地址 3、虚拟机三种网络连接方式 3.1、桥接模式 3.2、NAT模式 3.3、主机模式 4、虚拟机克隆 5、虚拟机快照 6、虚拟机迁移和删除 7、安装vmtools 7.1、vmtools作用 7.2、安装vmtools步骤 …

django+vue+python 协同用过滤电商推荐系统w58n0

现在人们足不出户就可以购物,聊天,消费,我们的生活越来越智能,越来越人性化,随之而来的就是让它更懂你,给你推荐你可能喜欢的东西,这样你就不必再费力去找你喜欢的东西,既节约了你的…

博客系统前端页面代码实现及页面展示(代码版)

hi,大家好,今天为大家带来博客系统的前端代码及页面展示 我们使用VS code 这个编码工具来编写代码 博客系统前端页面分为四个部分 1.博客列表页 2.博客编辑页 3.博客登录页 4.博客详情页 &#x1f367;1.博客列表页 <!DOCTYPE html> <html lang"en"&…

关于linux的ssh(出现的问题以及ubuntu的ssh配置)

目录 Ubuntu进行ssh连接 关于ssh报错排错 备注&#xff1a;防火墙和selinux可能对ssh连接存在限制&#xff0c;但是我在操作的时候并没对我照成影响 查看selinux状态 ssh_config和sshd_config的区别 Ubuntu进行ssh连接 1.首先需要安装SSH服务器&#xff0c;在ubuntu终端输…

强化学习与ChatGPT:快速让AI学会玩贪食蛇游戏!

大家好&#xff0c;我是千寻哥&#xff0c;现在自动驾驶很火热&#xff0c;其实自动驾驶是一个很大的概念&#xff0c;主要涉及的领域包括强化学习以及计算机视觉。 今天给各位讲讲强化学习的入门知识&#xff0c;并且手把手和大家一起做一个强化学习的Demo。 一、 浅谈强化学习…

基于SSM的酒店客房管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 酒店管理系统是一款高…

Java 集合 - 集合框架概述

文章目录 1.集合框架体系结构2.Collection 接口2.1 Iterator2.1.1 使用迭代器遍历集合2.1.2 使用迭代器删除集合元素2.1.3 Iterator 迭代器的 fail-fast 机制 2.2 Iterable2.3 List 集合2.4 Set 集合2.5 Queue 3.Map 集合 Java 集合框架&#xff08;Java Collections Framework…

Java 集合 - Set 接口

文章目录 1.概述2.HashSet3.LinkedHashSet4.TreeSet5.选择合适的 Set 实现6.总结 1.概述 Set 接口的定义非常简单。它本质上是一个 Collection&#xff0c;但是要求该集合不能有重复的元素。换句话说&#xff0c;如果尝试将一个元素添加到 Set 中&#xff0c;而该元素已经存在…

FPGA实现ESP8266驱动且进行数据包收发

一. 简介 本次将使用正点原子的ESP8266 WIFI模块&#xff0c;来实现PC与FPGA之间的TCP通讯&#xff0c;其中ESP8266与FPGA之间的接口是UART。 二. 正点原子的ESP8266 WIFI模块介绍 模块实物图如下&#xff0c;到手就可以使用了&#xff0c;RST和IO_0两个IO口不接或者接高电平…

C++布隆过滤器和哈西切分

文章目录 一、布隆过滤器的提出二、布隆过滤器的概念三、布隆过滤器的实现布隆过滤器的插入布隆过滤器的判断在不在布隆过滤器的删除布隆过滤器的优点布隆过滤器的缺点 四、布隆过滤器的应用场景五、布隆过滤器的扩展[面试题]六、哈西切分 一、布隆过滤器的提出 我们在使用新闻…

GO 语言核心编程-全文版

第 1 章 1.1Golang的学习方向 Go语言&#xff0c;我们可以简单的写成Golang. Golang开山篇 1.2Golang的应用领域 1.2.1区块链的应用开发 1.2.2后台的服务应用 1.2.3云计算/云服务后台应用 1.3学习方法的介绍 1.4讲课的方式的说明 努力做到通俗易懂注重Go语言体系&#xff…

K8s之零故障升级Pod健康探测详解

文章目录 一、Pod健康探测介绍1、三种容器探测方法2、常用三种探测探针3、探针相关属性说明 二、探测案例1、Pod启动探测案例-startupProbe2、Pod存活探测案例-livenessProbe3、Pod就绪探测案例-readinessProbe4、启动、存活、就绪探测混合使用案例 三、总结 一、Pod健康探测介…

【MySQL新手到通关】第五章 多表查询

文章目录 1. 笛卡尔积1.1 避免笛卡尔积1.2 笛卡尔积&#xff08;或交叉连接&#xff09;的理解1.3 案例分析与问题解决笛卡尔积的错误会在下面条件下产生&#xff1a; 2. 多表查询分类讲解2.1 多表联查分类方式1&#xff1a;2.2 多表联查分类方式2&#xff1a;2.3 多表联查分类…