Skip to content

Commit

Permalink
[docs] add a Pipeline tutorial
Browse files Browse the repository at this point in the history
  • Loading branch information
Mandeep Singh Baines committed Sep 11, 2020
1 parent 61aac92 commit 2e2635c
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 12 deletions.
8 changes: 8 additions & 0 deletions docs/source/api/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
API Reference
=============

.. toctree::
:maxdepth: 1

optim/oss
nn/pipe
15 changes: 3 additions & 12 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,7 @@ Welcome to fairscale's documentation!
=====================================

.. toctree::
:maxdepth: 1
:caption: API Reference
:maxdepth: 2

api/optim/oss
api/nn/pipe


Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
api/index
tutorials/index
7 changes: 7 additions & 0 deletions docs/source/tutorials/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Tutorials
=========

.. toctree::
:maxdepth: 1

pipe
44 changes: 44 additions & 0 deletions docs/source/tutorials/pipe.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Pipeline Parallel
=================

Let us start with a toy model that contains two linear layers.

.. code-block:: default
import torch
import torch.nn as nn
class ToyModel(nn.Module):
def __init__(self):
super(ToyModel, self).__init__()
self.net1 = torch.nn.Linear(10, 10)
self.relu = torch.nn.ReLU()
self.net2 = torch.nn.Linear(10, 5)
def forward(self, x):
x = self.relu(self.net1(x))
return self.net2(x)
model = ToyModel()
To run this model on 2 GPUs we need to convert it to the model
to ``torch.nn.Sequential`` and then wrap with ``fairscale.nn.Pipe``.

.. code-block:: default
import fairscale
import torch
import torch.nn as nn
model = nn.Sequential(
torch.nn.Linear(10, 10),
torch.nn.ReLU(),
torch.nn.Linear(10, 5)
)
model = fairscale.nn.Pipe(model, balance=[2, 1])
This will run the first two layers on ``cuda:0`` and the last
layer on ``cuda:1``. To learn more, visit the `Pipe <../api/nn/pipe.html>`_ documentation.

0 comments on commit 2e2635c

Please sign in to comment.