Commit 3c830a69 authored by L.S. Cook's avatar L.S. Cook Committed by Scott Cyphers

Many updates to latest nGraph Architecture and feature docs (#1953)

* editing docs

* more doc updates

* Cleanup theme, update backends for PlaidML, remove stale font

* Add PlaidML description and doc update that should have been added with PR 1888

* Add PlaidML description and doc update that should have been added with PR 1888

* Latest release doc updates

* Add PlaidML description and doc update for PR 1888
* Update glossary with tensor description and quantization def
* Refactor landpage with QuickStart guides
* Add better details about nGraph features and roadmap

* Placeholder detail for comparison section

* Add section link

* order sections alphabetically for now

* update compiler illustration

* Address feedback from doc review

* Update illustration wording

* Formatting and final edits

* keep tables consistent

* Clarify doc on bridge and compiler docs

* Clarify doc on bridge and compiler docs

* yay for more feedback and improvements

* edit with built doc

* Fix typo

* Another phase of PR review editing

* Final review comment resolved
parent 0bb9368a
......@@ -15,8 +15,8 @@
PROJECT_NAME = "Intel® nGraph™ library API docs"
PROJECT_BRIEF = "C++ code reference for the Intel® nGraph™ library"
PROJECT_NAME = "Intel® nGraph Library and API docs"
PROJECT_BRIEF = "Code reference for the Intel® nGraph C++ Library"
OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@
INPUT = @CMAKE_SOURCE_DIR@/src
......@@ -1083,7 +1083,7 @@ HTML_EXTRA_FILES =
# Minimum value: 0, maximum value: 359, default value: 220.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_HUE = 193
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use grayscales only. A
......@@ -1091,7 +1091,7 @@ HTML_COLORSTYLE_HUE = 220
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_SAT = 215
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
# luminance component of the colors in the HTML output. Values below 100
......@@ -1365,7 +1365,7 @@ ENUM_VALUES_PER_LINE = 8
# Minimum value: 0, maximum value: 1500, default value: 250.
# This tag requires that the tag GENERATE_HTML is set to YES.
TREEVIEW_WIDTH = 550
TREEVIEW_WIDTH = 248
# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
# external symbols imported via tag files in a separate window.
......@@ -1381,7 +1381,7 @@ EXT_LINKS_IN_WINDOW = NO
# Minimum value: 8, maximum value: 50, default value: 10.
# This tag requires that the tag GENERATE_HTML is set to YES.
FORMULA_FONTSIZE = 10
FORMULA_FONTSIZE = 11
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are not
......@@ -1895,10 +1895,9 @@ HAVE_DOT = YES
# processors available in the system. You can set it explicitly to a value
# larger than 0 to get control over the balance between CPU load and processing
# speed.
# Minimum value: 0, maximum value: 32, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_NUM_THREADS = 0
DOT_NUM_THREADS = 32
# When you want a differently looking font in the dot files that doxygen
# generates you can specify the font name using DOT_FONTNAME. You need to make
......@@ -1908,21 +1907,21 @@ DOT_NUM_THREADS = 0
# The default value is: Helvetica.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_FONTNAME = NeoSansIntel
DOT_FONTNAME = "NeoSansIntel-Regular"
# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
# dot graphs.
# Minimum value: 4, maximum value: 24, default value: 10.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_FONTSIZE = 12
DOT_FONTSIZE = 10
# By default doxygen will tell dot to use the default font as specified with
# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
# the path where dot can find it using this tag.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_FONTPATH = ngraph_theme/static/fonts/NeoSansIntel
DOT_FONTPATH = ngraph_theme/static/fonts/
# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
# each documented class showing the direct and indirect inheritance relations.
......@@ -2097,7 +2096,7 @@ DIAFILE_DIRS =
# Minimum value: 0, maximum value: 10000, default value: 50.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_GRAPH_MAX_NODES = 512
DOT_GRAPH_MAX_NODES = 1024
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
# generated by dot. A depth value of 3 means that only nodes reachable from the
......@@ -2109,7 +2108,7 @@ DOT_GRAPH_MAX_NODES = 512
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
MAX_DOT_GRAPH_DEPTH = 5
MAX_DOT_GRAPH_DEPTH = 2
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not seem
......
......@@ -18,7 +18,7 @@
{%- if hasdoc('copyright') %}
{% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}. {% endtrans %}
{%- else %}
<span class="crt-size">{% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.</span> <br/><div class="brandnote"> Intel nGraph library contains trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries. * Other names and brands may be claimed as the property of others; see <a href="http://ngraph.nervanasys.com/docs/latest/branding-notice.html">branding notice</a> for more information.</class>{% endtrans %}
<span class="crt-size">{% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.</span> <br/><div class="brandnote"> Intel nGraph Library contains trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries. * Other names and brands may be claimed as the property of others; see <a href="http://ngraph.nervanasys.com/docs/latest/branding-notice.html">branding notice</a> for more information.</class>{% endtrans %}
{%- endif %}
{%- endif %}
......
......@@ -577,7 +577,7 @@ a .fa, a .rst-content .admonition-title, .rst-content a .admonition-title, a .rs
display: block;
background: #638470;
margin: -5px;
font-family: 'Faustina', sans;
font-family: 'RobotoSlab', sans;
padding: 0.43em 0.74em;
margin-bottom: 0.33em;
}
......@@ -709,7 +709,7 @@ button[disabled] {
background-color: #27AE60;
text-decoration: none;
font-weight: normal;
font-family: "NeoSansIntel", "Nanum Gothic", Arial, sans;
font-family: "NeoSansIntel", "RobotoSlab", Arial, sans;
box-shadow: 0px 1px 2px -1px rgba(255, 255, 255, 0.5) inset, 0px -2px 0px 0px rgba(0, 0, 0, 0.1) inset;
outline-none: false;
vertical-align: middle;
......@@ -1147,7 +1147,7 @@ input {
input[type="button"], input[type="reset"], input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
font-family: "NeoSansIntel", "Nanum Gothic", Arial, sans;
font-family: "NeoSansIntel", "RobotoSlab", Arial, sans;
*overflow: visible;
}
input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="date"], input[type="month"], input[type="time"], input[type="datetime"], input[type="datetime-local"], input[type="week"], input[type="number"], input[type="search"], input[type="tel"], input[type="color"] {
......@@ -1156,7 +1156,7 @@ input[type="text"], input[type="password"], input[type="email"], input[type="url
display: inline-block;
border: 1px solid #ccc;
font-size: 80%;
font-family: "NeoSansIntel", "Nanum Gothic", Arial, sans;
font-family: "NeoSansIntel", "RobotoSlab", Arial, sans;
box-shadow: inset 0 1px 3px #ddd;
border-radius: 0;
-webkit-transition: border 0.3s linear;
......@@ -1225,7 +1225,7 @@ textarea {
overflow: auto;
vertical-align: top;
width: 100%;
font-family: "Nanum Gothic", Arial, sans;
font-family: "RobotoSlab", Arial, sans;
}
select, textarea {
......@@ -1610,17 +1610,17 @@ input[type="radio"][disabled], input[type="checkbox"][disabled] {
}
a {
color: #5c8583;
color: #a08105;
text-decoration: none;
cursor: pointer;
}
a:hover {
color: #5c8583;
background-color: #dce7e6;
color: #a08105;
text-decoration: underline;
}
a:visited {
color: #5c8583;
color: #a08105;
}
html {
......@@ -1629,9 +1629,9 @@ html {
}
body {
font-family: "Nanum Gothic", Arial, sans-serif;
font-family: "RobotoSlab", Sans, sans-serif;
font-weight: normal;
color: #404040;
color: #38403f;
min-height: 100%;
overflow-x: hidden;
background: #edf0f2;
......@@ -1709,7 +1709,7 @@ a.wy-text-neutral:hover {
h1, h2, .rst-content .toctree-wrapper p.caption, h3, h4, h5, h6, legend {
margin-top: 0.33em;
font-weight: 700;
font-family: "NeoSansIntel", "Nanum Gothic", arial, sans;
font-family: "NeoSansIntel", "RobotoSlab", arial, sans;
}
p {
......@@ -1764,8 +1764,8 @@ code, .rst-content tt, .rst-content code {
max-width: 100%;
font-size: 100%;
padding: 0 5px;
font-family: Monaco, Consolas, "Menlo", "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace;
color: #E74C3C;
font-family: Inconsolata-Regular, "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace;
color: #253237;
overflow-x: auto;
}
code.code-large, .rst-content tt.code-large {
......@@ -1816,9 +1816,8 @@ code.code-large, .rst-content tt.code-large {
list-style: disc;
}
pre, .codeblock, pre.literal-block, .rst-content .literal-block, .rst-content pre.literal-block, div[class^='highlight'] {
border: 0.05em solid #dfeef1;
padding: 0.01em;
pre, .codeblock, .rst-content .literal-block, .rst-content pre.literal-block, div[class^='highlight'] {
border: 0.079em solid #ebe9e0;
caption-side: bottom;
overflow-x: auto;
font-size: 0.97em;
......@@ -1847,7 +1846,7 @@ div[class^='highlight'] td.code {
}
code, p.caption {
font-family: Consolas, sans, monospace;
font-family: "NeoSansIntel-Light", sans, monospace;
color: #A79992;
font-size: 0.99em;
line-height: 1.39em;
......@@ -1855,7 +1854,7 @@ code, p.caption {
caption-text {
font-family: 'Nanum Gothic Coding', monospace;
font-family: 'RobotoSlab Coding', monospace;
font-family: monospace;
font-size: 1.03em;
line-height: 1.43em;
......@@ -1880,7 +1879,7 @@ div[class^='highlight'] pre {
line-height: 1.13;
display: block;
overflow: wrap;
color: #615f5e;
color: #83827d;
}
.linenodiv pre {
......@@ -2223,7 +2222,7 @@ div[class^='highlight'] pre {
color: #fcfcfc;
background: #1f1d1d;
border-top: solid 10px #5f5f5f;
font-family: "NeoSansIntel", "Nanum Gothic", "Helvetica Neue", Arial, sans;
font-family: "NeoSansIntel", "RobotoSlab", "Helvetica Neue", Arial, sans;
z-index: 400;
}
.rst-versions a {
......@@ -2435,7 +2434,7 @@ div[class^='highlight'] pre {
}
.rst-content .sidebar .sidebar-title {
display: block;
font-family: "NeoSansIntel", 'Nanum Gothic', arial, sans-serif;
font-family: "NeoSansIntel", 'RobotoSlab', arial, sans-serif;
font-weight: bold;
background: #e1e4e5;
padding: 6px 12px;
......@@ -2507,7 +2506,7 @@ div[class^='highlight'] pre {
}
.rst-content tt.literal, .rst-content tt.literal, .rst-content code.literal {
font-size: 103% !important;
color: #528481;
color: #0C7881;
line-height: 0.93em;
}
.rst-content tt.xref, a .rst-content tt, .rst-content tt.xref, .rst-content code.xref, a .rst-content tt, a .rst-content code {
......@@ -2705,13 +2704,13 @@ span[id*='MathJax-Span'] {
src: local("NeoSansIntel Bold"), local("NeoSansIntel-Bold"), url(../fonts/NeoSansIntel-Bold.ttf) format("truetype");
}
@font-face {
font-family: "Nanum Gothic";
font-family: "RobotoSlab";
font-style: normal;
font-weight: 500;
src: local("NanumGothic Regular"), local("NanumGothic-Regular"), url(../fonts/NanumGothic-Regular.ttf) format("truetype");
src: local("RobotoSlab Regular"), local("RobotoSlab-Regular"), url(../fonts/RobotoSlab-Regular.ttf) format("truetype");
}
@font-face {
font-family: "Nanum Gothic Coding";
font-family: "NanumGothic Coding";
font-style: normal;
font-weight: 700;
src: local("NanumGothicCoding Bold"), local("NanumGothicCoding-Bold"), url(../fonts/NanumGothicCoding-Bold.ttf) format("truetype");
......@@ -2765,6 +2764,7 @@ span[id*='MathJax-Span'] {
padding: 0 1.618em;
margin-bottom: 0;
display: block;
font-family: "Neo Sans Intel", sans;
font-weight: bold;
text-transform: uppercase;
font-size: 80%;
......@@ -2784,7 +2784,7 @@ span[id*='MathJax-Span'] {
background: #e3e3e3;
}
.wy-menu-vertical li.current a {
color: gray;
color: #959595;
border-right: solid 1px #c9c9c9;
padding: 0.4045em 2.427em;
}
......@@ -2904,7 +2904,7 @@ span[id*='MathJax-Span'] {
color: #e8e8e8;
}
.wy-menu-vertical a:active {
background-color: #8eb0af;
background-color: #84AEAD;
cursor: pointer;
color: #fff;
}
......@@ -2918,7 +2918,7 @@ span[id*='MathJax-Span'] {
padding: 0.809em;
margin-bottom: 0.809em;
z-index: 200;
background-color: #8eb0af;
background-color: #84AEAD;
text-align: center;
padding: 0.809em;
display: block;
......@@ -3008,9 +3008,8 @@ span[id*='MathJax-Span'] {
}
.wy-body-for-nav {
background: left repeat-y #fff;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);
background-size: 300px 1px;
background-color: #72716f;
background-width: 300px;
}
.wy-grid-for-nav {
......@@ -3194,7 +3193,7 @@ footer span.commit code, footer span.commit .rst-content tt, .rst-content footer
}
@media screen and (min-width: 1400px) {
.wy-nav-content-wrap {
background: #fcfcfc;
background: #0C7881;
}
.wy-nav-content {
......
......@@ -9,9 +9,15 @@ Integrate Supported Frameworks
* :ref:`neon_intg`
A framework is "supported" when there is a framework :term:`bridge` that can be
cloned from one of our GitHub repos and built to connect to a supported backend
with nGraph, all the while maintaining the framework's programmatic or user
interface. Current bridge-enabled frameworks include TensorFlow* and MXNet*.
cloned from one of our GitHub repos and built to connect to nGraph device backends,
all the while maintaining the framework's programmatic or user interface. Bridges
currently exist for the TensorFlow\* and MXNet\* frameworks.
.. figure:: graphics/bridge-to-graph-compiler.png
:width: 733px
:alt: JiT compiling of a computation
:abbr:`Just-in-Time (JiT)` Compiling for computation
Once connected via the bridge, the framework can then run and train a deep
learning model with various workloads on various backends using nGraph Compiler
......@@ -23,12 +29,12 @@ as an optimizing compiler available through the framework.
MXNet\* bridge
===============
#. See the README on `nGraph-MXNet`_ Integration for how to enable the bridge.
* See the README on `nGraph-MXNet`_ Integration for how to enable the bridge.
#. (Optional) For experimental or alternative approaches to distributed training
methodologies, including data parallel training, see the MXNet-relevant sections
of the docs on :doc:`distr/index` and :doc:`How to <howto/index>` topics like
:doc:`howto/distribute-train`.
* Optional: For experimental or alternative approaches to distributed training
methodologies, including data parallel training, see the MXNet-relevant sections
of the docs on :doc:`distr/index` and :doc:`How to <howto/index>` topics like
:doc:`howto/distribute-train`.
.. _tensorflow_intg:
......
.. frameworks/generic.rst
Working with generic frameworks
###############################
Working with other frameworks
##############################
An engineer may want to work with a deep learning framework that does not yet
have bridge code written. For non-supported or “generic” frameworks, it is
......@@ -11,7 +11,7 @@ and/or to design and document a user interface (UI) with specific runtime
options for whatever custom use case they need.
The two primary tasks that can be accomplished in the “bridge code” space of the
nGraph Abstraction layer are: (1) compiling a dataflow graph and (2) executing
nGraph abstraction layer are: (1) compiling a dataflow graph and (2) executing
a pre-compiled graph. See the :doc:`../framework-integration-guides` for how we
have built bridges with other frameworks. For more in-depth help in writing
graph optimizations and bridge code, we provide articles on how to
......@@ -20,8 +20,8 @@ target various compute resources using nGraph when a framework provides some
inputs to be computed.
Activate nGraph |trade| on generic frameworks
=============================================
Integrating nGraph with new frameworks
======================================
This section details some of the *configuration options* and some of the
*environment variables* that can be used to tune for optimal performance when
......@@ -40,9 +40,10 @@ backends.
Other, Not yet, Ask
Regardless of the framework, after the :doc:`../buildlb`, a good place to start
usually involves making the libraries available to the framework. On Linux\*
systems, that command tends to looks something like:
Regardless of the framework, after the :doc:`../buildlb` step, a good place
to start usually involves making the libraries available to the framework. On
Linux\* systems built on Intel® Architecture, that command tends to looks
something like:
.. code-block:: console
......
......@@ -53,6 +53,10 @@ Glossary
In the context of a function graph, a "parameter" refers to what
"stands in" for an argument in an ``op`` definition.
quantization
Quantization refers to the conversion of numerical data into a lower-precision representation. Quantization is often used in deep learning to reduce the time and energy needed to perform computations by reducing the size of data transfers and the number of steps needed to perform a computation. This improvement in speed and energy usage comes at a cost in terms of numerical accuracy, but deep learning models are often able to function well in spite of this reduced accuracy.
result
In the context of a function graph, the term "result" refers to
......@@ -104,6 +108,9 @@ Glossary
Tensors are maps from *coordinates* to scalar values, all of the
same type, called the *element type* of the tensor.
.. figure:: graphics/descriptor-of-tensor.png
:width: 559px
Tensorview
......
......@@ -15,55 +15,52 @@
.. This documentation is available online at
.. http://ngraph.nervanasys.com/docs/latest/
.. https://ngraph.nervanasys.com/docs/latest
########
nGraph
########
Welcome to the nGraph documentation site. nGraph is an open-source C++ library
and runtime / compiler suite for :abbr:`Deep Learning (DL)` ecosystems. Our goal
is to empower algorithm designers, data scientists, framework architects,
software engineers, and others with the means to make their work :ref:`portable`,
:ref:`adaptable`, and :ref:`deployable` across the most modern
:abbr:`Machine Learning (ML)` hardware available today: optimized Deep Learning
computation devices.
Welcome
=======
.. figure:: graphics/599px-Intel-ngraph-ecosystem.png
:width: 599px
:width: 599px
.. _portable:
Portable
========
nGraph is an open-source C++ library, compiler, and runtime accelerator for
software engineering in the :abbr:`Deep Learning (DL)` ecosystem. nGraph
simplifies development and makes it possible to design, write, compile, and
deploy :abbr:`Deep Neural Network (DNN)`-based solutions. A more detailed
explanation of the feature set of nGraph Compiler, as well as a high-level
overview, can be found on our project :doc:`project/about`.
.. _quickstart:
One of nGraph's key features is **framework neutrality**. While we currently
support :doc:`three popular <framework-integration-guides>` frameworks with
pre-optimized deployment runtimes for training :abbr:`Deep Neural Network (DNN)`,
models, you are not limited to these when choosing among frontends. Architects
of any framework (even those not listed above) can use our documentation for how
to :doc:`compile and run <howto/execute>` a training model and design or tweak
a framework to bridge directly to the nGraph compiler. With a *portable* model
at the core of your :abbr:`DL (Deep Learning)` ecosystem, it's no longer
necessary to bring large datasets to the model for training; you can take your
model -- in whole, or in part -- to where the data lives and save potentially
significant or quantifiable machine resources.
Quick Start
===========
We have many documentation pages to help you get started.
* **TensorFlow or MXNet users** can get started with :doc:`framework-integration-guides`; see also:
.. _adaptable:
* `TensorFlow bridge to nGraph`_
* `Compiling MXNet with nGraph`_
Adaptable
=========
* **Data scientists** interested in the `ONNX`_ format will find the
`nGraph ONNX companion tool`_ of interest.
We've recently begun support for the `ONNX`_ format. Developers who already have
a "trained" :abbr:`DNN (Deep Neural Network)` model can use nGraph to bypass
significant framework-based complexity and :doc:`import it <howto/import>`
to test or run on targeted and efficient backends with our user-friendly
Python-based API. See the `ngraph onnx companion tool`_ to get started.
* **Framework authors and architects** will likely want to :doc:`buildlb`
and learn how nGraph can be used to :doc:`howto/execute`. For examples
of generic configurations or optimizations available when designing or
bridging a framework directly with nGraph, see :doc:`frameworks/generic`.
* To start learning about nGraph's set of **Core ops** and how they can
be used with Ops from other frameworks, go to :doc:`ops/index`.
* **Optimization pass writers** will find :doc:`fusion/index` useful. Also
look for our upcoming documentation on :term:`quantization`.
* For details about **PlaidML integration** and other nGraph runtime APIs,
see the section :doc:`programmable/index`.
.. csv-table::
:header: "Framework", "Bridge Available?", "ONNX Support?"
......@@ -73,33 +70,7 @@ Python-based API. See the `ngraph onnx companion tool`_ to get started.
MXNet, Yes, Yes
PaddlePaddle, Coming Soon, Yes
PyTorch, No, Yes
CNTK, No, Yes
Other, Custom, Custom
.. _deployable:
Deployable
==========
It's no secret that the :abbr:`DL (Deep Learning)` ecosystem is evolving
rapidly. Benchmarking comparisons can be blown steeply out of proportion by
subtle tweaks to batch or latency numbers here and there. Where traditional
GPU-based training excels, inference can lag and vice versa. Sometimes what we
care about is not "speed at training a large dataset" but rather latency
compiling a complex multi-layer algorithm locally, and then outputting back to
an edge network, where it can be analyzed by an already-trained model.
Indeed, when choosing among topologies, it is important to not lose sight of
the ultimate deployability and machine-runtime demands of your component in
the larger ecosystem. It doesn't make sense to use a heavy-duty backhoe to
plant a flower bulb. Furthermore, if you are trying to develop an entirely
new genre of modeling for a :abbr:`DNN (Deep Neural Network)` component, it
may be especially beneficial to consider ahead of time how portable and
mobile you want that model to be within the rapidly-changing ecosystem.
With nGraph, any modern CPU can be used to design, write, test, and deploy
a training or inference model. You can then adapt and update that same core
model to run on a variety of backends:
Other, Write your own, Custom
.. csv-table::
......@@ -108,25 +79,16 @@ model to run on a variety of backends:
Intel® Architecture Processors (CPUs), Yes, Yes
Intel® Nervana™ Neural Network Processor (NNPs), Yes, Yes
AMD\* GPUs, via PlaidML, Yes
NVIDIA\* GPUs, via PlaidML, Some
Intel® Architecture GPUs, Yes, Yes
AMD\* GPUs, via PlaidML, Yes
:abbr:`Field Programmable Gate Arrays (FPGA)` (FPGAs), Coming soon, Yes
NVIDIA\* GPUs, via PlaidML, Some
Intel Movidius™ Myriad™ 2 (VPU), Coming soon, Yes
Other, Not yet, Ask
The value we're offering to the developer community is empowerment: we are
confident that Intel® Architecture already provides the best computational
resources available for the breadth of ML/DL tasks. We welcome ideas and
`contributions`_ from the community.
Further project details can be found on our :doc:`project/about` page, or see
our :doc:`buildlb` guide for how to get started.
.. note:: The Library code is under active development as we're continually
adding support for more kinds of DL models and ops, framework compiler
optimizations, and backends.
adding support for more kinds of DL models and ops, compiler optimizations,
and backend optimizations.
=======
......@@ -158,8 +120,11 @@ Indices and tables
* :ref:`search`
* :ref:`genindex`
.. _nGraph ONNX companion tool: https://github.com/NervanaSystems/ngraph-onnx
.. _ONNX: http://onnx.ai
.. _ngraph onnx companion tool: https://github.com/NervanaSystems/ngraph-onnx
.. _Movidius: https://www.movidius.com/
.. _contributions: https://github.com/NervanaSystems/ngraph#how-to-contribute
\ No newline at end of file
.. _contributions: https://github.com/NervanaSystems/ngraph#how-to-contribute
.. _TensorFlow bridge to nGraph: https://github.com/NervanaSystems/ngraph-tf/blob/master/README.md
.. _Compiling MXNet with nGraph: https://github.com/NervanaSystems/ngraph-mxnet/blob/master/NGRAPH_README.md
\ No newline at end of file
......@@ -12,10 +12,12 @@ Backends are responsible for function execution and value allocation. They
can be used to :doc:`carry out a programmed computation<../howto/execute>`
from a framework by using a CPU or GPU; or they can be used with an *Interpreter*
mode, which is primarily intended for testing, to analyze a program, or for a
framework developer to develop a custom UI or API.
framework developer to develop customizations. Experimental APIs to support
current and future nGraph Backends are also available; see, for example, the
section on :ref:`plaidml_`.
.. figure:: ../graphics/runtime.png
.. figure:: ../graphics/backend-dgm.png
:width: 650px
......@@ -25,7 +27,6 @@ framework developer to develop a custom UI or API.
Tensor
=======
......@@ -35,3 +36,21 @@ Tensor
.. _plaidml_:
PlaidML
========
The nGraph ecosystem has recently added initial (experimental) support for `PlaidML`_,
which is an advanced :abbr:`Machine Learning (ML)` library that can further
accelerate training models built on GPUs. When you select the ``PlaidML`` option
as a backend, it behaves as an advanced tensor compiler that can further speed up
training with large data sets.
.. doxygenclass:: ngraph::runtime::plaidml::PlaidML_Backend
:project: ngraph
:members:
.. _PlaidML: https://github.com/plaidml
This diff is collapsed.
......@@ -6,7 +6,6 @@ More about nGraph
This section contains documentation about the project and how to contribute.
.. toctree::
:maxdepth: 1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment