Getting started¶
Installation¶
Install PyTorch with your favourite method.
For example, to install CPU version of PyTorch using conda, run
conda install pytorch torchvision cpuonly -c pytorch
Install pytorch-mighty simply via pip:
pip install pytorch-mighty
Start a Visdom server¶
Before running any scripts, make sure you’ve started a Visdom server (installed automatically) in a separate terminal window:
python -m visdom.server
You need to run this command only once.
Train a model¶
The minimal code to train a linear AutoEncoder:
import torch
import torch.nn as nn
from torchvision.datasets import MNIST
from mighty.models import AutoencoderLinear
from mighty.monitor.monitor import MonitorLevel
from mighty.trainer import TrainerAutoencoder
from mighty.utils.data import DataLoader
model = AutoencoderLinear(784, 128)
data_loader = DataLoader(dataset_cls=MNIST)
criterion = nn.BCEWithLogitsLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
trainer = TrainerAutoencoder(model,
criterion=criterion,
data_loader=data_loader,
optimizer=optimizer)
# trainer.restore() # uncomment to restore the saved state
trainer.monitor.advanced_monitoring(level=MonitorLevel.SIGNAL_TO_NOISE)
trainer.train(n_epochs=10, mutual_info_layers=0)
It will print the input model
AutoencoderLinear(
(encoder): Sequential(
(0): Linear(in_features=784, out_features=128, bias=True)
(1): ReLU(inplace=True)
)
(decoder): Linear(in_features=128, out_features=784, bias=True)
)
and start publishing the progress status to a Visdom sever, which you run previously. Navigate to http://localhost:8097 to see the training progress.
For the rest training examples, refer to examples.py.
Other demo results can be found at http://85.217.171.57:8097/. Give your browser a few minutes to parse the json data.
Remote monitoring¶
Instead of running a Visdom server locally, you can set up a training to push status updates to a remove Visdom server by setting environment keys in your python script:
os.environ['VISDOM_SERVER'] = "http://myweb-service.com"
os.environ['VISDOM_PORT'] = '8097'
Additionally, you can provide an authentication mechanism:
os.environ['VISDOM_USER'] = 'user'
os.environ['VISDOM_PASSWORD'] = 'password'