关于 PyTorch 030 在Windows下的安装和

今天早上闹钟还没响,就被手机的震动声弄醒了,一看就是有朋友催更PyTorch 0.3了。本来也就更新一条链接的事,没想到conda的build工具竟然不能支持MSVC 2017。好吧,又可以水一篇文章了。

在conda-build没有提供MSVC 2017的支持之前,我们没有办法来制作相应的Conda包,因此只能通过whl包来进行安装。具体怎么安装呢?目前将编译好的包上传到了Github的Release页面上,国内的在百度云,需要的用户可以自己下载安装。安装的命令如下:

1
2
3
4
5
6
7
8
复制代码# 对于 Conda 的用户
conda install numpy mkl pyyaml cffi

# For Python 3.5
pip install torch-0.3.0b0.591e73e-cp35-cp35m-win_amd64.whl

# For Python 3.6
pip install torch-0.3.0b0.591e73e-cp36-cp36m-win_amd64.whl

另外,再把相应的发布日志一同搬过来吧。

Windows版本的改动:

错误修复

  1. backward中的错误会导致死锁
  2. DataLoader多线程时的内存泄漏
  3. torch.cuda中的缩进bug

新功能

  1. 添加对 CUDA 和 cuDNN 新版本的支持
  2. 添加对 Ninja 和 clcache 编译器的支持

已知问题

  1. 有些测试不能通过
  2. 不能支持 torch.distributed(分布式)、NCCL(多卡)和 Magma
  3. 不支持 3.5 及以下的版本
  4. 不要把 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之类的(滑稽),以后说不定还会再分享一些相关的经验。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%