Bird
Raised Fist0
PyTorchml~12 mins

Model optimization (quantization, pruning) in PyTorch - Model Pipeline Trace

Choose your learning style10 modes available
Model Pipeline - Model optimization (quantization, pruning)

This pipeline shows how a neural network model is made smaller and faster using two techniques: quantization and pruning. Quantization reduces the number size used in the model, and pruning removes unnecessary parts of the model. This helps the model run efficiently on devices with less power.

Data Flow - 6 Stages
1Original Data Input
1000 rows x 28 x 28 pixels→Load grayscale images of handwritten digits→1000 rows x 28 x 28 pixels
Image of digit '7' represented as 28x28 pixel values
↓
2Preprocessing
1000 rows x 28 x 28 pixels→Normalize pixel values to range 0-1→1000 rows x 28 x 28 pixels
Pixel value 150 becomes 0.59
↓
3Feature Engineering
1000 rows x 28 x 28 pixels→Flatten images into 784-length vectors→1000 rows x 784 columns
28x28 image becomes a list of 784 numbers
↓
4Model Training
1000 rows x 784 columns→Train a simple neural network with 1 hidden layer→Model with weights and biases
Weights matrix shape: 784 x 128
↓
5Model Pruning
Model with weights and biases→Remove 30% of smallest weights (set to zero)→Model with 30% fewer active weights
Weights matrix now has 70% non-zero values
↓
6Model Quantization
Model with pruned weights (float32)→Convert weights from 32-bit floats to 8-bit integers→Model with quantized weights (int8)
Weight 0.1234 float32 becomes 12 int8
Training Trace - Epoch by Epoch
Loss
0.7 |*       
0.6 | *      
0.5 |  *     
0.4 |   *    
0.3 |    **  
0.2 |      * 
    +--------
     1 2 3 4 5 Epochs
EpochLoss ↓Accuracy ↑Observation
10.650.75Model starts learning, loss is high, accuracy moderate
20.450.85Loss decreases, accuracy improves
30.350.90Model converges well, good accuracy
40.300.92Slight improvement, model stabilizes
50.280.93Final epoch, model ready for optimization
Prediction Trace - 5 Layers
Layer 1: Input Layer
Layer 2: Hidden Layer (Dense)
Layer 3: Pruning Applied
Layer 4: Quantization Applied
Layer 5: Output Layer (Softmax)
Model Quiz - 3 Questions
Test your understanding
What does pruning do to the model weights?
AIncreases the size of weights
BRemoves small weights by setting them to zero
CChanges weights to floating point numbers
DAdds more weights to the model
Key Insight
Model optimization techniques like pruning and quantization help make models smaller and faster without losing much accuracy. Pruning removes unimportant weights, and quantization reduces number size. This is important for running models on devices with limited resources.

Practice

(1/5)
1. What is the main goal of model pruning in PyTorch?
easy
A. Add more training data to improve accuracy
B. Increase the number of layers in the model
C. Change the model architecture to a different type
D. Remove less important weights to make the model smaller

Solution

  1. Step 1: Understand pruning concept

    Pruning means removing weights that do not contribute much to the model's output.
  2. Step 2: Identify pruning effect

    Removing these weights makes the model smaller and faster without changing its structure.
  3. Final Answer:

    Remove less important weights to make the model smaller -> Option D
  4. Quick Check:

    Pruning = Remove less important weights [OK]
Hint: Pruning cuts unimportant weights to shrink model size [OK]
Common Mistakes:
  • Thinking pruning adds layers
  • Confusing pruning with data augmentation
  • Believing pruning changes model type
2. Which PyTorch function is used to apply pruning to a layer?
easy
A. torch.nn.utils.prune.l1_unstructured
B. torch.quantization.quantize_dynamic
C. torch.optim.Adam
D. torch.nn.functional.relu

Solution

  1. Step 1: Identify pruning functions in PyTorch

    PyTorch pruning utilities are in torch.nn.utils.prune module.
  2. Step 2: Match pruning function

    l1_unstructured is a common pruning method that removes weights based on L1 norm.
  3. Final Answer:

    torch.nn.utils.prune.l1_unstructured -> Option A
  4. Quick Check:

    Pruning function = l1_unstructured [OK]
Hint: Pruning uses torch.nn.utils.prune functions [OK]
Common Mistakes:
  • Confusing pruning with quantization functions
  • Choosing optimizer functions by mistake
  • Selecting activation functions instead of pruning
3. What will be the output shape of the model's weight tensor after applying this pruning code?
import torch
import torch.nn.utils.prune as prune

layer = torch.nn.Linear(4, 3)
prune.l1_unstructured(layer, name='weight', amount=0.5)
print(layer.weight.shape)
medium
A. torch.Size([4, 3]) with half weights removed
B. torch.Size([3, 4]) with half weights removed physically
C. torch.Size([3, 4]) with some weights zeroed
D. torch.Size([4, 3]) unchanged

Solution

  1. Step 1: Check layer weight shape

    A Linear layer with input 4 and output 3 has weight shape (3, 4).
  2. Step 2: Understand pruning effect on weight tensor

    Pruning sets some weights to zero but does not change tensor shape.
  3. Final Answer:

    torch.Size([3, 4]) with some weights zeroed -> Option C
  4. Quick Check:

    Pruning zeros weights, shape stays same [OK]
Hint: Pruning zeros weights but keeps tensor shape [OK]
Common Mistakes:
  • Thinking pruning changes tensor shape
  • Confusing input/output dimensions order
  • Assuming weights are physically removed
4. Identify the error in this PyTorch pruning code:
import torch.nn.utils.prune as prune
layer = torch.nn.Linear(5, 2)
prune.l1_unstructured(layer, name='bias', amount=0.3)
medium
A. Missing import for torch
B. Layer input and output sizes are invalid
C. Amount must be an integer, not float
D. Cannot prune bias with l1_unstructured

Solution

  1. Step 1: Examine the code imports

    The code imports only prune but attempts to use torch.nn.Linear without importing torch.
  2. Step 2: Identify the runtime error

    This causes NameError: name 'torch' is not defined when creating the layer.
  3. Final Answer:

    Missing import for torch -> Option A
  4. Quick Check:

    Missing torch import causes NameError [OK]
Hint: Import torch before using torch.nn [OK]
Common Mistakes:
  • Overlooking missing torch import
  • Thinking pruning bias is unsupported
  • Assuming amount must be integer
5. You want to speed up inference on a PyTorch model by reducing number precision. Which approach should you use?
hard
A. Increase batch size during training
B. Apply dynamic quantization to convert weights to lower precision
C. Prune 90% of the model weights randomly
D. Add dropout layers to the model

Solution

  1. Step 1: Understand quantization purpose

    Quantization reduces number precision (e.g., float32 to int8) to speed up inference.
  2. Step 2: Identify correct method

    Dynamic quantization in PyTorch converts weights to lower precision without retraining.
  3. Step 3: Compare other options

    Pruning removes weights but may not speed inference as much; batch size and dropout affect training, not inference speed.
  4. Final Answer:

    Apply dynamic quantization to convert weights to lower precision -> Option B
  5. Quick Check:

    Quantization = lower precision for speed [OK]
Hint: Quantization reduces precision to speed inference [OK]
Common Mistakes:
  • Confusing pruning with quantization
  • Thinking batch size affects model speed directly
  • Adding dropout to speed inference
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard