Commit 144a5d18 authored by Leona C's avatar Leona C Committed by Robert Kimball

Update version, clean up ToC, add more detail to section on inspectin… (#2947)

* Update version, clean up ToC, add more detail to section on inspecting graphs...

* Minor adjustments to version module
* Move distributed training page to extras since there's not much there
* Fix links that break when doing that
* Consistent casing on section titles
* Orphan governance page so we don't have blank/empty links
* Update release notes with new version module structure

* PR feedback
parent c4c5c471
......@@ -73,11 +73,11 @@ author = 'Intel Corporation'
# built documents.
#
# The short X.Y version.
version = '0.19'
version = '0.20'
# The Documentation full version, including alpha/beta/rc tags. Some features
# available in the latest code will not necessarily be documented first
release = 'rc4'
release = '0.20.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
......@@ -121,23 +121,20 @@ else:
# borrow this from the zephyr docs theme
html_context = {
# 'show_license': html_show_license, we have a custom footer to attribute WTD and Sphinx contributors
# so we do not enable this
# 'show_license': html_show_license, we have a custom footer to attribute
# RTD, WTD, and Sphinx contributors; so we do not enable this
'docs_title': docs_title,
'is_release': is_release,
'theme_logo_only': False,
'current_version': version,
'versions': ( ("latest", "/"),
("0.19.0", "/0.19.0/"),
'versions': ( ("latest", "../"),
("0.19.0", "/0.19.0/"), #not yet sure how we'll do this
("0.18.0", "/0.18.0/"),
("0.17.0", "/0.17.0/"),
("0.16.0", "/0.16.0/"),
("0.15.0", "/0.15.0/"),
)
}
html_logo = '../ngraph_theme/static/favicon.ico'
# The name of an image file (within the static path) to use as favicon of the
......@@ -165,6 +162,25 @@ html_sidebars = {
}
# Custom added feature to allow redirecting old URLs
#
# list of tuples (old_url, new_url) for pages to redirect
# (URLs should be relative to document root, only)
html_redirect_pages = [
('backends', 'backend-support/index'),
('core/core', 'core/overview.rst'),
('core/fusion', 'core/fusion/index'),
('frameworks/mxnet', 'frameworks/mxnet_intg.rst'),
('frameworks/onnx', 'frameworks/onnx_intg.rst'),
('frameworks/tensorflow', 'frameworks/tensorflow_connect.rst'),
('frameworks/paddle', 'frameworks/paddle_integ.rst'),
('inspection/inspection', 'inspection/index'),
('releases/release-notes', 'releases/index'),
# ('getting_started/getting_starting', 'getting_started/index'),
('project/project', 'project/index'),
('python_api/', 'python_api/index'),
]
# -- Options for HTMLHelp output ------------------------------------------
# Output file base name for HTML help builder.
......@@ -227,7 +243,6 @@ rst_epilog = u"""
.. |codename| replace:: Intel nGraph
.. |project| replace:: Intel nGraph Library
.. |InG| replace:: Intel® nGraph
.. |nGl| replace:: nGraph library
.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN
:ltrim:
.. |deg| unicode:: U+000B0 .. DEGREE SIGN
......@@ -239,7 +254,7 @@ rst_epilog = u"""
.. |trade| unicode:: U+02122 .. TRADEMARK SIGN
:ltrim:
.. |reg| unicode:: U+000AE .. REGISTERED TRADEMARK SIGN
:ltrim:
:ltrim:
"""
......
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="docvs">nGraph Compiler stack</span>
v: {{ version }} <dd><a href="../docs/latest">{{release}}</a></dd>
<span class="fa fa-caret-down"></span>
v: {{ version }}
<span class=""></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>{{ _('Previous Verified Versions') }}</dt>
<dd><!-- Until our https://docs.ngraph.ai/ publishing is set up, we link to GitHub -->
<ul>
<li><a href="https://github.com/NervanaSystems/ngraph/releases/tag/v0.18.1">0.18</a></li>
<li><a href="https://github.com/NervanaSystems/ngraph/releases/tag/v0.19.0-rc.2">0.19.0-rc.2</a></li>
<li><a href="https://github.com/NervanaSystems/ngraph/releases/tag/v0.18.1">0.18.1</a></li>
<li><a href="https://github.com/NervanaSystems/ngraph/releases/tag/v0.17.0-rc.1">0.17.0-rc.1</a></li>
<li><a href="https://github.com/NervanaSystems/ngraph/releases/tag/v0.16.0-rc.3">0.16.0-rc.3</a></li>
<li><a href="https://github.com/NervanaSystems/ngraph/releases/tag/v0.16.0-rc.2">0.16.0-rc.2</a></li>
......
......@@ -23,7 +23,7 @@ packages and prerequisites:
:widths: 25, 15, 25, 20, 25
:escape: ~
CentOS 7.4 64-bit, GCC 4.8, CMake 3.5.0, supported, ``wget zlib-devel ncurses-libs ncurses-devel patch diffutils gcc-c++ make git perl-Data-Dumper``
CentOS 7.4 64-bit, GCC 4.8, CMake 3.9.0, supported, ``wget zlib-devel ncurses-libs ncurses-devel patch diffutils gcc-c++ make git perl-Data-Dumper``
Ubuntu 16.04 or 18.04 (LTS) 64-bit, Clang 3.9, CMake 3.5.1 + GNU Make, supported, ``build-essential cmake clang-3.9 clang-format-3.9 git curl zlib1g zlib1g-dev libtinfo-dev unzip autoconf automake libtool``
Clear Linux\* OS for Intel® Architecture version 28880, Clang 8.0, CMake 3.14.2, experimental, bundles ``machine-learning-basic c-basic python-basic python-basic-dev dev-utils``
......@@ -58,7 +58,7 @@ the ``CMakeLists.txt`` file for other experimental options' details:
-- NGRAPH_NOP_ENABLE: ON
-- NGRAPH_GPUH_ENABLE: OFF
-- NGRAPH_GENERIC_CPU_ENABLE: OFF
-- NGRAPH_DEBUG_ENABLE: OFF
-- NGRAPH_DEBUG_ENABLE: OFF # Set to "ON" to enable logging
-- NGRAPH_ONNX_IMPORT_ENABLE: OFF
-- NGRAPH_DEX_ONLY: OFF
-- NGRAPH_CODE_COVERAGE_ENABLE: OFF
......
......@@ -73,11 +73,11 @@ author = 'Intel Corporation'
# built documents.
#
# The short X.Y version.
version = '0.19'
version = '0.20'
# The Documentation full version, including alpha/beta/rc tags. Some features
# available in the latest code will not necessarily be documented first
release = '0.19.0'
release = '0.20.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
......
......@@ -26,8 +26,7 @@ usually named ``<some_model>.onnx`` or ``<some_model>.onnx.pb``. These
an ``.onnx.pb`` formatted file, you should be able to run the inference without
needing to dig into anything from the "Frameworks" sections. You will, however,
need to have completed the steps outlined in our :doc:`../../buildlb` guide.
If you intend to build nGraph for distributed-training, you will need
to follow instructions on the documentation for :doc:`../../distr/index`.
To demonstrate functionality, we'll use an already-serialized CIFAR10 model
trained via ResNet20. Remember that this model has already been trained and
......
.. distr/index.rst:
################################
Distributed training with nGraph
################################
.. important:: Distributed training is not officially supported as of version
|version|; however, some configuration options have worked for nGraph
devices in testing environments.
How? (Generic frameworks)
=========================
* :doc:`../core/constructing-graphs/distribute-train`
To synchronize gradients across all workers, the essential operation for data
parallel training, due to its simplicity and scalability over parameter servers,
is ``allreduce``. The AllReduce op is one of the nGraph Library’s core ops. To
enable gradient synchronization for a network, we simply inject the AllReduce op
into the computation graph, connecting the graph for the autodiff computation
and optimizer update (which then becomes part of the nGraph graph). The
nGraph Backend will handle the rest.
Data scientists with locally-scalable rack or cloud-based resources will likely
find it worthwhile to experiment with different modes or variations of
distributed training. Deployments using nGraph Library with supported backends
can be configured to train with data parallelism and will soon work with model
parallelism. Distributing workloads is increasingly important, as more data and
bigger models mean the ability to :doc:`../core/constructing-graphs/distribute-train`
work with larger and larger datasets, or to work with models having many layers
that aren't designed to fit to a single device.
Distributed training with data parallelism splits the data and each worker
node has the same model; during each iteration, the gradients are aggregated
across all workers with an op that performs "allreduce", and applied to update
the weights.
Using multiple machines helps to scale and speed up deep learning. With large
mini-batch training, one could train ResNet-50 with Imagenet-1k data to the
*Top 5* classifier in minutes using thousands of CPU nodes. See
`arxiv.org/abs/1709.05011`_.
Future work
===========
More communication ops support is in the works. See also:
:doc:`../../core/passes/list-of-passes`.
.. _arxiv.org/abs/1709.05011: https://arxiv.org/format/1709.05011
.. _based on the synchronous: https://arxiv.org/format/1602.06709
......@@ -72,34 +72,20 @@ boost compared to native implementations. For a high-level overview, see the
backend-support/cpp-api.rst
.. toctree::
:maxdepth: 1
:caption: Distributed Training
distr/index.rst
.. toctree::
:maxdepth: 1
:caption: Inspecting Graphs
inspection/index.rst
.. toctree::
:maxdepth: 1
:caption: Tutorials
tutorials/index.rst
.. toctree::
:maxdepth: 1
:caption: Project Metadata
project/introduction.rst
project/release-notes.rst
project/introduction.rst
project/contribution-guide.rst
project/governance.rst
project/doc-contributor-README.rst
project/index.rst
project/extras.rst
......
......@@ -3,18 +3,30 @@
Visualization Tools
###################
nGraph provides serialization and deserialization facilities along with the
ability to create image formats. When visualization is enabled, a ``dot`` file
is generated, along with a ``png``. The default can be adjusted by setting the
nGraph provides serialization and deserialization facilities, along with the
ability to create image formats or a PDF.
When visualization is enabled, a ``dot`` file gets generated, along with a
``png``. The default can be adjusted by setting the
``NGRAPH_VISUALIZE_TREE_OUTPUT_FORMAT`` flag to another format, like PDF.
Note: Large graphs are usually not legible with formats like PDF.
.. note:: Large graphs are usually not legible with formats like PDF.
Large graphs may require additional work to get into a human-readable format.
On the back end, very long edges will need to be cut to make (for example) a
hard-to-render training graph tractable. This can be a tedious process, so
incorporating the help of a rendering engine or third-party tool like those
listed below may be useful.
Large graphs may require additional work to get into a human-readable format. We
have provided a script to convert the `most common default output`_, nGraph JSON,
to an output that is better able to handle detailed graphs; however, we do not
offer user support for this script. After running the script, you should have a
``.graphml`` that can be imported and inspected with third-party tools like:
.. Additional scripts
.. ==================
.. We have provided a script to convert the `most common default output`_, nGraph
.. ``JSON``, to an output that is better able to handle detailed graphs; however,
.. we do not offer user support for this script. The script will produce a
.. ``.graphml`` file that can be imported and inspected with third-party tools
.. like:
#. `Gephi`_
......@@ -23,9 +35,9 @@ offer user support for this script. After running the script, you should have a
.. #. `Netron`_ support tentatively planned to come soon
.. _CMakeLists.txt: https://github.com/NervanaSystems/ngraph/blob/master/CMakeLists.txt
.. _most common default output: https://github.com/NervanaSystems/ngraph/contrib/tools/graphml/ngraph_json_to_graphml.py
.. _Netron: https://github.com/lutzroeder/netron/blob/master/README.md
.. _Gephi: https://gephi.org
.. _Cytoscape: https://cytoscape.org
.. _CMakeLists.txt: https:github.com/NervanaSystems/ngraph/blob/master/CMakeLists.txt
.. _most common default output: https:github.com/NervanaSystems/ngraph/contrib/tools/graphml/ngraph_json_to_graphml.py
.. _visualize_tree.cpp: https://github.com/NervanaSystems/ngraph/blob/master/src/ngraph/pass/visualize_tree.cpp
.. _Netron: https:github.com/lutzroeder/netron/blob/master/README.md
.. _Gephi: https:gephi.org
.. _Cytoscape: https:cytoscape.org
.. contribution-guide:
##################
Contribution Guide
Contribution guide
##################
License
......
......@@ -5,6 +5,16 @@
Extras
#######
* :ref:`homomorphic_encryption`
* :ref:`distributed_training`
This section contains extra tools and tips for working with up-and-coming
features of the nGraph Compiler stack.
.. _homomorphic_encryption:
Homomorphic Encryption (HE)
===========================
......@@ -20,9 +30,53 @@ Homomorphic Encryption (HE)
.. _distributed_training:
Distributed training with nGraph
================================
.. important:: Distributed training is not officially supported as of version
|version|; however, some configuration options have worked for nGraph
devices in testing environments.
How? (Generic frameworks)
-------------------------
See also: :doc:`../core/constructing-graphs/distribute-train`
To synchronize gradients across all workers, the essential operation for data
parallel training, due to its simplicity and scalability over parameter servers,
is ``allreduce``. The AllReduce op is one of the nGraph Library’s core ops. To
enable gradient synchronization for a network, we simply inject the AllReduce op
into the computation graph, connecting the graph for the autodiff computation
and optimizer update (which then becomes part of the nGraph graph). The
nGraph Backend will handle the rest.
Data scientists with locally-scalable rack or cloud-based resources will likely
find it worthwhile to experiment with different modes or variations of
distributed training. Deployments using nGraph Library with supported backends
can be configured to train with data parallelism and will soon work with model
parallelism. Distributing workloads is increasingly important, as more data and
bigger models mean the ability to :doc:`../core/constructing-graphs/distribute-train`
work with larger and larger datasets, or to work with models having many layers
that aren't designed to fit to a single device.
Distributed training with data parallelism splits the data and each worker
node has the same model; during each iteration, the gradients are aggregated
across all workers with an op that performs "allreduce", and applied to update
the weights.
Using multiple machines helps to scale and speed up deep learning. With large
mini-batch training, one could train ResNet-50 with Imagenet-1k data to the
*Top 5* classifier in minutes using thousands of CPU nodes. See
`arxiv.org/abs/1709.05011`_.
.. _nGraph Bridge repo: https://github.com/tensorflow/ngraph-bridge
.. _Intel HE_transformer: https://github.com/NervanaSystems/he-transformer
.. _Blog post: https://www.intel.ai/he-transformer-for-ngraph-enabling-deep-learning-on-encrypted-data/
.. _examples: https://github.com/NervanaSystems/he-transformer#examples
\ No newline at end of file
.. _examples: https://github.com/NervanaSystems/he-transformer#examples
.. _arxiv.org/abs/1709.05011: https://arxiv.org/format/1709.05011
.. _based on the synchronous: https://arxiv.org/format/1602.06709
.. governance:
:orphan:
Governance
##########
\ No newline at end of file
......@@ -10,7 +10,6 @@ This section contains documentation about the project and how to contribute.
.. toctree::
:maxdepth: 2
release-notes.rst
about.rst
contribution-guide.rst
governance.rst
......
......@@ -3,17 +3,20 @@
Release Notes
#############
|version|
|release|
For downloads formatted as ``.zip`` and ``tar.gz``, see https://github.com/NervanaSystems/ngraph/releases;
.. important:: Pre-releases (``-rc-0.*``) have newer features, and are less stable.
CHANGELOG |release|
===================
Changelog
=========
0.19
----
**Download** `0.19.0-rc.2`_
+ More dynamic shape preparation
+ Distributed interface factored out
......@@ -30,12 +33,12 @@ CHANGELOG |release|
+ Update doxygen to be friendlier to frontends
Changelog
=========
0.18
----
**Download** `0.18.1`_
nGraph v0.18.1
--------------
+ Python formatting issue
+ mkl-dnn work-around
......@@ -46,22 +49,25 @@ nGraph v0.18.1
+ More fusions
nGraph v0.17.0-rc.0
-------------------
0.17
----
**Download** `0.17.0-rc.1`_
+ Allow negative padding in more places
+ Add code generation for some quantized ops
+ Preliminary dynamic shape support
+ initial distributed ops
+ Pad op takes CoordinateDiff instead of Shape pad values to allow for negative padding.
Recent API Changes
~~~~~~~~~~~~~~~~~~
+ Pad op takes CoordinateDiff instead of Shape pad values to allow for negative padding.
0.16
----
* **Download**: `0.16.0-rc.3`_
* **Download** `0.16.0-rc.2`_
* **Download** `0.16.0-rc.1`_
nGraph v0.16.0-rc.3
-------------------
+ NodeInput and NodeOutput classes prepare for simplifications of Node
+ Test improvements
......@@ -70,3 +76,10 @@ nGraph v0.16.0-rc.3
+ Fix memory leak
+ Concat optimization
+ Doc updates
.. _0.19.0-rc.2: https://github.com/NervanaSystems/ngraph/releases/tag/v0.19.0-rc.2_
.. _0.18.1: https://github.com/NervanaSystems/ngraph/releases/tag/v0.18.1_
.. _0.17.0-rc.1: `https://github.com/NervanaSystems/ngraph/releases/tag/v0.17.0-rc.1
.. _0.16.0-rc.3: https://github.com/NervanaSystems/ngraph/releases/tag/v0.16.0-rc.3
.. _0.16.0-rc.2: https://github.com/NervanaSystems/ngraph/releases/tag/v0.16.0-rc.2
.. _0.16.0-rc.1: https://github.com/NervanaSystems/ngraph/releases/tag/v0.16.0-rc.1
.. guides/index:
.. This will hold the organization of the tutorials we put on ngraph.ai
.. it will need to be organized in a way that is navigable for the many kinds of frameworks and backends we support in the "Compiler stack". It will need to be workable with a sitemap structure. The initial example is for the latest nGraph-TensorFlow bridge.
#######
Guides
#######
Coming soon
.. 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