Sign inSign up

szymonmaszke/torchfunc

By szymonmaszke

•Updated over 6 years ago

PyTorch functions to improve performance, analyse and make your deep learning life easier.

Image
0

3.1K

szymonmaszke/torchfunc repository overview

VersionDocsTestsCoverageStylePyPIPythonPyTorchDockerRoadmap
VersionDocumentationTestsPyPIPythonPyTorchDockerRoadmap

torchfunc⁠ is library revolving around PyTorch⁠ with a goal to help you with:

  • Improving and analysing performance of your neural network
  • Daily neural network duties (model size, seeding, performance measurements etc.)
  • Plotting and visualizing modules
  • Record neuron activity and tailor it to your specific task or target
  • Get information about your host operating system, CUDA devices and others

⁠Quick examples

  • Seed globaly, Freeze weights, check inference time and model size
# Inb4 MNIST, you can use any module with those functions
model = torch.nn.Linear(784, 10)
frozen = torchfunc.module.freeze(model, bias=False)

with torchfunc.Timer() as timer:
  frozen(torch.randn(32, 784)
  print(timer.checkpoint()) # Time since the beginning
  frozen(torch.randn(128, 784)
  print(timer.checkpoint()) # Since last checkpoint
  
print(f"Overall time {timer}; Model size: {torchfunc.sizeof(frozen)}")
  • Recorder and sum per-layer activation statistics as data passes through network:
# MNIST classifier
model = torch.nn.Sequential(
    torch.nn.Linear(784, 100),
    torch.nn.ReLU(),
    torch.nn.Linear(100, 50),
    torch.nn.ReLU(),
    torch.nn.Linear(50, 10),
)
# Recorder which sums layer inputs from consecutive forward calls
recorder = torchfunc.record.ForwardPreRecorder(reduction=lambda x, y: x+y)
# Record inputs going into Linear(100, 50) and Linear(50, 10)
recorder.children(model, indices=(2, 3))
# Train your network normally (or pass data through it)
...
# Save tensors (of shape 100 and 50) in folder, each named 1.pt and 2.pt respectively
recorder.save(pathlib.Path("./analysis"))

For performance tips, plotting and other check torchfunc documentation⁠.

⁠Installation

⁠pip⁠

⁠Latest release:
pip install --user torchfunc
⁠Nightly:
pip install --user torchfunc-nightly

⁠Docker⁠

CPU standalone and various versions of GPU enabled images are available at dockerhub⁠.

For CPU quickstart, issue:

docker pull szymonmaszke/torchfunc:18.04

Nightly builds are also available, just prefix tag with nightly_. If you are going for GPU image make sure you have nvidia/docker⁠ installed and it's runtime set.

⁠Contributing

If you find any issue or you think some functionality may be useful to others and fits this library, please open new Issue⁠ or create Pull Request⁠.

To get an overview of something which one can done to help this project, see Roadmap⁠

Tag summary

Content type

Image

Digest

Size

960.5 MB

Last updated

over 6 years ago

docker pull szymonmaszke/torchfunc:nightly_10.1-runtime-ubuntu18.04