PyTorch: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
m (Fixed headers)
(Marked this version for translation)
Line 50: Line 50:
#SBATCH --output=%N-%j.out
#SBATCH --output=%N-%j.out


<!--T:27-->
module load python/3.6
module load python/3.6
virtualenv --no-download $SLURM_TMPDIR/env
virtualenv --no-download $SLURM_TMPDIR/env
Line 55: Line 56:
pip install torch --no-index
pip install torch --no-index


<!--T:28-->
python pytorch-test.py
python pytorch-test.py
}}
}}


<!--T:29-->
The Python script <code>pytorch-test.py</code> has the form
The Python script <code>pytorch-test.py</code> has the form
{{File
{{File
Line 79: Line 82:
= Troubleshooting = <!--T:23-->
= Troubleshooting = <!--T:23-->


== Memory leak ==
== Memory leak == <!--T:30-->
On AVX512 hardware (Béluga, skylake or V100 nodes), older version of Pytorch (less than v1.0.1) using older libraries (cuDNN < v7.5 or MAGMA < v2.5) may considerably leak memory resulting in an out of memory exception and death of your tasks. Please upgrade <tt>torch</tt> version to the latest.
On AVX512 hardware (Béluga, skylake or V100 nodes), older version of Pytorch (less than v1.0.1) using older libraries (cuDNN < v7.5 or MAGMA < v2.5) may considerably leak memory resulting in an out of memory exception and death of your tasks. Please upgrade <tt>torch</tt> version to the latest.


</translate>
</translate>

Revision as of 17:57, 28 May 2019

Other languages:

PyTorch is a Python package that provides two high-level features:

  • Tensor computation (like NumPy) with strong GPU acceleration
  • Deep neural networks built on a tape-based autograd system

PyTorch has a distant connection with Torch, but for all practical purposes you can treat them as separate packages.

Installation

Latest available wheels

To see the latest version of PyTorch that we have built:

Question.png
[name@server ~]$ avail_wheels "torch*"

For more information on listing wheels, see listing available wheels.

Installing Compute Canada wheel

The preferred option is to install it using the Python wheel as follows:

1. Load a Python module, either python/2.7, python/3.5, python/3.6 or python/3.7
2. Create and start a virtual environment.
3. Install PyTorch in the virtual environment with pip install.

GPU and CPU

Question.png
(venv) [name@server ~] pip install torch --no-index

Extra

In addition to torch, you can install torchvision, torchtext and torchaudio:

Question.png
(venv) [name@server ~] pip install torch torchvision torchtext torchaudio --no-index

libtorch

libtorch.so is included in the wheel. Once Pytorch is installed in a virtual environment, you can find it at: $VIRTUAL_ENV/lib/python3.6/site-packages/torch/lib/libtorch.so.

Job submission

Here is an example of a job submission script using the python wheel, with a virtual environment inside a job:

File : pytorch-test.sh

#!/bin/bash
#SBATCH --gres=gpu:1       # Request GPU "generic resources"
#SBATCH --cpus-per-task=6  # Cores proportional to GPUs: 6 on Cedar, 16 on Graham.
#SBATCH --mem=32000M       # Memory proportional to GPUs: 32000 Cedar, 64000 Graham.
#SBATCH --time=0-03:00
#SBATCH --output=%N-%j.out

module load python/3.6
virtualenv --no-download $SLURM_TMPDIR/env
source $SLURM_TMPDIR/env/bin/activate
pip install torch --no-index

python pytorch-test.py


The Python script pytorch-test.py has the form

File : pytorch-test.py

import torch
x = torch.Tensor(5, 3)
print(x)
y = torch.rand(5, 3)
print(y)
# let us run the following only if CUDA is available
if torch.cuda.is_available():
    x = x.cuda()
    y = y.cuda()
    print(x + y)


You can then submit a PyTorch job with:

Question.png
[name@server ~]$ sbatch pytorch-test.sh

Troubleshooting

Memory leak

On AVX512 hardware (Béluga, skylake or V100 nodes), older version of Pytorch (less than v1.0.1) using older libraries (cuDNN < v7.5 or MAGMA < v2.5) may considerably leak memory resulting in an out of memory exception and death of your tasks. Please upgrade torch version to the latest.