跳转至

Units

CPUGPUNPU 都继承自 Unit。它们共享相同的结构,因此工具可以统一地对待每个计算设备,而不会强制机器套用仅限 CUDA 的模型。

from mainboard import Machine

for unit in Machine().units:
    print(unit.kind, unit.vendor, unit.label)
    print(unit.snapshot())

每个 unit 都暴露:

属性 含义
kind 类别标识:UnitKind.CPUUnitKind.GPUUnitKind.NPU
vendor provider 标识,例如 Vendor.APPLEVendor.NVIDIA
name 人类可读的型号名称
architecture 已知时的架构字符串
memory Memory 读数:该单元可见内存的总量、已用和空闲字节
snapshot() 带类型的遥测快照

每个单元都以相同方式报告内存,因此 unit.memory.total_bytesunit.memory.used_gb 在 CPU、GPU 和 NPU 上用法一致。

快照

Unit.snapshot() 返回 UnitSnapshotGPU.snapshot() 返回 GPUSnapshot,它扩展了 UnitSnapshot,加入 GPU 专属的遥测信息。

machine = Machine()
cpu_snapshot = machine.cpu.snapshot("setup")
gpu_snapshot = machine.gpus[0].snapshot("kernel")

快照模型是 Pydantic 模型,可以用 model_dump() 序列化。