Introduction to PyTorch for HPC

Overview

This short course provides a practical introduction to building artificial neural networks using PyTorch, a powerful and flexible deep l earning framework. The course covers the fundamentals of PyTorch, including tensors, automatic differentiation, and model building. Participants will learn how to construct, train, and optimize neural networks while exploring real-world applications. The course also includes best practices for experiment tracking and project setup. By the end of the course, participants will have a solid foundation in PyTorch and be able to develop deep learning models for a variety of tasks.

Table of Contents

1. Introduction to PyTorch
  • Background
  • Overview of PyTorch and its core components
  • Advantages of PyTorch
2. Building a Simple Neural Network
  • Neural Network Construction
  • Training and Testing
  • Validation Sets
3. GPU Acceleration for Deep Learning
  • Why use GPUs?
  • PyTorch and GPUs
  • Best practices for usig GPUs
  • Writing SLURM scripts for PyTorch jobs
4.Transfer Learning
  • What is Transfer Learning?
  • Loading and Preprocessing Datasets
  • Leaveraging Pre-Trained Models for New Tasks
5. Optimizing Neural Networks
  • Optimizers and learning rate adjustments
  • Techniques for avoiding overfitting (dropout, batch normalization)
  • Validation Sets
  • Data augmentation techniques
  • Handling imbalanced data
6. PyTorch Experimentation and Project Setup
  • Structuring a PyTorch project
  • Managing experiments with logging frameworks (TensorBoard, Weights & Biases)
  • Creating reproducible experiments
  • Using torch.utils.data.DataLoader for efficient batch processing
  • Debugging PyTorch models

This course is not an introduction to deep learning. It will not cover deep learning theory or mathematical concepts. This course will cover how to develop ANNs and CNNs. You are strongly encouraged to repeat the examples and do the exercises.

Prerequisites

  • Deep Learning Theory
  • Python Programming