nggraph-intel的图形编译器和神经网络运行时
ngraph-core的Python项目详细描述
nggraph编译器堆栈
nGraph是一个用于 神经网络。nggraph编译器堆栈提供了一个固有的 高效的基于图形的编译基础设施,设计为兼容 有许多即将推出的处理器,如Intel Nervana™神经网络 处理器(英特尔®;神经网络™nnp),同时还释放了巨大的性能 对神经网络中任何现有硬件目标的提升:两个GPU 以及CPU。使用其灵活的基础设施,你会发现它变得 更容易创建能够遵循 “写一次,到处跑”的口号,让你的人工智能解决方案 从概念到生产再到规模。
使用nggraph执行工作负载的框架显示了up to 45X性能 与本机实现相比提升。
使用python api
nggraph可以直接与这里描述的Python API一起使用,或者 使用core documentation中描述的C++ API。或者, 它的性能优势可以通过前端实现,如 TensorFlow、PaddlePaddle和ONNX。 您还可以创建自己的自定义框架,以便直接与 nGraph Ops用于高目标图形执行。
安装
ngraph是可用的二进制轮,您可以从pypi安装。二元图 轮子目前在ubuntu 16.04上测试。在其他设备上构建和测试 系统中,您可能需要从源代码中尝试building。
从pypi安装ngraph python api很容易:
pip install ngraph-core
用法示例
使用ngraph的python api构造计算图并执行
计算很简单。下面的示例演示如何创建最小
(A + B) * C
计算图并使用3个numpy数组计算结果
作为输入。
importnumpyasnpimportngraphasngA=ng.parameter(shape=[2,2],name='A',dtype=np.float32)B=ng.parameter(shape=[2,2],name='B',dtype=np.float32)C=ng.parameter(shape=[2,2],name='C',dtype=np.float32)# >>> print(A)# <Parameter: 'A' ([2, 2], float)>model=(A+B)*C# >>> print(model)# <Multiply: 'Multiply_14' ([2, 2])>runtime=ng.runtime(backend_name='CPU')# >>> print(runtime)# <Runtime: Backend='CPU'>computation=runtime.computation(model,A,B,C)# >>> print(computation)# <Computation: Multiply_14(A, B, C)>value_a=np.array([[1,2],[3,4]],dtype=np.float32)value_b=np.array([[5,6],[7,8]],dtype=np.float32)value_c=np.array([[9,10],[11,12]],dtype=np.float32)result=computation(value_a,value_b,value_c)# >>> print(result)# [[ 54. 80.]# [110. 144.]]print('Result = ',result)