mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-07-19 09:24:14 -05:00
78 lines
3.0 KiB
Python
78 lines
3.0 KiB
Python
from __future__ import annotations
|
|
|
|
from mlsysbook_labs import (
|
|
ALL_LAB_IDS,
|
|
CANONICAL_TRACKS,
|
|
get_lab_arc_step,
|
|
get_lab_track_variant,
|
|
list_lab_arc_steps,
|
|
list_lab_variants,
|
|
list_track_arcs,
|
|
track_arc_context_summary,
|
|
validate_track_arcs,
|
|
)
|
|
|
|
|
|
def test_track_arc_registry_matches_catalog_and_tracks():
|
|
assert validate_track_arcs() == ()
|
|
assert tuple(arc.track_id for arc in list_track_arcs()) == tuple(
|
|
profile.track_id for profile in CANONICAL_TRACKS
|
|
)
|
|
assert tuple(step.lab_id for step in list_lab_arc_steps()) == ALL_LAB_IDS
|
|
assert len(list_lab_arc_steps()) == 34
|
|
|
|
|
|
def test_arc_steps_cover_both_volumes_in_order():
|
|
steps = list_lab_arc_steps()
|
|
volume_1 = tuple(step for step in steps if step.volume == "Volume I")
|
|
volume_2 = tuple(step for step in steps if step.volume == "Volume II")
|
|
|
|
assert len(volume_1) == 17
|
|
assert len(volume_2) == 17
|
|
assert tuple(step.sequence for step in volume_1) == tuple(range(1, 18))
|
|
assert tuple(step.sequence for step in volume_2) == tuple(range(1, 18))
|
|
assert get_lab_arc_step("v1_00_architects_portal").concept == "Track selection"
|
|
assert get_lab_arc_step("v2_17_fleet_synthesis").concept == "Volume II synthesis"
|
|
|
|
|
|
def test_track_variants_stay_inside_allowed_arc_families():
|
|
arcs = {arc.track_id: arc for arc in list_track_arcs()}
|
|
for lab_id in ALL_LAB_IDS:
|
|
for variant in list_lab_variants(lab_id):
|
|
arc = arcs[variant.track_id]
|
|
assert variant.hardware_ref in arc.allowed_hardware_refs
|
|
assert variant.model_ref in arc.allowed_model_refs
|
|
|
|
|
|
def test_expected_device_model_pairings_are_enforced():
|
|
assert get_lab_track_variant("v1_10_compression_paradox", "iphone").model_ref == "Models.Vision.MobileNetV2"
|
|
assert get_lab_track_variant("v1_10_compression_paradox", "oura_ring").model_ref == "Models.Tiny.DS_CNN"
|
|
assert get_lab_track_variant("v2_13_price_of_privacy", "oura_ring").model_ref == "Models.Tiny.DS_CNN"
|
|
assert (
|
|
get_lab_track_variant("v1_10_compression_paradox", "robotaxi").hardware_ref
|
|
== "Hardware.Edge.RoboTaxi"
|
|
)
|
|
assert get_lab_track_variant("v2_17_fleet_synthesis", "cloud_fleet").model_ref in {
|
|
"Models.Language.BERT_Base",
|
|
"Models.Language.GPT2",
|
|
"Models.Language.Llama2_70B",
|
|
}
|
|
|
|
|
|
def test_track_arc_context_is_student_facing_not_provenance_copy():
|
|
forbidden = ("Source Trace", "MLSysIM", "Hardware.", "Models.", "Systems.")
|
|
for lab_id in ALL_LAB_IDS:
|
|
for track_id in (profile.track_id for profile in CANONICAL_TRACKS):
|
|
summary = track_arc_context_summary(track_id, lab_id)
|
|
assert set(summary) == {
|
|
"Track mission",
|
|
"System goal",
|
|
"This lab's role",
|
|
"Carry forward",
|
|
"Volume arc",
|
|
}
|
|
assert all(summary.values())
|
|
rendered_text = "\n".join(summary.values())
|
|
for term in forbidden:
|
|
assert term not in rendered_text
|