1.适用情景
本文适用于以下情景:
- 使用Google Colab或Paperspace等海外免费算力进行机器学习、深度学习的学习、科研活动
- 没有优质的科学上网工具,或是流量不足,但有类似于谷歌访问助手这类科研工具
- 需要上传比较大的数据集
- 使用Chrome浏览器
2.背景
手头上有一份自定义的VOC数据集,没有GPU服务器,想放到Google colab或Paperspace的gradient notebook服务器上训练,测试生成模型的效果。
如果你没有优质科学上网工具,仅凭浏览器插件是很难将1GB以上文件上传到这些服务器上的,因为诸如“谷歌访问助手”这类网络代理插件,一是速度限制,二是容易断线,使得浏览器的文件上传机制容易失败。
要想将大型数据集文件上传到海外的服务器,需要有一个中介服务器,这个服务器得满足以下需求:
- 能对国内访问
- 能对国外服务器访问
- 对网速有一定的要求
- 足够稳定
对国内的网盘进行评估,最终发现,微软家的网盘Ondrive能很好地满足以上需求。
3.准备
Onedrive
正版Windows预装了Onedrive,初始赠送5GB的空间,虽然不是很大,但是可以应付一般的数据集。
网速方面,Onedrive是无上传下载速度限制的,但是就一般用户而言,容易出现网络波动,因为微软设在我国的Onedrive服务器只有Office365用户才能够使用,而一般用户连接的是境外服务器。
面对网络波动问题,我目前想到了两种解决方案:
- 使用UsbEAm Hosts Editor尝试对Onedrive上传/下载这一项进行host修改,达到加速稳定的效果,据网络运营商不同,这个方案未必有效。
- 在淘宝上买一个十几块钱onedrive企业账号,尽管能用多久没法保证,但是作为速度快、容量大(5T)的临时中介网盘,还是能接受的。(可靠点的卖家怎么样也能使用半年以上吧)
Chrome插件
当我们把数据集上传到Onedrive之后,服务器又如何从Onedrive上下载数据集呢?Onedrive无Linux版本,所以想要在Linux上下载Onedrive里面的文件,我们还得另想他法。
Youtube上有一位老哥Jinay Shah提出了他的解决方法,他使用了一个chrome插件,叫做CurlWget,这个插件能够完全模拟浏览器的下载环境,并将下载任务转化为curl或者wget命令,利用这个插件,我们能够顺利使得Linux服务器下载Onedrive上的文件了,感谢这位老哥。
这里提供以下从crx4chrome网站上下载的CurlWget插件:
提取码:53bq
至于怎么安装chrome插件,可以百度一下
有谷歌访问助手的尽可能去chrome插件商店上面下载最新版本。
4.方法步骤
将数据集上传到Onedrive
可以使用网页版Onedrive进行上传,但是推荐使用客户端进行文件上传,感觉网络环境更稳定。我这边的Onedrive客户端上传速度能够稳定在2MB/s。
这里分享一下我的经验,我发现将zip格式的压缩文件上传到Onedrive之后再从服务器上下载下来可能会出现文件损坏的问题,(用7zip也打不开)因此推荐将数据集转成rar格式的压缩文件上传。
获取数据集下载链接
在Onedrive网页版中,选中数据集进行点击下载,随便找一个位置,点击保存。
注意,要想获得下载链接,必须关闭第三方下载器(如IDM),使用Chrome原生下载器
当确认可以下载文件之后,点击取消下载
然后点击CurlWget插件图标,它会截获下载链接,并生成curl或wget命令,点击就能复制链接
执行wget或curl命令
前面获得的链接是有时效的,所以尽快在服务器中执行,以google colab为例,在感叹号之后把命令输进去就能执行
下载完毕,可以看到,国外服务器之间的数据传输速度非常快
数据集已经添加到服务器内了
到此,整个流程结束。
另外,有时候会出现服务器无法使用wget命令的情形,这时候可以点击CurlWget插件,将模式从wget调整为curl,这样就能获得curl版本的命令
希望有需要的人能从这篇文章中获得参考,欢迎大家分享自己的想法
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。