项目停止。 该项目将不再由英特尔维护。英特尔将不再为该项目提供或保证开发支持,包括但不限于维护、错误修复、新版本或更新。英特尔将不再接受该项目的补丁。如果您有继续使用该项目的需求,有兴趣独立开发它,或者希望为社区维护补丁,请自行创建该项目的分支。
neon
neon 是英特尔的参考深度学习框架,致力于在所有硬件上实现最佳性能。设计上注重易用性和可扩展性。
- 教程 和 iPython 笔记本 帮助用户开始使用 neon 进行深度学习。
- 支持常用层:卷积层、RNN、LSTM、GRU、BatchNorm 等。
- 模型库 包含预训练权重和示例脚本,用于最先进的模型,包括:VGG、强化学习、深度残差网络、图像标注、情感分析 以及更多。
- 可交换的硬件后端:一次编写代码,然后在 CPU、GPU 或 Nervana 硬件上部署。
为了快速迭代和模型探索,neon 在深度学习库中具有最快的性能(在 Titan X 上的 AlexNet 训练 3072 张图片的 macrobatch 仅需 2.5 秒,完整运行 1 个 GPU 大约需 26 小时)。使用 16 位浮点数训练 VGG 模型,使用 1 个 Titan X 大约需要 10 天(原始论文:4 个 GPU 需要 2-3 周)。
我们在英特尔 Nervana 内部使用 neon 来解决客户在多个领域中的问题。我们在多个职位招聘,申请请点击这里!
请查看我们最新版本中的新功能。 我们要强调的是,neon v2.0.0+ 已通过启用英特尔数学核心库 (MKL) 进行了优化,以在 CPU 上实现更好的性能。neon 使用的 MKL 的 DNN(深度神经网络)组件是免费提供的,并在 neon 安装过程中自动下载。
快速安装
在 Mac OSX 或 Linux 机器上,输入以下命令下载并安装 neon(conda 用户请参考指南),并使用它来训练您的第一个多层感知器。如果要强制安装 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 的 master 分支将每周更新,作为下一个版本的开发进展。要获取稳定版本,请检出一个发布标签(例如 "git checkout v2.2.0")。或者,简单地检出 "latest" 发布标签以获得最新的稳定版本(即 "git checkout latest")。
从版本 2.4.0 开始,我们重新启用了 pip 安装。可以使用包名 nervananeon 来安装 neon。
pip install nervananeon
需要注意的是,必须单独安装 aeon。最新的 v2.6.0 版本使用 aeon v1.3.0。
警告
在 neon v2.1.0 和 v2.2.0 之间,aeon 清单文件格式发生了变化。从 neon < v2.2.0 更新时,必须使用摄取脚本(在 examples 文件夹中)重新创建清单文件或使用此脚本更新清单文件。
使用脚本运行示例
python examples/mnist_mlp.py
从命令行选择后端引擎
默认情况下选择 GPU 后端,因此如果系统上找到兼容的 GPU 资源,上述命令等同于:
python examples/mnist_mlp.py -b gpu
如果没有可用的 GPU,则从 neon v2.1.0 开始,默认选择优化后的 CPU (MKL) 后端,这意味着上述命令现在等同于:
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 可用,默认情况下选择 GPU 后端。
推荐的 Intel 架构 neon 和 MKL 设置
英特尔数学核心库利用了英特尔 Xeon 和 Xeon Phi 系统的并行化和向量化能力。当系统启用超线程时,我们推荐以下 KMP_AFFINITY 设置,以确保并行线程与可用的物理核心 1:1 映射。
export OMP_NUM_THREADS=<物理核心数>
export KMP_AFFINITY=compact,1,0,granularity=fine
或
export OMP_NUM_THREADS=<物理核心数>
export KMP_AFFINITY=verbose,granularity=fine,proclist=[0-<物理核心数>],explicit
有关 KMP_AFFINITY 的更多信息,请查看这里。 我们鼓励用户尝试并建立自己的最佳性能设置。
文档
neon 的完整文档可在此处获取。一些有用的起点是:
支持
对于任何错误或功能请求,请:
- 搜索已开放和已关闭的问题列表,查看我们是否已经在处理您发现的问题。
- 检查您的问题/请求是否已经在我们的常见问题解答或 neon-users Google 组中得到了解答。
- 如果您有一些想要贡献的代码,请提交一个新的问题或新的拉取请求。
对于其他问题和讨论,请在 neon-users Google 组中发布消息。
许可证
我们将neon 以开源的 Apache 2.0 许可证发布。我们欢迎您通过 contact us 与我们联系您的用例。