目录
前言
小伙伴们中有考研的、考法考的,预定好暑假一起去图书馆学习,互相监督,
目前我的任务是入门python 以及 深度学习,这肯定需要电脑。
我的游戏本,算上适配器好几斤重,去图书馆几天就受不了
(省图书馆有插座但很难抢到座位,市图书馆有座位没插座,没电源不管是笔记本还是surface几小时就得gg,更别提性能了)。
树莓派也试过,用ipad vnc控制 画面延迟实在难以忍受。就算勉强用来入门,万一后面模型大点树莓派那点算力还是拙荆见肘,同理也不打算采购地平线的开发板(麻烦,穷,而且教材上的框架能不能跑起来还是个问题)。
我的老ipad重量轻,可用充电宝供电,但是无法直接编程。
想来想家里才装的台式机2070super(win10)不拿来用属实有些心痛(买前生产力,买后打游戏),
所以我需要一个办法,让我在图书馆内用ipad就能入门深度学习,最好还有很强的算力。
#此方案可能考虑不周,请抱着娱乐的心态观看,欢迎一切建议
选择 与 特点
经过调查本地编写、远程运行的常见方式有三种:code-server , remote-ssh , jupyter 远程,其特点大致如下:
方式 | 优点 | 缺点 |
code-server | 网页即可访问,跟vs一样的界面 | 服务器要求是linux系统 |
remote-ssh | -- | 不适用于ipad |
jupyter 远程 | 网页即可访问 | -- |
所以最终选择的是jupyter的远程,ipad在浏览器中进行访问
实现过程
-
jupyter远程:
参考资料:https://blog.csdn.net/danlei94/article/details/74049975 或百度
大致如下(我配置完流程就有点忘了,目前也没有机会找台新机器再配置用作步骤测试,所以请仔细斟酌)
到相应环境、工作目录下之后,执行以下命令:
jupyter notebook --ip 0.0.0.0
这样就启动了服务,但是服务器中自动弹窗的网页是进不了jupyter的,因为本机ip地址不对,如果开启之后想在服务器上进jupyter则需要在浏览器中输入 http: //localhost:8888/ (8888是端口号,看你自己配置,别和其他软件的重合就行)
建议win10关闭一切防火墙,并且在规则中开放你需要用的端口
(参考:https://jingyan.baidu.com/article/09ea3ede7311dec0afde3977.html)
局域网内的本地机现在就可以访问服务器上的jupyter ,在浏览器中输入地址时需要把 localhost 改为服务器的ip地址(win10 下进cmd输入ipconfig即可查询)
-
蒲公英组网:
我对远程访问服务器这种操作不是很熟悉,但是目前我的认知是从外网访问都是需要服务器是有公网ip的,这个我办不到。但是想了想,以前和小伙伴想局域网玩游戏,用了“蛤蟆吃”一类的组网软件,上网搜了搜发现蒲公英个人是免费的,支持ipad,个人最多同时支持三台设备,带宽也基本是够用了,那就试一试。
红色涂抹部分是三个设备的ip地址,装了软件的设备通过外网链接,但相当于大家在一个局域网,经过测试有效。
-
bat文件,一键激活环境
- 正常情况下开启我们这个用于深度学习的服务器需要几个步骤:
1.开启蒲公英 |
2.进入conda到指定环境 |
3.开启jupyter notebook |
每次这么搞太麻烦了,当场学习下bat编写,写了个一键启动的:launch.bat
注意call的用法以及各式,下面的jupyter指令实际只与段首空出一个空格:
@echo on
start "" "C:\Program Files (x86)\Oray\PgyClient\PgyVisitor.exe"
cd C:\Users\Administrator\Desktop\d2l-zh
call conda activate gluon
jupyter notebook --ip 0.0.0.0
这样只需要将bat文件拖动到cmd里回车运行即可(直接双击总是不能达到预期效果,原因不明,但是这么用对我来说也还能接受)
- ipad(笔记本电脑等客户端),在连上外网、打开蒲公英之后即可按照局域网内访问的方法去访问服务器。
效果展示
图书馆连wifi,ipad实测截图
过程中遇到的问题
一开始我的笔记本局域网内连接台式机jupyter远程服务,特别卡,不管是运行还是打字,效果很差而且很容易提示连接中断。
咨询小伙伴们他们都说没有这种情况,用起来应该是很流畅的啊。
我路由器也换过,本地机也换过,就是卡顿!纳闷了,但是我发现,每当我跟他们聊天聊了一会儿,就会出现连接中断,或者是内核未响应。大胆的推测是那个运行进程有点问题,会被win10优化,所以我用 Process lasso 软件来保护进程(怪不得服务器都用linux?)。
果然经过软件上调相关进程优先级之,远程访问jupyter 客户端体验很少卡顿,十分丝滑,这么做顺便能够避免电脑休眠。
改进方向
在图书馆的学习中遇到过一次,得把mxnet框架默认站点改为设置为中国内站点才能正常下载数据集,可是这需要到cmd.exe 或者conda promt里才能操作,jupyter操作不了,这点很烦。大家有什么ssh直接能连到win10的应用推荐吗?在线等。
相类似的,万一jupyter服务崩溃了要重启或者是要改改conda环境,目前这套方案是应该没办法办到,只能祈祷我的win10服务器机不拉胯。
(事实上我觉得等我攒下了点钱,再买个固态给台式机加linux弄个双系统就完美了)