今天早上闹钟还没响,就被手机的震动声弄醒了,一看就是有朋友催更PyTorch 0.3了。本来也就更新一条链接的事,没想到conda的build工具竟然不能支持MSVC 2017。好吧,又可以水一篇文章了。
在conda-build没有提供MSVC 2017的支持之前,我们没有办法来制作相应的Conda包,因此只能通过whl包来进行安装。具体怎么安装呢?目前将编译好的包上传到了Github的Release页面上,国内的在百度云,需要的用户可以自己下载安装。安装的命令如下:
1 | 复制代码# 对于 Conda 的用户 |
另外,再把相应的发布日志一同搬过来吧。
Windows版本的改动:
错误修复
- backward中的错误会导致死锁
- DataLoader多线程时的内存泄漏
- torch.cuda中的缩进bug
新功能
- 添加对 CUDA 和 cuDNN 新版本的支持
- 添加对 Ninja 和 clcache 编译器的支持
已知问题
- 有些测试不能通过
- 不能支持 torch.distributed(分布式)、NCCL(多卡)和 Magma
- 不支持 3.5 及以下的版本
- 不要把 num_worker 设置为1以上的值。有问题可以尝试调成0。另外代码入口得用以下的if语句包裹。这里稍微解释下为什么要这样,因为Windows不支持fork,多进程只能采用spawn,而如果你不用这个条件包裹,那么代码就会被再次执行一遍,这样如果不加限制,那么就会有无限多的进程了。那为什么不能把 num_worker 开的大一些呢?因为PyTorch在Windows下跨进程的数据传输方式采取了FileMapping,在传输过程中,Mapping也会占用一份内存,这样的话,如果将
num_worker 设置为1,就要使用双倍的内存了。另外管道传递也是比较慢的,因此如果开的多了,主进程如果不能快速处理的话,会造成数据的积压,从而导致对内存无限的占用。
1 | 复制代码if __name__ == '__main__': |
另外这两天还有个好消息是,Windows的CI已经正式在搭建中了,估计下周就能完工。以后大家可以更加方便的使用master分支进行编译了。我写的一些脚本可以帮助你们方便的进行编译。
以上,就是文章的全部内容啦,如果感觉还意犹未尽的话,可以给我的Github 主页或者项目加个watch或者star之类的(滑稽),以后说不定还会再分享一些相关的经验。
本文转载自: 掘金