Bird
Raised Fist0
PyTorchml~20 mins

Model optimization (quantization, pruning) in PyTorch - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Model Optimization Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Quantization Impact on Model Size

Which of the following statements best describes the main effect of applying post-training quantization to a PyTorch model?

AIt increases the model size by adding extra layers to improve accuracy after training.
BIt reduces the model size by converting weights from 32-bit floats to lower-bit integers, often 8-bit, with minimal accuracy loss.
CIt removes neurons from the model to reduce size but always causes significant accuracy loss.
DIt converts the model to use 64-bit floating point weights for higher precision.
Attempts:
2 left
💡 Hint

Think about how quantization changes the data type of weights and its effect on storage.

❓ Predict Output
intermediate
2:00remaining
Output of Pruning Code on Model Parameters

Consider the following PyTorch code that applies pruning to a linear layer. What will be the number of zero weights in model.fc.weight after pruning?

PyTorch
import torch
import torch.nn as nn
import torch.nn.utils.prune as prune

class SimpleModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(10, 5)

model = SimpleModel()
prune.l1_unstructured(model.fc, name='weight', amount=0.4)

zero_weights = torch.sum(model.fc.weight == 0).item()
print(zero_weights)
A20
B40
C12
D0
Attempts:
2 left
💡 Hint

Calculate total weights and 40% of them.

❓ Hyperparameter
advanced
2:00remaining
Choosing Pruning Amount for Accuracy Preservation

You want to prune a PyTorch model to reduce size but keep accuracy loss under 2%. Which pruning amount is most likely to meet this goal?

APruning 5% of weights using L1 unstructured pruning
BPruning 10% of weights using structured pruning on entire channels
CPruning 50% of weights randomly without considering importance
DPruning 80% of weights using unstructured pruning
Attempts:
2 left
💡 Hint

Smaller pruning amounts usually preserve accuracy better.

❓ Metrics
advanced
2:00remaining
Evaluating Quantized Model Accuracy

After applying dynamic quantization to a PyTorch LSTM model, you observe the following accuracies on the test set:

  • Original model accuracy: 92%
  • Quantized model accuracy: 89%

What is the best interpretation of this result?

AThe quantized model should have the same accuracy; the difference means the test data changed.
BDynamic quantization always improves accuracy, so this result is unexpected and indicates a bug.
CQuantization caused the model to overfit, increasing accuracy on training but decreasing on test.
DDynamic quantization caused a small accuracy drop but improved inference speed and reduced model size.
Attempts:
2 left
💡 Hint

Quantization trades off some accuracy for efficiency.

🔧 Debug
expert
2:00remaining
Identifying Error in Pruning Application Code

What error will the following PyTorch code raise when trying to prune a model's convolutional layer?

PyTorch
import torch
import torch.nn as nn
import torch.nn.utils.prune as prune

class ConvModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv = nn.Conv2d(3, 16, 3, bias=False)

model = ConvModel()
prune.l1_unstructured(model.conv, name='bias', amount=0.3)
ANo error; pruning applied successfully
BAttributeError: 'Conv2d' object has no attribute 'bias_mask'
CValueError: Cannot prune parameter 'bias' because it does not exist or is not a tensor
DRuntimeError: Pruning amount must be between 0 and 1
Attempts:
2 left
💡 Hint

Check if the layer has a bias parameter by default.

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