mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-04-29 09:08:54 -05:00
Moves the mlsysim package from book/quarto/mlsysim/ to the repo root so it is importable as a proper top-level package across the codebase. Key changes: - mlsysim/fmt.py: new top-level module for all formatting helpers (fmt, sci, check, md_math, fmt_full, fmt_split, etc.), moved out of viz/ - mlsysim/viz/__init__.py: now exports only plot utilities; dashboard.py (marimo-only) is no longer wildcard-exported and must be imported explicitly by marimo labs - mlsysim/__init__.py: added `from . import fmt` and `from .core import constants`; removed broken `from .viz import plots as viz` alias - execute-env.yml: fixed PYTHONPATH from "../../.." to "../.." so chapters resolve to repo root, not parent of repo - 51 QMD files: updated `from mlsysim.viz import <fmt-fns>` to `from mlsysim.fmt import <fmt-fns>` - book/quarto/mlsys/: legacy shadow package contents cleaned up; stub __init__.py remains for backward compat - All Vol1 and Vol2 chapters verified to build with `binder build pdf`
104 lines
2.7 KiB
Python
104 lines
2.7 KiB
Python
# systems.py
|
|
# System Archetypes for MLSys Textbook
|
|
# Ties Hardware, Tier, and Environment into a single "Environment Context".
|
|
|
|
from dataclasses import dataclass
|
|
from .hardware import HardwareSpec, Hardware
|
|
from .deployment import DeploymentTier, Tiers
|
|
from .constants import ureg, Q_
|
|
|
|
@dataclass(frozen=True)
|
|
class SystemArchetype:
|
|
name: str
|
|
hardware: HardwareSpec
|
|
tier: DeploymentTier
|
|
network_bw: Q_
|
|
power_budget: Q_
|
|
|
|
@property
|
|
def ram(self):
|
|
return self.hardware.memory_capacity
|
|
|
|
@property
|
|
def peak_flops(self):
|
|
return self.hardware.peak_flops
|
|
|
|
@property
|
|
def memory_bw(self):
|
|
return self.hardware.memory_bw
|
|
|
|
class Archetypes:
|
|
# --- CLOUD LAYER ---
|
|
Cloud_H100 = SystemArchetype(
|
|
name="H100 Training Cluster",
|
|
hardware=Hardware.H100,
|
|
tier=Tiers.Cloud,
|
|
network_bw=400 * ureg.Gbps, # NDR InfiniBand
|
|
power_budget=700 * ureg.watt
|
|
)
|
|
|
|
Cloud_A100 = SystemArchetype(
|
|
name="A100 Training Cluster",
|
|
hardware=Hardware.A100,
|
|
tier=Tiers.Cloud,
|
|
network_bw=200 * ureg.Gbps, # HDR InfiniBand
|
|
power_budget=400 * ureg.watt
|
|
)
|
|
|
|
Cloud_V100 = SystemArchetype(
|
|
name="V100 Legacy Cluster",
|
|
hardware=Hardware.V100,
|
|
tier=Tiers.Cloud,
|
|
network_bw=100 * ureg.Gbps, # EDR InfiniBand
|
|
power_budget=300 * ureg.watt
|
|
)
|
|
|
|
# --- EDGE LAYER ---
|
|
Edge_Server = SystemArchetype(
|
|
name="Edge Data Center",
|
|
hardware=Hardware.Edge.GenericServer,
|
|
tier=Tiers.Edge,
|
|
network_bw=10 * ureg.Gbps,
|
|
power_budget=300 * ureg.watt
|
|
)
|
|
|
|
Edge_Robotics = SystemArchetype(
|
|
name="Industrial Robotics Hub",
|
|
hardware=Hardware.Edge.JetsonOrinNX,
|
|
tier=Tiers.Edge,
|
|
network_bw=1 * ureg.Gbps,
|
|
power_budget=25 * ureg.watt
|
|
)
|
|
|
|
# --- MOBILE LAYER ---
|
|
Mobile_Phone = SystemArchetype(
|
|
name="Modern Flagship Phone",
|
|
hardware=Hardware.Edge.Generic_Phone,
|
|
tier=Tiers.Mobile,
|
|
network_bw=100 * ureg.Mbps,
|
|
power_budget=5 * ureg.watt
|
|
)
|
|
|
|
# --- TINYML LAYER ---
|
|
TinyML_MCU = SystemArchetype(
|
|
name="Sub-Watt Sensor Node",
|
|
hardware=Hardware.Tiny.ESP32,
|
|
tier=Tiers.Tiny,
|
|
network_bw=1 * ureg.Mbps,
|
|
power_budget=1.2 * ureg.watt
|
|
)
|
|
|
|
TinyML_M7 = SystemArchetype(
|
|
name="Ultra-Low-Power MCU",
|
|
hardware=Hardware.Tiny.Generic_MCU,
|
|
tier=Tiers.Tiny,
|
|
network_bw=1 * ureg.Mbps,
|
|
power_budget=0.1 * ureg.watt
|
|
)
|
|
|
|
class Systems:
|
|
Cloud = Archetypes.Cloud_H100
|
|
Edge = Archetypes.Edge_Robotics
|
|
Mobile = Archetypes.Mobile_Phone
|
|
Tiny = Archetypes.TinyML_MCU
|