英特尔的深度学习框架
nervananeon的Python项目详细描述
neon是英特尔的参考 致力于best performance的深度学习框架 硬件。为易用性和可扩展性而设计。
- Tutorials 和iPython notebooks 让用户开始使用霓虹灯进行深入学习。
- 支持常用层:卷积,rnn,lstm,gru, BatchNorm等等。
- Model Zoo包含 预先训练的重量和艺术模型开始的示例脚本, 包括: VGG, Reinforcement learning, Deep Residual Networks, Image Captioning, Sentiment analysis, 以及more。
- 可交换硬件后端:编写一次代码,然后部署到CPU上, GPU或Nervana硬件
对于快速迭代和模型探索,neon拥有最快的 深度学习库的性能(CUDNNV4的2倍速度,请参阅 benchmarks)。* 泰坦X上Alexnet上的2.5s/macrobatch(3072个图像)(在1个GPU上完全运行~ 26小时)*训练VGG,在1个泰坦X上使用16位浮点 约10天(原始纸张:4 gpu,持续2-3周)
我们在英特尔Nervana内部使用霓虹灯来解决客户的问题 穿过许多domains。我们是 跨角色招聘。应用 here!
见new features 在我们的最新版本中。我们要强调的是Neon 2.0.0+已经 通过启用Intel Math在CPU上优化以获得更好的性能 内核库(mkl)。mkl的dnn(deep neural networks)组件 霓虹灯使用的是免费提供和下载的 自动作为霓虹灯安装的一部分。
快速安装
在MacOSX或Linux计算机上,输入以下命令下载 安装Neon(Conda用户请参见 guide, 用它来训练你的第一个多层感知器。强迫 python2或python3安装,将下面的make替换为 make python2或make python3。
git clone https://github.com/NervanaSystems/neon.git
cd neon
make
. .venv/bin/activate
从Neon v2.2.0开始,Neon的主分支将被更新 每周一次,下一个版本的工作正在进行中。签出 发布标签(例如“Git Checkout v2.2.0”)用于稳定的发布。或者 只需查看“最新”发布标签即可获得最新的稳定 发布(即“git checkout latest”)
从2.4.0版开始,我们启用了pip安装。可安装霓虹灯 使用包名nervananeon。
pip install nervananeon
值得注意的是 aeon 需要单独安装。最新版本的v2.6.0使用了aeon 1.3.0版。
警告
Between neon v2.1.0 and v2.2.0, the aeon manifest file format has been changed. When updating from neon < v2.2.0 manifests have to be recreated using ingest scripts (in examples folder) or updated using this script.
使用脚本运行示例
python examples/mnist_mlp.py
从命令行中选择后端引擎
默认情况下选择了gpu后端,因此上面的命令是 相当于在系统上找到兼容的GPU资源:
python examples/mnist_mlp.py -b gpu
当没有可用的gpu时,优化的cpu(mkl)后端现在是 从Neon v2.1.0开始默认选中,这意味着上面的命令是 现在相当于:
python examples/mnist_mlp.py -b mkl
如果您有兴趣比较默认的mkl后端和 CPU后端未优化,请使用以下命令:
python examples/mnist_mlp.py -b cpu
使用yaml文件运行示例
或者,可以使用yaml文件运行示例。
neon examples/mnist_mlp.yaml
要在yaml文件中选择特定的后端,请添加或修改一行 包含backend: mkl以启用mkl后端,或backend: cpu以 启用CPU后端。如果GPU是 可用。
英特尔体系结构上带mkl的Neon的推荐设置
英特尔数学内核库利用了并行化的优势 以及Intel Xeon和Xeon Phi系统的矢量化功能。什么时候? 系统上已启用超线程,建议执行以下操作 KMP_关联设置,以确保并行线程被1:1映射到 可用的物理核心。
exportOMP_NUM_THREADS=<Number of Physical Cores> exportKMP_AFFINITY=compact,1,0,granularity=fine
或
exportOMP_NUM_THREADS=<Number of Physical Cores> exportKMP_AFFINITY=verbose,granularity=fine,proclist=[0-<Number of Physical Cores>],explicit
有关KMP U亲和力的更多信息,请检查 here。我们鼓励 用户开始尝试并建立自己的最佳性能 设置。
支架
对于任何错误或功能请求,请:
- 搜索打开和关闭的issues list以查看 我们已经在研究你发现的东西了。
- 检查您的问题/请求是否已在我们的 Frequently Asked Questions (FAQ)或 neon-users 谷歌集团。
- 提交新的issue 或者提交一个新的pull request如果你有 一些您希望贡献的代码
有关其他问题和讨论,请向 neon-users 谷歌集团
许可证
我们正在释放neon 一个开源的Apache 2.0许可证。我们欢迎 使用用例contact us。