Commit c3a47386 authored by Yuxin Wu's avatar Yuxin Wu

update docs

parent 869bc638
Welcome to tensorpack! Tensorpack Documentation
====================================== ==============================
.. image:: ../.github/tensorpack.png
Tensorpack is a **training interface** based on TensorFlow.
It's Yet Another TF wrapper, but different in:
- Focus on **training speed**.
- Speed comes for free with tensorpack -- it uses TensorFlow in the
**correct way** with no extra overhead. On various CNNs, it runs 1.5~1.7x faster than the equivalent Keras code.
- Data-parallel multi-GPU training is off-the-shelf to use. It is as fast as Google's
`official benchmark <https://www.tensorflow.org/performance/benchmarks>`_.
You cannot beat its speed unless you're a TensorFlow expert.
- See `tensorpack/benchmarks <https://github.com/tensorpack/benchmarks>`_ for some benchmark scripts.
- Focus on large datasets.
- It's painful to read/preprocess data through TF. Tensorpack helps you load large datasets (e.g. ImageNet) in
**pure Python** with autoparallelization.
- It's not a model wrapper.
- There are already too many symbolic function wrappers.
Tensorpack includes only a few common models, but you can use any other wrappers within tensorpack, including sonnet/Keras/slim/tflearn/tensorlayer/....
See :doc:`tutorial/index` to know more about these features:
.. toctree:: .. toctree::
:maxdepth: 3 :maxdepth: 3
......
...@@ -38,7 +38,7 @@ A High Level Glance ...@@ -38,7 +38,7 @@ A High Level Glance
a small set of functions within tensorpack. ``ModelDesc`` is an interface to connect the model with the a small set of functions within tensorpack. ``ModelDesc`` is an interface to connect the model with the
``InputSource`` interface. ``InputSource`` interface.
* tensorpack trainers manage the training loops for you. * Tensorpack trainers manage the training loops for you.
They also include data parallel logic for multi-GPU or distributed training. They also include data parallel logic for multi-GPU or distributed training.
At the same time, you have the power of customization through callbacks. At the same time, you have the power of customization through callbacks.
......
...@@ -6,7 +6,7 @@ Performance is different across machines and tasks. ...@@ -6,7 +6,7 @@ Performance is different across machines and tasks.
So you need to figure out most parts by your own. So you need to figure out most parts by your own.
Here's a list of things you can do when your training is slow. Here's a list of things you can do when your training is slow.
If you're going to open an issue about slow training, If you need help improving the speed,
PLEASE do them and include your findings. PLEASE do them and include your findings.
## Figure out the bottleneck ## Figure out the bottleneck
...@@ -33,10 +33,10 @@ A benchmark will give you more precise information about which part you should i ...@@ -33,10 +33,10 @@ A benchmark will give you more precise information about which part you should i
Understand the [Efficient DataFlow](efficient-dataflow.html) tutorial, so you know what your DataFlow is doing. Understand the [Efficient DataFlow](efficient-dataflow.html) tutorial, so you know what your DataFlow is doing.
Benchmark your DataFlow with modifications and you'll understand which part is the bottleneck. Some examples Benchmark your DataFlow with modifications to understand which part is the bottleneck. Some examples
include: include:
1. Benchmark only raw reader (and perhaps add some prefetching). 1. Benchmark only raw reader (and perhaps add some parallel prefetching).
2. Gradually add some pre-processing and see how the performance changes. 2. Gradually add some pre-processing and see how the performance changes.
3. Change the number of parallel processes or threads. 3. Change the number of parallel processes or threads.
......
...@@ -39,7 +39,8 @@ are likely to have too much variance. To address this issue, you can: ...@@ -39,7 +39,8 @@ are likely to have too much variance. To address this issue, you can:
### Other Logging Data ### Other Logging Data
Besides TensorFlow summaries, Besides TensorFlow summaries,
a callback can also write other data to the monitor backend anytime once the training has started. a callback can also write other data to the monitor backend anytime once the training has started,
by `trainer.monitors.put_xxx`.
As long as the type of data is supported, the data will be dispatched to and logged to the same place. As long as the type of data is supported, the data will be dispatched to and logged to the same place.
As a result, tensorboard will show not only summaries in the graph, but also your custom data. As a result, tensorboard will show not only summaries in the graph, but also your custom data.
......
# tensorpack examples # Tensorpack Examples
Training examples with __reproducible performance__. Training examples with __reproducible performance__.
......
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