当前位置:首页 > CN2资讯 > 正文内容

windows服务器深度学习

1天前CN2资讯


通过服务器进行深度学习


服务器配置

  • ubuntu16.04服务器版
  • anaconda
  • cuda
  • tensorflow
    :::info

安装

win10安装教程linux安装教程TensorFlow官网指导相关软件版本的对照表,页面底端如果不使用GPU的话,只需要cmd中一行pip install tensorflow就行了。不过需要注意的是,tensorflow的默认安装版本是1.31,而1.31对应的python版本最高是3.6,如果你的python版本过低或过高,在导入TensorFlow包时都会出错。
:::

  • frp:内网穿透
    :::info
    如果服务器处于局域网内,那么当终端离开局域网后是无法连接服务器的,这时我们就要借助内网穿透。内网穿透可以将内网中服务器的局域网ip和端口映射到外网ip和端口。具体实现时,你需要一台云服务器,然后在上面通过开源的frp搭建一个反向代理。
    :::


连接服务器



终端配置

以下都是通过ssh协议中的口令登录方式完成连接。

linux/mac

linux/mac系统集成了ssh工具,所以可以在shell中直连服务器。

win10

如果是windows系统,那么我们需要一个ssh工具来完成ssh连接。xshell或者putty都可以胜任。


免密登陆

ssh同时还提供了公钥登录的方式。这点在上面的背景知识中已经介绍了。
具体的做法就是将你的公钥存储在服务器的ssh信任列表中中。

  • 生成秘钥
  • # -P表示需要密码,-P ‘’表示空密码 ssh-keygen -t rsa -P '' 之后系统会提示输入生成的密钥文件的文件名,可以输入任意名称,比如id_rsa
  • 找到自己的公钥,没有的话通过ssh-keygen 生成。然后通过 scp 命令传输公钥到服务器中。
  • 在服务器中将刚刚的公钥添加到ssh信任列表。然后即可免密登陆了。
  • cat id_rsa.pub >> ~/.ssh/authorized_keys

    :::info
    如果还是无法免密登陆,可能是服务器端的 .ssh 和 authorized_keys 的权限不匹配。

    • 一般修改.ssh文件夹的权限就够了

    chmod 700 /home/skyler/.ssh

    • 如无必要不作修改

    chmod 600 /home/skyler/.ssh/authorized_keys :::


    文件传输与同步


    传文件

    Linux scp命令

    linux间的文件/文件夹的传输可以通过scp命令完成。该命令基于ssh,所以,如果你的终端和服务器都是linux系统,并且终端已经通过ssh登录了服务器,那么,就可以通过该命令进行文件传输了。

    用法:

  • 从本地复制文件到远程到远程
  • scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file

    :::tips

    • 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
    • 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;
      :::
  • 从本地复制文件夹到远程
  • scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ip:remote_folder

    :::tips

    • 第1个指定了用户名,命令执行后需要再输入密码;
    • 第2个没有指定用户名,命令执行后需要输入用户名和密码;
      :::
  • 从远程复制到本地
  • 从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可

    scp [email protected]:/home/root/others/music /home/space/music/1.mp3 scp -r www.runoob.com:/home/root/others/ /home/space/music/

    如果远程服务器防火墙为scp命令设置了指定的端口,我们需要使用-P参数来指定传输端口

    #scp 命令使用端口号 4588 scp -P 4588 [email protected]:/usr/local/sin.sh /home/administrator


    jupyter notebook

    通过jupyter notebook进行远程调参,只需以下几步:

  • 指定jupyter notebook的虚拟环境
  • 默认情况下jupyter notebook是运行在系统的默认环境下的,如果要让它运行在通过conda建立的环境中,我们可以进入那个环境安装nb_conda这个库: conda install nb_conda

  • 服务器端生成jupyter notebook的密码(可以略去这一步)
  • $ jupyter notebook password Enter password: **** Verify password: **** [NotebookPasswordApp] Wrote hashed password to /Users/you/.jupyter/jupyter_notebook_config.json
  • 服务器端打开jupyter notebook
  • jupyter notebook --no-browser --port=8889
  • 本地开启端口转发
    • linux:

    在本地通过ssh隧道来将服务器端的8889端口号映射到本地的某个端口(如1234)

    ssh -L 1234:localhost:8888 [email protected]
    • windows

    通过putty建立端口转发,效果与上面的shell语句效果是一样的。

  • 在终端浏览器中打开 http://localhost:1234 ,然后输入上面设置的密码。最后,选择下虚拟环境就可以开始愉快的debug了。

  • tensorboard

    在服务器端指定端口打开tensorboard

    tensorboard --logdir=log --port=6006

    要在本地使用tensorboard,首先要在本地进行端口映射(操作同jupyter notebook)

    ssh -L 16006:127.0.0.1:6006 [email protected]

    然后在本地浏览器中打开 localhost:16006 就可以访问到服务器上的tensorboard了。


    pycharm


    服务器常用操作


    查询


    查看内存使用: free -m

    Mem行(单位均为M):

    • total:内存总数
    • used:已使用内存数
    • free:空闲内存数
    • shared:当前废弃不用
    • buffers:缓存内存数(Buffer)
    • cached:缓存内舒数(Page)

    (-/+ buffers/cache)行:

    • (-buffers/cache): 真正使用的内存数,指的是第一部分的 used - buffers - cached
    • (+buffers/cache): 可用的内存数,指的是第一部分的 free + buffers + cached

    Swap行指交换分区。

    实际上不要看free少就觉得内存不足了,buffers和cached都是可以在使用内存时拿来用的,应该以(-/+ buffers/cache)行的free和used来看。只要没发现swap的使用,就不用太担心,如果swap用了很多,那就要考虑增加物理内存了。


    查看CPU使用: top

    上方文字部分的红框为总的CPU占用百分率,下方的表格是每个进程的CPU占用率,在表格第一行可以看到红框中占用率超过了150%,这是因为服务器是多核CPU,而该进程使用了多核。


    查看显卡使用情况: nvidia-smi

    表格中会显示显卡的一些信息,第一行是版本信息,第二行是标题栏,第三行就是具体的显卡信息了,如果有多个显卡,会有多行,每一行的信息值对应标题栏对应位置的信息。

    • GPU:编号
    • Fan:风扇转速,在0到100%之间变动,这里是42%
    • Name:显卡名,这里是TITAN X
    • Temp:显卡温度,这里是69摄氏度
    • Perf:性能状态,从P0到P12,P0性能最大,P12最小
    • Persistence-M:持续模式的状态开关,该模式耗能大,但是启动新GPU应用时比较快,这里是off
    • Pwr:能耗
    • Bus-Id:涉及GPU总线的东西
    • Disp.A:表示GPU的显示是否初始化
    • Memory-Usage:现存使用率,这里已经快满了
    • GPU-Util:GPU利用率
    • Compute M.:计算模式

    需要注意的一点是显存占用率和GPU占用率是两个不一样的东西,类似于内存和CPU,两个指标的占用率不一定是互相对应的。

    在下面就是每个进程使用的GPU情况了。


    常见问题处理


    "Failed to create session"

    通常是tf未能获得计算硬件,从而无法创建会话。我们可以通过CUDA_VISIBLE_DEVICES来指定可用的GPU。需要注意的是,指定了可用的GPU后,其他的GPU就不再可用。
    首先,可以通过 nvidia-smi 获取当前可用的显卡信息,比如1、5号卡可用。

  • 针对单个程序:
    • 在shell中追加:CUDA_VISIBLE_DEVICES=1,5 python main.py
    • 在代码中追加:import os; os.environ['CUDA_VISIBLE_DEVICES=1,5']
  • 针对各个虚拟环境:
    • 修改~/.virtualenv/YOUR_VENV/bin/postactivate, 在末尾添加行export CUDA_VISIBLE_DEVICES="1,5"即可.
  • 针对所有用户:
    • 同上修改~/.bashrc即可.
      :::info
      如果你准备使用CPU,则可以通过CUDA_VISIBLE_DEVICES=''隐藏所有GPU,TensorFlow将默认使用CPU进行计算。
      :::


    多任务管理


    screen

    Linux screen命令

    用法:

    • 新建窗口
    screen -S yolo # 创建一个窗口,并且为这个窗口命名为yolo

    执行完后将自动跳入名为yolo的窗口

    • 断开窗口

    通过快捷键Ctrl+A+D断开当前窗口连接返回会话界面,界面显示如下:

    [detached from 28113.yolo] user@ubuntu-Super-Server:~/code$

    需要注意的是,断开连接仅是使窗口进入后台执行。

    • 查看已创建的窗口
    screen -S ls #可以查看已创建的所有窗口 # 结果显示如下 user@ubuntu-Super-Server:~/code$ screen -ls There are screens on: 28475.ssd (2017年11月27日 20时07分41秒) (Detached) 28113.yolo (2017年11月27日 19时57分26秒) (Detached)
    • 重连窗口
    screen -r ssd #重新连接到yolo窗口,显示其运行过程
    • 关闭窗口
    $kill 28475 #终止28475.ssd窗口对应任务的运行,同时杀死该窗口


    byobu


    tmux


    强占式执行

    在.bashrc中写入

    alias python='run-one python'

    该语句只允许运行一个python程序,后来的python程序在它执行完毕前是得不到执行的。

    串行调参

    通过python-fire这个工具,可以通过shell完成串行调参的需求。



      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/29961.html

      分享给朋友:

      “windows服务器深度学习” 的相关文章

      腾讯云学生福利:低价云服务助力学生云计算学习

      在当今信息技术飞速发展的时代,云计算已成为重要的学习与开发工具。腾讯云紧跟时代步伐,为学生群体量身定制了一系列服务和优惠政策。我很高兴看到这样一个平台,尤其是在我们学习云计算和相关技术的过程中,它为我们提供了极大的便利。 腾讯云的学生服务旨在帮助我们更好地学习和实践云计算技术。通过这些服务,学生能够...

      如何选择RN套餐性价比高的VPS服务

      RN套餐概述 在谈论RackNerd之前,我想先简单介绍一下这家公司。RackNerd成立于2019年,它是一家专注于虚拟主机和VPS服务的商家。作为市场中的新兴参与者,RackNerd凭借其高性价比迅速赢得了不少用户的青睐。在我了解的多家VPS提供商中,RackNerd以其实惠的价格和稳定的性能脱...

      如何在Linux中指定DNS服务器设置教程

      在开始讨论如何在Linux系统中指定DNS之前,我们需要明白DNS服务器的作用与重要性。DNS,全称域名系统,是将人类易读的域名转换为计算机能够理解的IP地址的系统。想象一下,如果没有DNS,我们每次访问一个网站都得记住复杂的数字IP地址,那将是多么麻烦的一件事。因此,选择一个合适的DNS服务器,不...

      CloudCone 优惠活动详解:2023年最具性价比的云服务选择

      CloudCone 优惠概述 对于许多寻求高性价比云服务的用户来说,CloudCone 是一个值得关注的选项。公司成立于2017年,总部位于美国洛杉矶的MultaCom机房,专注于提供 VPS 主机、云服务器和独立服务器等服务。其主打产品是基于 KVM 架构的 VPS 主机,配备自研的管理面板,能为...

      Hostwinds LLC:卓越的网络托管服务与高性价比优势

      Hostwinds LLC成立于2010年,位于美国西雅图。这家公司一直专注于提供多种网络托管服务,包括虚拟主机、虚拟专用服务器(VPS)和独立服务器。在这个竞争激烈的市场中,Hostwinds凭借其独特的优势和不断升级的服务赢得了客户的信赖。我个人认为,Hostwinds的历史反映了它对客户需求的...

      如何在VPS环境下使用安卓模拟器与火狐浏览器实现高效管理

      当我们讨论VPS和安卓模拟器的结合时,首先要明白VPS的基本概念。虚拟专用服务器(VPS)实际上是一种将物理服务器划分成多个虚拟服务器的技术。每个VPS都可以独立运行操作系统,用户可以完全控制这个环境。这意味着我们可以在VPS上安装各种软件,包括安卓模拟器,这样就能在计算机上模拟安卓手机的使用。 说...