草庐IT

研一小白记录第一次在实验室服务器上跑深度学习的代码全过程(实验室服务器上跑代码详细全过程哦)

磊磊很哇塞 2023-04-21 原文

你在服务器上跑过代码吗?哇~你跑过!是啥样的...每回见别人跑都会问并且羡慕会在大服务器上跑代码的哈哈哈在研究生刚开学前还甚至不知道什么是服务器,更是无法想象在除了自己能看得见摸得着的电脑屏幕之外跑代码的样子。直到有天开会自己坐在了一个大大的“黑箱子”旁边才知道这就是所谓的实验室服务器哇,这不就是加大版的台式电脑的主机嘛~

在犹豫和观摩了好久之后终于决定自己在实验室服务器上跑一次代码,因为自己是完全没有概念,所以搜了很多很多,有时候一口气打开二三十个搜索框才找到自己想要的答案,但是也很零散,所以决定记录一个自己从申请服务器账号到代码成功跑起来的全过程,见证成长同时希望帮助到你!

正文ing

首先,找有服务器账号创建权限的师哥师姐给自己申请一个账号,根据这个账号,输入服务器地址,就可以连接上实验室服务器啦

要下载一个软件,叫MobaXterm,在这个软件上可以连接到服务器,通过指令操作服务器。

下载地址:MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Download。这就相当于一个连接器,连接上后这个页面可以可视化输入输出实验室服务器上的东西 。                                  

连接熟练后,如果还是连接之前的服务器就可以从左侧记录栏里面直接点击链接上就好啦。

连接成功后,左侧就可以看到服务器上的文件夹啦,有可视化文件夹窗口,可以直接在窗口工具栏查看上下级文件夹目录、新建文件夹、删除文件夹等; 右侧就是linux命令输入框啦,其实就相当于Pycharm中的terminal终端命令输入窗口。

好了~以上就是对于实验室服务器的一个初步了解啦,其实就是把Pycharm的命令输入端换成服务器上的,从而操作服务器,利用服务器上的CPU、GPU资源 

接着,开始配置可以跑代码的环境,其实这个配置环境和自己在电脑上跑代码配置环境的意思一模一样,就是把在电脑上配置环境做的那些工作再在服务器上做一遍,到这你是不是就明白了,其实真的就是我们的电脑性能不好,所以给他嫁接一个性能好的东西,然后跑我们的代码,所有操作都是一样的。 

连接上实验室服务器后,可以看看是不是服务器上有预装好的Anaconda3环境,这样就不用自己再装了,直接初始化来用就好啦(如果找不到有Anaconda3的文件夹,直接看自己linux命令输入那里的用户名前面有没有"(base)"就可以了) 

 如果有,直接使用以下两句代码初始化python环境使用就可以

/opt/anaconda3/bin/conda init bash

source ~/.bashrc

 如果没有,就需要自己去先配置Anaconda环境了,不过很好下载,只需要几行Linux命令(我在另一个服务器上就是自己配置的)此处只附上连接,博主写的很好,可以参考安装Anaconda和创建并激活conda虚拟环境:科研第一步:实现Linux服务器上创建python虚拟环境_无枒的博客-CSDN博客 

此时,已经可以使用以下代码创建虚拟conda环境了(一般都是在自己创建的新的虚拟环境中改动,不要搞坏了系统上的~)

conda create -n 虚拟环境名 python=3.7

查看创建好的已有的conda环境

conda info -e

根据查询结果可以看到创建好的虚拟环境名和虚拟环境路径

虚拟环境默认路径都是在用户名下,为了大家都在实验室服务器上使用时的私密性,也就是都自动安装下载配置到/home/username下面,但是往往因为个人空间不足而不能占用太多/home下面的空间,此时可以更改路径到充足的文件夹下面。(经过我不停查找占用空间的文件夹,发现是虚拟环境所在文件夹和cache缓存文件夹,所以改个路径到空间大的地方)linux环境下conda更改pkg和env缓存路径_正丶好的博客-CSDN博客

改完路径后,再创建虚拟环境时就会发现路径到了你想要他到的地方,终于不在/home下面啦哈哈哈,试过别的办法,也可以指定下载路径,代码如下(但是创建出来的虚拟环境很麻烦,没有名字只有路径,可能因为中间的什么路径不匹配?我也不太懂,反正删除也麻烦,怎么都麻烦,所以干脆一步到位,把默认路径改了) 

conda create --prefix=H:\Program file(x86)\envs python=3.7 #设置虚拟环境路径

这个时候,所有必备的环境就已经准备完成,可以新建各种包或者导入项目了,我建议先导入项目,直接运行,肯定会报错,缺乏各种包,到时候就知道缺什么了,缺什么就下载什么

关于将自己的项目导入到服务器上 :从pycharm上开始设置:Tools->Deployment->Configuration;

Tools->Deployment->UpLoad;File->Settings->Python InterpreterPycharm 实现本地与服务器代码同步_USTC_SC的博客-CSDN博客_pycharm如何和服务器保持一致

此时项目已经可以在服务器的文件夹视图窗口下拉里面看到了,并且Pycharm中也可以看到左右对应,左侧为本地文件夹,最右侧Remote host为服务器文件夹视图,更改本地代码,服务器代码也会自动更改 

此时,如果环境路径设置正确,也就相当于pycharm和服务器环境接头好了, 就可以在pycharm中运行了;或者,直接在服务器里面运行

cd /icislab/volume1/yhl/projects/unet #先切换到.py文件目录下
python3 main.py #运行文件即可

不出意外,肯定会报错哈哈,因为很多包都没有安装。按照提示安装就好了

pip install 包名

普通安装可能太慢会安装不上,使用清华镜像

# 依次输入以下命令
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

如果使用镜像还是很慢,可能会任务运行超时(ReadTimeoutError)

pip install --default-timeout=1000 要下载的第三方库名

(tips:如果你也需要torch包,直接下载torch太慢了并且太大了,老是出现问题,所以我直接下载torchvision,默认下载torch版本,这样很快,但是引用前提是对于torch版本没有自己的要求) 

此时,除了自己的代码有bug外,环境上面还有安装包上面应该是没有问题了,可以运行咯哈哈哈

下面是一些小便利贴哈哈 

 有没有发现我没说怎么选择在服务器哪一块卡上面跑?怎么决定?怎么选?

nvidia-smi #查看所有卡使用状态

 看看哪个空间剩余多就选择哪块卡号,在运行的代码文件上方指定

 此时,如果1号卡上面有位置,代码就会顺利的在1号卡上跑了

如果遇到这种报错情况,那就是卡满了,等等或者选择另外的卡就好啦

结束啦 ~

至此,我这个小可爱第一次跑代码全程就结束啦!一个简单的代码从申请服务器账号开始到成功跑起来用了四天,这其中遇到各种错误麻烦远不止我贴出来的这些,每个博主大佬都是详细叙述了每一部分,但是没有发现哪个是我想要的那种从头到尾理一遍,所以自己干脆趁着思路还清晰写下来,希望能帮助到大家呀!第一次发博客,有很多不懂的地方,很多名词可能是自己形容的,有不对的欢迎批评指正!有的大佬写的很好,我是直接挂的链接,也不太懂,有侵权的滴滴我呀,看见马上删除改正。

有关研一小白记录第一次在实验室服务器上跑深度学习的代码全过程(实验室服务器上跑代码详细全过程哦)的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  4. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  5. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  6. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  7. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  8. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  9. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  10. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

随机推荐