import argparse
import json
import statistics
import time
import torch
from modelexpress.refit.reshard import geometry
class LookupModel(torch.nn.Module):
def __init__(self, parameters):
super().__init__()
for index in range(parameters):
self.register_parameter(
f"p{index}", torch.nn.Parameter(torch.empty(4, device="meta"))
)
self.load_calls = 0
def load_weights(self, weights):
self.load_calls += 1
params = dict(self.named_parameters())
for name, tensor in weights:
param = params[name.split("/", 1)[0]]
param.weight_loader(param, tensor)
def default_loader(param, tensor):
param.data.copy_(tensor)
def serial_capture(model, weights):
recorder = geometry._shared_recorder(weights)
saved = geometry._install_stamps(model, recorder, default_loader)
unsupported, reasons = [], {}
try:
for name, tensor in weights.items():
try:
model.load_weights([(name, tensor)])
except geometry.UnsupportedReshard as error:
source = getattr(tensor, "_name", name)
unsupported.append(source)
reasons[source] = str(error)
finally:
geometry._restore_stamps(saved)
return geometry.CaptureResult(
copies=recorder.copies,
unsupported=unsupported,
unattributed=recorder.unattributed,
unsupported_reasons=reasons,
)
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--sources", type=int, default=4096)
parser.add_argument("--parameters", type=int, default=512)
parser.add_argument("--repeats", type=int, default=3)
args = parser.parse_args()
if min(args.sources, args.parameters, args.repeats) < 1:
parser.error("sources, parameters, and repeats must be positive")
manifest = [
(f"p{i % args.parameters}/source{i}", torch.float32, (4,))
for i in range(args.sources)
]
records = {"serial": [], "bulk": []}
expected = None
for repeat in range(args.repeats):
for arm in ("serial", "bulk") if repeat % 2 == 0 else ("bulk", "serial"):
model = LookupModel(args.parameters)
weights = geometry.build_lazy_weights(manifest)
started = time.perf_counter()
result = (
serial_capture(model, weights)
if arm == "serial"
else geometry.capture_weights(model, weights, default_loader)
)
elapsed = time.perf_counter() - started
if expected is None:
expected = result
if result != expected or result.unsupported or result.unattributed:
raise RuntimeError("Capture arms differ or contain incomplete geometry")
records[arm].append(
{
"seconds": elapsed,
"loader_calls": model.load_calls,
"copies": len(result.copies),
}
)
medians = {
arm: statistics.median(r["seconds"] for r in rows)
for arm, rows in records.items()
}
print(
json.dumps(
{
"scope": "synthetic CPU/meta layout capture only; no vLLM, GPU, or transfer",
"torch": torch.__version__,
"sources": args.sources,
"parameters": args.parameters,
"identical_capture": True,
"samples": records,
"median_seconds": medians,
"median_speedup": medians["serial"] / medians["bulk"],
},
indent=2,
)
)
if __name__ == "__main__":
main()