--- language: en tags: - federated-learning - flower - smolvla - robotics - manipulation - so-100 library_name: lerobot license: apache-2.0 --- # SmolVLA Federated Learning Checkpoint This model is a fine-tuned SmolVLA checkpoint trained using federated learning on SO-100 robotics datasets. ## Training Details **Training Type**: Federated Learning (Flower Framework) **Base Model**: lerobot/smolvla_base **Timestamp**: 2025-11-01T08:33:27.949813 **Version**: 0.3.8 ### Hyperparameters - **Server Rounds**: 250 - **Local Epochs**: 20 - **Proximal μ**: 0.01 - **Initial Learning Rate**: 0.0001 - **Batch Size**: 64 - **Fraction Fit**: 0.3 - **Fraction Evaluate**: 1 - **Eval Frequency**: 1 - **Eval Batches**: 16 - **Checkpoint Interval**: 10 - **Dynamic Training Decay**: True - **Scheduler Type**: cosine_warm_restarts - **Adaptive LR Enabled**: True - **Adaptive μ Enabled**: True ### Training convergence chart [Wandb Run](https://wandb.ai/ivelin-eth/zk0/runs/zk0-sim-fl-run-2025-10-28_22-57-59/panel/9mt5s17ot?nw=nwuserivelineth) ![image](/static-proxy?url=https%3A%2F%2Fcdn-uploads.huggingface.co%2Fproduction%2Fuploads%2F63acff55073766d0850bb883%2F0sRD-7gIh-kMX2vVBHs9F.png) ### Training Datasets - **shaunkirby/record-test**: Put the red LEGO in the bin - **ethanCSL/direction_test**: turn to the right side - VALIDATED CLEAN - **gimarchetti/so101-winnie-us5**: rub the plush toy with the bottle - VALIDATED CLEAN - **olingoudey/so101_stationary_mug445**: Put the stuffed animal in the mug. - VALIDATED CLEAN - **sebastiandavidlee/chopsticksTable2Organizer**: Grasp each utensil, classify it, and place it in its designated organizer slot. - VALIDATED CLEAN - **giovipeg/record-test**: Pick and place pink knob. - VALIDATED CLEAN - **VoicAndrei/so100_cubes_three_cameras**: Pick up the green cubes from the white plate and place them in the black recipient. - VALIDATED CLEAN - **qm30631122/so101_grab_pen_20sec_50ep_SCB_102725_2**: Grab pen and put in to cylinder. - VALIDATED CLEAN - **wsi-dev/tictactoe**: Place the X in the top right box. - VALIDATED CLEAN - **KeisukeSato1024/so101_pp_green_box**: Pick and place the green box. - VALIDATED CLEAN - **stanl1y/record_60_simple**: Grab the red pen and place it into the bin. - VALIDATED CLEAN - **RickRain/Imperio**: Grab the block and drop it on the black square. - VALIDATED CLEAN ### Evaluation Datasets - **Hupy440/Two_Cubes_and_Two_Buckets_v2**: Pick up a cube. Is the cube red, put it in the white bucket. Is the cube white, put it in the red bucket. - VALIDATED CLEAN - **dll-hackathon-102025/oct_19_440pm**: Put orange slice in glass. - VALIDATED CLEAN - **shuohsuan/grasp1**: grasp the red cube and put it into the bin. - VALIDATED CLEAN - **yinxinyuchen/p_p_2**: Grab the green cube and put the cube in the green box. - VALIDATED CLEAN - **dll-hackathon-102025/oct_25_umbrella_435pm**: put umbrella in glass. - VALIDATED CLEAN ### Final Evaluation Metrics - **Composite Eval Loss**: 0.16521226037293674 - **Aggregated Client Metrics**: {'avg_client_loss': 0.2547603279352188, 'std_client_loss': 0.11142692836996185, 'avg_client_proximal_loss': 0.01709086100260417, 'avg_client_grad_norm': 1.4328387384613357, 'num_clients': 3, 'param_update_norm': 1.9328867197036743} - **Individual Client Metrics**: 3 clients ### Per-Dataset Results - **Hupy440/Two_Cubes_and_Two_Buckets_v2**: Loss 0.1347 - **dll-hackathon-102025/oct_19_440pm**: Loss 0.1867 - **shuohsuan/grasp1**: Loss 0.1479 - **yinxinyuchen/p_p_2**: Loss 0.1741 - **dll-hackathon-102025/oct_25_umbrella_435pm**: Loss 0.1828 ### Training Insights - **Convergence Trend**: Policy loss: 0.1647 → 0.1652 - **Avg Client Loss Trend**: Started at 0.0000, ended at 0.2093 - **Param Update Norm Trend**: Average 1.450677 - **Client Participation Rate**: Average 3.0 clients per round - **Anomalies**: Client dropouts in rounds: [0] ## Usage This model can be used for robotics manipulation tasks. Load with: ```python from lerobot.policies.smolvla import SmolVLAPolicy policy = SmolVLAPolicy.from_pretrained("ivelin/zk0-smolvla-fl") ``` ### Model Format - Weights saved in secure safetensors format (model.safetensors). - Load with: `from safetensors.torch import load_file; state_dict = load_file("model.safetensors")` - Avoid legacy pytorch_model.bin for security reasons. ## Limitations - Trained on SO-100 datasets only ## Citation If you use this model, please cite: ``` @misc{zk0-smolvla-fl-2025, title={SmolVLA Federated Learning on SO-100}, author={Kilo Code, Grok AI, ivelin.eth, and contributors}, year={2025}, url={https://github.com/ivelin/zk0} } ```