【IT168 技术】英特尔®TensorFlow * 1.9优化版现在已经进入使用阶段。当TensorFlow建立在英特尔® MKL-DNN(用于深度神经网络的英特尔®数学内核库)时,一些人不愿意基于源代码编译TensorFlow,去提升CPU性能,而英特尔®TensorFlow * 1.9优化的这些二进制包就为这些人提供了方便。
除了支持英特尔®MKL-DNN之外,在生成二进制文件之前,以下补丁可用于源代码:
将curl库升级到7.60的补丁请参阅
包含英特尔®MKL-DNN许可证文件的补丁,请参阅
代号为Sandy Bridge和Ivy Bridge的旧款英特尔处理器提高英特尔MKL-DNN性能的补丁,请参阅
以下是详细的发布说明。二进制文件可作为 python whl packages和Docker containers使用。
Python* Packages (whls)
有三个可用的python packages:
Python packages配置 | |
组态 | 链接 |
Python 2.7 | |
Python 3.5 | https://storage.googleapis.com/intel-optimized-tensorflow/tensorflow-1.9.0-cp35-cp35m-linux_x86_64.whl |
Python 3.6 | https://storage.googleapis.com/intel-optimized-tensorflow/tensorflow-1.9.0-cp36-cp36m-linux_x86_64.whl |
若要安装英特尔Tensorflow优化版,请运行下面的一个指令将wheel安装到现有的Python* installation中,最好是Intel® Distribution for Python*:
#Python 2.7
Pip install
https://storage.googleapis.com/intel-optimized-tensorflow/tensorflow-1.9.0-cp27-cp27mu-linux_x86_64.whl
#Pthon 3.5
Pip install
https://storage.googleapis.com/intel-optimized-tensorflow/tensorflow-1.9.0-cp35-cp35m-linux_x86_64.whl
#Python 3.6
Pip install
https://storage.cloud.google.com/intel-optimized-tensorflow/tensorflow-1.9.0-cp36-cp36m-linux_x86_64.whl
Docker Images
获取并运行容器
这些docker镜像都发布在http://hub.docker.com的intelaipg / intel-optimized-tensorflow命名空间中,可以使用以下命令进行拉取:
$ docker pull docker.io/intelaipg/intel-optimized-tensorflow:
例如,直接运行python 2.7数据科学容器
$ docker run -it -p 8888:8888 intelaipg / intel-optimized-tensorflow
然后在http:// localhost:8888 /上转到您的浏览器
可用的配置容器
可以使用以下标签/配置:
Docker容器配置 | |
组态 | 标签 |
Python 2.7与jupyter和sample notebooks | latest latest-mkl 1.9.0-mkl |
Python 3.5与jupyter和sample notebooks | latest-py3 latest-mkl-py3 1.9.0-mkl-py3 |
Python 2.7与TensorFlow开发工具链 | latest-devel latest-devel-mkl 1.9.0-devel-mkl |
Python 2.7与TensorFlow开发工具链 | latest-devel-py3 latest-devel-mkl-py3 1.9.0-devel-mkl-py3 |
发行说明
这些发行说明仅适用于构建支持英特尔®MKL-DNN的TensorFlow时引入的更改。有关TensorFlow 1.9中引入的功能和修复,请参阅TensorFlow 1.9 发行说明。
新功能和可用性改进
新功能
使用MKL构建时更改了inter_op_parallelism_threads默认值,以避免线程过度订阅。
添加了默认的OpenMP* OMP设置,在使用MKL内核时,这些设置可以提高性能。
增加了查询CPUID的功能,以保证Intel 64位体系结构上每个物理内核上的超线程数量。
绩效改进
将英特尔MKL-DNN升级至版本0.14。
将KMP_BLOCKTIME 环境变量更改为0。
增加默认的inter_op_parallelism_threads参数以避免过于保守。
通过重用MKL-DNN原语来增强Conv2d 性能。
其他变化
删除了已弃用的StringPiece 类的使用。
更新了基于64字节对齐的tensorflow / compiler / aot测试
更新了Tensor.Slice_Basic 以进行64字节对齐
更新了ScopedAllocatorConcatOpTest.Reshape 以进行64字节对齐
Bug修复
修复了MKL_ML 操作的注册问题。
修复了BFCAllocator : Extend 对齐问题。
修复了使用旧版本gcc时与MklConcat 相关的构建问题。
修复了AVX512版本中的对齐崩溃问题。
修复了convrnn 单元测试失败的问题。
修复了 mkl_layout_pass_ 测试失败的问题
修复了启用MKL-DNN构建时util_cuda_kernel_helper_test_gpu 失败的问题。
修复了内存分配检查失败下的英特尔MKL-DNN单元测试问题。
修复了// tensorflow / python / profiler:model_analyzer_test中的失败问题
修复了在Mac上查找libhdfs.so 时的错误; Mac OS使用libhdfs.dylib。
修复了不需要重新排序时mkl_input_conversion 操作中的错误。
设置EIGEN_MAX_ALIGN_BYTES = 64 以防止在使用AVX512支持编制时执行单元测试期间发生崩溃。
修复了单元测试single_machine_test.cc,因为启用了英特尔MKL-DNN时插入了特殊节点。
已知问题
TensorFlow 1.9分支后修复了以下问题:
使用gcc6.3构建,在链接时未定义对'dladdr'的引用。
使用英特尔MKL-DNN时,Concat-related ops在混合格式/布局中失败
MklConv2DWithBiasBackpropBias只可以在使用英特尔MKL-ML进行编译时注册。