Bird
Raised Fist0
MLOpsdevops~20 mins

Hardware and framework version tracking in MLOps - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Hardware and Framework Version Tracking Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Why track hardware and framework versions in MLOps?

Which of the following is the main reason to track hardware and framework versions in an MLOps pipeline?

ATo reduce the size of the trained model files
BTo speed up the training by using older hardware versions
CTo ensure model reproducibility and consistent performance across environments
DTo avoid using any version control system
Attempts:
2 left
💡 Hint

Think about why knowing exact versions helps when running the same model again.

💻 Command Output
intermediate
2:00remaining
Output of hardware info command

What is the output of the following Linux command used to check GPU info?

nvidia-smi --query-gpu=name,memory.total --format=csv,noheader
ASyntaxError: invalid command
BTesla V100, 16160 MiB
CNo GPUs found
DTesla V100 16160
Attempts:
2 left
💡 Hint

The command queries GPU name and total memory in CSV format without header.

Configuration
advanced
2:30remaining
Correct YAML snippet for framework version tracking

Which YAML snippet correctly specifies TensorFlow version 2.12.0 and CUDA version 11.8 for an MLOps environment config?

A
framework:
  name: tensorflow
  version: 2.12.0
hardware:
  cuda_version: 11.8
B
framework:
  name: tensorflow
  version: 'tensorflow-2.12.0'
hardware:
  cuda: 11.8
C
framework:
  tensorflow_version: 2.12.0
hardware:
  cuda_version: 11.8
D
framework:
  name: tensorflow
  version: 2.12
hardware:
  cuda_version: 11.8
Attempts:
2 left
💡 Hint

Look for correct keys and exact version strings.

Troubleshoot
advanced
2:30remaining
Why does model training fail after framework upgrade?

You upgraded TensorFlow from 2.11 to 2.12 on your training server. Suddenly, your model training script fails with an error about missing attributes. What is the most likely cause?

AThe CUDA version was downgraded accidentally
BThe GPU hardware is incompatible with TensorFlow 2.12
CYour Python version is too new for TensorFlow 2.12
DThe new TensorFlow version changed or removed some APIs your code uses
Attempts:
2 left
💡 Hint

Think about what changes between framework versions can break code.

🔀 Workflow
expert
3:00remaining
Best workflow to track hardware and framework versions automatically

Which workflow best automates tracking hardware and framework versions during model training in an MLOps pipeline?

AUse a script that logs GPU info and framework version at training start, saving to experiment metadata
BOnly track framework version in code comments
CManually write hardware and framework versions in a text file before training
DIgnore hardware info and rely on cloud provider defaults
Attempts:
2 left
💡 Hint

Automation and metadata logging are key for reliable tracking.

Practice

(1/5)
1. Why is it important to track hardware and framework versions in MLOps?
easy
A. To reduce the size of the model files
B. To make the code run faster on any machine
C. To ensure experiments can be reproduced exactly later
D. To avoid using any cloud services

Solution

  1. Step 1: Understand reproducibility in experiments

    Reproducibility means you can get the same results again by using the same setup.
  2. Step 2: Connect version tracking to reproducibility

    Tracking hardware and framework versions helps recreate the exact environment for experiments.
  3. Final Answer:

    To ensure experiments can be reproduced exactly later -> Option C
  4. Quick Check:

    Reproducibility = Track versions [OK]
Hint: Reproducibility needs exact version info [OK]
Common Mistakes:
  • Thinking tracking speeds up code
  • Confusing version tracking with file size
  • Assuming cloud use is related
2. Which of the following is the correct way to store framework version in a Python dictionary for tracking?
easy
A. versions = {"tensorflow": "2.12.0"}
B. versions = (tensorflow: 2.12.0)
C. versions = [tensorflow = "2.12.0"]
D. versions = {tensorflow => "2.12.0"}

Solution

  1. Step 1: Recall Python dictionary syntax

    Python dictionaries use curly braces with key: value pairs, keys and values as strings need quotes.
  2. Step 2: Check each option's syntax

    versions = {"tensorflow": "2.12.0"} uses correct syntax with quotes and colon. Others use invalid syntax for Python dictionaries.
  3. Final Answer:

    versions = {"tensorflow": "2.12.0"} -> Option A
  4. Quick Check:

    Python dict = {key: value} [OK]
Hint: Python dict uses {"key": "value"} syntax [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Using equal sign inside list
  • Using => instead of : in dict
3. Given this Python code snippet for tracking versions:
versions = {"tensorflow": "2.12.0", "cuda": "11.8"}
print(versions.get("cuda"))

What is the output?
medium
A. "11.8"
B. 11.8
C. cuda
D. None

Solution

  1. Step 1: Understand the dictionary and get method

    The dictionary stores strings as values. The get method returns the value for the key "cuda".
  2. Step 2: Identify the value for key "cuda"

    The value is the string "11.8". Printing it outputs 11.8 with quotes because it's a string.
  3. Final Answer:

    "11.8" -> Option A
  4. Quick Check:

    versions.get("cuda") = "11.8" [OK]
Hint: dict.get(key) returns string value with quotes in output [OK]
Common Mistakes:
  • Confusing printed string with quotes included
  • Expecting key name as output
  • Thinking get returns None if key exists
4. You wrote this code to update hardware version:
hardware_versions = {"GPU": "NVIDIA RTX 3090"}
hardware_versions["GPU"] = NVIDIA RTX 4090
print(hardware_versions)

What error will occur?
medium
A. No error, prints updated dictionary
B. NameError because NVIDIA RTX 4090 is not quoted
C. SyntaxError due to invalid dictionary
D. KeyError because GPU key is missing

Solution

  1. Step 1: Check the assignment line syntax

    The value NVIDIA RTX 4090 is not in quotes, so Python treats it as variable names.
  2. Step 2: Understand Python error for undefined names

    Since no variable named NVIDIA exists, Python raises a NameError.
  3. Final Answer:

    NameError because NVIDIA RTX 4090 is not quoted -> Option B
  4. Quick Check:

    Unquoted strings cause NameError [OK]
Hint: Always quote string values in Python [OK]
Common Mistakes:
  • Thinking KeyError occurs for existing keys
  • Assuming syntax error instead of NameError
  • Believing code runs without error
5. You want to track both hardware and framework versions in one dictionary. Which code correctly updates the framework version without losing hardware info?
versions = {"hardware": {"GPU": "NVIDIA RTX 3090"}, "framework": {"tensorflow": "2.11.0", "torch": "1.13.0"}}
# Update tensorflow to 2.12.0 here
hard
A. versions.update({"tensorflow": "2.12.0"})
B. versions["framework"] = {"tensorflow": "2.12.0"}
C. versions["tensorflow"] = "2.12.0"
D. versions["framework"]["tensorflow"] = "2.12.0"

Solution

  1. Step 1: Understand nested dictionary structure

    "framework" key holds a dictionary with tensorflow version inside.
  2. Step 2: Update tensorflow version inside nested dictionary

    Use versions["framework"]["tensorflow"] = "2.12.0" to update without overwriting hardware info.
  3. Step 3: Check other options for overwriting risk

    versions["framework"] = {"tensorflow": "2.12.0"} replaces entire framework dict, versions["tensorflow"] = "2.12.0" and D add keys at top level, losing structure.
  4. Final Answer:

    versions["framework"]["tensorflow"] = "2.12.0" -> Option D
  5. Quick Check:

    Update nested dict key correctly [OK]
Hint: Update nested dict keys to keep all info [OK]
Common Mistakes:
  • Replacing whole nested dict by mistake
  • Adding keys at wrong dictionary level
  • Using update() incorrectly on nested keys