Archived research examples
Archived examples preserve source, configuration, and provenance for historical study. Their commands require a separate historical checkout and environment; they are outside current runtime support. Read the per-family README before attempting restoration. Original documents inside an archive retain their old wording, including paths and commands that are no longer active.
Retired integrations and model-search variants
| Family | Preserved scope |
|---|---|
| Legacy ViT factory | The former plato.models.vit factory and four ViT configs, including DeepViT, T2T-ViT, SwinV2, and LeViT. |
| FedTP | The complete FedTP experiment, including the server hypernetwork, algorithm, and both ViT/T2T-ViT configs. |
| pFedRLNAS / PerFedRLNAS | All NASViT, MobileNetV3, and DARTS modes, their shared configs, and vendored NASViT support. |
| FedRLNAS | The FedRLNAS experiment, its MNIST config, and its DARTS search-space code. |
| AnyCostFL local ViT | The local vit.py implementation and example_ViT.toml; shared runtime files are copied only as historical context. |
| FedRolex local ViT | The local vit.py implementation and example_ViT.toml; shared runtime files are copied only as historical context. |
| HeteroFL custom MobileNetV3 | The custom mobilenetv3.py branch; shared runtime files and the ResNet config are copied only as historical context. |
| Nanochat | Original integration, runbook, and pinned upstream source snapshot. |
| LeRobot / SmolVLA | Original robotics integration and runbook; upstream policy/data revisions were not pinned. |
The repository archive index
links manifests, immutable source identities, historical restoration notes, and
license provenance. Files marked copied_context explain a retired branch;
they do not retire every current implementation with the same filename.
The active model-search examples
retain AnyCostFL, FedRolex, and HeteroFL ResNet paths plus the separate SysHeteroFL
ResNet example. The legacy model_type = "vit" factory is retired, while generic
Hugging Face and Torchvision families remain separate. The current Hugging Face
causal-LM factory is not an image-classification ViT replacement.
Qwen3 Federated LoRA is the maintained text-model reference. Its pinned base model and tokenizer do not make Nanochat artifacts interchangeable, and it does not replace robotics policy training. For Apple Silicon workloads, consult the separate native MLX guide.
Earlier historical examples and utilities
The four experiments below remain in examples/outdated/. Their 20 source and
configuration files are listed individually so that an entrypoint, helper module
or model definition is not mistaken for an independently supported example.
The notes describe inspected source, not successful execution on current Python
3.13 dependencies. These files do not pin a complete working historical
environment; dependency versions and the matching Plato checkout must be
established separately before attempting a restoration.
Norm bounding
The server uses NumPy to calculate update norms and overrides FedAvg's
aggregate_deltas hook. Its config selects Torchvision MNIST, LeNet-5 and SGD.
The supplied threshold is 5, but omitting it leaves None in the denominator;
threshold validation would need attention. Tensor-to-NumPy conversion also
assumes tensors can be converted directly, so device handling needs explicit
checks. The loop sums clipped updates without sample weighting or a final
average. A restoration must check that aggregation rule against the cited
research before changing it. The override hook still exists in current Plato;
that alone does not qualify this implementation.
| Preserved file | Role |
|---|---|
| norm_bounding.py | Experiment entrypoint. |
| norm_bounding_MNIST_lenet5.toml | MNIST/LeNet-5 configuration; threshold set to 5. |
| norm_bounding_server.py | Update norm calculation and clipped-update aggregation. |
FjORD
The entrypoint imports both local model modules before selecting one. The
preserved code uses PyTorch, NumPy, ptflops for complexity measurement and
einops in its local ViT; even the ResNet entrypoint imports that ViT module.
This is not evidence of a dependency on the separately retired legacy ViT
factory. The supplied config selects CIFAR-10/ResNet-18 with stochastic width
selection and resource limits disabled.
Restoration work would need to check model-factory/trainer interactions, subnet slicing, the distillation loss and aggregation of partially covered parameters. The optional resource-limit branch computes FLOPs but compares model size with both configured limits, which needs separate review. Existing client strategy code does not establish that these training and aggregation paths work together. The local ViT branch needs its own scope and validation; it is not covered by the ResNet planning estimate below.
| Preserved file | Role |
|---|---|
| fjord.py | Entrypoint selecting a local ResNet or ViT model. |
| fjord_algorithm.py | Width selection, parameter slicing and aggregation. |
| fjord_client.py | Client lifecycle handling for the server-selected width. |
| fjord_resnet18_dynamic.toml | CIFAR-10/ResNet-18 configuration; resource limits disabled. |
| fjord_server.py | Per-client width responses and aggregation dispatch. |
| fjord_trainer.py | Server model construction and client subnet training. |
| resnet.py | Local variable-width ResNet model definitions. |
| vit.py | Local variable-width ViT model definition. |
FL-MAML
This experiment uses PyTorch/NumPy, Torchvision MNIST and a custom trainer with
separate inner and outer SGD optimizers, personalized testing and checkpoint
paths. Several concrete source inconsistencies block a straightforward run:
the trainer reads momentum and weight decay from Config().trainer, while the
supplied config puts them under parameters.optimizer; scheduler branches use
undefined optimizers and lr_scheduler names; and the two
training_per_stage calls omit an argument required by its signature.
Fixing those interfaces would not establish MAML correctness. The connection between the copied inner-stage model and outer-stage gradients needs a numerical reference checked against the cited algorithm. Personalization isolation, report handling and checkpoint behavior also need end-to-end validation.
| Preserved file | Role |
|---|---|
| fl_maml.py | Experiment entrypoint wiring client, server and trainer. |
| fl_maml_MNIST_lenet5.toml | MNIST/LeNet-5 configuration and meta learning rate. |
| fl_maml_client.py | Personalization request handling and accuracy reporting. |
| fl_maml_server.py | Training/personalization round and report coordination. |
| fl_maml_trainer.py | Two-stage training, personalization and testing loops. |
CS-MAML
This experiment reuses the sibling FL-MAML client and trainer through
sys.path.append("../fl_maml/"), making the import dependent on the working
directory. It adds central/edge coordination, personalization events and
accuracy reports on top of the same MNIST/PyTorch stack. It therefore inherits
the FL-MAML trainer blockers above.
The entrypoint's four positional server.run arguments still match the current
method signature; they are not, by themselves, a demonstrated API failure.
Restoration would nevertheless need a real central/edge round to check model
and trainer construction, report representation, event completion and
personalization before claiming cross-silo compatibility.
| Preserved file | Role |
|---|---|
| cs_maml.py | Cross-silo entrypoint importing sibling FL-MAML modules. |
| cs_maml_MNIST_lenet5.toml | MNIST/LeNet-5 configuration with one edge silo. |
| cs_maml_edge.py | Edge-client personalization strategy and event waiting. |
| cs_maml_server.py | Central/edge round, report and personalization coordination. |
Restoration planning estimates
These are preliminary estimates in focused implementation/review sessions for bounded local regression fixtures. They are not commitments or promises of a working restoration. Recovering an appropriate dependency environment, resolving research semantics, obtaining external assets and reproducing paper-scale results can require additional work.
| Experiment | Planning estimate | Work needed before claiming a restored example |
|---|---|---|
| Norm bounding | 1–2 sessions | Threshold handling, a reference for the clipping/aggregation rule, and numerical/device regressions. |
| FjORD ResNet | 3–5 sessions | Width selection, real subnet training and aggregation checks; local ViT restoration is separate. |
| FL-MAML | 3–5 sessions | Trainer/config repairs, a two-stage gradient reference, personalization isolation and checkpoint qualification. |
| CS-MAML | 2–3 additional sessions after FL-MAML | A real central/edge numerical round, personalization reporting and lifecycle checks. |
Other preserved utilities
Multimodal dataset utilities and the legacy Gym adapter remain preserved utilities with their original limitations. They are separate from the four experiment inventories above; individual modules are not maintained experiment entrypoints. Consult their archive READMEs for original locations, dependencies and known limitations.
These are research references, not recommended current strategy templates. Start new client extensions from the active examples in the client reference. Preserved lockfiles and captured source hashes establish provenance, not successful execution on current Python 3.13 dependencies. External datasets, checkpoints, and toolchains may need separate historical versions; unknown upstream revisions remain unknown.