{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "collapsed_sections": [ "IuJUHIfpP8z0" ], "machine_shape": "hm", "gpuType": "G4" }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { "24723e8c03294d15be85336ea9bca456": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_1ee65fe52d4b42ecb0894490862b3c7e", "IPY_MODEL_2514602dfc6b40648e268e39ac1d10c8", "IPY_MODEL_a539853f250a4aec8e4ffd8bc71ff9c2" ], "layout": "IPY_MODEL_c886a7a452d542d5b0c8960c3dd7aa13" } }, "1ee65fe52d4b42ecb0894490862b3c7e": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_dd0c952f0cfe44508dfa903ab46764e8", "placeholder": "​", "style": "IPY_MODEL_1c943fd9419a47e3a97381d7336e40be", "value": "tokenizer_config.json: " } }, "2514602dfc6b40648e268e39ac1d10c8": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a4363664865f465d8bbeb1171d141f7f", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_7cfc12661a144af8bc91e1065ce12b34", "value": 1 } }, "a539853f250a4aec8e4ffd8bc71ff9c2": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_96b17e358fe94165b02024e69d7d15c7", "placeholder": "​", "style": "IPY_MODEL_59ae9cb0619040a1b8cb67c6da44eeb4", "value": " 2.32k/? [00:00<00:00, 235kB/s]" } }, "c886a7a452d542d5b0c8960c3dd7aa13": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "dd0c952f0cfe44508dfa903ab46764e8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1c943fd9419a47e3a97381d7336e40be": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "a4363664865f465d8bbeb1171d141f7f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "7cfc12661a144af8bc91e1065ce12b34": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "96b17e358fe94165b02024e69d7d15c7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "59ae9cb0619040a1b8cb67c6da44eeb4": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6adb2500ba674ed7888bf11b6796d556": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_f7a1960c0d904b309d04b41a92d9977f", "IPY_MODEL_53daf0de43274b65887a3d0318637d99", "IPY_MODEL_8055eb0fdeac47c98aeb2538c1448140" ], "layout": "IPY_MODEL_05d6d49c41764da7a67450a6595b9381" } }, "f7a1960c0d904b309d04b41a92d9977f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_92b700299881479fb05f12422b9edef0", "placeholder": "​", "style": "IPY_MODEL_6018a8b750064b409bd426c8e56e743f", "value": "spiece.model: 100%" } }, "53daf0de43274b65887a3d0318637d99": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_71a465ed31414eb89eb54a5d5f21c4a7", "max": 791656, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_cca06846be984ed2a1ece91448d401bc", "value": 791656 } }, "8055eb0fdeac47c98aeb2538c1448140": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_75a3b2dfa154470f9e906e9cd6e0438a", "placeholder": "​", "style": "IPY_MODEL_dbe6adece0d24151ad361554052a63b7", "value": " 792k/792k [00:00<00:00, 21.2MB/s]" } }, "05d6d49c41764da7a67450a6595b9381": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "92b700299881479fb05f12422b9edef0": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6018a8b750064b409bd426c8e56e743f": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "71a465ed31414eb89eb54a5d5f21c4a7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cca06846be984ed2a1ece91448d401bc": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "75a3b2dfa154470f9e906e9cd6e0438a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "dbe6adece0d24151ad361554052a63b7": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "5ff6f102b26a42c3b6a6e6db8113fb2c": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_aa6b4d55313e4290a10635020df3b908", "IPY_MODEL_51bbf9b868a4447dac539c61377409cd", "IPY_MODEL_93218ac0328d4806be4614aaec4ca175" ], "layout": "IPY_MODEL_553b088a547a4823951524a5d5db0ff5" } }, "aa6b4d55313e4290a10635020df3b908": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c4707abf7da541bea927cfa85d9bc249", "placeholder": "​", "style": "IPY_MODEL_c03137e50efc4ceca164366285eaa5b0", "value": "tokenizer.json: " } }, "51bbf9b868a4447dac539c61377409cd": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_bf0c72f0900e4acc8df4f751e20d2504", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_ba50a22fa8b24b608f49751b28f4f043", "value": 1 } }, "93218ac0328d4806be4614aaec4ca175": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3c5b09502bd242adacf075417c7aa026", "placeholder": "​", "style": "IPY_MODEL_761b7a504ad24eb09baffec2c5918373", "value": " 1.39M/? [00:00<00:00, 61.1MB/s]" } }, "553b088a547a4823951524a5d5db0ff5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c4707abf7da541bea927cfa85d9bc249": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c03137e50efc4ceca164366285eaa5b0": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "bf0c72f0900e4acc8df4f751e20d2504": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "ba50a22fa8b24b608f49751b28f4f043": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "3c5b09502bd242adacf075417c7aa026": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "761b7a504ad24eb09baffec2c5918373": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "373c550d287944d7b5c3ef87bd9bd25d": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_9518bfe492ea46e08b1aa647302e55b4", "IPY_MODEL_307555b4da5b41f7a115d4c84f477711", "IPY_MODEL_bd57e3da49804991a7b23c94530ffb64" ], "layout": "IPY_MODEL_bd1a61cbb2c54967a2048d600eac33f2" } }, "9518bfe492ea46e08b1aa647302e55b4": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_f8d014e2143f4c40bb29c884d3ea8760", "placeholder": "​", "style": "IPY_MODEL_e0b38e1005524b16acc66bbd8594122f", "value": "config.json: " } }, "307555b4da5b41f7a115d4c84f477711": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b0c74477eb424833a37cd195d6bacc25", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_fae42f86438144318ef99b271e282491", "value": 1 } }, "bd57e3da49804991a7b23c94530ffb64": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d5c64110ecd842c9aed77bfe816b68a6", "placeholder": "​", "style": "IPY_MODEL_17c22ffedabd4d9ba0cfdbeeb39564d4", "value": " 1.21k/? [00:00<00:00, 152kB/s]" } }, "bd1a61cbb2c54967a2048d600eac33f2": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f8d014e2143f4c40bb29c884d3ea8760": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e0b38e1005524b16acc66bbd8594122f": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "b0c74477eb424833a37cd195d6bacc25": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "fae42f86438144318ef99b271e282491": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "d5c64110ecd842c9aed77bfe816b68a6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "17c22ffedabd4d9ba0cfdbeeb39564d4": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "d216077d5b14491fab22646d26a86689": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_e78c54f8e1dc4e1880a236955089bc40", "IPY_MODEL_63182f575b894824b8d030d2b5d66b92", "IPY_MODEL_93c14cbf6662455ba13c444370235c59" ], "layout": "IPY_MODEL_2fac6af2dfeb4800b5b1bcd4dec98ddf" } }, "e78c54f8e1dc4e1880a236955089bc40": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_57bebccad6314893839c13d97368a06d", "placeholder": "​", "style": "IPY_MODEL_5ece509593c144c1becfb8da20c65a7b", "value": "model.safetensors: 100%" } }, "63182f575b894824b8d030d2b5d66b92": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_66b9d3ba1c304d17a38af6347824d3f6", "max": 242043056, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_e7e175b7c7354c969c012a52b514d01a", "value": 242043056 } }, "93c14cbf6662455ba13c444370235c59": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8106d32c86294a94835d1a73714e530c", "placeholder": "​", "style": "IPY_MODEL_35ca5e6ee2914340aca5a1e41749047a", "value": " 242M/242M [00:01<00:00, 395MB/s]" } }, "2fac6af2dfeb4800b5b1bcd4dec98ddf": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "57bebccad6314893839c13d97368a06d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5ece509593c144c1becfb8da20c65a7b": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "66b9d3ba1c304d17a38af6347824d3f6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e7e175b7c7354c969c012a52b514d01a": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "8106d32c86294a94835d1a73714e530c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "35ca5e6ee2914340aca5a1e41749047a": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "34a09a5c6fcf45e1a95671ed31863fec": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_3359227a585a46d28e524d16d6f6d489", "IPY_MODEL_6a72337fbbf141a0804cd1dc20b70f53", "IPY_MODEL_696db4d6a7bd494287bac415cf755af3" ], "layout": "IPY_MODEL_278b761bfc1040dbbfd75ace95cc4092" } }, "3359227a585a46d28e524d16d6f6d489": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b1c61ab1dd8e4f429d8e8d984c057618", "placeholder": "​", "style": "IPY_MODEL_cdcbe1e07af94afba113e6fbef9d886e", "value": "Loading weights: 100%" } }, "6a72337fbbf141a0804cd1dc20b70f53": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_5bc95ffd22f5455e8bdca6bfb0574a9d", "max": 131, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_27d480141d1b49a786a3830d5cee254d", "value": 131 } }, "696db4d6a7bd494287bac415cf755af3": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a0826d96a92e4cf1b812f3fe399f89e8", "placeholder": "​", "style": "IPY_MODEL_2e5ac92a7e774ce28ebc3392eba8379b", "value": " 131/131 [00:00<00:00, 985.04it/s, Materializing param=shared.weight]" } }, "278b761bfc1040dbbfd75ace95cc4092": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b1c61ab1dd8e4f429d8e8d984c057618": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cdcbe1e07af94afba113e6fbef9d886e": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "5bc95ffd22f5455e8bdca6bfb0574a9d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "27d480141d1b49a786a3830d5cee254d": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "a0826d96a92e4cf1b812f3fe399f89e8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2e5ac92a7e774ce28ebc3392eba8379b": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "257af672f7c8412f8981d719af1d8c03": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_bb05df20a6b44effbfcea76e6d9bc344", "IPY_MODEL_a830f656b8674c69bd3302b4ed445aad", "IPY_MODEL_6f8e27fb332f4d55be6e5b9015f87b33" ], "layout": "IPY_MODEL_20910d0d139b44718b75ad6f65d371ad" } }, "bb05df20a6b44effbfcea76e6d9bc344": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_dd5b6d4256874b9fa8ec6c440c426fc5", "placeholder": "​", "style": "IPY_MODEL_74dcd79e18ce44ad963af493b4584f50", "value": "generation_config.json: 100%" } }, "a830f656b8674c69bd3302b4ed445aad": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ba1f9a1c316a41dea4fcbcec2b1f2068", "max": 147, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_fd7f6ab42f25469fabc6fa74a5898bfc", "value": 147 } }, "6f8e27fb332f4d55be6e5b9015f87b33": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_23fb45ac201b4a3f8a4cbdd77eadd1c0", "placeholder": "​", "style": "IPY_MODEL_5846bffa35d54b26b7d11e61deb3aee3", "value": " 147/147 [00:00<00:00, 14.6kB/s]" } }, "20910d0d139b44718b75ad6f65d371ad": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "dd5b6d4256874b9fa8ec6c440c426fc5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "74dcd79e18ce44ad963af493b4584f50": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ba1f9a1c316a41dea4fcbcec2b1f2068": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fd7f6ab42f25469fabc6fa74a5898bfc": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "23fb45ac201b4a3f8a4cbdd77eadd1c0": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5846bffa35d54b26b7d11e61deb3aee3": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ad6a78d9565c40b1a793b26f6b4045e5": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_f778077f0714438581d141e5d64a4298", "IPY_MODEL_0d82445bb47349d7aadebf033f8230b1", "IPY_MODEL_133b9b1f2995485db54fba119812d3bb" ], "layout": "IPY_MODEL_146d181d82cf4855b029e9afa9a6955e" } }, "f778077f0714438581d141e5d64a4298": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_094ad3df15bb4974bac0738733f0a454", "placeholder": "​", "style": "IPY_MODEL_10f20467beab463faccb33a4e7271e4e", "value": "Loading weights: 100%" } }, "0d82445bb47349d7aadebf033f8230b1": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_07cebcc5197c4ca3a9a5576b8a3785c4", "max": 131, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_61dd0acdd3ab4148adf39127ce1a99c7", "value": 131 } }, "133b9b1f2995485db54fba119812d3bb": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3238e4cf442e44f9a834107d022f46e3", "placeholder": "​", "style": "IPY_MODEL_985ff37eb6534f1ca86274897b2584ac", "value": " 131/131 [00:00<00:00, 979.71it/s, Materializing param=shared.weight]" } }, "146d181d82cf4855b029e9afa9a6955e": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "094ad3df15bb4974bac0738733f0a454": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "10f20467beab463faccb33a4e7271e4e": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "07cebcc5197c4ca3a9a5576b8a3785c4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "61dd0acdd3ab4148adf39127ce1a99c7": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "3238e4cf442e44f9a834107d022f46e3": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "985ff37eb6534f1ca86274897b2584ac": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "0c318e9ab72b41fd9318a628803f1569": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_c99973cbbe4341b9848c04ec8883847f", "IPY_MODEL_d25266d36e90414aaf2e7f8b18b0d728", "IPY_MODEL_d697e80b239a4d7e81bc13f586de5b61" ], "layout": "IPY_MODEL_5256f18342374bb28722719bae6dd66a" } }, "c99973cbbe4341b9848c04ec8883847f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_83ca1fe551b445fbbd08ed721f625372", "placeholder": "​", "style": "IPY_MODEL_881e498faf694afea3bcd9f8a3d06177", "value": "Loading weights: 100%" } }, "d25266d36e90414aaf2e7f8b18b0d728": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3b09278e92e140bf8af3f452a92e846c", "max": 131, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_5a85fe2cf41f4153a5a2569603a46028", "value": 131 } }, "d697e80b239a4d7e81bc13f586de5b61": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_881d97191a0f40e3a6181a4e7b56caa5", "placeholder": "​", "style": "IPY_MODEL_b0a1a9dd1c2c4fbcad39f9864b241eb0", "value": " 131/131 [00:00<00:00, 865.47it/s, Materializing param=shared.weight]" } }, "5256f18342374bb28722719bae6dd66a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "83ca1fe551b445fbbd08ed721f625372": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "881e498faf694afea3bcd9f8a3d06177": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "3b09278e92e140bf8af3f452a92e846c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5a85fe2cf41f4153a5a2569603a46028": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "881d97191a0f40e3a6181a4e7b56caa5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b0a1a9dd1c2c4fbcad39f9864b241eb0": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "381847c96f0a45be9b339d383706b903": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_adeea25bfa7a470583a3f079e874c374", "IPY_MODEL_4b2e1a9b4af249eebd8e8640d2ce8f92", "IPY_MODEL_9e18611181894214898c98171b6e94f5" ], "layout": "IPY_MODEL_cc6ca3d3de57457f9841a5eff47bc840" } }, "adeea25bfa7a470583a3f079e874c374": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_fe83458b9cdc40a680714c335468eb56", "placeholder": "​", "style": "IPY_MODEL_660b9b99e80a4bb8946a240978a05a52", "value": "tokenizer_config.json: " } }, "4b2e1a9b4af249eebd8e8640d2ce8f92": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ce2d428a79024035b67f84165daae085", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_6eea0930b90e4c3091b92549e3087277", "value": 1 } }, "9e18611181894214898c98171b6e94f5": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_402bda68a3b547ecb3ac575f65b3767f", "placeholder": "​", "style": "IPY_MODEL_361d4e7291e64daebd656db21af8d6bd", "value": " 2.32k/? [00:00<00:00, 176kB/s]" } }, "cc6ca3d3de57457f9841a5eff47bc840": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fe83458b9cdc40a680714c335468eb56": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "660b9b99e80a4bb8946a240978a05a52": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ce2d428a79024035b67f84165daae085": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "6eea0930b90e4c3091b92549e3087277": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "402bda68a3b547ecb3ac575f65b3767f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "361d4e7291e64daebd656db21af8d6bd": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ac113d9f12c144ce9095e80a0474f25d": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_7fc5bc176d5b4d36bdf2eabe3943bb8a", "IPY_MODEL_489df8a33a944755b804a18b206da8cc", "IPY_MODEL_bde89f446eeb44e993fe7548e6f7eb1c" ], "layout": "IPY_MODEL_675b696c085e4cc18a558193c14a4923" } }, "7fc5bc176d5b4d36bdf2eabe3943bb8a": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_911e2748d18a40f7b2e0b82c476d388a", "placeholder": "​", "style": "IPY_MODEL_47056ee5c5874baf9437eabb086ab01d", "value": "spiece.model: 100%" } }, "489df8a33a944755b804a18b206da8cc": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3ac860fe06464d029bf3ff33b8c96847", "max": 791656, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_df9a2596651042399eb676ac983eed37", "value": 791656 } }, "bde89f446eeb44e993fe7548e6f7eb1c": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3caa229745104f23b91d87e486090781", "placeholder": "​", "style": "IPY_MODEL_2212fb13fdaa4cbab6b4ed05c62006a6", "value": " 792k/792k [00:00<00:00, 16.6MB/s]" } }, "675b696c085e4cc18a558193c14a4923": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "911e2748d18a40f7b2e0b82c476d388a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "47056ee5c5874baf9437eabb086ab01d": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "3ac860fe06464d029bf3ff33b8c96847": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "df9a2596651042399eb676ac983eed37": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "3caa229745104f23b91d87e486090781": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2212fb13fdaa4cbab6b4ed05c62006a6": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "343c22a042c34d6e8831d0a50b97b7cd": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_af2087e2c8f64f689cf063ad402b642e", "IPY_MODEL_4b9a248c56ba44ad901c8dd0da7ed69c", "IPY_MODEL_9ff0d48d3be8414bbf8c6f305f68c55a" ], "layout": "IPY_MODEL_12be9d6fa948456885748617849e6568" } }, "af2087e2c8f64f689cf063ad402b642e": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b9db16da0493475f9a3ca2daf21d41fd", "placeholder": "​", "style": "IPY_MODEL_84eae3bda94548a080dccf84b71ca783", "value": "tokenizer.json: " } }, "4b9a248c56ba44ad901c8dd0da7ed69c": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c2efe7611436460f8cc0cff141077bea", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_25608bbed9de4f27b622c70c23bb49d6", "value": 1 } }, "9ff0d48d3be8414bbf8c6f305f68c55a": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_4d4978e6eabc4a148c577c23e16f6d9f", "placeholder": "​", "style": "IPY_MODEL_8acca8e2d54a4628b766221ce6f069f5", "value": " 1.39M/? [00:00<00:00, 63.9MB/s]" } }, "12be9d6fa948456885748617849e6568": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b9db16da0493475f9a3ca2daf21d41fd": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "84eae3bda94548a080dccf84b71ca783": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "c2efe7611436460f8cc0cff141077bea": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "25608bbed9de4f27b622c70c23bb49d6": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "4d4978e6eabc4a148c577c23e16f6d9f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8acca8e2d54a4628b766221ce6f069f5": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "aa67fa90f77f4249a3a030560d54c33e": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_d54382ce11d1470b89e42bfea7f9a3c5", "IPY_MODEL_4b5e5ee8f4c14b858296cd78a8e2f3ad", "IPY_MODEL_f96d45e35c7c4b2f808a452255970c25" ], "layout": "IPY_MODEL_0f676092842b4934a81b100edb687c13" } }, "d54382ce11d1470b89e42bfea7f9a3c5": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8a77f167ff8c4cdb9ecba6ec535c4328", "placeholder": "​", "style": "IPY_MODEL_5c64130ad08c46d0a1aa9689525b6ecc", "value": "config.json: " } }, "4b5e5ee8f4c14b858296cd78a8e2f3ad": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_995d2bea39a6499c9b23a4b0377f665e", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_2d94dcb396a5478b87a4c76d92430bd3", "value": 1 } }, "f96d45e35c7c4b2f808a452255970c25": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_afea0d7cffb0435dbe80cd327eff4fc2", "placeholder": "​", "style": "IPY_MODEL_e09a190200a34c94a216e7cc0530b515", "value": " 1.21k/? [00:00<00:00, 122kB/s]" } }, "0f676092842b4934a81b100edb687c13": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8a77f167ff8c4cdb9ecba6ec535c4328": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5c64130ad08c46d0a1aa9689525b6ecc": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "995d2bea39a6499c9b23a4b0377f665e": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "2d94dcb396a5478b87a4c76d92430bd3": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "afea0d7cffb0435dbe80cd327eff4fc2": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e09a190200a34c94a216e7cc0530b515": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "cc41ed5e0e5e48449b59e7056a55fd06": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_680096b3941d4d51959eab9f61857378", "IPY_MODEL_d3cdabf3863a4b839d361402919854d6", "IPY_MODEL_8fbc1bbd78e2482b9ef84cf87540d3d5" ], "layout": "IPY_MODEL_5dc8cb0e4d2740eaa126beb480d7d1a5" } }, "680096b3941d4d51959eab9f61857378": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d9e3ae735cda41779d2f37575955d3b7", "placeholder": "​", "style": "IPY_MODEL_0f03dfe168044d149b2cf0fa58c1fbdb", "value": "model.safetensors: 100%" } }, "d3cdabf3863a4b839d361402919854d6": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b26b0d30243a43fd945362d8b560ca82", "max": 242043056, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_20b7a4b9d445474f8f39b9175c037f96", "value": 242043056 } }, "8fbc1bbd78e2482b9ef84cf87540d3d5": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_6ec79acf9bd14c038c79ae00e9e21241", "placeholder": "​", "style": "IPY_MODEL_da4732e13dd94ba3b7ca5ad81abc2c90", "value": " 242M/242M [00:01<00:00, 496MB/s]" } }, "5dc8cb0e4d2740eaa126beb480d7d1a5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d9e3ae735cda41779d2f37575955d3b7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "0f03dfe168044d149b2cf0fa58c1fbdb": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "b26b0d30243a43fd945362d8b560ca82": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "20b7a4b9d445474f8f39b9175c037f96": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "6ec79acf9bd14c038c79ae00e9e21241": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "da4732e13dd94ba3b7ca5ad81abc2c90": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "9d39d9c9765f466dac22228e5567aabb": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_2963d44a1b7641d8a0f4b7b2551f67cc", "IPY_MODEL_4c151aa0103340de867c16e13271814b", "IPY_MODEL_7da4da2a94e040319a82386de8c68470" ], "layout": "IPY_MODEL_8442bbf187d64a9c8894f8a6f7762eba" } }, "2963d44a1b7641d8a0f4b7b2551f67cc": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2c73a519b6f14279bc92066d1bcd2e08", "placeholder": "​", "style": "IPY_MODEL_a48eb9c808d14bfdb3bc1ad461daccc2", "value": "Loading weights: 100%" } }, "4c151aa0103340de867c16e13271814b": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c8d1cba5e69a4edc915b219e7d69b9ae", "max": 131, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_e04f7ebcb84e420cb056fb090b101cd3", "value": 131 } }, "7da4da2a94e040319a82386de8c68470": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d6976eae93774411b07372941952bfcc", "placeholder": "​", "style": "IPY_MODEL_79c2ab33f84b4d70ae793ca484d3ae19", "value": " 131/131 [00:00<00:00, 946.18it/s, Materializing param=shared.weight]" } }, "8442bbf187d64a9c8894f8a6f7762eba": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2c73a519b6f14279bc92066d1bcd2e08": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "a48eb9c808d14bfdb3bc1ad461daccc2": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "c8d1cba5e69a4edc915b219e7d69b9ae": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e04f7ebcb84e420cb056fb090b101cd3": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "d6976eae93774411b07372941952bfcc": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "79c2ab33f84b4d70ae793ca484d3ae19": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "1002e3c473204b9a8becf18bdd5b4897": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_d1aa2ed75c954c6697f87e2bac03f54f", "IPY_MODEL_79b0860a8f1e41f5b99c3279a1ca11b6", "IPY_MODEL_19c7b7f78d7f4a0a99e7fc5e55cb6783" ], "layout": "IPY_MODEL_070231b9c3ca4c69b820124247a23a58" } }, "d1aa2ed75c954c6697f87e2bac03f54f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_394a81cfd3084b29a3e2fe58f829011a", "placeholder": "​", "style": "IPY_MODEL_2eaae2abb9574ec6aaaae731c9b6baa2", "value": "generation_config.json: 100%" } }, "79b0860a8f1e41f5b99c3279a1ca11b6": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_911ec44efdf945a58e52c7d4f0feaddf", "max": 147, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_541f4d24c15a4f8f9252c24601f1ed07", "value": 147 } }, "19c7b7f78d7f4a0a99e7fc5e55cb6783": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b43e74fccded41b088446f47f03b6f65", "placeholder": "​", "style": "IPY_MODEL_1f2fe151f00b40a0ba85d139070d979e", "value": " 147/147 [00:00<00:00, 16.3kB/s]" } }, "070231b9c3ca4c69b820124247a23a58": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "394a81cfd3084b29a3e2fe58f829011a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2eaae2abb9574ec6aaaae731c9b6baa2": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "911ec44efdf945a58e52c7d4f0feaddf": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "541f4d24c15a4f8f9252c24601f1ed07": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "b43e74fccded41b088446f47f03b6f65": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1f2fe151f00b40a0ba85d139070d979e": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "21f72da5e7784bbb88a006c9ac9e7d59": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_bd62887ec21b49a3884f0a8912682b9b", "IPY_MODEL_9873b22da36e472aa28a40fd355b3312", "IPY_MODEL_5172e208110d4b7eb96b761bde052a12" ], "layout": "IPY_MODEL_e60a590182754b178a2b0a3f6be8d819" } }, "bd62887ec21b49a3884f0a8912682b9b": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_4819ee45c94c44d8bfd54b733ffaf72b", "placeholder": "​", "style": "IPY_MODEL_4fcb47311c22449ebd81af42f454f419", "value": "config.json: 100%" } }, "9873b22da36e472aa28a40fd355b3312": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_18cf5de3b5574e10b7c3083414eef98e", "max": 571, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_f49b82320ac148009386ef63c83d19ba", "value": 571 } }, "5172e208110d4b7eb96b761bde052a12": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a8a41c818f954b6e90a900a222d2e35a", "placeholder": "​", "style": "IPY_MODEL_38d4f7d99b3d4e1cb44519bd25d42aab", "value": " 571/571 [00:00<00:00, 70.6kB/s]" } }, "e60a590182754b178a2b0a3f6be8d819": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4819ee45c94c44d8bfd54b733ffaf72b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4fcb47311c22449ebd81af42f454f419": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "18cf5de3b5574e10b7c3083414eef98e": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f49b82320ac148009386ef63c83d19ba": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "a8a41c818f954b6e90a900a222d2e35a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "38d4f7d99b3d4e1cb44519bd25d42aab": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "3969b6bbf4164476880ac867e7534b21": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_29599cf8dcce40648874392ac5a1f7a9", "IPY_MODEL_1c1200649114490b841c62384a1096f8", "IPY_MODEL_d16e612542db43a8a4b1c352918e5655" ], "layout": "IPY_MODEL_f1fc5e40ef2f42f7b01d1664882b4b82" } }, "29599cf8dcce40648874392ac5a1f7a9": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8e1462e7e1914679bbb9b53798fef624", "placeholder": "​", "style": "IPY_MODEL_2303b678e7e94100b54c2459925001d2", "value": "model.safetensors:  65%" } }, "1c1200649114490b841c62384a1096f8": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "danger", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ccebecc5330e42bdb5be22ab243c164b", "max": 1344951957, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_4787f6114eac499e95df139cc5f0df07", "value": 871459636 } }, "d16e612542db43a8a4b1c352918e5655": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b6a86a30c4cc4e9d85fa93527640d935", "placeholder": "​", "style": "IPY_MODEL_b5155a6ff3fe444d8b80594e99394e79", "value": " 871M/1.34G [00:04<00:13, 34.8MB/s]" } }, "f1fc5e40ef2f42f7b01d1664882b4b82": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8e1462e7e1914679bbb9b53798fef624": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2303b678e7e94100b54c2459925001d2": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ccebecc5330e42bdb5be22ab243c164b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4787f6114eac499e95df139cc5f0df07": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "b6a86a30c4cc4e9d85fa93527640d935": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b5155a6ff3fe444d8b80594e99394e79": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "12b8652032e14b549cdadde7d9f8762b": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_986a9e37c31f492a84a53bb1a7423d1a", "IPY_MODEL_5558b2ed1f284084a648b3136714e676", "IPY_MODEL_7977bad659db49559d514047bcc4f2af" ], "layout": "IPY_MODEL_312b199f2996489b80998f2e32be5019" } }, "986a9e37c31f492a84a53bb1a7423d1a": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b17a15e40e7f454384053817f1921744", "placeholder": "​", "style": "IPY_MODEL_73946fddacb94a14ad29f01ced0a475c", "value": "Loading weights: 100%" } }, "5558b2ed1f284084a648b3136714e676": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_5650cfce4ea342f8902bc4af41d535d3", "max": 391, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_2820b707e3814a669ebdb7f7625b9baf", "value": 391 } }, "7977bad659db49559d514047bcc4f2af": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_17edc2fc53c247478b61259095f7ecbe", "placeholder": "​", "style": "IPY_MODEL_ccc42e2949914ec0a12a231f5e52d69c", "value": " 391/391 [00:00<00:00, 1112.55it/s, Materializing param=pooler.dense.weight]" } }, "312b199f2996489b80998f2e32be5019": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b17a15e40e7f454384053817f1921744": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "73946fddacb94a14ad29f01ced0a475c": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "5650cfce4ea342f8902bc4af41d535d3": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2820b707e3814a669ebdb7f7625b9baf": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "17edc2fc53c247478b61259095f7ecbe": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ccc42e2949914ec0a12a231f5e52d69c": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "58c49b827c3e420ea6e70a9aac8c136d": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_db4b0ae7b48748ac9ed709320bbc28a3", "IPY_MODEL_7bd7ec085862456dba876a9dab666dc0", "IPY_MODEL_f5847676a2a54ba8bd33a81462f15541" ], "layout": "IPY_MODEL_00af46557c614a05b88e8471f08d4b8c" } }, "db4b0ae7b48748ac9ed709320bbc28a3": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_dce145531632486a94eaf8fc3a3a5551", "placeholder": "​", "style": "IPY_MODEL_ce0bbb0d01334b5fa034e977df141c1d", "value": "open_clip_model.safetensors: 100%" } }, "7bd7ec085862456dba876a9dab666dc0": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_45d0f2f96aab45339e83a19f82a53113", "max": 598516980, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_33863efe7d214d9aa93375367392b28c", "value": 598516980 } }, "f5847676a2a54ba8bd33a81462f15541": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8dd26447c4814b82a212b880dbd23835", "placeholder": "​", "style": "IPY_MODEL_ca0f4721d0f8469cb57135f76be62c43", "value": " 599M/599M [00:03<00:00, 218MB/s]" } }, "00af46557c614a05b88e8471f08d4b8c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "dce145531632486a94eaf8fc3a3a5551": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ce0bbb0d01334b5fa034e977df141c1d": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "45d0f2f96aab45339e83a19f82a53113": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "33863efe7d214d9aa93375367392b28c": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "8dd26447c4814b82a212b880dbd23835": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ca0f4721d0f8469cb57135f76be62c43": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "9824fef6511f4f5ba3e7c8db946d31d5": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_457fc818876b40ec97551a8f15be10d7", "IPY_MODEL_dbc2f111ad334e4b871db42a6b602ba7", "IPY_MODEL_fb5bce31917e454c8788284bbc334d7b" ], "layout": "IPY_MODEL_f1447f76396b4d9797c794bd1d06dee0" } }, "457fc818876b40ec97551a8f15be10d7": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2193f34379fc47819b1c70fe8ab3d76f", "placeholder": "​", "style": "IPY_MODEL_33fb16c2fb8747f7ab73b89a9bc37fa2", "value": "config.json: 100%" } }, "dbc2f111ad334e4b871db42a6b602ba7": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8edc5c87ee9844b298707f0a69fecbd4", "max": 549, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_427fd4bd8e8748988de382ea5bfe458a", "value": 549 } }, "fb5bce31917e454c8788284bbc334d7b": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_96551532323b4156b26a4f71f3da2600", "placeholder": "​", "style": "IPY_MODEL_80243779c4fc440cbf095728dbfe747b", "value": " 549/549 [00:00<00:00, 69.5kB/s]" } }, "f1447f76396b4d9797c794bd1d06dee0": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2193f34379fc47819b1c70fe8ab3d76f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "33fb16c2fb8747f7ab73b89a9bc37fa2": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "8edc5c87ee9844b298707f0a69fecbd4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "427fd4bd8e8748988de382ea5bfe458a": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "96551532323b4156b26a4f71f3da2600": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "80243779c4fc440cbf095728dbfe747b": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "bcc86a727fc2495ab355254b7336bf25": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_76b1b0d5557740509f889faae57889a7", "IPY_MODEL_4c63aef635824155bf96f27c883d2902", "IPY_MODEL_0ade052cf026451b8ff3d4c6ff6d8a16" ], "layout": "IPY_MODEL_48f2d113e58c4d82b6916b4e56985a58" } }, "76b1b0d5557740509f889faae57889a7": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ebd5d31c8ddd4c1cbf3e067eab921023", "placeholder": "​", "style": "IPY_MODEL_80dafc9c61f74dfeb3821ee3784e363a", "value": "model.safetensors:  94%" } }, "4c63aef635824155bf96f27c883d2902": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "danger", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3b11083c11894b05b3d17d9feedcd225", "max": 1217522888, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_3639ca1df7c44fd0a56f2c36e67fcd1a", "value": 1150347188 } }, "0ade052cf026451b8ff3d4c6ff6d8a16": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_6c899e066b374426b7f79f5905d0119f", "placeholder": "​", "style": "IPY_MODEL_332d5c5def934a9fb570b18a78e08f6f", "value": " 1.15G/1.22G [00:06<00:03, 20.6MB/s]" } }, "48f2d113e58c4d82b6916b4e56985a58": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ebd5d31c8ddd4c1cbf3e067eab921023": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "80dafc9c61f74dfeb3821ee3784e363a": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "3b11083c11894b05b3d17d9feedcd225": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3639ca1df7c44fd0a56f2c36e67fcd1a": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "6c899e066b374426b7f79f5905d0119f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "332d5c5def934a9fb570b18a78e08f6f": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "b79eeed0558545ba8418be813d4a926f": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_72583fa94c6c415f9160ccbf93d41c05", "IPY_MODEL_57608d59847b45378ed620904049f4e2", "IPY_MODEL_adc1477df6bb41fc9df229c42b5e4d26" ], "layout": "IPY_MODEL_6e375d6328ad495b861fd1bd37f40ea3" } }, "72583fa94c6c415f9160ccbf93d41c05": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_06901b9886e841e98518e66ead5e57ce", "placeholder": "​", "style": "IPY_MODEL_82bcb7da4deb4e7c94c17a91555d0c56", "value": "Loading weights: 100%" } }, "57608d59847b45378ed620904049f4e2": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_cfbb1fe97755477abd016cd36664a840", "max": 439, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_44dc1a44b893462a854f8f77ffc51e98", "value": 439 } }, "adc1477df6bb41fc9df229c42b5e4d26": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d21ad0aef45e464a8c623b73dfc5bbc8", "placeholder": "​", "style": "IPY_MODEL_4f66b06b16374b568ff0a7bd2c5a7ff8", "value": " 439/439 [00:00<00:00, 1139.02it/s, Materializing param=layernorm.weight]" } }, "6e375d6328ad495b861fd1bd37f40ea3": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "06901b9886e841e98518e66ead5e57ce": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "82bcb7da4deb4e7c94c17a91555d0c56": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "cfbb1fe97755477abd016cd36664a840": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "44dc1a44b893462a854f8f77ffc51e98": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "d21ad0aef45e464a8c623b73dfc5bbc8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4f66b06b16374b568ff0a7bd2c5a7ff8": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "86ffc306b3f04722b0c8bf48b4d4a091": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_400e0f11dcdc492d84aac1f7760606b9", "IPY_MODEL_3d0c3a73b8a543169e9542daac163428", "IPY_MODEL_e102999a70644a29add1a48ff9f13332" ], "layout": "IPY_MODEL_49a9c6ce24a24cab87966df74fa73a16" } }, "400e0f11dcdc492d84aac1f7760606b9": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_63ab7a7ef4ca4610abe88c7ade214c5c", "placeholder": "​", "style": "IPY_MODEL_3db862a86be24fd8af1adbf23cd298c0", "value": "open_clip_model.safetensors: 100%" } }, "3d0c3a73b8a543169e9542daac163428": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_e4c0341be0b144c3b50c03512717e63b", "max": 10158382892, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_333342ac75234697bd483df980517dcb", "value": 10158382892 } }, "e102999a70644a29add1a48ff9f13332": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a607f3ed61f24b40b1da6d98931726b5", "placeholder": "​", "style": "IPY_MODEL_3c9e99ff0d7742b2af37a1e53430ef6c", "value": " 10.2G/10.2G [00:29<00:00, 377MB/s]" } }, "49a9c6ce24a24cab87966df74fa73a16": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "63ab7a7ef4ca4610abe88c7ade214c5c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3db862a86be24fd8af1adbf23cd298c0": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "e4c0341be0b144c3b50c03512717e63b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "333342ac75234697bd483df980517dcb": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "a607f3ed61f24b40b1da6d98931726b5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3c9e99ff0d7742b2af37a1e53430ef6c": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "3100db19490d4b3b8e34e3822423c51c": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_2026821d0e12465b99848851502be9ad", "IPY_MODEL_90f9a7c6054744149db841bc07515ae3", "IPY_MODEL_fa48a378c226442b91bd01f418a85605" ], "layout": "IPY_MODEL_949876c1624d45d7831e2708a799efd0" } }, "2026821d0e12465b99848851502be9ad": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_08156992aaf54dab843ccfaa3e11d7d6", "placeholder": "​", "style": "IPY_MODEL_6395f20452484331af36014844d3ae9c", "value": "Loading weights: 100%" } }, "90f9a7c6054744149db841bc07515ae3": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_f2071b55975b484592394f60ee48a6c6", "max": 560, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_143a8e77aa444a1a8b3a8bff0a7a3d98", "value": 560 } }, "fa48a378c226442b91bd01f418a85605": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2fcf9f28add14696871fe8ea8082acaa", "placeholder": "​", "style": "IPY_MODEL_4f7cf9d68a04466a9256ff07c0879357", "value": " 560/560 [00:25<00:00, 31.48it/s, Materializing param=shared.weight]" } }, "949876c1624d45d7831e2708a799efd0": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "08156992aaf54dab843ccfaa3e11d7d6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6395f20452484331af36014844d3ae9c": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "f2071b55975b484592394f60ee48a6c6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "143a8e77aa444a1a8b3a8bff0a7a3d98": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "2fcf9f28add14696871fe8ea8082acaa": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4f7cf9d68a04466a9256ff07c0879357": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "1e0d6c1a44d546c686fd4b05f8e573eb": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_f61596509e8b4074ac0b46ae8d92dc44", "IPY_MODEL_b119d00b37e1491783b2c3e0b57e4ba5", "IPY_MODEL_6deae586b6fd4910a3de1ff1c804152e" ], "layout": "IPY_MODEL_15ce98d22c4c4d1ab73a8f76e1c0fc74" } }, "f61596509e8b4074ac0b46ae8d92dc44": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_311a20f1c8f5480db563e33ca2414ee9", "placeholder": "​", "style": "IPY_MODEL_92b4777468da403b9f10a452d3834f6f", "value": "Loading weights: 100%" } }, "b119d00b37e1491783b2c3e0b57e4ba5": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ef7c981bf3ee41d4af263685d3c0d99c", "max": 1327, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_f815be7ec97d439dbba154f850102af0", "value": 1327 } }, "6deae586b6fd4910a3de1ff1c804152e": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3e80b7aa36694d73a8fb033537348a69", "placeholder": "​", "style": "IPY_MODEL_1cf0b688025f4fe89b1d802409a9fdab", "value": " 1327/1327 [00:01<00:00, 1120.01it/s, Materializing param=model.encoder.vision_tower.vision_model.post_layernorm.weight]" } }, "15ce98d22c4c4d1ab73a8f76e1c0fc74": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "311a20f1c8f5480db563e33ca2414ee9": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "92b4777468da403b9f10a452d3834f6f": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ef7c981bf3ee41d4af263685d3c0d99c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f815be7ec97d439dbba154f850102af0": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "3e80b7aa36694d73a8fb033537348a69": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1cf0b688025f4fe89b1d802409a9fdab": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "d85fd01be1104792a5752abbeb66ecca": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_e4da91f150c94a708899e91893b8260f", "IPY_MODEL_9551a30a3c8543509f5de86febf1d929", "IPY_MODEL_5bc3bf999ade470a92a9bd146a0bac97" ], "layout": "IPY_MODEL_0c7c63bc70034f9c8ced466c60b2b539" } }, "e4da91f150c94a708899e91893b8260f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_12eb9c7596234a5b830fa0263a1e86b2", "placeholder": "​", "style": "IPY_MODEL_30daa58cc584499292e5d549637ce94d", "value": "config.json: " } }, "9551a30a3c8543509f5de86febf1d929": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_de62054611ba4c11abc43b3ae613bb0f", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_6ca812adb0574e77a126ef406b3cb254", "value": 1 } }, "5bc3bf999ade470a92a9bd146a0bac97": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_6b3452b56084434a9ced077a233771b3", "placeholder": "​", "style": "IPY_MODEL_650e6c4711184502a388d7cfbd83a538", "value": " 6.47k/? [00:00<00:00, 1.96MB/s]" } }, "0c7c63bc70034f9c8ced466c60b2b539": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "12eb9c7596234a5b830fa0263a1e86b2": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "30daa58cc584499292e5d549637ce94d": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "de62054611ba4c11abc43b3ae613bb0f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "6ca812adb0574e77a126ef406b3cb254": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "6b3452b56084434a9ced077a233771b3": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "650e6c4711184502a388d7cfbd83a538": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "9ea80d99aeb14208a0ec394587fdcecb": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_bf71071cb72141508c84dc0585a01b54", "IPY_MODEL_ba07e94f6efb40a9bbadf7b4a179cd7c", "IPY_MODEL_6258c5d1569344dab45e9166c0486d38" ], "layout": "IPY_MODEL_5b5518940551468c99c02c08bc982906" } }, "bf71071cb72141508c84dc0585a01b54": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_67e0cf995ca347c38ad62c6b46ebcee4", "placeholder": "​", "style": "IPY_MODEL_9a793691172d46f58fcad450d4e58122", "value": "model.safetensors: 100%" } }, "ba07e94f6efb40a9bbadf7b4a179cd7c": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_be1ef0ccbecd4f09bcc23226e2c3952d", "max": 4232105984, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_188f580a7d1c4dc6b98007c9a99f08a4", "value": 4232105984 } }, "6258c5d1569344dab45e9166c0486d38": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_92de8b4a34174f63bf1f1531096dc957", "placeholder": "​", "style": "IPY_MODEL_0273e6c4e28e404fafcb921ec45fabbf", "value": " 4.23G/4.23G [00:08<00:00, 129MB/s]" } }, "5b5518940551468c99c02c08bc982906": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "67e0cf995ca347c38ad62c6b46ebcee4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9a793691172d46f58fcad450d4e58122": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "be1ef0ccbecd4f09bcc23226e2c3952d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "188f580a7d1c4dc6b98007c9a99f08a4": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "92de8b4a34174f63bf1f1531096dc957": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "0273e6c4e28e404fafcb921ec45fabbf": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "f49a3e3e2f3e4cb6bbd4cd8ad4fad015": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_dc5601f115a24f8c849f95cfe1365eae", "IPY_MODEL_ac96ef7f382a433bbd190d248c0d0261", "IPY_MODEL_ac727c1d9f4d4ed39854d6339d59bb14" ], "layout": "IPY_MODEL_4e6a6da0c9164b4197476261b2861740" } }, "dc5601f115a24f8c849f95cfe1365eae": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_452113be1e9346c5abb8e6d85c5b9bdc", "placeholder": "​", "style": "IPY_MODEL_4f79ee7bfa8a4b6597c73da4da376087", "value": "Loading weights: 100%" } }, "ac96ef7f382a433bbd190d248c0d0261": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_09c44e193da4468eb84e66d656d35e06", "max": 1119, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_383de59d766f426599e650090ccd3b8f", "value": 1119 } }, "ac727c1d9f4d4ed39854d6339d59bb14": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a6746069e195420587ed216823bbec09", "placeholder": "​", "style": "IPY_MODEL_7c1bfa66aae947d8bcdacdbf8b098219", "value": " 1119/1119 [00:00<00:00, 1958.18it/s, Materializing param=model.encoder.vision_tower.vision_model.post_layernorm.weight]" } }, "4e6a6da0c9164b4197476261b2861740": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "452113be1e9346c5abb8e6d85c5b9bdc": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4f79ee7bfa8a4b6597c73da4da376087": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "09c44e193da4468eb84e66d656d35e06": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "383de59d766f426599e650090ccd3b8f": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "a6746069e195420587ed216823bbec09": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "7c1bfa66aae947d8bcdacdbf8b098219": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "916177378e6248689f905db0e3faac1b": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_250f3937d8b84268928ef116a9d7c914", "IPY_MODEL_22d0b9556eb44ec0bedb0044a004e3f6", "IPY_MODEL_44b7a55af8f347b68fc350866cc9e677" ], "layout": "IPY_MODEL_5ecbde48e29b4e4197944af3e745c742" } }, "250f3937d8b84268928ef116a9d7c914": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1f44765572a1401aacfd774ec71cd81c", "placeholder": "​", "style": "IPY_MODEL_e784804673654d95a7a3a87ea9d2a6ea", "value": "generation_config.json: 100%" } }, "22d0b9556eb44ec0bedb0044a004e3f6": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1a0ec778e9fd46e792f25b6cbe8ce103", "max": 195, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_55a2886229ee43ac98c8eaef94b6d024", "value": 195 } }, "44b7a55af8f347b68fc350866cc9e677": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_363329452b39461da30a3e299819c35d", "placeholder": "​", "style": "IPY_MODEL_cde4a7221b264e42942931b4983366c5", "value": " 195/195 [00:00<00:00, 67.7kB/s]" } }, "5ecbde48e29b4e4197944af3e745c742": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1f44765572a1401aacfd774ec71cd81c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e784804673654d95a7a3a87ea9d2a6ea": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "1a0ec778e9fd46e792f25b6cbe8ce103": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "55a2886229ee43ac98c8eaef94b6d024": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "363329452b39461da30a3e299819c35d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cde4a7221b264e42942931b4983366c5": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "b4236c52eb8d485b85488bfb5d1945c6": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_a66991ef36ac43e98ada4f9e30815733", "IPY_MODEL_7b624343eb5041068552d4cabf8fb3d4", "IPY_MODEL_4ea6554face64181b5298b8aa8b5ac4f" ], "layout": "IPY_MODEL_f1197c0cbabe4dee88837b922174bf39" } }, "a66991ef36ac43e98ada4f9e30815733": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1714dd827f9440f7ae6dfbeaa1d249b3", "placeholder": "​", "style": "IPY_MODEL_03006cbd2ac34b7aa55832f2a4e52a97", "value": "config.json: 100%" } }, "7b624343eb5041068552d4cabf8fb3d4": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_6fed6051dedc453faaa1e1c3efcb788d", "max": 743, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_69c6c8726d7b408197dcf4b8a96db564", "value": 743 } }, "4ea6554face64181b5298b8aa8b5ac4f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_6125000cffd14e34aa5ea355bf1b670b", "placeholder": "​", "style": "IPY_MODEL_aed3f81cc46b4db683b92cfd64dd61ed", "value": " 743/743 [00:00<00:00, 230kB/s]" } }, "f1197c0cbabe4dee88837b922174bf39": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1714dd827f9440f7ae6dfbeaa1d249b3": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "03006cbd2ac34b7aa55832f2a4e52a97": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6fed6051dedc453faaa1e1c3efcb788d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "69c6c8726d7b408197dcf4b8a96db564": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "6125000cffd14e34aa5ea355bf1b670b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "aed3f81cc46b4db683b92cfd64dd61ed": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "9e6aa66d0f734dbbb1866216c4955908": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_d7f57aba9b804c4385433b3a40f11145", "IPY_MODEL_6f8d311272fd4de293610522592f4619", "IPY_MODEL_788e21f77ca548018c014e4cd4adbadc" ], "layout": "IPY_MODEL_d3bc767bec4e4ae784d663eb24ab9192" } }, "d7f57aba9b804c4385433b3a40f11145": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_bcc80bce807a4e209a488f469dbd571c", "placeholder": "​", "style": "IPY_MODEL_2eadb94231f54d559c965e11b7628244", "value": "unet/diffusion_pytorch_model.safetensors:  66%" } }, "6f8d311272fd4de293610522592f4619": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "danger", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_7d17b763c79c483a9809527e9a62e1ed", "max": 3438167540, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_6fce26e7e5d54183acc3e25157fdcb8b", "value": 2280710103 } }, "788e21f77ca548018c014e4cd4adbadc": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_dc712451810e44e5bc21092cc53a26d6", "placeholder": "​", "style": "IPY_MODEL_ada4cc990391438c8a6ea71017e6aab3", "value": " 2.28G/3.44G [00:05<00:33, 34.7MB/s]" } }, "d3bc767bec4e4ae784d663eb24ab9192": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "bcc80bce807a4e209a488f469dbd571c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2eadb94231f54d559c965e11b7628244": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "7d17b763c79c483a9809527e9a62e1ed": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6fce26e7e5d54183acc3e25157fdcb8b": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "dc712451810e44e5bc21092cc53a26d6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ada4cc990391438c8a6ea71017e6aab3": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "b5caeec369424d35aa17a5237d3eb28c": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_d57d1ccaab1d40dda7550d110d580490", "IPY_MODEL_742227f9ba924fdf8081c41eaf909ac0", "IPY_MODEL_d3c1bf13f7924c6e98942c71ee31aff4" ], "layout": "IPY_MODEL_16353ef7ea3e4d78a8926d57bb92d33c" } }, "d57d1ccaab1d40dda7550d110d580490": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_32780ab4114f4ceb97b2254d6333c857", "placeholder": "​", "style": "IPY_MODEL_24ea0fe7b9ed4efca4f51603c8456baf", "value": "config.json: 100%" } }, "742227f9ba924fdf8081c41eaf909ac0": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d5e85248db8841158d0cca1c5752a464", "max": 547, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_578aa8e859ee4ba3a6aaf10d88ce7f01", "value": 547 } }, "d3c1bf13f7924c6e98942c71ee31aff4": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_0a26a7f86e134cf7ae16b1d8abca92db", "placeholder": "​", "style": "IPY_MODEL_72e48f4b64fa4a5a912ec3c57368cca6", "value": " 547/547 [00:00<00:00, 178kB/s]" } }, "16353ef7ea3e4d78a8926d57bb92d33c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "32780ab4114f4ceb97b2254d6333c857": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "24ea0fe7b9ed4efca4f51603c8456baf": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "d5e85248db8841158d0cca1c5752a464": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "578aa8e859ee4ba3a6aaf10d88ce7f01": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "0a26a7f86e134cf7ae16b1d8abca92db": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "72e48f4b64fa4a5a912ec3c57368cca6": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "dae4c500e3a84430b4c2efbad7c0a50b": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_b6ace246d3a849b98403b88a1c900490", "IPY_MODEL_18ac88db5a6e47b5981bf7352717928f", "IPY_MODEL_fc3f65f18b6248aca0c3c6468939dfe6" ], "layout": "IPY_MODEL_518ad32953004624ab2573a069466bd5" } }, "b6ace246d3a849b98403b88a1c900490": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d21669c0ee5a4264b6461d08cadbf9cb", "placeholder": "​", "style": "IPY_MODEL_1d517cd2a7eb4eb8a545e62201d2674f", "value": "vae/diffusion_pytorch_model.safetensors: 100%" } }, "18ac88db5a6e47b5981bf7352717928f": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ed49f1ebf22c4efc91fdae8a2a332cfe", "max": 334643276, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_4d2f7cf051434ba58a167d34151c7988", "value": 334643276 } }, "fc3f65f18b6248aca0c3c6468939dfe6": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_caee4fda28e94914bc02ed648e99ffd1", "placeholder": "​", "style": "IPY_MODEL_64ff4965f3374ceeb5c23dd21f311b75", "value": " 335M/335M [00:01<00:00, 209MB/s]" } }, "518ad32953004624ab2573a069466bd5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d21669c0ee5a4264b6461d08cadbf9cb": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1d517cd2a7eb4eb8a545e62201d2674f": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ed49f1ebf22c4efc91fdae8a2a332cfe": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4d2f7cf051434ba58a167d34151c7988": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "caee4fda28e94914bc02ed648e99ffd1": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "64ff4965f3374ceeb5c23dd21f311b75": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "92cb29bfdcb14d2fbae60d0db2e599dc": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_2d665d47a69847ca98e7b65b72848dbb", "IPY_MODEL_dde9665f409144299772aa31439a10d1", "IPY_MODEL_a4f6cbff45744a88b2e3a7486ec0bab3" ], "layout": "IPY_MODEL_c39a0167dec44df7a6324fe53d25d775" } }, "2d665d47a69847ca98e7b65b72848dbb": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_e0074055d75d44f78211055d23dbe25e", "placeholder": "​", "style": "IPY_MODEL_d43ae04b31444430b615a92d90af0c67", "value": "config.json: 100%" } }, "dde9665f409144299772aa31439a10d1": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_582423dc8eac4cb684783cbf4dcbf81c", "max": 642, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_b044581223c7497f891d6a8ed8ae5cec", "value": 642 } }, "a4f6cbff45744a88b2e3a7486ec0bab3": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_99e3553f34c245f3b09f053069b0313f", "placeholder": "​", "style": "IPY_MODEL_d511b6b0f00e4e97a36c2032aaeea5aa", "value": " 642/642 [00:00<00:00, 205kB/s]" } }, "c39a0167dec44df7a6324fe53d25d775": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e0074055d75d44f78211055d23dbe25e": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d43ae04b31444430b615a92d90af0c67": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "582423dc8eac4cb684783cbf4dcbf81c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b044581223c7497f891d6a8ed8ae5cec": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "99e3553f34c245f3b09f053069b0313f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d511b6b0f00e4e97a36c2032aaeea5aa": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "9e790e9ba2e84d57801f8a76cee50b84": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_19b7ebd6880a4154b79d7164dcd8e747", "IPY_MODEL_366c35f7189844e292547a80acb11d52", "IPY_MODEL_69ecdc6cb0c74cd18bbafbbfc4b0832c" ], "layout": "IPY_MODEL_b18517a15f5c45988ab0b121b87240de" } }, "19b7ebd6880a4154b79d7164dcd8e747": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2b073a30b5754b2c9e9eedf5ac81fd2b", "placeholder": "​", "style": "IPY_MODEL_5c5be9a4d77347b29f579dbd63a9a5ec", "value": "vae/diffusion_pytorch_model.safetensors: 100%" } }, "366c35f7189844e292547a80acb11d52": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_6f80ddbf954e4229afe33cf0211bcba5", "max": 334643268, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_6fd966d36a4e40ce8a8aa51729f2c39e", "value": 334643268 } }, "69ecdc6cb0c74cd18bbafbbfc4b0832c": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2bd8cae7d3f24754adbad9fd5ffb31e7", "placeholder": "​", "style": "IPY_MODEL_6da9565f73d24ec7a7197a2ddf89b8c2", "value": " 335M/335M [00:02<00:00, 342MB/s]" } }, "b18517a15f5c45988ab0b121b87240de": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2b073a30b5754b2c9e9eedf5ac81fd2b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5c5be9a4d77347b29f579dbd63a9a5ec": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6f80ddbf954e4229afe33cf0211bcba5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6fd966d36a4e40ce8a8aa51729f2c39e": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "2bd8cae7d3f24754adbad9fd5ffb31e7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6da9565f73d24ec7a7197a2ddf89b8c2": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "0806f4444f5e401ea7ecb46e3944ec72": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_3ac97c23f9e2404e91a5f3ba8e8aaf24", "IPY_MODEL_493771cebbb645feaf6430cb49faeb6c", "IPY_MODEL_fcbe6150f95748b4856b6cafd4dac0c6" ], "layout": "IPY_MODEL_6f7c0e8e94db48369589079d2a347ba7" } }, "3ac97c23f9e2404e91a5f3ba8e8aaf24": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_34e1d8cb87354233a7bbb7f4227facbf", "placeholder": "​", "style": "IPY_MODEL_0931bf6c80fa4083a4919de8956d1bf0", "value": "config.json: 100%" } }, "493771cebbb645feaf6430cb49faeb6c": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_072a0d150da944dbad7ac8e6ed55d3b1", "max": 820, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_6e4cba282d65419485f260396cec0168", "value": 820 } }, "fcbe6150f95748b4856b6cafd4dac0c6": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_f8dac8023a3a4211b816eed1e5606146", "placeholder": "​", "style": "IPY_MODEL_48ff7ff846f04fcdba23f9d8d61f1909", "value": " 820/820 [00:00<00:00, 272kB/s]" } }, "6f7c0e8e94db48369589079d2a347ba7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "34e1d8cb87354233a7bbb7f4227facbf": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "0931bf6c80fa4083a4919de8956d1bf0": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "072a0d150da944dbad7ac8e6ed55d3b1": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6e4cba282d65419485f260396cec0168": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "f8dac8023a3a4211b816eed1e5606146": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "48ff7ff846f04fcdba23f9d8d61f1909": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "83db624dd269481fba00470a5f4578d9": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_699d10139f80446ca0bcd58935093d4c", "IPY_MODEL_e7d24d2ef19c4de2a2fd3aac6624f740", "IPY_MODEL_e08e6e15be0f4c95a314ab83017b1d44" ], "layout": "IPY_MODEL_cdae997f3fcc40989873e28501280b23" } }, "699d10139f80446ca0bcd58935093d4c": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8476e5c86aff47f7af7a5f93fa89fa5b", "placeholder": "​", "style": "IPY_MODEL_894348c7e56246bcaa6ec76c9eb3ea79", "value": "vae/diffusion_pytorch_model.safetensors: 100%" } }, "e7d24d2ef19c4de2a2fd3aac6624f740": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_068e703ecd254132b5444a96a88e6efb", "max": 167666902, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_f41f400abc9d4452a50d3dd723863a21", "value": 167666902 } }, "e08e6e15be0f4c95a314ab83017b1d44": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c4a0133c64a543e59f3b2f6f72ceb601", "placeholder": "​", "style": "IPY_MODEL_f3806664d5124955bf63c0de4b3997c7", "value": " 168M/168M [00:00<00:00, 543MB/s]" } }, "cdae997f3fcc40989873e28501280b23": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8476e5c86aff47f7af7a5f93fa89fa5b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "894348c7e56246bcaa6ec76c9eb3ea79": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "068e703ecd254132b5444a96a88e6efb": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f41f400abc9d4452a50d3dd723863a21": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "c4a0133c64a543e59f3b2f6f72ceb601": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f3806664d5124955bf63c0de4b3997c7": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "82ad735baafb4f52969caef576f362aa": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_cbfb04add288420498781e08f0e4c2b3", "IPY_MODEL_b420cdde3c9049b1b3c7c5fba9e43d6c", "IPY_MODEL_e3b0364d012d45e89e75efdf853b5d33" ], "layout": "IPY_MODEL_14fc3819e4fa4e99a90d573d866f1190" } }, "cbfb04add288420498781e08f0e4c2b3": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a74ab33f74e74ff4a3922c198bbfb230", "placeholder": "​", "style": "IPY_MODEL_829b1592775f4785b98459d2d8faa6c8", "value": "config.json: 100%" } }, "b420cdde3c9049b1b3c7c5fba9e43d6c": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_4e3d7219993643d5b58e3810ede15c45", "max": 770, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_8d72417ad4ed4ebbb56a464b504f47d9", "value": 770 } }, "e3b0364d012d45e89e75efdf853b5d33": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d99ae784e2e24d5a9a213f5e23ac6a10", "placeholder": "​", "style": "IPY_MODEL_33372ef9e83b445e870e986da56150fb", "value": " 770/770 [00:00<00:00, 255kB/s]" } }, "14fc3819e4fa4e99a90d573d866f1190": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "a74ab33f74e74ff4a3922c198bbfb230": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "829b1592775f4785b98459d2d8faa6c8": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "4e3d7219993643d5b58e3810ede15c45": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8d72417ad4ed4ebbb56a464b504f47d9": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "d99ae784e2e24d5a9a213f5e23ac6a10": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "33372ef9e83b445e870e986da56150fb": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "387e1f9a6dd344ec835cb165d58e5be3": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_6a456f71ab534745ac2cfbf819ca0a2a", "IPY_MODEL_373644dd7303411090c796c2b19fb9b1", "IPY_MODEL_435cf4bd56204862a94eb3a1928a082c" ], "layout": "IPY_MODEL_efb60f3970074cf79633ec28b5b0a4ab" } }, "6a456f71ab534745ac2cfbf819ca0a2a": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_281e39dcaf4843348f825b42cd959571", "placeholder": "​", "style": "IPY_MODEL_6bb0ac2c7a334c13b808ddf8348cd9a9", "value": "vae/diffusion_pytorch_model.safetensors: 100%" } }, "373644dd7303411090c796c2b19fb9b1": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_867e2f52dd3d4392ab9b88f67fe39bb7", "max": 336213556, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_0f8164635aa54511aeed2ebe3023e8af", "value": 336213556 } }, "435cf4bd56204862a94eb3a1928a082c": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_207850da183346e9908a534b77db313c", "placeholder": "​", "style": "IPY_MODEL_3bc50b21811d42c2a5cd3a6a5c5d1a41", "value": " 336M/336M [00:03<00:00, 84.1MB/s]" } }, "efb60f3970074cf79633ec28b5b0a4ab": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "281e39dcaf4843348f825b42cd959571": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6bb0ac2c7a334c13b808ddf8348cd9a9": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "867e2f52dd3d4392ab9b88f67fe39bb7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "0f8164635aa54511aeed2ebe3023e8af": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "207850da183346e9908a534b77db313c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3bc50b21811d42c2a5cd3a6a5c5d1a41": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "098afab6dd8f4301a55c42ffbc4bc1a6": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_48ff67818d5b468f96fb2bf1d628d7f8", "IPY_MODEL_87de597760df4a4f93988a021406d077", "IPY_MODEL_9c480b6d74364bdba40a594409a00c8f" ], "layout": "IPY_MODEL_50f0ac1ba9a742fbb6f49dcaf1b5c230" } }, "48ff67818d5b468f96fb2bf1d628d7f8": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2c4dcadfcee8406097fe9295e64677d6", "placeholder": "​", "style": "IPY_MODEL_224c8598eb93404e9727639353fe8740", "value": "config.json: 100%" } }, "87de597760df4a4f93988a021406d077": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_7a7ff8243f004514897cdaa90e88fd8b", "max": 571, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_e37994c130cb412ead694fb9e9b76f28", "value": 571 } }, "9c480b6d74364bdba40a594409a00c8f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_7952ed37d0fd4e209eb88c6e32351cb1", "placeholder": "​", "style": "IPY_MODEL_d5a18032f6fe48dc904424f172bae8b8", "value": " 571/571 [00:00<00:00, 174kB/s]" } }, "50f0ac1ba9a742fbb6f49dcaf1b5c230": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2c4dcadfcee8406097fe9295e64677d6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "224c8598eb93404e9727639353fe8740": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "7a7ff8243f004514897cdaa90e88fd8b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e37994c130cb412ead694fb9e9b76f28": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "7952ed37d0fd4e209eb88c6e32351cb1": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d5a18032f6fe48dc904424f172bae8b8": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "9690aae8fbe14f46b024bf58b174e688": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_ebf3964bf3724d169023707339ff243d", "IPY_MODEL_73fd929c196a489cb0d79ca55138e233", "IPY_MODEL_28a80ed75b094e8d8e32544c25dfba4d" ], "layout": "IPY_MODEL_8203853547da417e81da48cdc19b99cc" } }, "ebf3964bf3724d169023707339ff243d": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a6523561b3b741dabc72a6866df1e578", "placeholder": "​", "style": "IPY_MODEL_458a810532f842bda6b02fab34299466", "value": "model.safetensors: 100%" } }, "73fd929c196a489cb0d79ca55138e233": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b9a5612b65664d0daed4554c3bf8fc42", "max": 1344951957, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_537c6117ca9d41e4b4033fa6f0fd3ec9", "value": 1344951957 } }, "28a80ed75b094e8d8e32544c25dfba4d": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_20bf5aa295c44b0f8041386cc006d40f", "placeholder": "​", "style": "IPY_MODEL_586af48d963b4087af67fce0d4593887", "value": " 1.34G/1.34G [00:04<00:00, 248MB/s]" } }, "8203853547da417e81da48cdc19b99cc": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "a6523561b3b741dabc72a6866df1e578": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "458a810532f842bda6b02fab34299466": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "b9a5612b65664d0daed4554c3bf8fc42": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "537c6117ca9d41e4b4033fa6f0fd3ec9": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "20bf5aa295c44b0f8041386cc006d40f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "586af48d963b4087af67fce0d4593887": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "489733c963fd423f9915f5631d9c28b6": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_06f7d780a05f4852b7e4f0ec48cbac71", "IPY_MODEL_9f50c50893c7483383ed52016320ba27", "IPY_MODEL_03f2019752bf497195eca1035a4821c7" ], "layout": "IPY_MODEL_962b56ecfe3d4f87b1c6efd15bb50ee5" } }, "06f7d780a05f4852b7e4f0ec48cbac71": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d45ee4135df4420ca0acc19b2e954f82", "placeholder": "​", "style": "IPY_MODEL_874b235bbc1d41b2a0eb284a5f614617", "value": "Loading weights: 100%" } }, "9f50c50893c7483383ed52016320ba27": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_24ae5a04629c45bd9294e5dfc6c1a6cf", "max": 391, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_505c3be1d3594f29b686d07efa9b3b75", "value": 391 } }, "03f2019752bf497195eca1035a4821c7": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a9bd35331365468bb8841381113c2cfd", "placeholder": "​", "style": "IPY_MODEL_eee15a2c3a094c4e8f87619c823aa3f7", "value": " 391/391 [00:00<00:00, 4563.94it/s, Materializing param=pooler.dense.weight]" } }, "962b56ecfe3d4f87b1c6efd15bb50ee5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d45ee4135df4420ca0acc19b2e954f82": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "874b235bbc1d41b2a0eb284a5f614617": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "24ae5a04629c45bd9294e5dfc6c1a6cf": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "505c3be1d3594f29b686d07efa9b3b75": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "a9bd35331365468bb8841381113c2cfd": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "eee15a2c3a094c4e8f87619c823aa3f7": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "fb80f36faec3480bb2e7d0a5e91f94d7": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_d542a3f200f04b478ffb75806f1597ff", "IPY_MODEL_588515c685634f0f9d728ff09f1dd819", "IPY_MODEL_4993cef3d0ff4ca18ab177eb22a35058" ], "layout": "IPY_MODEL_2d72d54b6dde43aa922138ba23d53543" } }, "d542a3f200f04b478ffb75806f1597ff": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_628e6322b4ab48968dffe18eedc5616a", "placeholder": "​", "style": "IPY_MODEL_8d2431b91666433a8cc38a12d107b280", "value": "config.json: 100%" } }, "588515c685634f0f9d728ff09f1dd819": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_4dbf5b3326ab445b9169bf4020e87b1b", "max": 549, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_eb495e746f8e4fcdb8e32fbd949a0157", "value": 549 } }, "4993cef3d0ff4ca18ab177eb22a35058": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ae5ea3464fd74e219fc2a3f5aa63de91", "placeholder": "​", "style": "IPY_MODEL_87eee5514a06449296978c04323dcbd9", "value": " 549/549 [00:00<00:00, 172kB/s]" } }, "2d72d54b6dde43aa922138ba23d53543": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "628e6322b4ab48968dffe18eedc5616a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8d2431b91666433a8cc38a12d107b280": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "4dbf5b3326ab445b9169bf4020e87b1b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "eb495e746f8e4fcdb8e32fbd949a0157": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "ae5ea3464fd74e219fc2a3f5aa63de91": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "87eee5514a06449296978c04323dcbd9": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "87e38060db254cc3a77418fe9e057ccc": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_489acb9ab5f3410890c92876b892e8ad", "IPY_MODEL_c30d2c66da8747cd8786d72546a4112d", "IPY_MODEL_e2eeb8627ced4e4db193e7fa684cfc6b" ], "layout": "IPY_MODEL_257e86dc1c544829a69e3066863a1102" } }, "489acb9ab5f3410890c92876b892e8ad": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_45658c95562343e5811f5cbd6a7bdc00", "placeholder": "​", "style": "IPY_MODEL_df5d5fdc818444df8d2f6630f4ed9cc8", "value": "model.safetensors: 100%" } }, "c30d2c66da8747cd8786d72546a4112d": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_63d1fecd984c406087de32fe9d0ac75f", "max": 1217522888, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_806689a6877f4dc3bb65337607b59937", "value": 1217522888 } }, "e2eeb8627ced4e4db193e7fa684cfc6b": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b58732dab95240f8a4de07e1c65f3ffd", "placeholder": "​", "style": "IPY_MODEL_25e68f1ce6334839bf341bc17355af50", "value": " 1.22G/1.22G [00:07<00:00, 517MB/s]" } }, "257e86dc1c544829a69e3066863a1102": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "45658c95562343e5811f5cbd6a7bdc00": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "df5d5fdc818444df8d2f6630f4ed9cc8": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "63d1fecd984c406087de32fe9d0ac75f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "806689a6877f4dc3bb65337607b59937": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "b58732dab95240f8a4de07e1c65f3ffd": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "25e68f1ce6334839bf341bc17355af50": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "022e853b7dac4363b99c60a4c3198aa3": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_a9143eb9f5b34d188cff6274a2738d99", "IPY_MODEL_b390c24f5724407cbbe01b8d12e59649", "IPY_MODEL_4c10d044538747e786511795706aa009" ], "layout": "IPY_MODEL_bcc038ed65634100b5561ce17ad6ddc3" } }, "a9143eb9f5b34d188cff6274a2738d99": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_45d9b7c777c44a9d81c3f23dd403a2f1", "placeholder": "​", "style": "IPY_MODEL_802ccaa92fb14fa580d37a3f7c2291e9", "value": "Loading weights: 100%" } }, "b390c24f5724407cbbe01b8d12e59649": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_078d5e5d458d479aa774a4ba696ee9b8", "max": 439, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_dd8efbd295b649da9115409f6f0eabe3", "value": 439 } }, "4c10d044538747e786511795706aa009": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_9eaa6f6fd73b430e87ee3260aa49e035", "placeholder": "​", "style": "IPY_MODEL_74880df8539a4eb48a443cbec90fd9a6", "value": " 439/439 [00:00<00:00, 4556.00it/s, Materializing param=layernorm.weight]" } }, "bcc038ed65634100b5561ce17ad6ddc3": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "45d9b7c777c44a9d81c3f23dd403a2f1": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "802ccaa92fb14fa580d37a3f7c2291e9": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "078d5e5d458d479aa774a4ba696ee9b8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "dd8efbd295b649da9115409f6f0eabe3": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "9eaa6f6fd73b430e87ee3260aa49e035": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "74880df8539a4eb48a443cbec90fd9a6": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "b8f9d71f997e41258a857299413d538a": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_ce1f79e7ef0f4008a7504d8ab1eb1b5b", "IPY_MODEL_670f65049d474883b18e6426403746ff", "IPY_MODEL_bb50237eaeb04e14852e55ce7b2c1ba9" ], "layout": "IPY_MODEL_310c2582a6224a9e914ae05560f4be0c" } }, "ce1f79e7ef0f4008a7504d8ab1eb1b5b": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2853ff9172464668b72fa9b2c4eb62d1", "placeholder": "​", "style": "IPY_MODEL_3c7225dfc4c444109df8bd0336a85067", "value": "Loading weights: 100%" } }, "670f65049d474883b18e6426403746ff": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8617e98aeff640838110086463f91589", "max": 391, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_69d8afebb4ea41dd88814cc8875bbe7d", "value": 391 } }, "bb50237eaeb04e14852e55ce7b2c1ba9": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_029b05e91ef0491cbeecfe5c3cee206a", "placeholder": "​", "style": "IPY_MODEL_3c0e225ac5e844129e24029c004399d4", "value": " 391/391 [00:00<00:00, 4524.69it/s, Materializing param=pooler.dense.weight]" } }, "310c2582a6224a9e914ae05560f4be0c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2853ff9172464668b72fa9b2c4eb62d1": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3c7225dfc4c444109df8bd0336a85067": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "8617e98aeff640838110086463f91589": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "69d8afebb4ea41dd88814cc8875bbe7d": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "029b05e91ef0491cbeecfe5c3cee206a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3c0e225ac5e844129e24029c004399d4": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6a282d199d864902a2446c20216d46a1": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_8c49ce6b4d6440939c0b7531ecabaff4", "IPY_MODEL_c19b07524b8c45b8a45f28e6db11dafb", "IPY_MODEL_52e972926ebf47c38cebea0fdae12ec7" ], "layout": "IPY_MODEL_cb82f80fc79a4f8dbd51dd17a43ba6a5" } }, "8c49ce6b4d6440939c0b7531ecabaff4": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c4592cd2edfc4d78ad34ea7dc935e2d0", "placeholder": "​", "style": "IPY_MODEL_be47f7b779354d7ab149658ee516526d", "value": "Loading weights: 100%" } }, "c19b07524b8c45b8a45f28e6db11dafb": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8f231f0e2ee54264a3b9c7533edd6a59", "max": 439, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_3e7c97c4e88a40308d94a6efe1139bf7", "value": 439 } }, "52e972926ebf47c38cebea0fdae12ec7": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_742ba09db85d4bb78e669244984697ae", "placeholder": "​", "style": "IPY_MODEL_7d851fb7bf7a4e1db584e12c5e53fda3", "value": " 439/439 [00:00<00:00, 4525.82it/s, Materializing param=layernorm.weight]" } }, "cb82f80fc79a4f8dbd51dd17a43ba6a5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c4592cd2edfc4d78ad34ea7dc935e2d0": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "be47f7b779354d7ab149658ee516526d": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "8f231f0e2ee54264a3b9c7533edd6a59": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3e7c97c4e88a40308d94a6efe1139bf7": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "742ba09db85d4bb78e669244984697ae": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "7d851fb7bf7a4e1db584e12c5e53fda3": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } } } } }, "cells": [ { "cell_type": "markdown", "source": [ "# T5 small" ], "metadata": { "id": "IuJUHIfpP8z0" } }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# T5-SMALL: FULL GEOMETRIC TERRAIN MAP\n", "# Everything. Kitchen sink and more.\n", "# ============================================================================\n", "\n", "# %% Cell 1: Load and introspect\n", "import torch\n", "import numpy as np\n", "import math\n", "from transformers import T5ForConditionalGeneration, T5Tokenizer\n", "import matplotlib.pyplot as plt\n", "from scipy.stats import spearmanr\n", "from scipy.spatial.distance import pdist\n", "\n", "model_id = \"google-t5/t5-small\"\n", "print(f\"Loading {model_id}...\")\n", "tokenizer = T5Tokenizer.from_pretrained(model_id, legacy=True)\n", "model = T5ForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.float32)\n", "model.eval()\n", "\n", "print(f\"\\n{'='*70}\")\n", "print(\"ARCHITECTURE INTROSPECTION\")\n", "print(f\"{'='*70}\")\n", "\n", "# Parameter census\n", "components = {}\n", "for name, param in model.named_parameters():\n", " parts = name.split('.')\n", " key = f\"{parts[0]}.{parts[1]}\" if len(parts) > 1 else parts[0]\n", " components[key] = components.get(key, 0) + param.numel()\n", "\n", "print(\"Parameter distribution:\")\n", "total = sum(components.values())\n", "for key, count in sorted(components.items(), key=lambda x: -x[1]):\n", " print(f\" {key:40s} {count:>12,} ({count/total*100:.1f}%)\")\n", "print(f\" {'TOTAL':40s} {total:>12,}\")\n", "\n", "# Embedding details\n", "embed = model.shared # T5 uses shared embedding\n", "E = embed.weight.detach().float().clone()\n", "vocab_size, hidden_dim = E.shape\n", "print(f\"\\nEmbedding: vocab={vocab_size}, dim={hidden_dim}\")\n", "print(f\"Embed params: {vocab_size * hidden_dim:,}\")\n", "\n", "# Check weight tying\n", "enc_embed = model.encoder.embed_tokens.weight\n", "dec_embed = model.decoder.embed_tokens.weight\n", "lm_head = model.lm_head.weight\n", "\n", "enc_tied = torch.allclose(E, enc_embed.detach().float())\n", "dec_tied = torch.allclose(E, dec_embed.detach().float())\n", "lm_tied = torch.allclose(E, lm_head.detach().float())\n", "print(f\"Encoder embed tied to shared: {enc_tied}\")\n", "print(f\"Decoder embed tied to shared: {dec_tied}\")\n", "print(f\"LM head tied to shared: {lm_tied}\")\n", "\n", "# Architecture shape\n", "n_enc_layers = len(model.encoder.block)\n", "n_dec_layers = len(model.decoder.block)\n", "print(f\"\\nEncoder layers: {n_enc_layers}\")\n", "print(f\"Decoder layers: {n_dec_layers}\")\n", "print(f\"Hidden dim: {hidden_dim}\")\n", "\n", "# Attention heads\n", "enc_attn = model.encoder.block[0].layer[0].SelfAttention\n", "print(f\"Attention heads: {enc_attn.n_heads}\")\n", "print(f\"d_kv: {enc_attn.key_value_proj_dim}\")\n", "\n", "# %% Cell 2: Global embedding statistics\n", "print(f\"\\n{'='*70}\")\n", "print(\"GLOBAL EMBEDDING STATISTICS\")\n", "print(f\"{'='*70}\")\n", "\n", "E_np = E.numpy()\n", "norms = np.linalg.norm(E_np, axis=1)\n", "print(f\"Norm mean={norms.mean():.6f} std={norms.std():.6f} min={norms.min():.6f} max={norms.max():.6f}\")\n", "\n", "# Per-dim stats\n", "per_dim_mean = E_np.mean(axis=0)\n", "per_dim_std = E_np.std(axis=0)\n", "print(f\"Per-dim mean of means: {per_dim_mean.mean():.8f}\")\n", "print(f\"Per-dim mean of stds: {per_dim_std.mean():.8f}\")\n", "\n", "# Zero / near-zero embeddings\n", "zero_count = (norms < 1e-6).sum()\n", "print(f\"Zero embeddings: {zero_count} / {vocab_size}\")\n", "\n", "# Min/max norm tokens\n", "min_idx = norms.argmin()\n", "max_idx = norms.argmax()\n", "print(f\"Min norm token {min_idx}: '{tokenizer.decode([min_idx])}' (norm={norms[min_idx]:.6f})\")\n", "print(f\"Max norm token {max_idx}: '{tokenizer.decode([max_idx])}' (norm={norms[max_idx]:.6f})\")\n", "\n", "# Norm histogram percentiles\n", "for p in [1, 5, 25, 50, 75, 95, 99]:\n", " print(f\" {p:>3}% norm: {np.percentile(norms, p):.6f}\")\n", "\n", "# %% Cell 3: Pairwise cosine similarity\n", "print(f\"\\n{'='*70}\")\n", "print(\"COSINE SIMILARITY DISTRIBUTION\")\n", "print(f\"{'='*70}\")\n", "\n", "rng = np.random.default_rng(42)\n", "N_SAMPLE = 5000\n", "sample_idx = rng.choice(vocab_size, size=N_SAMPLE, replace=False)\n", "E_sample = E_np[sample_idx]\n", "E_sample_n = E_sample / (np.linalg.norm(E_sample, axis=1, keepdims=True) + 1e-8)\n", "cos_mat = E_sample_n @ E_sample_n.T\n", "\n", "tri = np.triu_indices(N_SAMPLE, k=1)\n", "flat_cos = cos_mat[tri[0], tri[1]]\n", "\n", "print(f\"Pairs: {len(flat_cos):,}\")\n", "print(f\"Mean: {flat_cos.mean():.6f}\")\n", "print(f\"Std: {flat_cos.std():.6f}\")\n", "print(f\"Median: {np.median(flat_cos):.6f}\")\n", "for p in [1, 5, 25, 50, 75, 95, 99]:\n", " print(f\" {p:>3}%: {np.percentile(flat_cos, p):.6f}\")\n", "\n", "# Check for key constants\n", "for val, name in [(0.0, \"zero\"), (0.19471, \"qwen_mean\"), (0.29514, \"phil_constant\"), (0.5, \"half\")]:\n", " within = (np.abs(flat_cos - val) < 0.01).mean()\n", " nearest = np.abs(flat_cos - val).min()\n", " print(f\" Pairs within ±0.01 of {val:.5f} ({name}): {within*100:.3f}% nearest={nearest:.8f}\")\n", "\n", "# %% Cell 4: Eigenspectrum and intrinsic dimensionality\n", "print(f\"\\n{'='*70}\")\n", "print(\"EIGENSPECTRUM & INTRINSIC DIMENSIONALITY\")\n", "print(f\"{'='*70}\")\n", "\n", "# Use all embeddings for covariance (T5 vocab is small enough)\n", "E_centered = E_np - E_np.mean(axis=0)\n", "cov = (E_centered.T @ E_centered) / vocab_size\n", "eigvals = np.linalg.eigvalsh(cov)[::-1]\n", "\n", "total_var = eigvals.sum()\n", "cumvar = np.cumsum(eigvals) / total_var\n", "\n", "print(f\"Total variance: {total_var:.4f}\")\n", "print(f\"Top 5 eigenvalues: {eigvals[:5]}\")\n", "print(f\"Top eigenvalue %: {eigvals[0]/total_var*100:.2f}%\")\n", "\n", "# Participation ratio\n", "pr = (eigvals.sum()) ** 2 / (eigvals ** 2).sum()\n", "print(f\"Participation ratio: {pr:.1f}\")\n", "print(f\"Participation / dim: {pr/hidden_dim:.3f}\")\n", "\n", "for frac in [0.80, 0.90, 0.95, 0.99]:\n", " n_dims = np.searchsorted(cumvar, frac) + 1\n", " print(f\"Dims for {frac*100:.0f}% var: {n_dims} ({n_dims/hidden_dim*100:.1f}% of {hidden_dim})\")\n", "\n", "# %% Cell 5: Pentachoron geometry (Cayley-Menger)\n", "print(f\"\\n{'='*70}\")\n", "print(\"PENTACHORON GEOMETRY (Cayley-Menger)\")\n", "print(f\"{'='*70}\")\n", "\n", "def cayley_menger_volume_sq(points):\n", " n = len(points)\n", " D = np.zeros((n + 1, n + 1))\n", " D[0, 1:] = 1\n", " D[1:, 0] = 1\n", " for i in range(n):\n", " for j in range(i + 1, n):\n", " d_sq = np.sum((points[i] - points[j]) ** 2)\n", " D[i + 1, j + 1] = d_sq\n", " D[j + 1, i + 1] = d_sq\n", " k = n - 1\n", " sign = (-1) ** (k + 1)\n", " factorial_sq = math.factorial(k) ** 2\n", " denom = (2 ** k) * factorial_sq\n", " det = np.linalg.det(D)\n", " vol_sq = sign * det / denom\n", " return vol_sq\n", "\n", "N_SIMP = 1000\n", "vols_embed = []\n", "vols_random = []\n", "\n", "for _ in range(N_SIMP):\n", " idx = rng.choice(vocab_size, size=5, replace=False)\n", " pts = E_np[idx]\n", " vol_sq = cayley_menger_volume_sq(pts)\n", " if vol_sq > 0:\n", " vols_embed.append(np.sqrt(vol_sq))\n", "\n", " pts_r = rng.normal(0, E_np.std(), size=(5, hidden_dim)).astype(np.float32)\n", " vol_sq_r = cayley_menger_volume_sq(pts_r)\n", " if vol_sq_r > 0:\n", " vols_random.append(np.sqrt(vol_sq_r))\n", "\n", "vols_embed = np.array(vols_embed)\n", "vols_random = np.array(vols_random)\n", "\n", "print(f\"Valid: {len(vols_embed)} / {N_SIMP}\")\n", "print(f\"Mean vol: {vols_embed.mean():.6f}\")\n", "print(f\"Std vol: {vols_embed.std():.6f}\")\n", "print(f\"CV: {vols_embed.std()/vols_embed.mean():.6f}\")\n", "print(f\"Random mean: {vols_random.mean():.6f}\")\n", "print(f\"Ratio: {vols_embed.mean()/vols_random.mean():.6f}\")\n", "\n", "# %% Cell 6: Digit manifold\n", "print(f\"\\n{'='*70}\")\n", "print(\"DIGIT EMBEDDING GEOMETRY\")\n", "print(f\"{'='*70}\")\n", "\n", "# T5 tokenizer encodes digits differently — find them\n", "digit_tokens = []\n", "for d in range(10):\n", " ids = tokenizer.encode(str(d), add_special_tokens=False)\n", " digit_tokens.append(ids[0] if len(ids) == 1 else ids[0])\n", " tok_str = tokenizer.decode([digit_tokens[-1]])\n", " print(f\" '{d}' -> token {digit_tokens[-1]} '{tok_str}' (encode len={len(ids)})\")\n", "\n", "digit_embeds = E_np[digit_tokens]\n", "digit_n = digit_embeds / (np.linalg.norm(digit_embeds, axis=1, keepdims=True) + 1e-8)\n", "cos_digits = digit_n @ digit_n.T\n", "\n", "print(f\"\\n \", end=\"\")\n", "for d in range(10):\n", " print(f\" '{d}' \", end=\"\")\n", "print()\n", "for i in range(10):\n", " print(f\" '{i}' \", end=\"\")\n", " for j in range(10):\n", " if j <= i:\n", " print(\" \", end=\"\")\n", " else:\n", " print(f\"{cos_digits[i,j]:.4f} \", end=\"\")\n", " print()\n", "\n", "# Distance-cosine correlation\n", "pairs = []\n", "for i in range(10):\n", " for j in range(i+1, 10):\n", " pairs.append((abs(i - j), cos_digits[i, j]))\n", "dists, cosines = zip(*pairs)\n", "corr = np.corrcoef(dists, cosines)[0, 1]\n", "adj_mean = np.mean([c for d, c in pairs if d == 1])\n", "nonadj_mean = np.mean([c for d, c in pairs if d > 1])\n", "print(f\"\\nCorrelation(|i-j|, cosine): {corr:.4f}\")\n", "print(f\"Adjacent mean: {adj_mean:.4f}\")\n", "print(f\"Non-adjacent mean: {nonadj_mean:.4f}\")\n", "print(f\"Gap: {adj_mean - nonadj_mean:.4f}\")\n", "\n", "# %% Cell 7: Semantic category structure\n", "print(f\"\\n{'='*70}\")\n", "print(\"SEMANTIC CATEGORY CLUSTERING\")\n", "print(f\"{'='*70}\")\n", "\n", "categories = {\n", " \"animals\": [\"cat\", \"dog\", \"bird\", \"fish\", \"horse\", \"mouse\", \"bear\", \"wolf\", \"deer\", \"fox\",\n", " \"lion\", \"tiger\", \"snake\", \"whale\", \"frog\", \"rabbit\", \"monkey\", \"elephant\"],\n", " \"colors\": [\"red\", \"blue\", \"green\", \"yellow\", \"black\", \"white\", \"orange\", \"purple\", \"brown\", \"pink\"],\n", " \"numbers\": [\"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"ten\"],\n", " \"body\": [\"head\", \"hand\", \"eye\", \"foot\", \"arm\", \"leg\", \"face\", \"mouth\", \"heart\", \"brain\"],\n", " \"food\": [\"bread\", \"meat\", \"rice\", \"milk\", \"fish\", \"salt\", \"sugar\", \"cheese\", \"fruit\", \"water\"],\n", " \"emotions\": [\"happy\", \"sad\", \"angry\", \"fear\", \"love\", \"hate\", \"joy\", \"hope\", \"pain\", \"calm\"],\n", " \"actions\": [\"run\", \"walk\", \"jump\", \"fly\", \"swim\", \"eat\", \"sleep\", \"talk\", \"think\", \"write\"],\n", " \"time\": [\"day\", \"night\", \"year\", \"month\", \"week\", \"hour\", \"morning\", \"evening\", \"today\", \"tomorrow\"],\n", "}\n", "\n", "# Global mean cosine for reference\n", "global_mean_cos = flat_cos.mean()\n", "print(f\"Global mean pairwise cosine: {global_mean_cos:.4f}\\n\")\n", "\n", "for cat_name, words in categories.items():\n", " token_ids = []\n", " valid_words = []\n", " for w in words:\n", " ids = tokenizer.encode(w, add_special_tokens=False)\n", " if len(ids) == 1:\n", " token_ids.append(ids[0])\n", " valid_words.append(w)\n", "\n", " if len(token_ids) < 3:\n", " print(f\" {cat_name:12s}: only {len(token_ids)} single-token words, skipping\")\n", " continue\n", "\n", " cat_embeds = E_np[token_ids]\n", " cat_n = cat_embeds / (np.linalg.norm(cat_embeds, axis=1, keepdims=True) + 1e-8)\n", " n_cat = len(token_ids)\n", " tri_c = np.triu_indices(n_cat, k=1)\n", " intra = (cat_n @ cat_n.T)[tri_c].mean()\n", " print(f\" {cat_name:12s}: n={n_cat:2d} intra_cos={intra:.4f} lift={intra - global_mean_cos:+.4f} words={valid_words[:5]}...\")\n", "\n", "# %% Cell 8: Cross-category relational structure\n", "print(f\"\\n{'='*70}\")\n", "print(\"CROSS-CATEGORY RELATIONAL STRUCTURE\")\n", "print(f\"{'='*70}\")\n", "\n", "# Build a single matrix of all category centroids\n", "centroids = {}\n", "for cat_name, words in categories.items():\n", " token_ids = []\n", " for w in words:\n", " ids = tokenizer.encode(w, add_special_tokens=False)\n", " if len(ids) == 1:\n", " token_ids.append(ids[0])\n", " if len(token_ids) >= 3:\n", " cat_embeds = E_np[token_ids]\n", " centroids[cat_name] = cat_embeds.mean(axis=0)\n", "\n", "cat_names = list(centroids.keys())\n", "centroid_mat = np.stack([centroids[c] for c in cat_names])\n", "centroid_n = centroid_mat / (np.linalg.norm(centroid_mat, axis=1, keepdims=True) + 1e-8)\n", "cross_cos = centroid_n @ centroid_n.T\n", "\n", "print(\"Category centroid cosine similarity:\")\n", "print(f\"{'':12s}\", end=\"\")\n", "for c in cat_names:\n", " print(f\" {c[:7]:>7s}\", end=\"\")\n", "print()\n", "for i, ci in enumerate(cat_names):\n", " print(f\"{ci:12s}\", end=\"\")\n", " for j, cj in enumerate(cat_names):\n", " if j < i:\n", " print(f\" \", end=\"\")\n", " elif j == i:\n", " print(f\" --- \", end=\"\")\n", " else:\n", " print(f\" {cross_cos[i,j]:.4f} \", end=\"\")\n", " print()\n", "\n", "# %% Cell 9: Layer-by-layer hidden state geometry (ENCODER)\n", "print(f\"\\n{'='*70}\")\n", "print(\"ENCODER LAYER-BY-LAYER GEOMETRY\")\n", "print(f\"{'='*70}\")\n", "\n", "# Feed a diverse set of sentences through encoder, capture hidden states at each layer\n", "test_sentences = [\n", " \"The cat sat on the mat.\",\n", " \"Quantum mechanics describes the behavior of particles at the atomic scale.\",\n", " \"She quickly ran to the store before it closed.\",\n", " \"The derivative of x squared is two x.\",\n", " \"Red and blue make purple when mixed together.\",\n", " \"The president signed the new trade agreement yesterday.\",\n", " \"Three plus four equals seven.\",\n", " \"Love is patient, love is kind.\",\n", " \"The function returns a sorted list of integers.\",\n", " \"Mount Everest is the tallest mountain in the world.\",\n", "]\n", "\n", "layer_stats = []\n", "\n", "for sent in test_sentences:\n", " inputs = tokenizer(sent, return_tensors=\"pt\", padding=False)\n", " with torch.no_grad():\n", " outputs = model.encoder(\n", " input_ids=inputs.input_ids,\n", " output_hidden_states=True,\n", " )\n", "\n", " # outputs.hidden_states: tuple of (n_layers+1) tensors, each [1, seq_len, dim]\n", " for layer_idx, hs in enumerate(outputs.hidden_states):\n", " h = hs[0].float().numpy() # [seq_len, dim]\n", " h_norms = np.linalg.norm(h, axis=1)\n", " # Pairwise cosine between token positions\n", " h_n = h / (np.linalg.norm(h, axis=1, keepdims=True) + 1e-8)\n", " if h.shape[0] > 1:\n", " tri_h = np.triu_indices(h.shape[0], k=1)\n", " pairwise_cos = (h_n @ h_n.T)[tri_h]\n", " else:\n", " pairwise_cos = np.array([0.0])\n", "\n", " layer_stats.append({\n", " 'layer': layer_idx,\n", " 'mean_norm': h_norms.mean(),\n", " 'std_norm': h_norms.std(),\n", " 'mean_cos': pairwise_cos.mean(),\n", " 'std_cos': pairwise_cos.std(),\n", " 'seq_len': h.shape[0],\n", " })\n", "\n", "# Aggregate by layer\n", "import pandas as pd\n", "df = pd.DataFrame(layer_stats)\n", "layer_agg = df.groupby('layer').agg({\n", " 'mean_norm': 'mean',\n", " 'std_norm': 'mean',\n", " 'mean_cos': 'mean',\n", " 'std_cos': 'mean',\n", "}).reset_index()\n", "\n", "print(f\"\\nEncoder hidden state geometry across {len(test_sentences)} sentences:\")\n", "print(f\"{'Layer':>5s} {'Norm':>8s} {'NormStd':>8s} {'Cos':>8s} {'CosStd':>8s}\")\n", "for _, row in layer_agg.iterrows():\n", " print(f\"{int(row['layer']):5d} {row['mean_norm']:8.4f} {row['std_norm']:8.4f} {row['mean_cos']:8.4f} {row['std_cos']:8.4f}\")\n", "\n", "# %% Cell 10: Encoder vs Decoder divergence\n", "print(f\"\\n{'='*70}\")\n", "print(\"ENCODER vs DECODER HIDDEN STATE COMPARISON\")\n", "print(f\"{'='*70}\")\n", "\n", "# Run a translation-style task to get both encoder and decoder states\n", "test_input = \"translate English to German: The house is big.\"\n", "inputs = tokenizer(test_input, return_tensors=\"pt\")\n", "decoder_input = tokenizer(\"Das Haus ist groß.\", return_tensors=\"pt\")\n", "\n", "with torch.no_grad():\n", " enc_out = model.encoder(input_ids=inputs.input_ids, output_hidden_states=True)\n", " dec_out = model.decoder(\n", " input_ids=decoder_input.input_ids,\n", " encoder_hidden_states=enc_out.last_hidden_state,\n", " output_hidden_states=True,\n", " )\n", "\n", "print(\"Encoder final hidden state:\")\n", "enc_final = enc_out.last_hidden_state[0].float().numpy()\n", "enc_norms = np.linalg.norm(enc_final, axis=1)\n", "print(f\" Shape: {enc_final.shape}, Norm mean={enc_norms.mean():.4f}, std={enc_norms.std():.4f}\")\n", "\n", "print(\"Decoder final hidden state:\")\n", "dec_final = dec_out.last_hidden_state[0].float().numpy()\n", "dec_norms = np.linalg.norm(dec_final, axis=1)\n", "print(f\" Shape: {dec_final.shape}, Norm mean={dec_norms.mean():.4f}, std={dec_norms.std():.4f}\")\n", "\n", "# Cosine between encoder and decoder token representations\n", "# Compare embedding space: encode same tokens, see if they diverge\n", "common_sent = \"the cat\"\n", "common_ids = tokenizer.encode(common_sent, add_special_tokens=False)\n", "print(f\"\\nCommon tokens '{common_sent}': {common_ids}\")\n", "\n", "for layer_idx in [0, n_enc_layers // 2, n_enc_layers]:\n", " enc_h = enc_out.hidden_states[layer_idx][0].float().numpy()\n", " if layer_idx < len(dec_out.hidden_states):\n", " dec_h = dec_out.hidden_states[layer_idx][0].float().numpy()\n", " # Both start from same embeddings — measure divergence\n", " # Use first few tokens only (they share the embedding)\n", " n_compare = min(enc_h.shape[0], dec_h.shape[0], 5)\n", " cos_vals = []\n", " for t in range(n_compare):\n", " cos = np.dot(enc_h[t], dec_h[t]) / (np.linalg.norm(enc_h[t]) * np.linalg.norm(dec_h[t]) + 1e-8)\n", " cos_vals.append(cos)\n", " print(f\" Layer {layer_idx}: enc-dec cosine per position = {[f'{c:.4f}' for c in cos_vals]}\")\n", "\n", "# %% Cell 11: Token frequency vs geometry\n", "print(f\"\\n{'='*70}\")\n", "print(\"SPECIAL TOKEN STRUCTURE\")\n", "print(f\"{'='*70}\")\n", "\n", "# T5 special tokens\n", "special_tokens = {\n", " 'pad': tokenizer.pad_token_id,\n", " 'eos': tokenizer.eos_token_id,\n", " 'unk': tokenizer.unk_token_id,\n", "}\n", "# Sentinel tokens (T5 uses through )\n", "for i in range(5):\n", " tok = f\"\"\n", " ids = tokenizer.encode(tok, add_special_tokens=False)\n", " if len(ids) == 1:\n", " special_tokens[f'sentinel_{i}'] = ids[0]\n", "\n", "print(\"Special token norms and pairwise cosine:\")\n", "sp_ids = list(special_tokens.values())\n", "sp_names = list(special_tokens.keys())\n", "sp_embeds = E_np[sp_ids]\n", "sp_norms = np.linalg.norm(sp_embeds, axis=1)\n", "\n", "for name, sid, norm in zip(sp_names, sp_ids, sp_norms):\n", " print(f\" {name:15s} id={sid:6d} norm={norm:.6f}\")\n", "\n", "# Sentinel pairwise cosine\n", "if len(sp_ids) > 1:\n", " sp_n = sp_embeds / (np.linalg.norm(sp_embeds, axis=1, keepdims=True) + 1e-8)\n", " sp_cos = sp_n @ sp_n.T\n", " print(f\"\\nSentinel/special pairwise cosine:\")\n", " for i, ni in enumerate(sp_names):\n", " for j, nj in enumerate(sp_names):\n", " if j > i:\n", " print(f\" {ni:15s} ↔ {nj:15s}: {sp_cos[i,j]:.4f}\")\n", "\n", "# %% Cell 12: Relative position bias geometry\n", "print(f\"\\n{'='*70}\")\n", "print(\"RELATIVE POSITION BIAS STRUCTURE\")\n", "print(f\"{'='*70}\")\n", "\n", "# T5 uses relative position biases instead of absolute PE\n", "rpb = model.encoder.block[0].layer[0].SelfAttention.relative_attention_bias\n", "rpb_weight = rpb.weight.detach().float().numpy() # [num_buckets, n_heads]\n", "print(f\"Relative position bias shape: {rpb_weight.shape}\")\n", "print(f\" Num buckets: {rpb_weight.shape[0]}\")\n", "print(f\" Num heads: {rpb_weight.shape[1]}\")\n", "print(f\" Mean: {rpb_weight.mean():.6f}\")\n", "print(f\" Std: {rpb_weight.std():.6f}\")\n", "print(f\" Min: {rpb_weight.min():.6f}\")\n", "print(f\" Max: {rpb_weight.max():.6f}\")\n", "\n", "# Per-head bias profile\n", "print(f\"\\n Per-head statistics:\")\n", "for h in range(rpb_weight.shape[1]):\n", " col = rpb_weight[:, h]\n", " print(f\" Head {h:2d}: mean={col.mean():.4f} std={col.std():.4f} range=[{col.min():.4f}, {col.max():.4f}]\")\n", "\n", "# %% Cell 13: Euclidean distance structure\n", "print(f\"\\n{'='*70}\")\n", "print(\"EUCLIDEAN DISTANCE STRUCTURE\")\n", "print(f\"{'='*70}\")\n", "\n", "N_DIST = 2000\n", "dist_idx = rng.choice(vocab_size, size=N_DIST, replace=False)\n", "dists = pdist(E_np[dist_idx], metric='euclidean')\n", "dists_normed = dists / dists.mean()\n", "\n", "print(f\"Pairwise Euclidean distances ({N_DIST} tokens):\")\n", "print(f\" Mean: {dists.mean():.6f}\")\n", "print(f\" Std: {dists.std():.6f}\")\n", "print(f\" CV: {dists.std()/dists.mean():.6f}\")\n", "for p in [1, 5, 25, 50, 75, 95, 99]:\n", " print(f\" {p:>3}%: {np.percentile(dists, p):.6f}\")\n", "\n", "# %% Cell 14: Visualization\n", "print(f\"\\n{'='*70}\")\n", "print(\"GENERATING VISUALIZATIONS\")\n", "print(f\"{'='*70}\")\n", "\n", "fig, axes = plt.subplots(3, 3, figsize=(18, 15))\n", "fig.suptitle(f\"T5-Small Complete Geometric Terrain Map (vocab={vocab_size}, dim={hidden_dim})\", fontsize=14)\n", "\n", "# 1. Norm distribution\n", "axes[0, 0].hist(norms, bins=200, color='steelblue', alpha=0.8)\n", "axes[0, 0].axvline(norms.mean(), color='red', ls='--', label=f'mean={norms.mean():.3f}')\n", "axes[0, 0].set_title(\"Embedding norm distribution\")\n", "axes[0, 0].legend()\n", "\n", "# 2. Cosine similarity distribution\n", "axes[0, 1].hist(flat_cos, bins=200, color='darkorange', alpha=0.8)\n", "axes[0, 1].axvline(flat_cos.mean(), color='red', ls='--', label=f'mean={flat_cos.mean():.3f}')\n", "axes[0, 1].set_title(\"Pairwise cosine distribution\")\n", "axes[0, 1].legend()\n", "\n", "# 3. Eigenspectrum\n", "axes[0, 2].semilogy(range(min(hidden_dim, 200)), eigvals[:200], color='darkgreen')\n", "axes[0, 2].axhline(eigvals[int(pr)], color='red', ls='--', alpha=0.5, label=f'PR={pr:.0f}')\n", "axes[0, 2].set_title(\"Eigenspectrum (top 200)\")\n", "axes[0, 2].set_xlabel(\"Component\")\n", "axes[0, 2].legend()\n", "\n", "# 4. Pentachoron volume distribution\n", "axes[1, 0].hist(vols_embed, bins=100, alpha=0.6, color='purple', label='Embeddings')\n", "axes[1, 0].hist(vols_random, bins=100, alpha=0.6, color='gray', label='Random')\n", "axes[1, 0].set_title(f\"Pentachoron volumes (ratio={vols_embed.mean()/vols_random.mean():.3f})\")\n", "axes[1, 0].legend()\n", "\n", "# 5. Digit cosine heatmap\n", "im = axes[1, 1].imshow(cos_digits, cmap='YlOrRd', vmin=0, vmax=1)\n", "axes[1, 1].set_xticks(range(10))\n", "axes[1, 1].set_yticks(range(10))\n", "axes[1, 1].set_xticklabels([str(d) for d in range(10)])\n", "axes[1, 1].set_yticklabels([str(d) for d in range(10)])\n", "axes[1, 1].set_title(f\"Digit cosine (|i-j| corr={corr:.3f})\")\n", "plt.colorbar(im, ax=axes[1, 1])\n", "\n", "# 6. Category intra-cosine bar chart\n", "cat_intras = {}\n", "for cat_name, words in categories.items():\n", " token_ids = [tokenizer.encode(w, add_special_tokens=False)[0]\n", " for w in words if len(tokenizer.encode(w, add_special_tokens=False)) == 1]\n", " if len(token_ids) >= 3:\n", " cat_e = E_np[token_ids]\n", " cat_n = cat_e / (np.linalg.norm(cat_e, axis=1, keepdims=True) + 1e-8)\n", " tri_c = np.triu_indices(len(token_ids), k=1)\n", " cat_intras[cat_name] = (cat_n @ cat_n.T)[tri_c].mean()\n", "\n", "cats = list(cat_intras.keys())\n", "vals = [cat_intras[c] for c in cats]\n", "axes[1, 2].barh(cats, vals, color='teal')\n", "axes[1, 2].axvline(global_mean_cos, color='red', ls='--', label=f'global={global_mean_cos:.3f}')\n", "axes[1, 2].set_title(\"Intra-category cosine\")\n", "axes[1, 2].legend()\n", "\n", "# 7. Layer-by-layer norm evolution\n", "axes[2, 0].plot(layer_agg['layer'], layer_agg['mean_norm'], 'o-', color='navy')\n", "axes[2, 0].fill_between(layer_agg['layer'],\n", " layer_agg['mean_norm'] - layer_agg['std_norm'],\n", " layer_agg['mean_norm'] + layer_agg['std_norm'], alpha=0.2)\n", "axes[2, 0].set_title(\"Encoder layer norm evolution\")\n", "axes[2, 0].set_xlabel(\"Layer\")\n", "axes[2, 0].set_ylabel(\"Mean norm\")\n", "\n", "# 8. Layer-by-layer cosine evolution\n", "axes[2, 1].plot(layer_agg['layer'], layer_agg['mean_cos'], 's-', color='crimson')\n", "axes[2, 1].fill_between(layer_agg['layer'],\n", " layer_agg['mean_cos'] - layer_agg['std_cos'],\n", " layer_agg['mean_cos'] + layer_agg['std_cos'], alpha=0.2)\n", "axes[2, 1].set_title(\"Encoder layer pairwise cosine\")\n", "axes[2, 1].set_xlabel(\"Layer\")\n", "axes[2, 1].set_ylabel(\"Mean pairwise cosine\")\n", "\n", "# 9. Relative position bias heatmap (first 4 heads)\n", "rpb_show = rpb_weight[:, :min(8, rpb_weight.shape[1])].T\n", "im2 = axes[2, 2].imshow(rpb_show, aspect='auto', cmap='RdBu_r')\n", "axes[2, 2].set_title(\"Relative position bias (heads × buckets)\")\n", "axes[2, 2].set_xlabel(\"Bucket\")\n", "axes[2, 2].set_ylabel(\"Head\")\n", "plt.colorbar(im2, ax=axes[2, 2])\n", "\n", "plt.tight_layout()\n", "plt.savefig(\"/content/t5_small_terrain_map.png\", dpi=150, bbox_inches='tight')\n", "plt.show()\n", "print(\"Saved: /content/t5_small_terrain_map.png\")\n", "\n", "# %% Cell 15: FULL SUMMARY\n", "print(f\"\\n{'='*70}\")\n", "print(\"T5-SMALL COMPLETE TERRAIN MAP — SUMMARY\")\n", "print(f\"{'='*70}\")\n", "print(f\"Model: {model_id}\")\n", "print(f\"Total params: {total:,}\")\n", "print(f\"Vocab: {vocab_size}\")\n", "print(f\"Hidden dim: {hidden_dim}\")\n", "print(f\"Encoder layers: {n_enc_layers}\")\n", "print(f\"Decoder layers: {n_dec_layers}\")\n", "print(f\"Weight tying: shared→enc={enc_tied}, shared→dec={dec_tied}, shared→lm_head={lm_tied}\")\n", "print(f\"\")\n", "print(f\"--- EMBEDDING GEOMETRY ---\")\n", "print(f\"Mean norm: {norms.mean():.4f}\")\n", "print(f\"Norm std: {norms.std():.4f}\")\n", "print(f\"Mean pairwise cosine: {flat_cos.mean():.4f}\")\n", "print(f\"Cosine std: {flat_cos.std():.4f}\")\n", "print(f\"\")\n", "print(f\"--- INTRINSIC DIMENSIONALITY ---\")\n", "print(f\"Participation ratio: {pr:.1f}\")\n", "print(f\"Participation / dim: {pr/hidden_dim:.3f}\")\n", "print(f\"Dims for 95% variance: {np.searchsorted(cumvar, 0.95)+1} ({(np.searchsorted(cumvar, 0.95)+1)/hidden_dim*100:.1f}%)\")\n", "print(f\"\")\n", "print(f\"--- PENTACHORON GEOMETRY ---\")\n", "print(f\"Valid simplices: {len(vols_embed)}/{N_SIMP}\")\n", "print(f\"Volume CV: {vols_embed.std()/vols_embed.mean():.4f}\")\n", "print(f\"Embed/random ratio: {vols_embed.mean()/vols_random.mean():.4f}\")\n", "print(f\"\")\n", "print(f\"--- DIGIT MANIFOLD ---\")\n", "print(f\"|i-j| correlation: {corr:.4f}\")\n", "print(f\"Adjacent mean: {adj_mean:.4f}\")\n", "print(f\"Non-adjacent mean: {nonadj_mean:.4f}\")\n", "print(f\"Gap: {adj_mean - nonadj_mean:.4f}\")\n", "print(f\"\")\n", "print(f\"--- REFERENCE (Qwen3.5-0.8B) ---\")\n", "print(f\"Participation / dim: 0.535\")\n", "print(f\"Volume CV: 0.208\")\n", "print(f\"Embed/random ratio: 0.984\")\n", "print(f\"Digit |i-j| corr: -0.862\")\n", "print(f\"Mean pairwise cosine: 0.195\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "24723e8c03294d15be85336ea9bca456", "1ee65fe52d4b42ecb0894490862b3c7e", "2514602dfc6b40648e268e39ac1d10c8", "a539853f250a4aec8e4ffd8bc71ff9c2", "c886a7a452d542d5b0c8960c3dd7aa13", "dd0c952f0cfe44508dfa903ab46764e8", "1c943fd9419a47e3a97381d7336e40be", "a4363664865f465d8bbeb1171d141f7f", "7cfc12661a144af8bc91e1065ce12b34", "96b17e358fe94165b02024e69d7d15c7", "59ae9cb0619040a1b8cb67c6da44eeb4", "6adb2500ba674ed7888bf11b6796d556", "f7a1960c0d904b309d04b41a92d9977f", "53daf0de43274b65887a3d0318637d99", "8055eb0fdeac47c98aeb2538c1448140", "05d6d49c41764da7a67450a6595b9381", "92b700299881479fb05f12422b9edef0", "6018a8b750064b409bd426c8e56e743f", "71a465ed31414eb89eb54a5d5f21c4a7", "cca06846be984ed2a1ece91448d401bc", "75a3b2dfa154470f9e906e9cd6e0438a", "dbe6adece0d24151ad361554052a63b7", "5ff6f102b26a42c3b6a6e6db8113fb2c", "aa6b4d55313e4290a10635020df3b908", "51bbf9b868a4447dac539c61377409cd", "93218ac0328d4806be4614aaec4ca175", "553b088a547a4823951524a5d5db0ff5", "c4707abf7da541bea927cfa85d9bc249", "c03137e50efc4ceca164366285eaa5b0", "bf0c72f0900e4acc8df4f751e20d2504", "ba50a22fa8b24b608f49751b28f4f043", "3c5b09502bd242adacf075417c7aa026", "761b7a504ad24eb09baffec2c5918373", "373c550d287944d7b5c3ef87bd9bd25d", "9518bfe492ea46e08b1aa647302e55b4", "307555b4da5b41f7a115d4c84f477711", "bd57e3da49804991a7b23c94530ffb64", "bd1a61cbb2c54967a2048d600eac33f2", "f8d014e2143f4c40bb29c884d3ea8760", "e0b38e1005524b16acc66bbd8594122f", "b0c74477eb424833a37cd195d6bacc25", "fae42f86438144318ef99b271e282491", "d5c64110ecd842c9aed77bfe816b68a6", "17c22ffedabd4d9ba0cfdbeeb39564d4", "d216077d5b14491fab22646d26a86689", "e78c54f8e1dc4e1880a236955089bc40", "63182f575b894824b8d030d2b5d66b92", "93c14cbf6662455ba13c444370235c59", "2fac6af2dfeb4800b5b1bcd4dec98ddf", "57bebccad6314893839c13d97368a06d", "5ece509593c144c1becfb8da20c65a7b", "66b9d3ba1c304d17a38af6347824d3f6", "e7e175b7c7354c969c012a52b514d01a", "8106d32c86294a94835d1a73714e530c", "35ca5e6ee2914340aca5a1e41749047a", "34a09a5c6fcf45e1a95671ed31863fec", "3359227a585a46d28e524d16d6f6d489", "6a72337fbbf141a0804cd1dc20b70f53", "696db4d6a7bd494287bac415cf755af3", "278b761bfc1040dbbfd75ace95cc4092", "b1c61ab1dd8e4f429d8e8d984c057618", "cdcbe1e07af94afba113e6fbef9d886e", "5bc95ffd22f5455e8bdca6bfb0574a9d", "27d480141d1b49a786a3830d5cee254d", "a0826d96a92e4cf1b812f3fe399f89e8", "2e5ac92a7e774ce28ebc3392eba8379b", "257af672f7c8412f8981d719af1d8c03", "bb05df20a6b44effbfcea76e6d9bc344", "a830f656b8674c69bd3302b4ed445aad", "6f8e27fb332f4d55be6e5b9015f87b33", "20910d0d139b44718b75ad6f65d371ad", "dd5b6d4256874b9fa8ec6c440c426fc5", "74dcd79e18ce44ad963af493b4584f50", "ba1f9a1c316a41dea4fcbcec2b1f2068", "fd7f6ab42f25469fabc6fa74a5898bfc", "23fb45ac201b4a3f8a4cbdd77eadd1c0", "5846bffa35d54b26b7d11e61deb3aee3" ] }, "id": "851fSm-YP8Xf", "outputId": "1a8dc801-25db-4736-a50c-5e06534fe0c0" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Loading google-t5/t5-small...\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.12/dist-packages/huggingface_hub/utils/_auth.py:104: UserWarning: \n", "Error while fetching `HF_TOKEN` secret value from your vault: 'Requesting secret HF_TOKEN timed out. Secrets can only be fetched when running from the Colab UI.'.\n", "You are not authenticated with the Hugging Face Hub in this notebook.\n", "If the error persists, please let us know by opening an issue on GitHub (https://github.com/huggingface/huggingface_hub/issues/new).\n", " warnings.warn(\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "tokenizer_config.json: 0.00B [00:00, ?B/s]" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "24723e8c03294d15be85336ea9bca456" } }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "spiece.model: 0%| | 0.00/792k [00:00 token 3 '' (encode len=2)\n", " '1' -> token 209 '1' (encode len=1)\n", " '2' -> token 204 '2' (encode len=1)\n", " '3' -> token 220 '3' (encode len=1)\n", " '4' -> token 314 '4' (encode len=1)\n", " '5' -> token 305 '5' (encode len=1)\n", " '6' -> token 431 '6' (encode len=1)\n", " '7' -> token 489 '7' (encode len=1)\n", " '8' -> token 505 '8' (encode len=1)\n", " '9' -> token 668 '9' (encode len=1)\n", "\n", " '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' \n", " '0' 0.1065 0.1224 0.0930 0.0951 0.0944 0.0786 0.0714 0.0603 0.0604 \n", " '1' 0.6366 0.5376 0.5069 0.4837 0.4674 0.4233 0.4126 0.4101 \n", " '2' 0.6924 0.6331 0.5538 0.5489 0.4875 0.4973 0.4601 \n", " '3' 0.7001 0.6262 0.5723 0.5470 0.4826 0.4794 \n", " '4' 0.7131 0.6527 0.5678 0.5969 0.5673 \n", " '5' 0.6864 0.6399 0.5816 0.5648 \n", " '6' 0.6711 0.6563 0.6208 \n", " '7' 0.6960 0.6510 \n", " '8' 0.6949 \n", " '9' \n", "\n", "Correlation(|i-j|, cosine): -0.5753\n", "Adjacent mean: 0.6219\n", "Non-adjacent mean: 0.4418\n", "Gap: 0.1801\n", "\n", "======================================================================\n", "SEMANTIC CATEGORY CLUSTERING\n", "======================================================================\n", "Global mean pairwise cosine: 0.0568\n", "\n", " animals : n=12 intra_cos=0.2412 lift=+0.1843 words=['cat', 'dog', 'bird', 'fish', 'horse']...\n", " colors : n=10 intra_cos=0.4213 lift=+0.3645 words=['red', 'blue', 'green', 'yellow', 'black']...\n", " numbers : n= 9 intra_cos=0.4968 lift=+0.4400 words=['one', 'two', 'three', 'four', 'five']...\n", " body : n=10 intra_cos=0.2159 lift=+0.1591 words=['head', 'hand', 'eye', 'foot', 'arm']...\n", " food : n=10 intra_cos=0.2479 lift=+0.1911 words=['bread', 'meat', 'rice', 'milk', 'fish']...\n", " emotions : n=10 intra_cos=0.1974 lift=+0.1406 words=['happy', 'sad', 'angry', 'fear', 'love']...\n", " actions : n= 9 intra_cos=0.1832 lift=+0.1264 words=['run', 'walk', 'jump', 'fly', 'swim']...\n", " time : n=10 intra_cos=0.3510 lift=+0.2942 words=['day', 'night', 'year', 'month', 'week']...\n", "\n", "======================================================================\n", "CROSS-CATEGORY RELATIONAL STRUCTURE\n", "======================================================================\n", "Category centroid cosine similarity:\n", " animals colors numbers body food emotion actions time\n", "animals --- 0.2659 0.1281 0.2791 0.4084 0.2179 0.3203 0.1414 \n", "colors --- 0.1491 0.0804 0.2687 0.2303 0.1669 0.1109 \n", "numbers --- 0.1370 0.1077 0.0543 0.1517 0.1540 \n", "body --- 0.2243 0.1783 0.2597 0.1911 \n", "food --- 0.2367 0.1917 0.0826 \n", "emotions --- 0.2590 0.1352 \n", "actions --- 0.2067 \n", "time --- \n", "\n", "======================================================================\n", "ENCODER LAYER-BY-LAYER GEOMETRY\n", "======================================================================\n", "\n", "Encoder hidden state geometry across 10 sentences:\n", "Layer Norm NormStd Cos CosStd\n", " 0 377.2556 89.9262 0.0517 0.1333\n", " 1 761.6038 272.5611 0.2780 0.1546\n", " 2 1092.5837 548.4232 0.3301 0.1438\n", " 3 1428.7957 702.4120 0.3666 0.1412\n", " 4 1829.1211 773.3467 0.3822 0.1362\n", " 5 2378.3035 766.6924 0.4186 0.1257\n", " 6 3.2781 0.5475 0.2109 0.1234\n", "\n", "======================================================================\n", "ENCODER vs DECODER HIDDEN STATE COMPARISON\n", "======================================================================\n", "Encoder final hidden state:\n", " Shape: (11, 512), Norm mean=2.1816, std=0.6956\n", "Decoder final hidden state:\n", " Shape: (6, 512), Norm mean=10.6441, std=1.1094\n", "\n", "Common tokens 'the cat': [8, 1712]\n", " Layer 0: enc-dec cosine per position = ['-0.0236', '0.0643', '0.0173', '0.0875', '0.2020']\n", " Layer 3: enc-dec cosine per position = ['0.0237', '-0.0253', '-0.0505', '0.0221', '-0.0361']\n", " Layer 6: enc-dec cosine per position = ['0.0173', '0.0093', '-0.0477', '0.0096', '0.0194']\n", "\n", "======================================================================\n", "SPECIAL TOKEN STRUCTURE\n", "======================================================================\n", "Special token norms and pairwise cosine:\n", " pad id= 0 norm=848.575134\n", " eos id= 1 norm=428.293274\n", " unk id= 2 norm=354.203705\n", " sentinel_0 id= 32099 norm=472.426208\n", " sentinel_1 id= 32098 norm=321.251099\n", " sentinel_2 id= 32097 norm=313.950562\n", " sentinel_3 id= 32096 norm=324.088318\n", " sentinel_4 id= 32095 norm=349.347961\n", "\n", "Sentinel/special pairwise cosine:\n", " pad ↔ eos : -0.0136\n", " pad ↔ unk : -0.0090\n", " pad ↔ sentinel_0 : 0.0914\n", " pad ↔ sentinel_1 : 0.0522\n", " pad ↔ sentinel_2 : 0.0375\n", " pad ↔ sentinel_3 : 0.0160\n", " pad ↔ sentinel_4 : 0.0444\n", " eos ↔ unk : -0.0218\n", " eos ↔ sentinel_0 : 0.0611\n", " eos ↔ sentinel_1 : 0.0329\n", " eos ↔ sentinel_2 : 0.0474\n", " eos ↔ sentinel_3 : 0.0481\n", " eos ↔ sentinel_4 : 0.0686\n", " unk ↔ sentinel_0 : 0.0401\n", " unk ↔ sentinel_1 : 0.0470\n", " unk ↔ sentinel_2 : 0.0336\n", " unk ↔ sentinel_3 : 0.0134\n", " unk ↔ sentinel_4 : 0.0320\n", " sentinel_0 ↔ sentinel_1 : 0.2999\n", " sentinel_0 ↔ sentinel_2 : 0.1659\n", " sentinel_0 ↔ sentinel_3 : 0.4182\n", " sentinel_0 ↔ sentinel_4 : 0.4294\n", " sentinel_1 ↔ sentinel_2 : 0.2822\n", " sentinel_1 ↔ sentinel_3 : 0.3123\n", " sentinel_1 ↔ sentinel_4 : 0.0910\n", " sentinel_2 ↔ sentinel_3 : 0.2852\n", " sentinel_2 ↔ sentinel_4 : 0.4643\n", " sentinel_3 ↔ sentinel_4 : 0.4336\n", "\n", "======================================================================\n", "RELATIVE POSITION BIAS STRUCTURE\n", "======================================================================\n", "Relative position bias shape: (32, 8)\n", " Num buckets: 32\n", " Num heads: 8\n", " Mean: -0.748865\n", " Std: 2.727370\n", " Min: -10.812500\n", " Max: 6.125000\n", "\n", " Per-head statistics:\n", " Head 0: mean=-2.7580 std=3.6193 range=[-9.9375, 5.4375]\n", " Head 1: mean=0.4210 std=1.1991 range=[-1.5078, 4.4688]\n", " Head 2: mean=0.8310 std=2.1798 range=[-10.8125, 1.6016]\n", " Head 3: mean=0.6354 std=0.3278 range=[-0.2480, 1.0391]\n", " Head 4: mean=-1.7431 std=3.0653 range=[-6.8438, 2.9219]\n", " Head 5: mean=-0.6045 std=1.6305 range=[-2.3750, 6.1250]\n", " Head 6: mean=-0.8523 std=2.7712 range=[-4.3750, 3.6875]\n", " Head 7: mean=-1.9205 std=2.8580 range=[-5.1250, 5.5625]\n", "\n", "======================================================================\n", "EUCLIDEAN DISTANCE STRUCTURE\n", "======================================================================\n", "Pairwise Euclidean distances (2000 tokens):\n", " Mean: 721.251882\n", " Std: 74.635223\n", " CV: 0.103480\n", " 1%: 573.019948\n", " 5%: 617.856784\n", " 25%: 676.141804\n", " 50%: 715.808160\n", " 75%: 757.081256\n", " 95%: 835.460658\n", " 99%: 977.819711\n", "\n", "======================================================================\n", "GENERATING VISUALIZATIONS\n", "======================================================================\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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D1TjpM2ZMweLFi1CuXLlYGZmhoCAANy7dw9CCEydOhVlypSBqakp2rdvj6dPn2pd1969e1G7dm2YmJigatWq2Lp1q0adhIQEjBo1Cm5ubjA2NoaXlxdmzZoFpVKpUa9///6wtraGjY0NgoODc+w+aNu2bahevTpMTExQvXp1/P7771rr5TTGyc2bN6U7lK2trTFgwAC8fPlSbdlXr15hxIgRsLe3h6WlJdq1a4cHDx7o1If8oUOHIJPJsGnTJkyfPh1lypSBiYkJWrRogZs3b2rU37x5M+rVqwdTU1PY29ujT58+ePDggVod1Vh2t27dQuvWrWFpaYnevXtL+xkaGorNmzejatWqMDU1hY+PDy5evAgA+PHHH+Hl5QUTExM0bdpUbcyZ3Bw7dgwffPABTExMUL58efz4449a62Ufy+X169eYPHkyKlSoABMTE9jZ2aFx48aIiIiQ9mXRokVS7KoJUP98zps3D+XLl4exsTGuXLmS65iP//33HwIDA2Fubg5XV1dMmTJFbfwc1Xty6NAhteWyrzO32FRl2d//8+fPo1WrVrCysoKFhQVatGih0f2IqruSv//+G2PGjIGDgwPMzc3RsWNHrV08EBFRydG8eXMAQHR0NABgzpw5aNSoEezs7GBqaop69erht99+01gu+/lTda44fPgwhg0bBkdHR5QpUwYXLlyATCbDn3/+KdU9e/YsZDIZ6tatq7bOVq1awdvbW3qtbYy/BQsWoFq1ajAzM0OpUqVQv359bNiwQa3OgwcPMHDgQDg5OcHY2BjVqlXDypUrdT4m69atQ4MGDaRtNGnSROOpt8WLF6NatWowNjaGq6srQkJCNNp+N27cQOfOneHs7AwTExOUKVMGPXr0QGJiYp7HUddz7q5du+Dr6wtzc3NYWloiKCgIly9f1mk/L1++jObNm8PU1BRlypTBtGnTNNq4QP7fh/DwcHz++ecAAE9PT6k9omrDqdp+69evl47h7t27pXna2qrx8fHo1q0brKysYGdnh5EjRyIlJUWan1s7K+s684pN2xh///33H7p27QpbW1uYmZmhYcOG2LFjh1qd/LafiYiItJ3zDh06hPr166tdx1BdC8pu3bp10rUYW1tb9OjRA/fu3VOr07RpU1SvXh1XrlxBs2bNYGZmhtKlS2P27Nka68urjaWK49q1a7mek/MTHwBERkai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m8Xd3R1Dhw6Fv78//vzzT2m+o6MjnJ2dUbduXYwaNQr37t3DtWvXCrStli1bYtWqVQgICEC5cuXQrl07jB07Flu3bpXqnD17FhkZGZg2bRrKly+PunXrYuzYsYiKisLr168BANbW1mptqTNnzuDZs2cYMGDAmx0MHTDxR1RUFArg228zJ4VC39EQvXtevMh5SknRve6rV3nXLaCff/4Z9vb2OHXqFIYPH46hQ4eia9euaNSoEc6dO4eAgAD07dsXL1++REJCApo3b446dergzJkz2L17N2JjY9GtW7csob3AmDFjcObMGezfvx9yuRwdO3aEUqlU2+6XX34pNTYqVqyInj17Skm4u3fvwsLCItfpm2++UVvfjRs34OrqinLlyqF37964e/durvudmJgIKysrGBoaAgBOnDiBGjVqwMnJSaoTGBiIpKQkXL58ucDHVyUkJAT29vZo0KABVq5cCSFEjnXPnz+P48ePw8/P7423S0R5YFuI6N33NttjBWyTlfT2WFpaGs6ePQt/f39p3XK5HP7+/rkmE0+cOKG2DJDZ/sq+zKFDh+Do6IhKlSph6NChePLkSY7r/PPPP/HkyZO3crGK3o6nL55i0+lNWHF0hb5DISIifUpLy3nKPkxLbnX/P+GVa91CYmpqqvVm8sTERGkIGEWW/4d+8803eba/crvelZiYCFtbW+l1vXr1IJfLsWrVKmRkZCAxMRFr166Fv78/jHK48XXFihXw9/eHu7t7QXdbZ4ZFvgUiIqKiYGGR87zWrYEdO/732tERePlSe10/P+DQof+99vAAstzVDQDIJZGUm1q1auGrr74CAEycOBEzZ86Evb09hgwZAgCYNGkSlixZggsXLmDfvn2oU6eOWtJt5cqVcHNzw7///ouKFSuic+fOautfuXIlHBwccOXKFVSvXl0qHzt2LIKCggBkPjVXrVo13Lx5E5UrV4arqyuioqJyjTtrQ8bb2xurV69GpUqV8OjRI0yePBm+vr64dOkSLC0tNZaNj4/H1KlT8fHHH0tlMTExakk/ANLrmJiYXGPJy5QpU9C8eXOYmZlh7969GDZsGJKTkzFixAi1emXKlMHjx4+Rnp6O8PBwDB48+I22S0RERHi77TGgQG2ykt4ei4+PR0ZGhta2VG53sefU/sra9mrZsiU6deoET09P3Lp1C1988QVatWqFEydO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Ul9hxug2mDG6DRSpr/QdDhEREdHblZIBDPsnc0rJ0Hc0RERElE/+VTITf0duHEHq61Q9R0NERES6YuKPqAhZJifCMjlR32EQERER6cfz9MyJiIiISpxqrtXgZOWEV2mvcOK/E/oOh4iIiHTExB8RERERERERERGpkclk0lN/+66wu08iIqKSgok/IiIiIiIiIiIi0iAl/jjOHxERUYnBxB9RMRG6/BhClx/TdxhEREREREREpGeLFi1C1apV8cEHH+g1jhZVWgAATt8+jYSXCXqNhYiIiHTDxB8REREREREREVExEhISgitXruD06dN6jcPN1g2VnCtBKZT45dQveo2FiIiIdMPEHxEREREREREREWk1xHcIAGDs5rG4+uiqnqMhIiKivDDxR1REhEyOO+6Vcce9MoSMXzUiIiJ6z8hlgKdZ5iSX6TsaIiIiKqDR/qPhX8UfL9NeovuP3fEq7ZW+QyIiIqJcGOo7AKJ31WuFMb796id9h0FERESkHwo5MKWKvqMgIiKiNySXy7F20FrUmlwLFx9cxNd/fI05XefoOywiIiLKAR9DIiIiIiIi/VpXP3MiIiKiYsnZ2hk/9cu8ufmnoz/xqT8iIqJijIk/IiIiIiIiIiIiylWbmm3gYeeBpFdJ2HZ+m77DISIiohww8UdURIxSUzB5QldMntAVRqkp+g6HiIiIKP9UT+IV5Gm8VCUw+mLmlKos/NiIiIjorZLL5QhuFAwAWH18tX6DISIiohwx8UdURGQQsHsSA7snMZBB6DscIiIiordLCCA+LXMSbAsRERG9C/r59AMARFyNwP2n9/UcDREREWljqO8AiIq70OXH9B0CEREREREREZHelXMoB7+Kfjj872GsPbkWE1tP1HdIRERElA2f+CMiIiIiIiIiIiKd9G/UHwCw8u+VSH2dqt9giIiISAMTf0RERERERERERKSTLvW6wNrUGjfjbqLNgjZITknWd0hERESUBRN/REREREREREREpBMLEwtsHboV5sbm2Hd1H1rMbYFLDy7pOywiIiL6f0z8ERUzocuPSRMRERERERERUXHTvEpzHPjsAGzNbXEq+hRqhNeA37d++P3c71AqlfoOj4iI6L3GxB9RERGQ4ZGLBx65eEBApu9wiIiIiN4umQwobZI5ydgWIiIietc08GyA4xOOo3PdzjCQG+DIv0fQaUkn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jRurRo0akqS4uDi5urpe9Wbj4+OjuLg4e82VL9ql9ZfW5Vfz5s3T1q1btXnz5qvWMa535vDhw5o8ebIiIiL0xhtvaPPmzXrllVfk6uqqrl272sflWuN25biWLFky03pnZ2cVLVo0347roEGDlJSUpCpVqsjJyUnp6el677331LlzZ0liXLNIVo1jXFycAgICrtrGpXVFihTJlvy5xcWLFzVw4EA9/fTT8vT0lMS4Iu/Jivfc06dP65133lGvXr2yI6LpTp8+rfT09Gu+5+7bt++aX3O9Y6/89P/YnYzbfw0cOFB+fn5XnTTPy+5k3NavX6/PP/9c27Zty4GEjudOxuzw4cNatWqVOnfurKVLl+rgwYN66aWXlJqaqmHDhuVEbNPdybg988wzOn36tJo0aSLDMJSWlqbevXvrjTfeyInIudL1/j9ISkrShQsX5OHhYVIy3I2s+D8uN7jWuT0p472gbNmy8vPz044dOzRw4EDFxsZq4cKFJqa9fUFBQZo5c6YqV66sEydOaPjw4WratKl27dp1S+facqtFixYpISFB3bp1sy/LK6/pf+Xnc1DXOp8hSa+88orq1aunokWLasOGDRo8eLBOnDihcePGmZj29rVs2VLt27dXQECADh06pDfeeEOtWrVSdHS0nJyc8uzrOmvWLBUuXFjt27fPtDw3vq6O3j+i8XcdYWFh2rVrl9avX292lFzvjz/+UN++fbVy5Uq5u7ubHSfPsNlsCgwM1MiRIyVJdevW1a5duzRlyhR17drV5HS519dff605c+Zo7ty5ql69urZt26Z+/frJz8+PcUWukpqaqqeeekqGYWjy5MlmxwFu26BBg/T+++/fsGbv3r13/TxJSUlq06aNqlWrprfffvuutwdcMnr0aM2bN09r1qzhGPgGzp49qy5dumjq1KkqXry42XFyDZvNppIlS+qzzz6Tk5OT6tevr7/++ksffPBBvmn83Yk1a9Zo5MiRmjRpkoKCgnTw4EH17dtX77zzjt566y2z4wHIYtc7t3flH3vVrFlTpUqVUvPmzXXo0CHde++9OR3zjl26M5Ek1apVS0FBQSpbtqy+/vrrPN2U//zzz9WqVSv5+fnZl+WV1xQZbnQ+IyIiwj5fq1Ytubq66sUXX9SoUaPk5uaW01HvWKdOnezzNWvWVK1atXTvvfdqzZo1at68uYnJstf06dPVuXPnq34/yo2vq6P3j7jV5zWEh4dr8eLFWr16te655x77cl9fX6WkpCghISFTfXx8vHx9fe018fHxV62/tC4/iomJ0cmTJ1WvXj05OzvL2dlZa9eu1ccffyxnZ2f5+PgwrnegVKlSqlatWqZlVatWtd/W4dK4XGvcrhzXkydPZlqflpamM2fO5NtxHTBggAYNGqROnTqpZs2a6tKli/r3769Ro0ZJYlyzSlaNI+8N13bpIPno0aNauXJlpr+OY1yRW7z66qvau3fvDafy5cvf1Xvu2bNn1bJlSxUuXFjffvutXFxcsnOXTFO8eHE5OTnd8D33v673PpCf3gPuZNwuGTt2rEaPHq0VK1aoVq1a2RnT4dzuuB06dEi///67Hn30UfvvCl988YW+//57OTs769ChQzkV3TR38r1WqlQpVapUSU5OTvZlVatWVVxcnFJSUrI1r6O4k3F766231KVLF/Xo0UM1a9bU448/rpEjR2rUqFGy2Ww5ETvXud7/B56ennm6sZDX3c3/cbnF9c7tXUtQUJAk6eDBgzkRLdt4e3urUqVKOnjw4C2dw8yNjh49qp9++kk9evS4YV1eeU3z4zmoG53PuJagoCClpaXp999/z5mA2aR8+fIqXry4/Xs2r72ukvTzzz8rNjb2pj+/kuO/rrmhf0Tj7wqGYSg8PFzffvutVq1addVtzurXry8XFxdFRUXZl8XGxurYsWMKDg6WJAUHB2vnzp2ZfjAvvUn9t0mTXzRv3lw7d+7Utm3b7FNgYKA6d+5sn2dcb1/jxo0VGxubadn+/ftVtmxZSVJAQIB8fX0zjWtSUpI2btyYaVwTEhIUExNjr1m1apVsNpv9ICm/+ffff2W1Zn5rdHJysp8IYFyzRlaNY3BwsNatW6fU1FR7zcqVK1W5cuV8ezvKSwfJBw4c0E8//aRixYplWs+4IrcoUaKEqlSpcsPJ1dX1jt9zk5KS1KJFC7m6uur777/P01dkubq6qn79+pnec202m6Kiouzvuf8VHBycqV7KeB+4Xn1edCfjJkljxozRO++8o2XLlmX6TI784nbHrUqVKlf9rvDYY4/pwQcf1LZt2+Tv75+T8U1xJ99rjRs31sGDBzM1q/bv369SpUpl+ozevOxOxu16x/pSxvkAXI3/D/KmO/0/Lje42bm9a7l0q+lSpUplc7rsde7cOR06dEilSpW6pXOYudGMGTNUsmRJtWnT5oZ1eeU1zW/noG52PuNatm3bJqvVetVtMXObP//8U3///bf9ezYvva6XfP7556pfv75q165901pHfV1zVf/IgF2fPn0MLy8vY82aNcaJEyfs07///muv6d27t1GmTBlj1apVxpYtW4zg4GAjODjYvj4tLc2oUaOG0aJFC2Pbtm3GsmXLjBIlShiDBw82Y5cc1v3332/07dvX/phxvX2bNm0ynJ2djffee884cOCAMWfOHKNAgQLG7Nmz7TWjR482vL29je+++87YsWOH0bZtWyMgIMC4cOGCvaZly5ZG3bp1jY0bNxrr1683KlasaDz99NNm7JJD6Nq1q1G6dGlj8eLFxpEjR4yFCxcaxYsXN15//XV7DeN6a86ePWv89ttvxm+//WZIMsaNG2f89ttvxtGjRw3DyJpxTEhIMHx8fIwuXboYu3btMubNm2cUKFDA+PTTT3N8f3PKjcY1JSXFeOyxx4x77rnH2LZtW6b/y5KTk+3bYFyR19zse/rPP/80KleubGzcuNEwDMNITEw0goKCjJo1axoHDx7M9LOSlpZm1m5kq3nz5hlubm7GzJkzjT179hi9evUyvL29jbi4OMMwDKNLly7GoEGD7PW//PKL4ezsbIwdO9bYu3evMWzYMMPFxcXYuXOnWbtgitsdt9GjRxuurq7GN998k+n76uzZs2btgilud9z+q2vXrkbbtm1zKK1juN0xO3bsmFG4cGEjPDzciI2NNRYvXmyULFnSePfdd83aBVPc7rgNGzbMKFy4sPHVV18Zhw8fNlasWGHce++9xlNPPWXWLuS4mx2jDxo0yOjSpYu9/vDhw0aBAgWMAQMGGHv37jUiIyMNJycnY9myZWbtArLIzX5+cqubnds7ePCgMWLECGPLli3GkSNHjO+++84oX7680axZM5OT375XX33VWLNmjXHkyBHjl19+MUJCQozixYsbJ0+eNAzj5ufacpv09HSjTJkyxsCBAzMtz+2vaU6cO3EUd3s+Y8OGDcb48eONbdu2GYcOHTJmz55tlChRwnjuuedM3rOr3Whfz549a7z22mtGdHS0ceTIEeOnn34y6tWrZ1SsWNG4ePGifRt54XW9JDEx0ShQoIAxefLkq74+N72uual/ROPvCpKuOc2YMcNec+HCBeOll14yihQpYhQoUMB4/PHHjRMnTmTazu+//260atXK8PDwMIoXL268+uqrRmpqag7vjWP7b+OPcb0zP/zwg1GjRg3Dzc3NqFKlivHZZ59lWm+z2Yy33nrL8PHxMdzc3IzmzZsbsbGxmWr+/vtv4+mnnzYKFSpkeHp6Gt27d893J6eulJSUZPTt29coU6aM4e7ubpQvX9548803MzVNGNdbs3r16mu+p3bt2tUwjKwbx+3btxtNmjQx3NzcjNKlSxujR4/OqV00xY3G9ciRI9f9v2z16tX2bTCuyGtu9j196Wfj0s/B9X6OJBlHjhwxZydywCeffGKUKVPGcHV1NRo2bGj8+uuv9nX333+//f35kq+//tqoVKmS4erqalSvXt1YsmRJDid2DLczbmXLlr3m99WwYcNyPrjJbvf77Ur5sfFnGLc/Zhs2bDCCgoIMNzc3o3z58sZ7772XZ/944UZuZ9xSU1ONt99+27j33nsNd3d3w9/f33jppZeMf/75J+eDm+Rmx+hdu3Y17r///qu+pk6dOoarq6tRvnz5TOdIkLvd6Ocnt7rZub1jx44ZzZo1M4oWLWq4ubkZFSpUMAYMGGAkJiaaG/wOdOzY0ShVqpTh6upqlC5d2ujYsaNx8OBB+/pbOdeWmyxfvtyQdNV5g9z+mubUuRNHcLfnM2JiYoygoCDDy8vLcHd3N6pWrWqMHDkyU7PMUdxoX//991+jRYsWRokSJQwXFxejbNmyRs+ePa/6w4u88Lpe8umnnxoeHh5GQkLCVV+fm17X3NQ/svx/YAAAAAAAAAAAAAC5GJ/xBwAAAAAAAAAAAOQBNP4AAAAAAAAAAACAPIDGHwAAAAAAAAAAAJAH0PgDAAAAAAAAAAAA8gAafwAAAAAAAAAAAEAeQOMPAAAAAAAAAAAAyANo/AEAAAAAAAAAAAB5AI0/AAAAAAAAAAAAIA+g8QcAAAAAAAAAAADkATT+AAAAAAAAAACQFBcXp5dfflnly5eXm5ub/P399eijjyoqKsrsaA6jW7duateundkxAFyHs9kBAAAAAAAAAAAw2++//67GjRvL29tbH3zwgWrWrKnU1FQtX75cYWFh2rdvn9kRAeCmuOIPAAAAAAAAAJDvvfTSS7JYLNq0aZM6dOigSpUqqXr16oqIiNCvv/4qSTp27Jjatm2rQoUKydPTU0899ZTi4+Pt23j77bdVp04dTZ8+XWXKlFGhQoX00ksvKT09XWPGjJGvr69Kliyp9957L9NzWywWTZ48Wa1atZKHh4fKly+vb775JlPNzp079dBDD8nDw0PFihVTr169dO7cOfv6S1fijR07VqVKlVKxYsUUFham1NRUe01ycrJee+01lS5dWgULFlRQUJDWrFljXz9z5kx5e3tr+fLlqlq1qgoVKqSWLVvqxIkT9v2bNWuWvvvuO1ksFlkslkxfD8B8NP4AAAAAAAAAAPnamTNntGzZMoWFhalgwYJXrff29pbNZlPbtm115swZrV27VitXrtThw4fVsWPHTLWHDh3Sjz/+qGXLlumrr77S559/rjZt2ujPP//U2rVr9f7772vIkCHauHFjpq9766231KFDB23fvl2dO3dWp06dtHfvXknS+fPnFRoaqiJFimjz5s1asGCBfvrpJ4WHh2faxurVq3Xo0CGtXr1as2bN0syZMzVz5kz7+vDwcEVHR2vevHnasWOHnnzySbVs2VIHDhyw1/z7778aO3asvvzyS61bt07Hjh3Ta6+9Jkl67bXX9NRTT9mbgSdOnFCjRo3uauwBZC1u9QkAAAAAAAAAyNcOHjwowzBUpUqV69ZERUVp586dOnLkiPz9/SVJX3zxhapXr67NmzerQYMGkiSbzabp06ercOHCqlatmh588EHFxsZq6dKlslqtqly5st5//32tXr1aQUFB9u0/+eST6tGjhyTpnXfe0cqVK/XJJ59o0qRJmjt3ri5evKgvvvjC3picOHGiHn30Ub3//vvy8fGRJBUpUkQTJ06Uk5OTqlSpojZt2igqKko9e/bUsWPHNGPGDB07dkx+fn6SMhp5y5Yt04wZMzRy5EhJUmpqqqZMmaJ7771XUkazcMSIEZKkQoUKycPDQ8nJyfL19c2y8QeQdWj8AQAAAAAAAADyNcMwblqzd+9e+fv725t+klStWjV5e3tr79699sZfuXLlVLhwYXuNj4+PnJycZLVaMy07efJkpu0HBwdf9Xjbtm32565du3amqxEbN24sm82m2NhYe+OvevXqcnJysteUKlVKO3fulJRxq9D09HRVqlQp0/MkJyerWLFi9scFChSwN/0ubeO/WQE4Lhp/AAAAAAAAAIB8rWLFirJYLNq3b99db8vFxSXTY4vFcs1lNpvtrp/rVp770vOcO3dOTk5OiomJydQclDKu5LvRNm6lMQrAMfAZfwAAAAAAAACAfK1o0aIKDQ1VZGSkzp8/f9X6hIQEVa1aVX/88Yf++OMP+/I9e/YoISFB1apVu+sMv/7661WPq1atKkmqWrWqtm/fninbL7/8Yr916K2oW7eu0tPTdfLkSVWoUCHTdDu37XR1dVV6evot1wPIWTT+AAAAAAAAAAD5XmRkpNLT09WwYUP973//04EDB7R37159/PHHCg4OVkhIiGrWrKnOnTtr69at2rRpk5577jndf//9CgwMvOvnX7BggaZPn679+/dr2LBh2rRpk8LDwyVJnTt3lru7u7p27apdu3Zp9erVevnll9WlSxf7bT5vplKlSurcubOee+45LVy4UEeOHNGmTZs0atQoLVmy5JZzlitXTjt27FBsbKxOnz6t1NTUO9pfANmDxh8AAAAAAAAAIN8rX768tm7dqgcffFCvvvqqatSooYcfflhRUVGaPHmyLBaL/o+9O4+zsfz/OP4+s++LdcQwyL5HNCpbNMhkIlqEka2+ZGvRSA0tRkTIWsmoL5FKNRGJRrIUoylKQhiVJdsMM8x6//7wnfNzzD5zzJnl9Xw87kfnXPd1X/fn3E7O5frc13V//vnn8vX1VYcOHdS1a1fVqVNHq1evtsr5p06dqlWrVql58+Z6//339eGHH5pnErq5uWnjxo06f/68br/9dj344IO65557NH/+/AKdY9myZRo0aJCefvppNWjQQCEhIdq9e7dq1qyZ7zaGDx+uBg0aqE2bNqpcubK2b99eoBgA3Fwmg8V5AQAAAAAAAACwGZPJpLVr1yokJMTWoQAo5ZjxBwAAAAAAAAAAAJQBJP4AAAAAAAAAAACAMsDB1gEAAAAAAAAAAFCe8UQuANbCjD8AAAAAAAAAAACgDCDxBwAAAAAAAAAAAJQBJP4AAAAAAAAAAACAMoDEHwAAAAAAAAAAAFAGkPgDAAAAAAAAAAAAygASfwAAAAAAAAAAAEAZQOIPAAAAAAAAAAAAKANI/AEAAAAAAAAAAABlAIk/AAAAAAAAAAAAoAwg8QcAAAAAAAAAAACUAST+AAAAAAAAAAAAgDKAxB8AAAAAAAAAAABQBpD4AwAAAAAAAAAAAMoAEn8AAAAAAAAAAABAGUDiDyjlpkyZIpPJpLNnz9o6lHNHTCIAAQAASURBVBIrMjJSJpNJx44ds3UoN01GRoaaNm2q1157rdjOGRAQoNDQ0GI7X2l27tw5ubu7a/369bYOBQAsZPYjCqM0/r6aTCZNmTLFZuefMWOGGjZsqIyMDHPZlClTFBAQYFGvINc2u9/jTp068RtdCj388MPq37+/rcMAAAAokWzdlwdKExJ/KPMyB04yNxcXF9WvX1+jR4/W6dOnb9p5//nnH02ZMkWxsbE37RxApg8//FAnTpzQ6NGjrdrujh07NGXKFF28eNGq7RZWRkaGZsyYodq1a8vFxUXNmzfXhx9+mO/jY2Ji1KtXL/n5+cnDw0PNmzfXvHnzlJ6eblEvICDA4u+NzO2JJ56wqHfj3y/Xb6dOnTLXq1ixooYNG6YXX3yxaBcAAHKRXZ/nlltuUVBQkObNm6dLly7d9BgWLlyoyMjIm36e0ighIUGvv/66Jk6cKDs7/hl2M+3YsUN33XWX3Nzc5OfnpzFjxujy5cv5Ojan3/Xp06db1Mupr2AymVSvXr1CtTlx4kR98skn+vnnn4t2AQAAsJHM/uiePXsKfGxSUpKmTJmi6Oho6wdWTEraGAqA8svB1gEAxeXll19W7dq1dfXqVX3//fdatGiR1q9fr/3798vNzc3q5/vnn380depUBQQEqGXLllZvH7jezJkz9fDDD8vb29uq7e7YsUNTp05VaGiofHx8LPYdPHiw2AcuX3jhBU2fPl3Dhw/X7bffrs8//1yPPvqoTCaTHn744VyPjYmJUfv27VWvXj1NnDhRbm5u+uqrrzR27FgdOXJEc+fOtajfsmVLPf300xZl9evXz7btzL9frnfj9XriiSc0b948bdmyRV26dMnnJwaAgsv8Oyk1NVWnTp1SdHS0xo0bp9mzZ+uLL75Q8+bNzXUnT56s559/vlDnGThwoB5++GE5OzubyxYuXKhKlSqV2NlmV65ckYODbf4J9N577yktLU2PPPJInnWzu7Y5scXvcUkWGxure+65R40aNdLs2bP1119/6Y033tChQ4f01Vdf5auNbt26adCgQRZlrVq1sng/Z86cLMnE48ePa/Lkybr33nsL1WarVq3Upk0bzZo1S++//36+YgUAoKxISkrS1KlTJV1bvaA0ym0MBUVny748UNrwfwrKjR49eqhNmzaSpGHDhqlixYqaPXu2Pv/883wNwJRnhmHo6tWrcnV1tXUoyMZPP/2kn3/+WbNmzcqzbmJiotzd3a1y3vwMRlrT33//rVmzZmnUqFGaP3++pGv/L3fs2FHPPvus+vXrJ3t7+xyPX7JkiSTpu+++U4UKFSRJI0eOVMeOHRUZGZkl8Ve9enU99thj+Yrt+r9fctKoUSM1bdpUkZGRJP4A3FQ3/p0UFhamLVu2qFevXrr//vt14MAB82+6g4NDof/xbG9vn+vfuyWRi4uLzc69bNky3X///fmKoSDXtrh/jwvi6tWrcnJyyjYxac0+yfUmTZokX19fRUdHy8vLS9K12XnDhw/X119/nW1S7kb169fPsw8QEhKSpezVV1+VJA0YMKBQbUpS//79FR4eroULF8rDwyPP+gAAlFc3qy9RHqSlpSkjI0NOTk62DqVAbNmXB0obbg1FuZU58H706FFz2X//+1+1bt1arq6uqlChgh5++GGdOHHC4rhOnTqpadOm+u2339S5c2e5ubmpevXqmjFjhrlOdHS0br/9dknSkCFDzMv5ZC59tW3bNvXr1081a9aUs7Oz/P39NX78eF25ciVLnL///rv69++vypUry9XVVQ0aNNALL7yQpd7FixfNdxR5e3tryJAhSkpKsqiTlpamV155RXXr1pWzs7MCAgI0adIkJScnW9QLCAhQr169tHHjRrVp00aurq7mpMmff/6pfv36qUKFCnJzc9Mdd9yhdevWWRwfHR0tk8mkjz76SK+99ppq1KghFxcX3XPPPTp8+HCufy4ff/yxTCaTtm7dmmXfkiVLZDKZtH//fnPZli1bdPfdd8vd3V0+Pj7q3bu3Dhw4kOs5pJzXBb/xOTmZy1R8//33GjNmjCpXriwfHx+NHDlSKSkpunjxogYNGiRfX1/5+vrqueeek2EYFm1mZGRozpw5atKkiVxcXFS1alWNHDlSFy5csKi3Z88eBQUFqVKlSnJ1dVXt2rX1+OOP5/lZPvvsMzk5OalDhw4W5ZnPbfrtt9/06KOPytfXV3fddZck6ZdfflFoaKjq1KkjFxcX+fn56fHHH9e5c+csjn/22WclSbVr1zZ/jzOfN5TdM4Xy8/0orM8//1ypqan6z3/+Yy4zmUx68skn9ddff2nnzp25Hp+QkCAXF5csd91Vq1Ytx6R2SkqKEhMT8xXfpUuXsiwZeqNu3bopKioqy3cEAG62Ll266MUXX9Tx48f13//+11ye3TP+rly5ojFjxqhSpUry9PTU/fffr7///jvLb+eNz6ELCAjQr7/+qq1bt5p/M/K6WzsjI0Nz585Vs2bN5OLiosqVK6t79+4Wy0Plt/+Sn9/RGz9D5uc/fPhwnv0oKX99xewcPXpUv/zyi7p27ZpnXanoz/griL///ltDhw7VLbfcImdnZ9WuXVtPPvmkUlJSzHUK0v9btWqVJk+erOrVq8vNzU0JCQkKDQ2Vh4eHjhw5op49e8rT0zPb5FhRJSQkaNOmTXrsscfMST9JGjRokDw8PPTRRx/lu60rV67o6tWrBTr/ypUrVbt2bbVv377QbXbr1k2JiYnatGlTgc4NAEBJldkP+PvvvxUSEiIPDw9VrlxZzzzzjPnf0MeOHVPlypUlSVOnTjX3JTP7bbn1JQoyxpaTH374QT179pSvr6/c3d3VvHlzi5uDrTGGIuW/L7lgwQLVqVNHrq6uatu2rbZt26ZOnTpl6VufOXNGQ4cOVdWqVeXi4qIWLVpo+fLlFnWOHTsmk8mkN954Q3PmzDH3qX/88Ue5u7tr7NixWc7/119/yd7eXhEREblet/LSlwdKI2b8odw6cuSIpGvP3pKk1157TS+++KL69++vYcOG6d9//9Vbb72lDh066KeffrJIFly4cEHdu3dXnz591L9/f3388ceaOHGimjVrph49eqhRo0Z6+eWX9dJLL2nEiBG6++67Jck8CLBmzRolJSXpySefVMWKFfXjjz/qrbfe0l9//aU1a9aYz/PLL7/o7rvvlqOjo0aMGKGAgAAdOXJEUVFReu211yw+T//+/VW7dm1FRERo7969evfdd1WlShW9/vrr5jrDhg3T8uXL9eCDD+rpp5/WDz/8oIiICB04cEBr1661aO/gwYN65JFHNHLkSA0fPlwNGjTQ6dOn1b59eyUlJWnMmDGqWLGili9frvvvv18ff/yxHnjgAYs2pk+fLjs7Oz3zzDOKj4/XjBkzNGDAAP3www85/rncd9995oGZjh07WuxbvXq1mjRpoqZNm0qSvvnmG/Xo0UN16tTRlClTdOXKFb311lu68847tXfvXgUEBOR4noJ66qmn5Ofnp6lTp2rXrl16++235ePjox07dqhmzZqaNm2a1q9fr5kzZ6pp06YWSzmNHDlSkZGRGjJkiMaMGaOjR49q/vz5+umnn7R9+3Y5OjrqzJkzuvfee1W5cmU9//zz8vHx0bFjx/Tpp5/mGduOHTvUtGlTOTo6Zru/X79+qlevnqZNm2ZOOG3atEl//vmnhgwZIj8/P/366696++239euvv2rXrl0ymUzq06eP/vjjD3344Yd68803ValSJUkyd8ZvVJDvx9mzZ/N13T09Pc0zGX766Se5u7urUaNGFnXatm1r3p+Z2MxOp06dtHr1ao0cOVITJkwwL/X56aefaubMmVnqb9myRW5ubkpPT1etWrU0fvz4bDvEktS5c2ddvnxZTk5OCgoK0qxZs7I830eSWrdurTfffFO//vqr+XsMAMVl4MCBmjRpkr7++msNHz48x3qhoaH66KOPNHDgQN1xxx3aunWr7rvvvjzbnzNnjp566il5eHiYb1KqWrVqrscMHTpUkZGR6tGjh4YNG6a0tDRt27ZNu3btslipIa/+S1F+R6X89aMK0le80Y4dOyRJt912W77iKS7//POP2rZtq4sXL2rEiBFq2LCh/v77b3388cdKSkqSk5NTgft/r7zyipycnPTMM88oOTnZfCd5WlqagoKCdNddd+mNN94wL7WflJSU7cDMjezt7eXr65trnX379iktLS3LLHwnJye1bNlSP/30U76uS2RkpBYuXCjDMNSoUSNNnjxZjz76aK7H/PTTTzpw4EC2N+gVpM3GjRvL1dVV27dvz3JtAQAordLT0xUUFKR27drpjTfe0DfffKNZs2apbt26evLJJ1W5cmUtWrRITz75pB544AH16dNHkiyWqM+pL5HfMbacbNq0Sb169VK1atU0duxY+fn56cCBA/ryyy/NYwDWGEPJb19y0aJFGj16tO6++26NHz9ex44dU0hIiHx9fVWjRg1z3FeuXFGnTp10+PBhjR49WrVr19aaNWsUGhqqixcvZhm/WLZsma5evaoRI0bI2dlZNWvW1AMPPKDVq1dr9uzZFqtNfPjhhzIMI88btcpLXx4olQygjFu2bJkhyfjmm2+Mf//91zhx4oSxatUqo2LFioarq6vx119/GceOHTPs7e2N1157zeLYffv2GQ4ODhblHTt2NCQZ77//vrksOTnZ8PPzM/r27Wsu2717tyHJWLZsWZaYkpKSspRFREQYJpPJOH78uLmsQ4cOhqenp0WZYRhGRkaG+XV4eLghyXj88cct6jzwwANGxYoVze9jY2MNScawYcMs6j3zzDOGJGPLli3mslq1ahmSjA0bNljU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mjRpkvvFBAAr27Jli1555RXVrl1bAwYMyLFe5t+71/9dKylf//iXrv1u5Oc3Q7r2nBHDMLJN+mT+RuW3/1KU39H8KGpfMTAwUNK157YURuPGjdW1a1fz1rp160K1cz07OzuFhIQoKioq27iu/zO4mf2/wjzjL6fr4e3tra5du+q///2vxbMsP/jgA12+fNliyaqkpCT9/vvvFs/Sy+53/dKlS5ozZ44qVaqU7XVfv369Ll68mOP/VwVt87ffftPVq1ct+jUAAJQHbm5ukvI3/pApv2Ns1apVs+g7ZCb5brvtNtWuXVtz5szJct7MNq0xhpLfvmSbNm1UsWJFvfPOOxY3J69YsSLLSk89e/bUqVOntHr1anNZWlqa3nrrLXl4eKhjx45Z4svJwIED9fXXX2vOnDmqWLGievTokecx5akvD5RGzPgDdC0J9OqrryosLEzHjh1TSEiIPD09dfToUa1du1YjRozQM888U+A2fXx8tHjxYnl6esrd3V3t2rVTw4YNVbduXT3zzDP6+++/5eXlpU8++STbpRrnzZunu+66S7fddptGjBih2rVr69ixY1q3bp1iY2MLFE+LFi00ePBgvf3227p48aI6duyoH3/8UcuXL1dISIhFMiMnzz//vD788EP16NFDY8aMUYUKFbR8+XIdPXpUn3zySbbLNxWWo6Oj+vTpo1WrVikxMVFvvPFGljozZ85Ujx49FBgYqKFDh+rKlSt666235O3trSlTpuTa/rBhw/TEE0+ob9++6tatm37++Wdt3LjR6kswduzYUSNHjlRERIRiY2N17733ytHRUYcOHdKaNWs0d+5cPfjgg1q+fLkWLlyoBx54QHXr1tWlS5f0zjvvyMvLK88kZu/evfXKK69o69atuvfee/OMycvLSx06dNCMGTOUmpqq6tWr6+uvv8521mDmYNQLL7yghx9+WI6OjgoODs52NmVBvh+FecZfjRo1NG7cOM2cOVOpqam6/fbb9dlnn2nbtm1asWKFxXINYWFh5nNnroP//PPP67HHHlO7du00YsQIubq66sMPP1RMTIxeffVV85ruX3zxhV599VU9+OCDql27ts6fP6+VK1dq//79mjZtmvz8/Mznad++vVq1aqU2bdrI29tbe/fu1XvvvSd/f39NmjQpy2fYtGmTgoODeW4PgJvqq6++0u+//660tDSdPn1aW7Zs0aZNm1SrVi198cUXcnFxyfHY1q1bq2/fvpozZ47OnTunO+64Q1u3btUff/whKe87sVu3bq1Fixbp1Vdf1a233qoqVaqoS5cu2dbt3LmzBg4cqHnz5unQoUPmpZK2bdumzp07a/To0fnuvxTldzQ/itpXrFOnjpo2bapvvvlGjz/+eJHjsZZp06bp66+/VseOHTVixAg1atRIJ0+e1Jo1a/T999/Lx8fnpvf/CvOMv9y89tprat++vfkz/fXXX5o1a5buvfdei5tyfvzxR3Xu3Fnh4eHmfuOCBQv02WefKTg4WDVr1tTJkyfNN+F98MEHcnJyynK+FStWyNnZWX379s02noK2uWnTJrm5ualbt25WuyYAAJQGrq6uaty4sVavXq369eurQoUKatq0aa7P3yvIGFt27OzstGjRIgUHB6tly5YaMmSIqlWrpt9//12//vqrNm7caJUxlPz2JZ2cnDRlyhQ99dRT6tKli/r3769jx44pMjJSdevWteiLjxgxQkuWLFFoaKhiYmIUEBCgjz/+WNu3b9ecOXMKtLz8o48+queee05r167Vk08+ma9n3pWnvjxQKhlAGbds2TJDkrF79+48637yySfGXXfdZbi7uxvu7u5Gw4YNjVGjRhkHDx401+nYsaPRpEmTLMcOHjzYqFWrlkXZ559/bjRu3NhwcHAwJBnLli0zDMMwfvvtN6Nr166Gh4eHUalSJWP48OHGzz//bFEn0/79+40HHnjA8PHxMVxcXIwGDRoYL774onl/eHi4Icn4999/s/3cR48eNZelpqYaU6dONWrXrm04Ojoa/v7+RlhYmHH16lWLY2vVqmXcd9992V6jI0eOGA8++KA5nrZt2xpffvmlRZ1vv/3WkGSsWbPGovzo0aPZfsacbNq0yZBkmEwm48SJE9nW+eabb4w777zTcHV1Nby8vIzg4GDjt99+y/NapKenGxMnTjQqVapkuLm5GUFBQcbhw4eNWrVqGYMHD85y7I3fn5yu++DBgw13d/cscb799ttG69atDVdXV8PT09No1qyZ8dxzzxn//POPYRiGsXfvXuORRx4xatasaTg7OxtVqlQxevXqZezZsydf16p58+bG0KFD8xWjYRjGX3/9Zf5eeXt7G/369TP++ecfQ5IRHh5uUfeVV14xqlevbtjZ2VlcxxuvlWHk7/tRFOnp6ca0adOMWrVqGU5OTkaTJk2M//73v1nqDR48OMufuWEYxoYNG4yOHTsalSpVMpycnIxmzZoZixcvtqizZ88eIzg42Khevbrh5ORkeHh4GHfddZfx0UcfZTnPCy+8YLRs2dLw9vY2HB0djZo1axpPPvmkcerUqSx1Dxw4YEgyvvnmm6JdBADIQeZvVubm5ORk+Pn5Gd26dTPmzp1rJCQkZDkm87fieomJicaoUaOMChUqGB4eHkZISIhx8OBBQ5Ixffr0LOe7/u/aU6dOGffdd5/h6elpSDI6duyYa8xpaWnGzJkzjYYNGxpOTk5G5cqVjR49ehgxMTHmOvnpv+T3d/TG37mC9KMMI399xZzMnj3b8PDwMJKSkizKw8PDs/Qhczp/drL7Pe7YsWOWspwcP37cGDRokFG5cmXD2dnZqFOnjjFq1CgjOTnZXKco/T/DyLl/dLNs27bNaN++veHi4mJUrlzZGDVqVJbvf2a8138fvv76a6Nbt26Gn5+f4ejoaPj4+Bj33nuvsXnz5mzPEx8fb7i4uBh9+vTJMZaCttmuXTvjscceK/iHBgCgBMhuDCWnfkB2/dAdO3YYrVu3NpycnCx+p3PrSxRkjC0n33//vdGtWzfD09PTcHd3N5o3b2689dZb5v3WGEMxjPz3JefNm2fUqlXLcHZ2Ntq2bWts377daN26tdG9e3eLeqdPnzaGDBliMcZx42fOHIubOXNmrtegZ8+ehiRjx44d+bpmhlG++vJAaWMyjEKsGQgAKFE++OADjRo1SnFxcfLx8bF1OMjGuHHj9N133ykmJoYZfwBKndjYWLVq1Ur//e9/c10qFDmLj49XnTp1NGPGDA0dOtRcPmXKFEVGRpqfX1dQ/v7+CgoK0rvvvmsu69SpkwICAhQZGVnEqFGcYmNjddttt2nv3r15PrsYAACUHxkZGapcubL69Omjd95556ac44EHHtC+ffvy/WxvACUbz/gDgDJgwIABqlmzphYsWGDrUJCNc+fO6d1339Wrr75K0g9AiXflypUsZXPmzJGdnZ06dOhgg4jKBm9vbz333HOaOXOmMjIyrNJmamqqzp07Z/WlymEb06dP14MPPkjSDwCAcuzq1atZnkP3/vvv6/z58+rUqdNNOefJkye1bt06DRw48Ka0D6D48Yw/ACgD7OzstH//fluHgRxUrFhRly9ftnUYAJAvM2bMUExMjDp37iwHBwd99dVX+uqrrzRixAj5+/vbOrxSbeLEiZo4caJV2tq4caNWrVqlK1eu6J577rFKm7CtVatW2ToEAABgY7t27dL48ePVr18/VaxYUXv37tXSpUvVtGlT9evXz6rnOnr0qLZv3653331Xjo6OGjlypFXbB2A7JP4AAAAAmLVv316bNm3SK6+8osuXL6tmzZqaMmWKXnjhBVuHhutMnz5dhw8f1muvvaZu3brZOhwAAABYQUBAgPz9/TVv3jydP39eFSpU0KBBgzR9+nQ5OTlZ9Vxbt27VkCFDVLNmTS1fvlx+fn5WbR+A7fCMPwAAAAAAgFLku+++08yZMxUTE6OTJ09q7dq1CgkJyfWY6OhoTZgwQb/++qv8/f01efJkhYaGFku8AAAAKD484w8AAAAAAKAUSUxMVIsWLfL9jO+jR4/qvvvuU+fOnRUbG6tx48Zp2LBh2rhx402OFAAAAMWNGX8AAAAAAACllMlkynPG38SJE7Vu3TqL54I//PDDunjxojZs2FAMUQIAAKC48Iy/fMjIyNA///wjT09PmUwmW4cDAABsxDAMXbp0Sbfccovs7Fg4wdrocwEAiqo4f6uvXr2qlJQUq7VnGEaW3z9nZ2c5OzsXue2dO3eqa9euFmVBQUEaN25ckdvGzUX/CAAASAXr55L4y4d//vlH/v7+tg4DAACUECdOnFCNGjVsHUaZQ58LAGAtN/u3+urVq6rs6qHLSrdamx4eHrp8+bJFWXh4uKZMmVLktk+dOqWqVatalFWtWlUJCQm6cuWKXF1di3wO3Bz0jwAAwPXy088l8ZcPnp6ekq5dUC8vLxtHAwAAbCUhIUH+/v7mvgGsK/O6jldtOZfQR1GHHQ+zdQh5y0izdQS5c3SzdQR5MzJsHUHpZudk6wjyZrK3dQS5syvh8ZVgCZeS5F9v0E3/rU5JSdFlpVvtNytZGXrz8tEs4w7WmO2H0q3Mj0klJkq33HLt9T//SO7uto0HAIASqiBjUiT+8iFzKQUvL6+y2ckCAAAFwjJLN0fmdXWWnVxUMge9vbxKQdIqI9XWEeSOxF/ZR+Kv6Oz4p3pRFddvtauVfrMyU4c3a9zBz89Pp0+ftig7ffq0vLy8mO1XwpX5MSn76/7/8fIi8QcAQB7y08/lXxMAAAAAAACFYCdZZY76zZ7nHhgYqPXr11uUbdq0SYGBgTf5zAAAAChuJXMNJQAAAAAAAGTr8uXLio2NVWxsrCTp6NGjio2NVVxcnCQpLCxMgwYNMtd/4okn9Oeff+q5557T77//roULF+qjjz7S+PHjbRE+AAAAbiJm/AEAAAAAABSCrWb87dmzR507dza/nzBhgiRp8ODBioyM1MmTJ81JQEmqXbu21q1bp/Hjx2vu3LmqUaOG3n33XQUFBVkheqAIHB2l8PD/fw0AAIqMxB8AoFxLT09XamoJfx4Wio2jo6Ps7Uv4c58AAECJYavEX6dOnWQYRo77IyMjsz3mp59+KuCZgJvMyUmaMsXWUQDATcGYEwrCmmNSJP4AAOWSYRg6deqULl68aOtQUML4+PjIz88vXw9LBgAAAAAAuB5jTigsa41JkfgDAJRLmR2wKlWqyM3NjSQPZBiGkpKSdObMGUlStWrVbBwRAAAo6Ww14w8oMzIypAMHrr1u1Eiy4/8GAKUfY04oKGuPSZH4AwCUO+np6eYOWMWKFW0dDkoQV1dXSdKZM2dUpUoVlv0EAAC5Mv1vs0Y7QLl05YrUtOm115cvS+7uto0HAIqIMScUljXHpLiNBgBQ7mSur+7m5mbjSFASZX4vWIcfAAAAAAAUBGNOKAprjUkx4w8AUG6x1AKyw/cCAADkF0t9AgCA7DC2gMKw1veGviUAAAAAAAAAAABQBpD4AwCgnJsyZYpatmxp9XaPHTsmk8mk2NjYHOtER0fLZDLp4sWLkqTIyEj5+PhYPRYAAICbwc6KGwAAQEkXEBCgOXPm5Lu+tcacTCaTPvvssyK3U16w1CcAANeJGhlVbOcKXhJc4GNCQ0O1fPnyLOVBQUHasGGDNcKyqYceekg9e/a0dRgAAAD5wlKfAAAAJV90dLQmTJigX3/9Vf7+/po8ebJCQ0NzPeaXX37RqFGjtHv3blWuXFlPPfWUnnvuOfP+yMhIDRkyxOIYZ2dnXb161fw+p6U7Z8yYoWeffbbwHygPJP4AAChlunfvrmXLllmUOTs72yga63J1dZWrq6utwwAAAAAAAEAZcPToUd1333164okntGLFCm3evFnDhg1TtWrVFBQUlO0xCQkJuvfee9W1a1ctXrxY+/bt0+OPPy4fHx+NGDHCXM/Ly0sHDx40v78x0Xfy5EmL91999ZWGDh2qvn37WvETZsVNZQAAlDLOzs7y8/Oz2Hx9fSVd62AsWbJEvXr1kpubmxo1aqSdO3fq8OHD6tSpk9zd3dW+fXsdOXIkS7tLliyRv7+/3Nzc1L9/f8XHx1vsf/fdd9WoUSO5uLioYcOGWrhwocX+H3/8Ua1atZKLi4vatGmjn376Kcs51q9fr/r168vV1VWdO3fWsWPHLPbfuNRn5pIQH3zwgQICAuTt7a2HH35Yly5dMte5dOmSBgwYIHd3d1WrVk1vvvmmOnXqpHHjxpnrLFy4UPXq1ZOLi4uqVq2qBx98ML+XG4WwYMECBQQEyMXFRe3atdOPP/5o65AAALgpTLLOMp/Z3wsOlAOOjtIzz1zbHB1tHQ0AlHv5GWO5XlxcnHr37i0PDw95eXmpf//+On36dJZ6uY057d69W926dVOlSpXk7e2tjh07au/evVb7TIsXL1bt2rU1a9YsNWrUSKNHj9aDDz6oN998M8djVqxYoZSUFL333ntq0qSJHn74YY0ZM0azZ8+2qGcymSzG56pWrWqx/8bxu88//1ydO3dWnTp1rPb5skPiDwCAMuaVV17RoEGDFBsbq4YNG+rRRx/VyJEjFRYWpj179sgwDI0ePdrimMOHD+ujjz5SVFSUNmzYoJ9++kn/+c9/zPtXrFihl156Sa+99poOHDigadOm6cUXXzQvO3r58mX16tVLjRs3VkxMjKZMmaJnnnnG4hwnTpxQnz59FBwcrNjYWA0bNkzPP/98np/nyJEj+uyzz/Tll1/qyy+/1NatWzV9+nTz/gkTJmj79u364osvtGnTJm3bts2ig7hnzx6NGTNGL7/8sg4ePKgNGzaoQ4cOhbq2yNvq1as1YcIEhYeHa+/evWrRooWCgoJ05swZW4cGAIDV8Yw/oIicnKSZM69tTk62jgYAbq7ExJy365aHzLPulSv5q1sIeY2xXC8jI0O9e/fW+fPntXXrVm3atEl//vmnHnroIYt6eY05Xbp0SYMHD9b333+vXbt2qV69eurZs6fFTd83atKkiTw8PHLcevToYa67c+dOde3a1eL4oKAg7dy5M8f2d+7cqQ4dOsjput+moKAgHTx4UBcuXDCXXb58WbVq1ZK/v7969+6tX3/9Ncc2T58+rXXr1mno0KE51rEWlvoEAKCU+fLLL+Xh4WFRNmnSJE2aNEmSNGTIEPXv31+SNHHiRAUGBurFF180L18wduzYLGuQX716Ve+//76qV68uSXrrrbd03333adasWfLz81N4eLhmzZqlPn36SJJq166t3377TUuWLNHgwYO1cuVKZWRkaOnSpXJxcVGTJk30119/6cknnzSfY9GiRapbt65mzZolSWrQoIH27dun119/PdfPm5GRocjISHl6ekqSBg4cqM2bN+u1117TpUuXtHz5cq1cuVL33HOPJGnZsmW65ZZbzMfHxcXJ3d1dvXr1kqenp2rVqqVWrVoV4IqjIGbPnq3hw4ebv2OLFy/WunXr9N577+Ur0QsAAICsvCMiJBcXW4cBAGWaER5+c09ww1iOhZ49pXXr/v99lSpSUlL2dTt2lKKj//99QIB09mzWeoZRoPDyM8Zyvc2bN2vfvn06evSo/P39JUnvv/++mjRpot27d+v222+XlPeYU5cuXSzaffvtt+Xj46OtW7eqV69e2Z57/fr1Sk1NzfGzXP8YmVOnTmWZiVe1alUlJCToypUr2T5y5tSpU6pdu3aWYzL3+fr6qkGDBnrvvffUvHlzxcfH64033lD79u3166+/qkaNGlnaXL58uTw9Pc1jazcTiT+gFIgaGZWlLHhJsA0iAVASdO7cWYsWLbIoq1Chgvl18+bNza8zOyXNmjWzKLt69aoSEhLk5eUlSapZs6a5AyZJgYGBysjI0MGDB+Xp6akjR45o6NChGj58uLlOWlqavL29JUkHDhxQ8+bN5XLdYERgYKBFjAcOHFC7du0sym6sk52AgABz0k+SqlWrZp499ueffyo1NVVt27Y17/f29laDBg3M77t166ZatWqpTp066t69u7p3764HHnhAbm5ueZ4bBZOSkqKYmBiFhYWZy+zs7NS1a9ds76RLTk5WcnKy+X1CQkKxxAkAgLVYa7YeM/5QXpkyMlTzf8u9xXl7y7Dj/wYAsJX8jLFc78CBA/L39zcn/SSpcePG8vHx0YEDB8yJv9zGnPz8/HT69GlNnjxZ0dHROnPmjNLT05WUlKS4uLgcY61Vq1ZRP26RBQYGWoxrtW/fXo0aNdKSJUv0yiuvZKn/3nvvacCAARZjZzcLiT8AAEoZd3d33XrrrTnud7zu2RiZDxXOriwjIyNf57t8+bIk6Z133smSuLO3t89f0EXgeMOzPkwmU75jlyRPT0/t3btX0dHR+vrrr/XSSy9pypQp2r17t8XzBFF0Z8+eVXp6erZ30v3+++9Z6kdERGjq1KnFFR4AAFZH4g8oGte0NB2bO1eS5D5pkpJY7hNAWfa/8ZVs3Ti+ktvjMm68SeLYsUKHVBIMHjxY586d09y5c1WrVi05OzsrMDBQKSkpOR7TpEkTHT9+PMf9d999t7766itJMicXr3f69Gl5eXllO9svt2My92XH0dFRrVq10uHDh7Ps27Ztmw4ePKjVq1fnGLM1kfgDAACKi4vTP//8Y16+YdeuXbKzs1ODBg1UtWpV3XLLLfrzzz81YMCAbI9v1KiRPvjgA129etV859KuXbuy1Pniiy8sym6sU1B16tSRo6Ojdu/erZo1a0qS4uPj9ccff1g8x8/BwUFdu3ZV165dFR4eLh8fH23ZsqVYlldAzsLCwjRhwgTz+4SEBIs7BQEAAAAAKDPc3W1fNxf5HWPJ1KhRI504cUInTpww/1v+t99+08WLF9W4cWNzvdzGnCRp+/btWrhwoXr27ClJOnHihM5mt3TpdQqy1GdgYKDWr19vsX/Tpk25rkIVGBioF154QampqeYb0jdt2qQGDRrI19c322PS09O1b98+8+e43tKlS9W6dWu1aNEi189lLST+AAAoZZKTk3Xq1CmLMgcHB1WqVKnQbbq4uGjw4MF64403lJCQoDFjxqh///7mu5imTp2qMWPGyNvbW927d1dycrL27NmjCxcuaMKECXr00Uf1wgsvaPjw4QoLC9OxY8f0xhtvWJzjiSee0KxZs/Tss89q2LBhiomJUWRkZKFjlq7N5hs8eLCeffZZVahQQVWqVFF4eLjs7OzMMxu//PJL/fnnn+rQoYN8fX21fv16ZWRk5LhUBQqvUqVKsre3z/auuOzuiHN2dpazs3NxhQcAgNUx4w8AAJQV+RljuV7Xrl3VrFkzDRgwQHPmzFFaWpr+85//qGPHjmrTpo25Xl5jTvXq1dMHH3ygNm3aKCEhQc8++2yOM/EyFWSpzyeeeELz58/Xc889p8cff1xbtmzRRx99pHXXPVNx/vz5Wrt2rTZv3ixJevTRRzV16lQNHTpUEydO1P79+zV37ly9+eab5mNefvll3XHHHbr11lt18eJFzZw5U8ePH9ewYcMszp+QkKA1a9Zo1qxZ+Y65qOhbAgBQymzYsEHVqlWz2O66664itXnrrbeqT58+6tmzp+699141b95cCxcuNO8fNmyY3n33XS1btkzNmjVTx44dFRkZaX7QsYeHh6KiorRv3z61atVKL7zwgl5//XWLc9SsWVOffPKJPvvsM7Vo0UKLFy/WtGnTihS3JM2ePVuBgYHq1auXunbtqjvvvFONGjUyzzz08fHRp59+qi5duqhRo0ZavHixPvzwQzVp0qTI54YlJycntW7d2txRlq4tKbt58+Z8Pc8RAAAAAADYTl5jLNczmUz6/PPP5evrqw4dOqhr166qU6dOluUs8xpzWrp0qS5cuKDbbrtNAwcO1JgxY1SlShWrfabatWtr3bp12rRpk1q0aKFZs2bp3XffVVBQkLnO2bNndeTIEfN7b29vff311zp69Khat26tp59+Wi+99JJGjBhhrnPhwgUNHz5cjRo1Us+ePZWQkKAdO3ZYzHaUpFWrVskwDD3yyCNW+0x5MRmGYRTb2UqphIQEeXt7Kz4+Xl5eXrYOB+VQ1MioLGXBS4JtEAlQNly9elVHjx5V7dq1i+WBuiheiYmJql69umbNmqWhQ4cW+Pjcvh/0CfK2evVqDR48WEuWLFHbtm01Z84cffTRR/r999+zPPvvRpnX93nVlYtu/vMjCyP8whRbh5C3jJyXOykRHK2zDM1NZeT/OaLIhl0peD6TqWT+HWNmx+I8hZWQkChvvwdv+m915m/WfNWVqxV+s64oXaN1hD4Gssj8run556Uy+G8Xt5QUJf7vZkCe8QfA1ozw8CK3UdbGnIo6xoKCsdaYFP+aAAAApdpPP/2k33//XW3btlV8fLxefvllSVLv3r1tHFn59NBDD+nff//VSy+9pFOnTqlly5basGFDnkk/AABKI5b6BAAAZQljLGUDiT8AAFDqvfHGGzp48KB5qclt27YV6ZmHKJrRo0dr9OjRtg4DAAAAAAAUEGMspR+JPwAAUKq1atVKMTExtg4DAACUQ8z4A4omzc5OC26/3fwaAGBbjLGUDST+AAAAAAAACsH0v80a7QDlUYqDg0bfd5+twwAAoEzhVhoAAAAAAAAAAAArMQzD1iGgFLLW94YZfwAAAAAAAIVgknXuqGbGH8otw1ClpCRJ0lk3N8nE/w0ASjdHR0dJUlJSklxdXW0cDUqbpP/9JmZ+jwqLxB8AAAAAAEAh8Iw/oGjcUlP178yZkiT3SZOU5ORk44gAoGjs7e3l4+OjM2fOSJLc3Nxk4qYG5MEwDCUlJenMmTPy8fGRvb19kdoj8QcAAAAAAABcJzo6Wp07d9aFCxfk4+Nj63AAAKWIn5+fJJmTf0B++fj4mL8/RUHiDwAA5IvJZNLatWsVEhJi61AAAABKBGb8lR2dOnVSy5YtNWfOHElS+/btdfLkSXl7e9s2MABAqWMymVStWjVVqVJFqamptg4HpYSjo2ORZ/plIvEHAEApEhoaquXLl0uSHBwcVKNGDfXr108vv/yyXFxcbBwdAAAAUDY4OTlZ5Y57AED5ZW9vb7VEDlAQJP4AALhOVFRUsZ0rODi4UMd1795dy5YtU2pqqmJiYjR48GCZTCa9/vrrVo4QAAAAuWHGX9kQGhqqrVu3auvWrZo7d64kadmyZRoyZIh5qc/IyEiNGzdO//3vf/X000/rxIkT6tmzp95//32tWbNG4eHhio+P18CBA/Xmm2+aB3qTk5P1wgsv6MMPP9TFixfVtGlTvf766+rUqZMNPzEAACjL6FsCAFDKODs7y8/PT/7+/goJCVHXrl21adMmSdK5c+f0yCOPqHr16nJzc1OzZs304YcfWhzfqVMnjRkzRs8995wqVKggPz8/TZkyxaLOoUOH1KFDB7m4uKhx48bm9q+3b98+denSRa6urqpYsaJGjBihy5cvm/eHhoYqJCRE06ZNU9WqVeXj46OXX35ZaWlpevbZZ1WhQgXVqFFDy5Yts/5FAgAAKAZ2VtxgO3PnzlVgYKCGDx+ukydP6uTJk/L3989SLykpSfPmzdOqVau0YcMGRUdH64EHHtD69eu1fv16ffDBB1qyZIk+/vhj8zGjR4/Wzp07tWrVKv3yyy/q16+funfvrkOHDmUbS3JyshISEiw2AACAgqBvCQBAKbZ//37t2LFDTk5OkqSrV6+qdevWWrdunfbv368RI0Zo4MCB+vHHHy2OW758udzd3fXDDz9oxowZevnll83JvYyMDPXp00dOTk764YcftHjxYk2cONHi+MTERAUFBcnX11e7d+/WmjVr9M0332j06NEW9bZs2aJ//vlH3333nWbPnq3w8HD16tVLvr6++uGHH/TEE09o5MiR+uuvv27iVQIAAABy5u3tLScnJ7m5ucnPz09+fn7ZLs2WmpqqRYsWqVWrVurQoYMefPBBff/991q6dKkaN26sXr16qXPnzvr2228lSXFxcVq2bJnWrFmju+++W3Xr1tUzzzyju+66K8eb3yIiIuTt7W3esktAAgAA5IalPgEAKGW+/PJLeXh4KC0tTcnJybKzs9P8+fMlSdWrV9czzzxjrvvUU09p48aN+uijj9S2bVtzefPmzRUeHi5JqlevnubPn6/NmzerW7du+uabb/T7779r48aNuuWWWyRJ06ZNU48ePczHr1y5UlevXtX7778vd3d3SdL8+fMVHBys119/XVWrVpUkVahQQfPmzZOdnZ0aNGigGTNmKCkpSZMmTZIkhYWFafr06fr+++/18MMP38SrBgAAYH0s9Vm+uLm5qW7duub3VatWVUBAgDw8PCzKzpw5I+naChnp6emqX7++RTvJycmqWLFitucICwvThAkTzO8TEhLKdPIvzc5OkS1amF8DAICiI/EHAEAp07lzZy1atEiJiYl688035eDgoL59+0qS0tPTNW3aNH300Uf6+++/lZKSouTkZLm5uVm00bx5c4v31apVMw9QHDhwQP7+/uaknyQFBgZa1D9w4IBatGhhTvpJ0p133qmMjAwdPHjQnPhr0qSJ7K77B3zVqlXVtGlT83t7e3tVrFjRfG5AksKOh8nLyy3vijYw1XeKrUPIU1iPkj1oZt/Ky9Yh5M3H0dYR5MrkknUWSoniULK/g5Ikz5L9Z1wqrqHJ1gFkLyMprVjPR+KvfHF0tPy7w2QyZVuWkZEhSbp8+bLs7e0VExOTZQbh9cnC6zk7O8vZ2dmKUZdsKQ4OGvLAA7YOAwCAMoXEHwAApYy7u7tuvfVWSdJ7772nFi1aaOnSpRo6dKhmzpypuXPnas6cOWrWrJnc3d01btw4paSkWLSR2wCFNRV0cAQAAACwBScnJ6Wnp1u1zVatWik9PV1nzpzR3XffbdW2AQAAcsJNZQAAlGJ2dnaaNGmSJk+erCtXrmj79u3q3bu3HnvsMbVo0UJ16tTRH3/8UaA2GzVqpBMnTujkyZPmsl27dmWp8/PPPysxMdFctn37dvOSngAAAOWBnRU32FZAQIB++OEHHTt2TGfPnrXKjWn169fXgAEDNGjQIH366ac6evSofvzxR0VERGjdunVWiLoMMAy5paTILSVFMgxbRwMAQJlA3xIAgFKuX79+sre314IFC1SvXj1t2rRJO3bs0IEDBzRy5EidPn26QO117dpV9evX1+DBg/Xzzz9r27ZteuGFFyzqDBgwQC4uLho8eLD279+vb7/9Vk899ZQGDhxoXuYTAAAAKC2eeeYZ2dvbq3HjxqpcubLi4uKs0u6yZcs0aNAgPf3002rQoIFCQkK0e/du1axZ0yrtl3ZuqalKnDZNidOmyS011dbhAABQJpD4AwCglHNwcNDo0aM1Y8YMPf3007rtttsUFBSkTp06yc/PTyEhIQVqz87OTmvXrtWVK1fUtm1bDRs2TK+99ppFHTc3N23cuFHnz5/X7bffrgcffFD33HOP5s+fb8VPBgAAULIx46/sqF+/vnbu3KmkpCQZhqHQ0FAZhiEfHx9JUmhoqC5evGhxzJQpUxQbG2tRFhkZqc8++8z83tHRUVOnTtXRo0eVkpKif/75R59++qmaNWt2cz8QAAAot3jGHwAA1wkODrZ1CLmKjIzMtvz555/X888/L0kWAw3ZiY6OzlJ24zH169fXtm3bLMqMG5beadasmbZs2VKgWLM797Fjx3JsAwAAoCSzVtKOxB8AAACshb4lAAAAAAAAAAAAUAYw4w8AAAAAAKCQTLYOAAAAALgOiT8AAAAAAIBCYKlPAAAAlDT0LQEAAAAAAAAAAIAygBl/AAAAAAAAhcCMP6Bo0k0mrWnc2PwaAAAUHYk/AEC5ZRiGrUNACcT3AgAA5BeJP6Bokh0d1b9/f1uHAQBAmULfEgBQ7jg6OkqSkpKSbBwJSqLM70Xm9wQAAAAAAAAoLZjxBwAod+zt7eXj46MzZ85Iktzc3GRiWZlyzzAMJSUl6cyZM/Lx8ZG9vb2tQwIAACWcSZI1upEmFhwAAACAlZD4AwCUS35+fpJkTv4BmXx8fMzfDwAAAAA3j1tKihKnTZMkuU+apCQnJxtHBABA6UfiDwBQLplMJlWrVk1VqlRRamqqrcNBCeHo6MhMPwAAkG92JkN2VpiuZydDYtYfAAAArIDEHwCgXLO3tyfRAwAAgEIxmay01KdE4g8AAABWQeIPAAAAVvHdd99p5syZiomJ0cmTJ7V27VqFhITYOiwAAIBSLz4sTF5eXrYOw/oSE6X/LfWZOGmS5O5u44AAACj97GwdAAAAAMqGxMREtWjRQgsWLLB1KAAAFAuTFTcAAADAGpjxBwAAAKvo0aOHevToYeswAAAoNteW+iz6Gp0k/gAAAGAtJP4AAABgE8nJyUpOTja/T0hIsGE0AAAAAAAApR+JPwAAANhERESEpk6dauswAAAotGsz/qzQTtGbAEone3upZ8//fw0AAIqMZ/wBAADAJsLCwhQfH2/eTpw4YeuQAAAokMzEnzU2oFxycZHWrbu2ubjYOhoAAMoEZvwBAADAJpydneXs7GzrMAAAAAAAAMoMEn8AAAAAAACFYGcyZGcyit6Oit4GAAAAIJH4AwAAgJVcvnxZhw8fNr8/evSoYmNjVaFCBdWsWdOGkQEAAKBESkyUqlS59vrMGcnd3bbxAABQBpD4AwAAgFXs2bNHnTt3Nr+fMGGCJGnw4MGKjIy0UVQAANw8pv9t1mgHyI13RESZfAaeW0qKEpOSJEnu06YpycnJxhGhuBjh4bYOAQDKLBJ/AAAAsIpOnTrJMFiqDABQjpgkE1k7AAAAlCB2tg4AAAAAAAAAAAAAQNEx4w8oZ6JGRmUpC14SbINIAAAAAKB0M1lpxh+TBgEAAGAtJP4AAAAAAAAKwWQyZDIVfZlrk1gqGwAAANbBUp8AAAAAAAAAAABAGcCMPwAAAAAAgEKwM13bitxO0ZsASqUMk0nRtWqZXwMAgKIrc33L6dOny2Qyady4ceayq1evatSoUapYsaI8PDzUt29fnT592nZBAgAAAACAUi/zGX/W2IDy6KqjozoPGaLOQ4boqqOjrcMBAKBMKFOJv927d2vJkiVq3ry5Rfn48eMVFRWlNWvWaOvWrfrnn3/Up08fG0UJAAAAAAAAAAAAWF+ZSfxdvnxZAwYM0DvvvCNfX19zeXx8vJYuXarZs2erS5cuat26tZYtW6YdO3Zo165dNowYAAAAAACUZiYZVtsAAAAAaygzib9Ro0bpvvvuU9euXS3KY2JilJqaalHesGFD1axZUzt37sy2reTkZCUkJFhsAAAAAAAAAKzHLSVFZ2bM0JkZM+SWkmLrcAAAKBPKROJv1apV2rt3ryIiIrLsO3XqlJycnOTj42NRXrVqVZ06dSrb9iIiIuTt7W3e/P39b0bYAAAAAACgFLP1M/4WLFiggIAAubi4qF27dvrxxx9zrT9nzhw1aNBArq6u8vf31/jx43X16tXCnRywkspJSaqclGTrMAAAKDNKfeLvxIkTGjt2rFasWCEXFxertBkWFqb4+HjzduLECau0CwAAAAAAyg5bJv5Wr16tCRMmKDw8XHv37lWLFi0UFBSkM2fOZFt/5cqVev755xUeHq4DBw5o6dKlWr16tSZNmlTEqwAAAICSpNQn/mJiYnTmzBnddtttcnBwkIODg7Zu3ap58+bJwcFBVatWVUpKii5evGhx3OnTp+Xn55dtm87OzvLy8rLYAAAAAAAASorZs2dr+PDhGjJkiBo3bqzFixfLzc1N7733Xrb1d+zYoTvvvFOPPvqoAgICdO+99+qRRx7Jc5YgAAAASpdSn/i75557tG/fPsXGxpq3Nm3aaMCAAebXjo6O2rx5s/mYgwcPKi4uToGBgTaMHAAAAAAAlGZ2JsNqW0GkpKQoJiZGXbt2/f9Y7OzUtWtX7dy5M9tj2rdvr5iYGHOi788//9T69evVs2fPwl+AMspkMumzzz6zdRgAAACF4mDrAIrK09NTTZs2tShzd3dXxYoVzeVDhw7VhAkTVKFCBXl5eempp55SYGCg7rjjDluEDAAAgNxkpEkZqbaOIlthPUr+fXMRX2XYOoRcjTl11tYh5Mndz8nWIeTKvpGHrUPIXcn/30Qmf1dbh5C7tIIlgWzCw9HWEWTvSlqxnq4oz+ezaOd//01ISLAod3Z2lrOzc5b6Z8+eVXp6uqpWrWpRXrVqVf3+++/ZnuPRRx/V2bNnddddd8kwDKWlpemJJ54o10t9TpkyRZ999pliY2Mtyk+ePClfX1/bBAUAAFBEpeCfZEX35ptvqlevXurbt686dOggPz8/ffrpp7YOCwAAAAAAwMzf31/e3t7mLSIiwmptR0dHa9q0aVq4cKH27t2rTz/9VOvWrdMrr7xitXOUFX5+ftkmXAEAAEqDMpn4i46O1pw5c8zvXVxctGDBAp0/f16JiYn69NNPc3y+HwAAAAAAQH6YrLhJ0okTJxQfH2/ewsLCsj1vpUqVZG9vr9OnT1uUnz59OsfxjhdffFEDBw7UsGHD1KxZMz3wwAOaNm2aIiIilJFRsmeL52bDhg2666675OPjo4oVK6pXr146cuSIef9ff/2lRx55RBUqVJC7u7vatGmjH374QZGRkZo6dap+/vlnmUwmmUwmRUZGSsq61Oe+ffvUpUsXubq6qmLFihoxYoQuX75s3h8aGqqQkBC98cYbqlatmipWrKhRo0YpNfX/VzBYuHCh6tWrJxcXF1WtWlUPPvjgTb82pUGGyaTdt9yi3bfcogxrTJ8FAAClf6lPAAAAAAAAWzCZDJkK+Hy+bNvRtTa8vLzk5eWVZ30nJye1bt1amzdvVkhIiCQpIyNDmzdv1ujRo7M9JikpSXZ2lvd/29vbS5IMoxQsL5uDxMRETZgwQc2bN9fly5f10ksv6YEHHlBsbKySkpLUsWNHVa9eXV988YX8/Py0d+9eZWRk6KGHHtL+/fu1YcMGffPNN5Ikb2/vbNsPCgpSYGCgdu/erTNnzmjYsGEaPXq0OVEoSd9++62qVaumb7/9VocPH9ZDDz2kli1bavjw4dqzZ4/GjBmjDz74QO3bt9f58+e1bdu2bD9PcnKykpOTze9vXP61rLnq6Ki2I0bYOgwAAMoUEn8AAAAAAAClzIQJEzR48GC1adNGbdu21Zw5c5SYmKghQ4ZIkgYNGqTq1aublwsNDg7W7Nmz1apVK7Vr106HDx/Wiy++qODgYHMCsDTq27evxfv33ntPlStX1m+//aYdO3bo33//1e7du1WhQgVJ0q233mqu6+HhIQcHh1xXhVq5cqWuXr2q999/X+7u7pKk+fPnKzg4WK+//rr5OYu+vr6aP3++7O3t1bBhQ913333avHmzhg8frri4OLm7u6tXr17y9PRUrVq11KpVq2zPFxERoalTpxbpmgAAgPKNxB9gY1EjoyzeBy8JtlEkubsxTqnkxgoAAAAAxcFkurYVuZ1CHPPQQw/p33//1UsvvaRTp06pZcuW2rBhgzkRFRcXZzHDb/LkyTKZTJo8ebL+/vtvVa5cWcHBwXrttdeK/gFs6NChQ3rppZf0ww8/6OzZs+ZlS+Pi4hQbG6tWrVqZk36FceDAAbVo0cKc9JOkO++8UxkZGTp48KD5ejdp0sQigVqtWjXt27dPktStWzfVqlVLderUUffu3dW9e3c98MADcnNzy3K+sLAwTZgwwfw+ISFB/v7+hY4fAACUPyT+AAAAAAAASqHRo0fnuLRndHS0xXsHBweFh4crPDy8GCIrPsHBwapVq5beeecd3XLLLcrIyFDTpk2VkpIiV1fXYovD0dHR4r3JZDInIT09PbV3715FR0fr66+/1ksvvaQpU6Zo9+7d8vHxsTjO2dlZzs7OxRW2zbmmpOi3BQskSY1HjdIVJycbRwQAQOlnl3cVAAAAAAAA3MhOkp3JCputP0gpde7cOR08eFCTJ0/WPffco0aNGunChQvm/c2bN1dsbKzOnz+f7fFOTk5KT0/P9RyNGjXSzz//rMTERHPZ9u3bZWdnpwYNGuQ7VgcHB3Xt2lUzZszQL7/8omPHjmnLli35Pr6sMkkKiI9XQHx8oWa+AgCArOhbAgAAAAAAFILJZFhtQ8H5+vqqYsWKevvtt3X48GFt2bLFYpnMRx55RH5+fgoJCdH27dv1559/6pNPPtHOnTslSQEBATp69KhiY2N19uxZJScnZznHgAED5OLiosGDB2v//v369ttv9dRTT2ngwIHmZT7z8uWXX2revHmKjY3V8ePH9f777ysjI6NAiUMAAID8IvEHAAAAAACAUsfOzk6rVq1STEyMmjZtqvHjx2vmzJnm/U5OTvr6669VpUoV9ezZU82aNdP06dPNz+Lr27evunfvrs6dO6ty5cr68MMPs5zDzc1NGzdu1Pnz53X77bfrwQcf1D333KP58+fnO04fHx99+umn6tKlixo1aqTFixfrww8/VJMmTYp+EQAAAG7AM/4AAAAAAAAKieUJbatr16767bffLMoM4/9nUNaqVUsff/xxtsc6Oztnu+/64yWpWbNmuS7LGRkZmaVszpw55td33XVXlmcuAgAA3Cwk/gAAAAAAAArBZLq2WaMdAAAAwBpY6hMAAAAAAAAAAAAoA5jxBwAAAAAAUAgmkyGTyci7Yj7aAcojQ9KvlSubXwMAgKIj8QcAAAAAAFAIdqZrmzXaAcqjK05OajpqlK3DAACgTGGpTwAAAAAAAAAAAKAMIPEHAAAAq4iIiNDtt98uT09PValSRSEhITp48KCtwwIA4KYxmay3AQAAANZA4g8AAABWsXXrVo0aNUq7du3Spk2blJqaqnvvvVeJiYm2Dg0AAAAlkGtKivYvWKD9CxbINSXF1uEAAFAm8Iw/AAAAWMWGDRss3kdGRqpKlSqKiYlRhw4dbBQVAAA3j7Vm6zHjD+WVSVKTf/81vwYAAEVH4g8AAAA3RXx8vCSpQoUKNo4EAICbwyRDJhlWaQcAAACwBhJ/AAAAsLqMjAyNGzdOd955p5o2bZptneTkZCUnJ5vfJyQkFFd4AAAAAAAAZRLP+AMAAIDVjRo1Svv379eqVatyrBMRESFvb2/z5u/vX4wRAgBQdJlLfVpjAwAAAKyBxB8AAACsavTo0fryyy/17bffqkaNGjnWCwsLU3x8vHk7ceJEMUYJAEDRmexMVtsAAAAAa2CpTwAAAFiFYRh66qmntHbtWkVHR6t27dq51nd2dpazs3MxRQcAAFB6xYeFycvLy9ZhWF9iojRt2rWXkyZJ7u42DggAgNKPxB8AAACsYtSoUVq5cqU+//xzeXp66tSpU5Ikb29vubq62jg6AACsz2R3bStyO0VvAiidTCapVq3/fw0AAIqMxB8AAACsYtGiRZKkTp06WZQvW7ZMoaGhxR8QAAA3mbWez0e+A+WWm5t07JitowAAoEwh8QcAAACrMAzD1iEAAAAAAACUayT+AAAAAAAACsPOdG0rMqb8AQAAwDqssBI9AAAAAAAAABTQlSvS7bdf265csXU0AACUCcz4AwAAAAAAKAST3bWtyO0UvQmgdMrIkPbs+f/XAACgyEj8AQAAAAAAFILJZJLJVPS0nTXaAAAAACSW+gQAAAAAAAAAAADKBGb8AQAAAAAAFILJZKWlPo2it4GyzTsiQnJxsXUYVueWkqLE/712nzZNSU5ONo0HJZ8RHm7rEACgxCPxBwAAAAAAUBgm07XNGu0AAAAAVsBSnwAAAAAAAAAAAEAZwIw/AAAAAACAQjDZsdQnUFT/urnZOgQAAMoUEn8AAAAAAAAAil2Sk5OqPPecrcMAAKBMIfEHAAAAAABQCCY7k0x2RX8+n8ngGX8AAACwDhJ/AAAAAAAAhWAyXdus0Q4AAABgDST+AAAAAAAAABQ7l9RUffXf/0qSejz2mK46Oto4IgAASj8SfwAAAChZHN2ubSWQfSsvW4eQpzGnzto6hFzN+6nk/xNkdLNkW4eQK2/7kj01yFTDxdYh5Mk4ccXWIeTKVLNk/h1oISXd1hFkr7jjspNMdlZox7BCG0ApZGcY6nT8uPk1AAAoupL/r24AAAAAAICSyM50bSsqnvEHAAAAK7HGfWkAAAAAAAAAAAAAbIwZfwAAAAAAAIVgMl3brNEOAAAAYA0k/gAAAAAAAArBZGeSyQpLfZpY6hMAAABWwlKfAEqsqKgoRUVF2ToMAAAAAAAAAABKBRJ/AAAAAAAAhWCys96GkqFTp04aN26crcMoVxIdHZXo6GjrMAAAKDNY6hMAAAAAAADlSnR0tDp37qwLFy7Ix8fHXP7pp5/KkSRUsUlycpLHCy/YOgwAAMoUEn8AAAAAAACFYDKZZDJZ4Rl/VmgD1lGhQgVbhwAAAFAkLCYBAAAAAABQGCZdG1kp6lbO834ZGRmKiIhQ7dq15erqqhYtWujjjz+WdG1mnslk0saNG9WqVSu5urqqS5cuOnPmjL766is1atRIXl5eevTRR5WUlGRuMzk5WWPGjFGVKlXk4uKiu+66S7t375YkHTt2TJ07d5Yk+fr6ymQyKTQ0VFLWpT4vXLigQYMGydfXV25uburRo4cOHTpk3h8ZGSkfHx9t3LhRjRo1koeHh7p3766TJ0+a60RHR6tt27Zyd3eXj4+P7rzzTh0/fvxmXU4AAFDOkfgDAAAAAACAzUREROj999/X4sWL9euvv2r8+PF67LHHtHXrVnOdKVOmaP78+dqxY4dOnDih/v37a86cOVq5cqXWrVunr7/+Wm+99Za5/nPPPadPPvlEy5cv1969e3XrrbcqKChI58+fl7+/vz755BNJ0sGDB3Xy5EnNnTs329hCQ0O1Z88effHFF9q5c6cMw1DPnj2VmppqrpOUlKQ33nhDH3zwgb777jvFxcXpmWeekSSlpaUpJCREHTt21C+//KKdO3dqxIgROc7yTE5OVkJCgsVWljmnpurLFSv05YoVcr7umgIAgMJjqU8AAAAAAIBCMJmubdZop7xKTk7WtGnT9M033ygwMFCSVKdOHX3//fdasmSJRowYIUl69dVXdeedd0qShg4dqrCwMB05ckR16tSRJD344IP69ttvNXHiRCUmJmrRokWKjIxUjx49JEnvvPOONm3apKVLl+rZZ581L+lZpUoVi2f8Xe/QoUP64osvtH37drVv316StGLFCvn7++uzzz5Tv379JEmpqalavHix6tatK0kaPXq0Xn75ZUlSQkKC4uPj1atXL/P+Ro0a5Xg9IiIiNHXq1MJdzFLI3jB03/9mUNobho2jAQCgbGDGHwAAAAAAQCGY7CSTnckKm60/ie0cPnxYSUlJ6tatmzw8PMzb+++/ryNHjpjrNW/e3Py6atWqcnNzMyf9MsvOnDkjSTpy5IhSU1PNiUJJcnR0VNu2bXXgwIF8x3bgwAE5ODioXbt25rKKFSuqQYMGFu24ubmZk3qSVK1aNXMsFSpUUGhoqIKCghQcHKy5c+daLAN6o7CwMMXHx5u3EydO5DteAAAAiRl/AAAAAAAAsJHLly9LktatW6fq1atb7HN2djYn/xwdHc3lJpPJ4n1mWUZGxk2ONnvZxWJcN3tt2bJlGjNmjDZs2KDVq1dr8uTJ2rRpk+64444sbTk7O8vZ2fmmxwwAAMqucnxPGYDSLioqytYhAAAAACjHrs34s85WXjVu3FjOzs6Ki4vTrbfearH5+/sXqs26devKyclJ27dvN5elpqZq9+7daty4sSTJyclJkpSenp5jO40aNVJaWpp++OEHc9m5c+d08OBBczv51apVK4WFhWnHjh1q2rSpVq5cWaDjAQAA8osZfwAAAAAAAIXBQ/6KzNPTU88884zGjx+vjIwM3XXXXYqPj9f27dvl5eWlWrVqFbhNd3d3Pfnkk+Zn+dWsWVMzZsxQUlKShg4dKkmqVauWTCaTvvzyS/Xs2VOurq7y8PCwaKdevXrq3bu3hg8friVLlsjT01PPP/+8qlevrt69e+crlqNHj+rtt9/W/fffr1tuuUUHDx7UoUOHNGjQoAJ/LgAAgPwg8QcAAAAAAACbeeWVV1S5cmVFRETozz//lI+Pj2677TZNmjSp0Mt3Tp8+XRkZGRo4cKAuXbqkNm3aaOPGjfL19ZUkVa9eXVOnTtXzzz+vIUOGaNCgQYqMjMzSzrJlyzR27Fj16tVLKSkp6tChg9avX59lec+cuLm56ffff9fy5ct17tw5VatWTaNGjdLIkSML9bkAAADyQuIPAAAAVrFo0SItWrRIx44dkyQ1adJEL730knr06GHbwAAAuEmstUxneV7qU7r2TLyxY8dq7Nix2e6//nl5khQaGqrQ0FCLsilTpmjKlCnm9y4uLpo3b57mzZuX43lffPFFvfjiixZl0dHRFu99fX31/vvv59hGdrGEhISYY65atarWrl2b4/EAAADWRuIPAAAAVlGjRg1Nnz5d9erVk2EYWr58uXr37q2ffvpJTZo0sXV4AAAAKGGSnJxkui5hCwAAio7EHwAAAKwiODjY4v1rr72mRYsWadeuXST+AABlksnOJJNd0Z/PZ402AAAAAInEHwAAAG6C9PR0rVmzRomJiQoMDMy2TnJyspKTk83vExISiis8AACswmS6tlmjHQAAAMAayvkq8gAAALCmffv2ycPDQ87OznriiSe0du1aNW7cONu6ERER8vb2Nm/+/v7FHC0AAABsyTk1VR999JE++ugjOaem2jocAADKBGb8ATdJ1MioLGXBS4KzqZn3cTfzfDdbSY0LAHBzNGjQQLGxsYqPj9fHH3+swYMHa+vWrdkm/8LCwjRhwgTz+4SEBJJ/AIBShaU+gaKxNwz1++03SVJoSIhtgwEAoIwg8QcAAACrcXJy0q233ipJat26tXbv3q25c+dqyZIlWeo6OzvL2dm5uEMEAMB6TP/brNEOAAAAYAUs9QkAAICbJiMjw+I5fgAAAAAAALh5mPEHAAAAqwgLC1OPHj1Us2ZNXbp0SStXrlR0dLQ2btxo69AAALgpTHbXNmu0AwAAAFgDiT8AAABYxZkzZzRo0CCdPHlS3t7eat68uTZu3Khu3brZOjQAAG4Kk8lKz/gzsdYnAAAArIPEHwAAAKxi6dKltg4BAAAAAACgXCPxBwAAAAAAUAgm07XNGu0AAAAA1kDiDwAAAAAAAECxS3J0lPukSebXAACg6Ej8AWVY1MioYj0OAAAAAMoTk52VnvFnhTZQtsWHhcnLy8vWYQAAgFKAxB8AAAAAAEBh2P1vs0Y7AAAAgBXQtQQAAAAAAABQ/JKTpdDQa1tysq2jAQCgTGDGHwAAAAAAQGHYma5t1mgHKI/S0qTly6+9XrBAcna2bTwAAJQBpX7G36JFi9S8eXN5eXnJy8tLgYGB+uqrr8z7r169qlGjRqlixYry8PBQ3759dfr0aRtGDAAAAAAAygQ7K24AAACAFZT6rmWNGjU0ffp0xcTEaM+ePerSpYt69+6tX3/9VZI0fvx4RUVFac2aNdq6dav++ecf9enTx8ZRAwAAAAAAAAAAANZV6pf6DA4Otnj/2muvadGiRdq1a5dq1KihpUuXauXKlerSpYskadmyZWrUqJF27dqlO+64wxYhAwAAAACAsoClPgEAAFDClPoZf9dLT0/XqlWrlJiYqMDAQMXExCg1NVVdu3Y112nYsKFq1qypnTt35thOcnKyEhISLDYAAAAAAAALNl7qc8GCBQoICJCLi4vatWunH3/8Mdf6Fy9e1KhRo1StWjU5Ozurfv36Wr9+feFODgAAgBKp1M/4k6R9+/YpMDBQV69elYeHh9auXavGjRsrNjZWTk5O8vHxsahftWpVnTp1Ksf2IiIiNHXq1JscNUqqqJFRFu+DlwTnUBMAAAAAANtYvXq1JkyYoMWLF6tdu3aaM2eOgoKCdPDgQVWpUiVL/ZSUFHXr1k1VqlTRxx9/rOrVq+v48eNZxkwAAABQupWJxF+DBg0UGxur+Ph4ffzxxxo8eLC2bt1a6PbCwsI0YcIE8/uEhAT5+/tbI1QAAAAAAFBW2HCpz9mzZ2v48OEaMmSIJGnx4sVat26d3nvvPT3//PNZ6r/33ns6f/68duzYIUdHR0lSQEBAkcJG8fGOiJBcXGwdhtW5paQo8X+v3adNU5KTk03jAYqLER5u6xAAlGFlIvHn5OSkW2+9VZLUunVr7d69W3PnztVDDz2klJQUXbx40eIOttOnT8vPzy/H9pydneXs7HyzwwYAAAAAADC78VEjOY1PpKSkKCYmRmFhYeYyOzs7de3aNcdHm3zxxRcKDAzUqFGj9Pnnn6ty5cp69NFHNXHiRNnb21v3gwD5lOToqMrPPmt+DQAAiq5MJP5ulJGRoeTkZLVu3VqOjo7avHmz+vbtK0k6ePCg4uLiFBgYaOMoAQAAkC0j49pWEvmU/AEpd7+Sfaf86GbJtg4hT/P3lew/5/+kXbF1CLnySEy3dQh5cmrkYesQcmX8eNHWIeTNq2QOJxgpxfz9s/KMvxtXGwoPD9eUKVOyVD979qzS09NVtWpVi/KqVavq999/z/YUf/75p7Zs2aIBAwZo/fr1Onz4sP7zn/8oNTVV4cw8ga2YTDrr7m7rKAAAKFNKZk+9AMLCwtSjRw/VrFlTly5d0sqVKxUdHa2NGzfK29tbQ4cO1YQJE1ShQgV5eXnpqaeeUmBgoO644w5bhw4AAAAAAEozkyQ7K7Uj6cSJE/Ly8jIXW3M1ooyMDFWpUkVvv/227O3t1bp1a/3999+aOXMmiT8AAIAypNQn/s6cOaNBgwbp5MmT8vb2VvPmzbVx40Z169ZNkvTmm2/Kzs5Offv2VXJysoKCgrRw4UIbRw0AAAAAAGDJy8vLIvGXk0qVKsne3l6nT5+2KM/t0SbVqlWTo6OjxbKejRo10qlTp5SSkiInnq0GG3BKS9PsjRslSROCgpTiUOqHKgEAsLlS/2u6dOnSXPe7uLhowYIFWrBgQTFFBAAAAAAAygUrL/WZX05OTmrdurU2b96skJAQSddm9G3evFmjR4/O9pg777xTK1euVEZGhuzsrk1T/OOPP1StWjWSfrAZh4wMjdq9W5L0XLduSrFxPAAAlAXWWJACAAAAAACg/LGz4lZAEyZM0DvvvKPly5frwIEDevLJJ5WYmKghQ4ZIkgYNGqSwsDBz/SeffFLnz5/X2LFj9ccff2jdunWaNm2aRo0aVbjPDgAAgBKp1M/4A1ByRI2Mss15o6IUHBxsk3MDAAAAgC089NBD+vfff/XSSy/p1KlTatmypTZs2KCqVatKkuLi4swz+yTJ399fGzdu1Pjx49W8eXNVr15dY8eO1cSJE231EQAAAHATkPgDAAAAAAAoDBst9Zlp9OjROS7tGR0dnaUsMDBQu3btKtS5AAAAUDqQ+AMAAAAAACgM0/82a7QDAAAAWAHP+AMAAAAAAAAAAADKAGb8AQAAAAAAFIaNl/oEAAAAbkTiDwAAAAAAAECxu+LgoICxY82vAQBA0fGLCgAAAAAAUBjM+AOKxLCz03FfX1uHAQBAmcIz/gAAAAAAAArDzoobbMowDI0YMUIVKlSQyWRSbGzsTTlPp06dNG7cuJvSNgAAgMSMP6DUihoZVSLbAgAAAACgtNmwYYMiIyMVHR2tOnXqqFKlSrYOqVxwTEvTa1u2SJJe6NJFqSz3CQBAkfFrCgAAAAAAUBgs9VlmHDlyRNWqVVP79u1tHUq54piRoWd37JAkTenUSak2jgcAgLKAxSQAAAAAAAAKwWSSTHZW2Mj72VRoaKieeuopxcXFyWQyKSAgQMnJyRozZoyqVKkiFxcX3XXXXdq9e7fFcVu3blXbtm3l7OysatWq6fnnn1daWpp5f2JiogYNGiQPDw9Vq1ZNs2bNKu6PBgAAyiESfwAAALC66dOny2Qy8QwbAABQ4s2dO1cvv/yyatSooZMnT2r37t167rnn9Mknn2j58uXau3evbr31VgUFBen8+fOSpL///ls9e/bU7bffrp9//lmLFi3S0qVL9eqrr5rbffbZZ7V161Z9/vnn+vrrrxUdHa29e/fmGktycrISEhIsNgAAgIIg8QcAAACr2r17t5YsWaLmzZvbOhQAAG6uzKU+rbHBZry9veXp6Sl7e3v5+fnJzc1NixYt0syZM9WjRw81btxY77zzjlxdXbV06VJJ0sKFC+Xv76/58+erYcOGCgkJ0dSpUzVr1ixlZGTo8uXLWrp0qd544w3dc889atasmZYvX24xIzA7ERER8vb2Nm/+/v7FcQkAAEAZQuIPAAAAVnP58mUNGDBA77zzjnx9fW0dDgAAN5edFTeUGEeOHFFqaqruvPNOc5mjo6Patm2rAwcOSJIOHDigwMBAma5bp/XOO+/U5cuX9ddff+nIkSNKSUlRu3btzPsrVKigBg0a5HrusLAwxcfHm7cTJ05Y+dMBAICyjq4lAAAArGbUqFG677771LVr1zzrspQVAACAJWdnZ3l5eVlsAAAABUHiDwAAAFaxatUq7d27VxEREfmqz1JWAIBSj6U+y6S6devKyclJ27dvN5elpqZq9+7daty4sSSpUaNG2rlzpwzDMNfZvn27PD09VaNGDdWtW1eOjo764YcfzPsvXLigP/74o/g+CAAAKJccbB0AAAAASr8TJ05o7Nix2rRpk1xcXPJ1TFhYmCZMmGB+n5CQQPIPAADYnLu7u5588kk9++yzqlChgmrWrKkZM2YoKSlJQ4cOlST95z//0Zw5c/TUU09p9OjROnjwoMLDwzVhwgTZ2dnJw8NDQ4cO1bPPPquKFSuqSpUqeuGFF2Rnxz3417vi4KAm//mP+TUAACg6flEBlEhRI6MU5x137fWXUZKk4CXBtgwJAJCLmJgYnTlzRrfddpu5LD09Xd99953mz5+v5ORk2dvbWxzj7OwsZ2fn4g4VAADrsdZsPWb8lTjTp09XRkaGBg4cqEuXLqlNmzbauHGj+RnG1atX1/r16/Xss8+qRYsWqlChgoYOHarJkyeb25g5c6YuX76s4OBgeXp66umnn1Z8fLytPlKJZNjZ6bcqVWwdBgAAZQqJPwAAABTZPffco3379lmUDRkyRA0bNtTEiROzJP0AACgT7GSdh6gwCczmxo0bp3Hjxpnfu7i4aN68eZo3b16Ox3Ts2FE//vhjjvs9PDz0wQcf6IMPPjCXPfvss1aJFwAAICck/gAAAFBknp6eatq0qUWZu7u7KlasmKUcAAAAkCTHtDRN2rZNkjTt7ruVynKfAAAUGb+mAAAAAAAAhWEnKy31WfQmgNLIMSNDU7ZulSTNvPNOpdo4HgAAygISfwAAALgpoqOjbR0CAAA3F0t9AgAAoIShawkAAAAAAAAAAACUAcz4AwAAAAAAKAw7k5WW+rRCGwAAAICY8QcAAAAAAAAAAACUCcz4A6wkamSUrUMolaKiohQcHJylPM47zgbRAAAAAEABmGSdW6qZ8AcAAAArIfEHAAAAAABQGCz1CQAAgBKGxB8AAAAAAACAYnfVwUG3Dx9ufg0AAIqOX1QAAAAAAIDCsJN1lvq0RhtAKZRhZ6c91avbOgwAAMoUEn8AAAAAAACFwVKfAAAAKGFI/AEAAAAAAAAodo5paRr7ww+SpLnt2imV5T4BACgyfk0BAAAAAAAKgxl/KCbxYWHy8vKydRjWl5goeXhIkmauXSu5u9s4IAAASj8SfwAAAAAAAIXBM/4AAABQwpD4A4pR1MgoW4dgM3HecaoZXzPbfVFR165LcHBwcYYEAAAAAAAAAECZQuIPAAAAAACgMFjqEwAAACUMiT8AAAAgn0wu9rYOIU/2jTxsHUKuvO1L/uD2f9Ku2DqEXC084GTrEHI11j3d1iHkyf7PJFuHkCv7Gi62DiFvJXVpypIaFwAAAFBMSPwBAAAAAAAUBs/4AwAAQAlD4g8AAAAAAKAwTKZrmzXaAQAAAKyAxB8AAAAAAACA4ufiIn377f+/BgAARUbiDwAAAAAAoDBM/9us0Q5QHtnbS5062ToKAADKFBJ/AAAAAAAAhcFSnygm3hERzIgDrMgID7d1CABw05D4A1BoUSOjinZ8VNGOt1YbAAAAAACg+Dmkp2tETIwk6e3WrZVmb2/jiAAAKP1I/AEAAAAAABQWk/WAQnNKT9eC9eslSZEtW5L4AwDACkj8AQAAAAAAFAZLfQIAAKCEsbN1AAAAAAAAAAAAAACKjhl/AAAAAAAAhWEn69xSzW3ZAAAAsBK6lgAAAAAAAAAAAEAZwIw/AAAAAACAwuAZfwAAAChhSPwBAAAAAAAUhul/mzXaAQAAAKyAxB+Qh6iRUbYOodyIiopScHBwtvvivOPyrFPUcwAAAAAAgOKTbG+v+x591PwaAAAUHYk/AAAAAACAwmCpT6BI0u3ttb5+fVuHAQBAmWJn6wAAAABQNkyZMkUmk8lia9iwoa3DAgDg5jFZcQMAAACsgBl/AAAAsJomTZrom2++Mb93cKC7CQAAgOw5pKdrwC+/SJJWNG+uNJb7BACgyBiJAQAAgNU4ODjIz8/P1mEAAFA8WOoTKBKn9HRFfv65JGlNkyYk/gAAsAKW+gQAAIDVHDp0SLfccovq1KmjAQMGKC4uztYhAQBw89hZcUOx6tSpk8aNG2fVNiMjI+Xj42PVNgEAAAqKGX8AAACwinbt2ikyMlINGjTQyZMnNXXqVN19993av3+/PD09s9RPTk5WcnKy+X1CQkJxhgsAAAAAAFDmkPgDAACAVfTo0cP8unnz5mrXrp1q1aqljz76SEOHDs1SPyIiQlOnTi3OEAEAsC6W+gQAAEAJw2ISAEqcqKgoi/dx3vlbJi4qKirLsQAA2/Hx8VH9+vV1+PDhbPeHhYUpPj7evJ04caKYIwQAAOVZWlqaRo8eLW9vb1WqVEkvvviiDMOQJF24cEGDBg2Sr6+v3Nzc1KNHDx06dMji+MjISNWsWVNubm564IEHdO7cOfO+Y8eOyc7OTnv27LE4Zs6cOapVq5YyMjJu/gcEAADlEok/AAAA3BSXL1/WkSNHVK1atWz3Ozs7y8vLy2IDAKBUMVlxQ7Fbvny5HBwc9OOPP2ru3LmaPXu23n33XUlSaGio9uzZoy+++EI7d+6UYRjq2bOnUlNTJUk//PCDhg4dqtGjRys2NladO3fWq6++am47ICBAXbt21bJlyyzOuWzZMoWGhsrOLvshueTkZCUkJFhsAAAABcFSnwAAALCKZ555RsHBwapVq5b++ecfhYeHy97eXo888oitQwMA4OZgqc9Szd/fX2+++aZMJpMaNGigffv26c0331SnTp30xRdfaPv27Wrfvr0kacWKFfL399dnn32mfv36ae7cuerevbuee+45SVL9+vW1Y8cObdiwwdz+sGHD9MQTT2j27NlydnbW3r17tW/fPn3++ec5xsRS6AAAoKiY8QcAAACr+Ouvv/TII4+oQYMG6t+/vypWrKhdu3apcuXKtg4NAAAgizvuuEOm65KugYGBOnTokH777Tc5ODioXbt25n0VK1ZUgwYNdODAAUnSgQMHLPZnHn+9kJAQ2dvba+3atZKuLQ3auXNnBQQE5BhTeVsKPdneXv369VO/fv2UbG9v63AAACgTmPEHAAAAq1i1apWtQwAAoFgx4Q+5cXJy0qBBg7Rs2TL16dNHK1eu1Ny5c3M9xtnZWc7OzsUUoe2l29vr4yZNbB0GAABlCjP+AAAAAAAACiMz82eNDcXuhx9+sHi/a9cu1atXT40bN1ZaWprF/nPnzungwYNq3LixJKlRo0bZHn+jYcOG6ZtvvtHChQuVlpamPn363IRPAgAA8P9I/AEAAAAAAKDciYuL04QJE3Tw4EF9+OGHeuuttzR27FjVq1dPvXv31vDhw/X999/r559/1mOPPabq1aurd+/ekqQxY8Zow4YNeuONN3To0CHNnz/f4vl+mRo1aqQ77rhDEydO1COPPCJXV9fi/pglmn16uh789Vc9+Ouvsk9Pt3U4AACUCST+AAAAAAAACsNkxQ3FbtCgQbpy5Yratm2rUaNGaezYsRoxYoQkadmyZWrdurV69eqlwMBAGYah9evXy9HRUdK15wO+8847mjt3rlq0aKGvv/5akydPzvY8Q4cOVUpKih5//PFi+2ylhXN6utasWaM1a9bImcQfAABWwTP+AAAAAAAACsNkkux4yF9pFB0dbX69aNGiLPt9fX31/vvv59rG448/niWZ9/TTT2ep9/fff6tZs2a6/fbbCxcsAABAATDjD0CZFRUVpaioKFuHAQAAAAAohy5fvqz9+/dr/vz5euqpp2wdDgAAKCdI/AEAAAAAABQGS30iF6NHj1br1q3VqVMnlvkEAADFhqU+AQAAAAAAACuLjIxUZGSkrcMAAADlTKmf8RcREaHbb79dnp6eqlKlikJCQnTw4EGLOlevXtWoUaNUsWJFeXh4qG/fvjp9+rSNIgYAAAAAAGWCyWS9DQAAALCCUp/427p1q0aNGqVdu3Zp06ZNSk1N1b333qvExERznfHjxysqKkpr1qzR1q1b9c8//6hPnz42jBoAAAAAAJR6LPUJAACAEqbUJ/42bNig0NBQNWnSRC1atFBkZKTi4uIUExMjSYqPj9fSpUs1e/ZsdenSRa1bt9ayZcu0Y8cO7dq1y8bRAwAAAAAAFM6CBQsUEBAgFxcXtWvXTj/++GO+jlu1apVMJpNCQkJuboBAHlLs7RXau7dCe/dWir29rcMBAKBMKPWJvxvFx8dLkipUqCBJiomJUWpqqrp27Wqu07BhQ9WsWVM7d+60SYwAAAAAAKAMsOFSn6tXr9aECRMUHh6uvXv3qkWLFgoKCtKZM2dyPe7YsWN65plndPfddxf2UwNWk2Zvr+WtWml5q1ZKI/EHAIBVlKnEX0ZGhsaNG6c777xTTZs2lSSdOnVKTk5O8vHxsahbtWpVnTp1Ktt2kpOTlZCQYLEBAAAAAABYsOFSn7Nnz9bw4cM1ZMgQNW7cWIsXL5abm5vee++9HI9JT0/XgAEDNHXqVNWpU6fgJwUAAECJ52DrAKxp1KhR2r9/v77//vsitRMREaGpU6daKSoAN1rw3ALVjK+pOO84SVLNu2sW6PioqKgc98Vti1PUl9f2Z7av4MLFCQAAAAAlUUpKimJiYhQWFmYus7OzU9euXXNd3ejll19WlSpVNHToUG3btq04QgVyZZ+erqAjRyRJG+vWVTqz/gAAKLIyk/gbPXq0vvzyS3333XeqUaOGudzPz08pKSm6ePGixay/06dPy8/PL9u2wsLCNGHCBPP7hIQE+fv737TYAQAAcB07p2tbSeRQChbMKOEhmmq42DqEPHkkpts6hFyNdS/Z8c3dU/IHbSfcmWbrEHJlfyjJ1iHkydm3hA4npBbz/x92kuwKMV0vu3akLCsOOTs7y9nZOUv1s2fPKj09XVWrVrUor1q1qn7//fdsT/H9999r6dKlio2NLXq8gJU4p6dr3cqVkiT3SZOUROIPAIAiK+HDAnkzDEOjR4/W2rVrtWXLFtWuXdtif+vWreXo6KjNmzebyw4ePKi4uDgFBgZm26azs7O8vLwsNgAAAAAAAAtWXurT399f3t7e5i0iIsIqYV66dEkDBw7UO++8o0qVKlmlTQAAAJRMJfQWvfwbNWqUVq5cqc8//1yenp7m5/Z5e3vL1dVV3t7eGjp0qCZMmKAKFSrIy8tLTz31lAIDA3XHHXfYOHoAAAAAAIBrTpw4YXHzcXaz/SSpUqVKsre31+nTpy3Kc1rd6MiRIzp27JiCg///OQgZGRmSJAcHBx08eFB169a1xkcAAACAjZX6xN+iRYskSZ06dbIoX7ZsmUJDQyVJb775puzs7NS3b18lJycrKChICxcuLOZIAQAAAABAmWIyXdus0Y6U71WHnJyc1Lp1a23evFkhISGSriXyNm/erNGjR2ep37BhQ+3bt8+ibPLkybp06ZLmzp3L401KgfiwsLK5IlViojRt2rWXkyZJ7u42DggAgNKv1Cf+DMPIs46Li4sWLFigBQsWFENEAAAAAAAAN9eECRM0ePBgtWnTRm3bttWcOXOUmJioIUOGSJIGDRqk6tWrKyIiQi4uLmratKnF8T4+PpKUpRwAAAClW6lP/AEAAAAAANjEdc/nK3I7BfTQQw/p33//1UsvvaRTp06pZcuW2rBhg6pWrSpJiouLk52dnRWCAwAAQGlC4g8AAAAAAKAwrLzUZ0GNHj0626U9JSk6OjrXYyMjIwt1TgAAAJRsJP4A2EScd1y25VFRUTe1/ezOdf0D7gEAAAAAQDFxcpLmz///1wAAoMhI/AEAAAAAABSGDZf6BMoER0dp1ChbRwEAQJlC4g8AAAAAAKAw7EzXNmu0AwAAAFgBiT8AAAAAAAAAxS89Xdq27drru++W7O1tGw8AAGUAiT8AAAAAAIDCMJmubdZoByiPrl6VOne+9vryZcnd3bbxAABQBpD4AwAAAAAAKAwSfygm3hERkouLrcOwOreUFCX+77X7tGlKcnKyaTwAABSWER5u6xDM7GwdAAAAAAAAAAAAAICiY8YfAAAAAABAYTDjDwAAACUMiT+UaFEjo7KUBS8JtkEksIY477jsy7dlX56vNv93bNSXUTm2DwAAAAAAAABAecBSnwAAALCav//+W4899pgq/h979x0dVbX2cfw3E5JJIIUaamihgxRBMBRBaReRV2wgciWgKCpcQK4o2AiiBrChiKiogAXBhooKiCBwVQRE8NJEQCCoEGoK6ZnZ7x8xcxmSQMokM0m+n7XOSubMPvs8s6ftOc/Z+1SrpoCAAF122WX66aefPB0WAADFw2J13wIAAAC4ASP+AAAA4BZnz55Vt27ddPXVV2vlypWqUaOG9u/frypVqng6NAAAiofFIlmZ6hMAAADeg8QfAAAA3GLWrFkKCwvTwoULnesaNWrkwYgAAADgzTKsVk3u29f5PwAAKDq+UQEAAOAWn3/+uTp16qRbbrlFoaGh6tChgxYsWODpsAAAKD4Wi/sWoBzKqFBBz3brpme7dVNGBcYnAADgDiT+AAAA4Ba///675s+fr6ZNm2r16tW69957NX78eC1evDjX8mlpaUpISHBZAAAoVbjGHwAAALwMp9IAAADALRwOhzp16qSnn35aktShQwft2rVLr776qiIjI3OUj46O1vTp00s6TAAAAHgJq8Ohy48dkyT9XLu2HEz3CQBAkfFtCgAAALeoXbu2WrVq5bKuZcuWiomJybX81KlTFR8f71yOHj1aEmECAOA+TPUJFIl/Zqa2LligrQsWyD8z09PhAABQJjDiD+XGijErcqwb9NogD0RS9sSExKh+fH1PhwEA8LBu3bpp3759Lut+++03NWjQINfyNptNNputJEIDAAAAAAAoF0j8AQAAwC3uv/9+de3aVU8//bSGDBmiLVu26PXXX9frr7/u6dAAACgeVkvW4o56AAAAADdgqk8AAAC4xRVXXKHly5fr/fffV5s2bTRjxgzNmTNHw4cP93RoAAAUD4vVfQs8qlevXpo4caKnwwAAACgyRvwBAADAba677jpdd911ng4DAAAAAACgXCLxBwAAAAAAUBgWS9bijnpQ5tjtdlksFlmtjOgEAAAlh54HAAAAAABAYWQn/tyxQFLWlJvjx4/Xgw8+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4be8pPn6asiQIZ4OAwCAMoWeJQAAAAAAQGFYLO5bUCwcDodmz56tJk2ayGazqX79+nrqqackSTt37tQ111yjgIAAVatWTXfffbfOnTuXZ11paWkaP368QkND5e/vr+7du2vr1q3O+9evXy+LxaKVK1eqY8eOstls+u677/TLL7/o6quvVlBQkIKDg9WxY0f99NNPxf7YAQBA+VQmEn8bN27UoEGDVKdOHVkslhxzrxtj9Pjjj6t27doKCAhQnz59tH//fs8ECwAAAAAAgBIxdepUzZw5U4899pj27NmjJUuWqGbNmkpKSlL//v1VpUoVbd26VR9++KG++eYbjRs3Ls+6HnzwQX388cdavHixfv75ZzVp0kT9+/fXmTNnXMpNmTJFM2fO1N69e9W2bVsNHz5c9erV09atW7Vt2zZNmTJFvr6+xf3QAQBAOVUmEn9JSUlq166d5s2bl+v9s2fP1ksvvaRXX31VmzdvVqVKldS/f3+lpqaWcKQAAAAAAKDM8PCIv3nz5qlhw4by9/dXly5dtGXLljzLLliwQD169FCVKlVUpUoV9enT56Lly4LExES9+OKLmj17tiIjIxUeHq7u3btr9OjRWrJkiVJTU/X222+rTZs2uuaaa/Tyyy/rnXfeUWxsbI66kpKSNH/+fD3zzDMaMGCAWrVqpQULFiggIEBvvvmmS9knnnhCffv2VXh4uKpWraqYmBj16dNHLVq0UNOmTXXLLbeoXbt2ucaclpamhIQEl6Usq5ieLhMVJRMVpYrp6Z4OBwCAMqFMJP4GDBigJ598UjfccEOO+4wxmjNnjh599FFdf/31atu2rd5++2399ddfOUYGAgAAAAAAlAbLli3TpEmTNG3aNP38889q166d+vfvrxMnTuRafv369Ro2bJi+/fZbbdq0SWFhYerXr5/+/PPPEo685Ozdu1dpaWnq3bt3rve1a9dOlSpVcq7r1q2bHA6H9u3bl6P8wYMHlZGRoW7dujnX+fr6qnPnztq7d69L2U6dOrncnjRpkkaPHq0+ffpo5syZOnjwYJ4xR0dHKyQkxLmEhYXl+/ECAABIZSTxdzGHDh3S8ePH1adPH+e6kJAQdenSRZs2bcp1m/J2dhUAAAAAACgMixuXgnn++ed11113adSoUWrVqpVeffVVVaxYUW+99Vau5d977z3dd999at++vVq0aKE3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PkdJKej7rKRt2LBBY8eO1Y8//qg1a9YoIyND/fr1U1JSkqdDkyTVq1dPM2fO1LZt2/TTTz/pmmuu0fXXX6/du3d7OrQctm7dqtdee01t27b1dCguWrdurWPHjjmX7777ztMhuTh79qy6desmX19frVy5Unv27NFzzz2nKlWqeDo0SVnP6/ntt2bNGknSLbfc4uHIssyaNUvz58/Xyy+/rL1792rWrFmaPXu25s6d6+nQnEaPHq01a9bonXfe0c6dO9WvXz/16dOH39QodwraZ/nhhx80bNgw3Xnnndq+fbsGDx6swYMHa9euXSUcedlT0OciOTlZjRs31syZM1WrVq0SjrZs4zit9yjoc1G1alU98sgj2rRpk/773/9q1KhRGjVqFMdi3IDj6t6jMM9FcHCwy++HI0eOFG+QBsYYYzp37mzGjh3rvG23202dOnVMdHR0vrbPzMw0QUFBZvHixcUVYplQmHbOzMw0Xbt2NW+88YaJjIw0119/fQlEWvoVtK3nz59vGjdubNLT00sqxDKjoG09duxYc80117ismzRpkunWrVuxxlmWSDLLly+/aJkHH3zQtG7d2mXd0KFDTf/+/YsxsrInP22dm1atWpnp06e7PyAgn4ratytJhX2flaQTJ04YSWbDhg2eDiVPVapUMW+88Yanw3CRmJhomjZtatasWWN69uxpJkyY4OmQjDHGTJs2zbRr187TYVzUQw89ZLp37+7pMPJtwoQJJjw83DgcDk+HYowxZuDAgeaOO+5wWXfjjTea4cOHeygiV8nJycbHx8d88cUXLusvv/xy88gjj3goKsAzCtpnGTJkiBk4cKDLui5dupgxY8YUa5zlQVH6jw0aNDAvvPBCMUZXvnCc1nu443dVhw4dzKOPPloc4ZUrHFf3HgV9LhYuXGhCQkJKKLosjPhT1kinbdu2qU+fPs51VqtVffr00aZNm/JVR3JysjIyMlS1atXiCrPUK2w7P/HEEwoNDdWdd95ZEmGWCYVp688//1wREREaO3asatasqTZt2ujpp5+W3W4vqbBLpcK0ddeuXbVt2zbnEPDff/9dX331la699toSibm82LRpk8vzIkn9+/fP9+c6Cs/hcCgxMZHvRHiMO/p2cBUfHy9JXvm+ttvtWrp0qZKSkhQREeHpcFyMHTtWAwcOzPF95A3279+vOnXqqHHjxho+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VahQwesTop6Icfv27frll1/03HPPleh+vcHbb7+tW2+9Ndc+w969e3X69Gl1797dA5GVPn369FGVKlW0ePFiPfHEE54OB+UAU30CJez8uctff/11hYeHy2az6YorrtDWrVtzlP/11181ZMgQ1ahRQwEBAWrevLkeeeQRlzLbt2/XgAEDFBwcrMDAQPXu3TvXabF2796ta665RgEBAapXr56efPLJPM9kXrlypXr06KFKlSopKChIAwcO1O7du13KjBw5UoGBgTp48KCuvfZaBQUFafjw4QVqj88++0wDBw5UnTp1ZLPZFB4erhkzZshutzvLTJs2Tb6+vjp58mSO7e+++25VrlxZqampxRp79tztBw4ccJ7dExISolGjRik5OdmlbGZmpmbMmOF8bhs2bKiHH35YaWlpLuWy5xpfvXq1OnXqpICAAL322mvO6xh88MEHmj59uurWraugoCDdfPPNio+PV1pamiZOnKjQ0FAFBgZq1KhROerOy+bNm/WPf/xDISEhqlixonr27Knvv//eef9HH30ki8WiDRs25Nj2tddek8VicZmTfN26dc62rly5sq6//nrt3bv3knHkdU2Fhg0bauTIkZKypoq55ZZbJElXX321c8qY7ClJcrsuzYkTJ3TnnXeqZs2a8vf3V7t27bR48WKXMgV9DwIAvAN9KFelrQ+V/XwEBwerWrVqmjBhgsu+JWnhwoW65pprFBoaKpvNplatWmn+/Pk56rywD5Ddd1q6dKkeffRR1a1bVxUrVlRCQoJ8fHz00ksvOcueOnVKVqtV1apVkzHGuf7ee+9VrVq1XB7nhbMNLF26VB07dlRQUJCCg4N12WWX6cUXX3QpExcXp4kTJyosLEw2m01NmjTRrFmz8j16cOXKlerZs6dzH1dccYWWLFniUubDDz9Ux44dFRAQoOrVq+uf//xnjmn0jh8/rlGjRqlevXqy2WyqXbu2rr/+epfp0/Nqxw8++EBPPfWU6tWrJ39/f/Xu3VsHDhzIEeul+pUAIEk9evSQJB08eNBl/a+//qqbb75ZVatWlb+/vzp16qTPP//8kvX95z//0S233KL69evLZrMpLCxM999/v1JSUpxlRo4cqXnz5kmSy/Sj2c7/PVrQ38CFjfv8fswLL7ygBg0aKCAgQD179sz1ul/5+a2dmJioiRMnqmHDhrLZbAoNDVXfvn31888/u7RF9vfZ4cOHVaNGDUnS9OnTne2S3Ra5XT+voMc3vvvuO3Xu3Fn+/v5q3Lix3n777Uu2zfku1Ta5xZjf/sNPP/2k/v37q3r16goICFCjRo10xx13XDKmTz/9VH5+frrqqqtyvT8uLu6Sx4kk6d1333V+f1etWlW33nqrjh496lImP6/v8+Nq06aN/P391aZNGy1fvjzX+PLTf8nNoUOHNHr0aA0fPjxHPyYmJkb9+vXTpEmTLlnP+d577z01b95c/v7+6tixozZu3Ohyf17XKMzr2o7vvvuuOnfurIoVK6pKlSq66qqrLjmjweLFi1WhQgVNnjzZue5SfZqoqChn+UaNGjnfO9n9qjVr1qh79+6qXLmyAgMD1bx5cz388MMu+/X19VWvXr302WefXTQ+wF28+zQOoBSKj4/PcWFfi8WiatWquaxbsmSJEhMTNWbMGFksFs2ePVs33nijfv/9d+cZWf/973/Vo0cP+fr66u6771bDhg118OBBrVixwnlB4d27d6tHjx4KDg7Wgw8+KF9fX7322mvq1auXNmzYoC5dukjK+vF/9dVXKzMzU1OmTFGlSpX0+uuv5zq67J133lFkZKT69++vWbNmKTk5WfPnz1f37t21fft2ly/hzMxM9e/fX927d9ezzz6rihUrFqi9Fi1apMDAQE2aNEmBgYFat26dHn/8cSUkJOiZZ56RJN1+++164okntGzZMpf51NPT0/XRRx/ppptucp6xV9yxDxkyRI0aNVJ0dLR+/vlnvfHGGwoNDdWsWbOcZUaPHq3Fixfr5ptv1r///W9t3rxZ0dHR2rt3b46O2L59+zRs2DCNGTNGd911l5o3b+68Lzo6WgEBAZoyZYoOHDiguXPnytfXV1arVWfPnlVUVJRz6pRGjRpdcq7wdevWacCAAerYsaOmTZsmq9Xq7CD/5z//UefOnTVw4EAFBgbqgw8+UM+ePV22X7ZsmVq3bq02bdpIkr755hsNGDBAjRs3VlRUlFJSUjR37lx169ZNP//8c5EvKH3VVVdp/Pjxeumll/Twww+rZcuWkuT8e6GUlBT16tVLBw4c0Lhx49SoUSN9+OGHGjlypOLi4jRhwgSX8vl5DwIASg59qLLfh2rYsKGio6P1448/6qWXXtLZs2ddDgjOnz9frVu31v/93/+pQoUKWrFihe677z45HA6NHTv2kvuYMWOG/Pz89MADDygtLU1+fn5q06aNNm7cqPHjx0uSvvvuO1ksFp05c0Z79uxR69atJWUdaMs+OJ2bNWvWaNiwYerdu7ez37d37159//33zj5GcnKyevbsqT///FNjxoxR/fr19cMPP2jq1Kk6duyY5syZc9H4Fy1apDvuuEOtW7fW1KlTVblyZW3fvl2rVq3Sbbfd5iwzatQoXXHFFYqOjlZsbKxefPFFff/999q+fbtz6qmbbrpJu3fv1r/+9S81bNhQJ06c0Jo1axQTE3PJPtrMmTNltVr1wAMPKD4+XrNnz9bw4cO1efNmZ5n89CsBQJLzwHiVKlWc63bv3q1u3bqpbt26zu/WDz74QIMHD9bHH3+sG264Ic/6PvzwQyUnJ+vee+9VtWrVtGXLFs2dO1d//PGHPvzwQ0nSmDFj9Ndff2nNmjV65513LhpfQX4DFyXubG+//bYSExM1duxYpaam6sUXX9Q111yjnTt3qmbNmpLy/1v7nnvu0UcffaRx48apVatWOn36tL777jvt3btXl19+eY5916hRQ/Pnz9e9996rG264QTfeeKMkqW3btnnGW5DjGwcOHNDNN9+sO++8U5GRkXrrrbc0cuRIdezY0fl9W9S2yU1++g8nTpxQv379VKNGDU2ZMkWVK1fW4cOH9cknn1wyrh9++EFt2rTJ8zhBfo4TPfXUU3rsscc0ZMgQjR49WidPntTcuXN11VVXuXx/5+f1LWVN133TTTepVatWio6O1unTp50n/JwvP/2XvDRq1Ehvv/22hg8frjFjxmjBggWSpJMnT6pv374yxrjEdCkbNmzQsmXLNH78eNlsNr3yyiv6xz/+oS1btjjfYwUxffp0RUVFqWvXrnriiSfk5+enzZs3a926derXr1+u27z++uu655579PDDD+vJJ5+UlL8+zY033qjffvtN77//vl544QVVr15dUtZ7avfu3bruuuvUtm1bPfHEE7LZbDpw4ECuJ0N17NhRn332mRISEhQcHFzgxwwUiAHgFgsXLjSScl1sNpuz3KFDh4wkU61aNXPmzBnn+s8++8xIMitWrHCuu+qqq0xQUJA5cuSIy74cDofz/8GDBxs/Pz9z8OBB57q//vrLBAUFmauuusq5buLEiUaS2bx5s3PdiRMnTEhIiJFkDh06ZIwxJjEx0VSuXNncddddLvs8fvy4CQkJcVkfGRlpJJkpU6YUqI2y92WMMcnJyTnKjRkzxlSsWNGkpqY610VERJguXbq4lPvkk0+MJPPtt98We+zTpk0zkswdd9zhsv6GG24w1apVc97esWOHkWRGjx7tUu6BBx4wksy6deuc6xo0aGAkmVWrVrmU/fbbb40k06ZNG5Oenu5cP2zYMGOxWMyAAQNcykdERJgGDRpcNH6Hw2GaNm1q+vfv7/L6SU5ONo0aNTJ9+/Z12U9oaKjJzMx0rjt27JixWq3miSeecK5r3769CQ0NNadPn3au++WXX4zVajUjRoxwrsvteZdkpk2bliPOBg0amMjISOftDz/80OU5Pl/Pnj1Nz549nbfnzJljJJl3333XuS49Pd1ERESYwMBAk5CQYIwp2HsQAFD86EPlv41Kcx/q//7v/1zW33fffUaS+eWXXy76mPr3728aN27ssu7CPkB236lx48Y56hg7dqypWbOm8/akSZPMVVddZUJDQ838+fONMcacPn3aWCwW8+KLL7o8zvP7VxMmTDDBwcEu/aMLzZgxw1SqVMn89ttvLuunTJlifHx8TExMTJ7bxsXFmaCgINOlSxeTkpLicl/26zY9Pd2EhoaaNm3auJT54osvjCTz+OOPG2OMOXv2rJFknnnmmTz3Z0ze7diyZUuTlpbmXP/iiy8aSWbnzp3OePLbrwRQfmR/V33zzTfm5MmT5ujRo+ajjz4yNWrUMDabzRw9etRZtnfv3uayyy5z+b5yOByma9eupmnTps512Z9L5/8ezO27Ijo62lgsFpfv/bFjx5q8Dnte+Hs0v7+B8xt3brL7MQEBAeaPP/5wrt+8ebORZO6//37nuvz+1g4JCTFjx4696H4v/D47efJknr/Hs7+zsxXm+MbGjRud606cOGFsNpv597//fdEYC9I2F8ZoTP76D8uXLzeSzNatWy8aS27q1atnbrrpphzr83uc6PDhw8bHx8c89dRTLuV27txpKlSo4LI+v6/v9u3bm9q1a5u4uDjnuq+//tpIKnD/5VLmz59vJJnJkyeb+Ph4c/nll5uqVaua3bt357uO7L79Tz/95Fx35MgR4+/vb2644Qbnugtfr9kufN73799vrFarueGGG4zdbncpe37fpEGDBmbgwIHGmKz+jMViMTNmzHApm98+zTPPPJOjP26MMS+88IKRZE6ePHnJdliyZEmO3xVAcWGqT8DN5s2bpzVr1rgsK1euzFFu6NChLme8ZZ9h/Pvvv0vKOoNm48aNuuOOO1S/fn2XbbOHt9vtdn399dcaPHiwGjdu7Ly/du3auu222/Tdd98pISFBUtaFra+88kqXs29r1KiRY2qmNWvWKC4uTsOGDdOpU6eci4+Pj7p06aJvv/02x2O59957C9RG5zv/bPnExESdOnVKPXr0UHJysn799VfnfSNGjNDmzZtdpgd57733FBYW5jwrryRiv+eee1xu9+jRQ6dPn3ZpZ0k5pjv497//LUn68ssvXdY3atRI/fv3z3VfI0aMcDmjrEuXLjLG5JiKokuXLjp69KgyMzPzjHvHjh3av3+/brvtNp0+fdrZNklJSerdu7c2btzonLph6NChOnHihHNKTSlr+hOHw6GhQ4dKko4dO6YdO3Zo5MiRqlq1qrNc27Zt1bdvX2c7lKSvvvpKtWrV0rBhw5zrfH19NX78eJ07dy7H1C2Xeg8CAEoWfaiCKW19qAtH7P3rX/+SJJc+w/mPKXsEaM+ePfX7778rPj7+kvuIjIzMMRKzR48eio2N1b59+yRljey76qqr1KNHD/3nP/+RlDUK0Bhz0RF/lStXVlJSktasWZNnmQ8//FA9evRQlSpVXNqxT58+stvtOaazOt+aNWuUmJioKVOm5Lj2VPbr9qefftKJEyd03333uZQZOHCgWrRo4exnBgQEyM/PT+vXr9fZs2fz3GdeRo0a5XItnwvfYwXpVwIof/r06aMaNWooLCxMN998sypVqqTPP//cORLpzJkzWrdunYYMGeL8/jp16pROnz6t/v37a//+/TmmLz7f+Z/zSUlJOnXqlLp27SpjjLZv316omPPzG7iocWcbPHiw6tat67zduXNndenSxfl9WJDf2pUrV9bmzZv1119/FepxX0pBj2+0atXK5bu0Ro0aat68eb5/Y1+qbfKSn/5D9oi6L774QhkZGfmKJ9vp06dd+p4XutRxok8++UQOh0NDhgxx6R/UqlVLTZs2deln5ef1nf0aiYyMVEhIiLN837591apVK5dY8tN/uZR77rlHTz75pJ555hlddtll+u2337Ry5coc+7qUiIgIdezY0Xm7fv36uv7667V69WqXqerz49NPP5XD4dDjjz+e43rOuU0JOnv2bE2YMEGzZs3So48+6lzvjj5N9mvr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/9a///1v7d+/X+3bt9dzzz2nd999t8Dx5RZrfvuVAMovHx8fRUdH6+qrr9bLL7+sKVOmOL+nfX19C/wZsnPnTv32229avHixRowY4Vyf2zSGBR1Rc6nfwEWJ+3y59Sl+++035/dhQX9r165dW/fdd5/uu+8+nThxQpdffrmeeuqpPBN/Bf2NXZLHNy7VNrkpaP/hyiuv1JVXXqmnnnpKS5Ys0fDhw7V06VKNHj06z320aNEizz5WfoSHh8sYo0aNGl30JKD8vr6z2z0//VPp0v2XSxk3bpyWLl2qhQsX6p///KeGDh3qnGb02muvveT22fJ6fitWrOicLSG3Y0VSzhmcwsPD5XA4tGfPnjwTdtmqV6+ujz76SN27d1fv3r313XffqU6dOs56pPz1aS723rFarerdu7d69+6t559/Xk8//bQeeeQRffvtty71Hjp0SFartURPBkP5xTX+AC9Vo0YNXXXVVXrrrbcUExPjcl/2WUM+Pj7q16+fPvvsM5dpkmJjY7VkyRJ1797dOTXTtddeqx9//FFbtmxxljt58qTee+89l7r79++v4OBgPf3007nOe37y5El3PUTnWS/nn/2Vnp6uV155JdfyAwYMUPXq1TVr1ixt2LDB5Uz1ko49L9mdnjlz5risf/755yVlXYPFEzp27Kjw8HA9++yzOnfuXI77L2ybPn36qGrVqlq2bJmWLVumzp07uxysq127ttq3b6/Fixe7dMp27dqlr7/++pKdv/Dw8BzXuXn99ddznMWV/YMmt47fha699lodP35cy5Ytc67LzMzU3LlzFRgY6LyOEQCgbKMPlZM39KHmzZvncnvu3LnO2KTcH1N8fLwWLlxY5H336NFDhw8f1rJly5xTf1qtVnXt2lXPP/+8MjIyLnp9Pynr+j7ns1qtatu2rSQpLS1NUtbIi02bNmn16tU5to+Li7vo9Zj79eunoKAgRUdHKzU11eW+7Dbp1KmTQkND9eqrrzr3KUkrV67U3r17nf3M5OTkHHWEh4crKCjIZbvCKmi/EkD51qtXL3Xu3Flz5sxRamqqQkND1atXL7322ms5TvyULv4Zktt3hTFGL774Yo6yBfktKV36N3BR4j7fp59+6nItwC1btmjz5s3O78P8/ta22+05pjYNDQ1VnTp1LvpZX7FiRUn5/40tldzxjUu1TW7y2384e/ZsjpGH2QmjS303RkREaNeuXYX+Dr3xxhvl4+Oj6dOn54jBGOPsY+T39X3+a+T818CaNWu0Z88el7L56b9czCOPPKL58+drzpw5ioyMlI+Pj5YsWaJevXrp5ptvdl4vOT82bdrkMg3p0aNH9dlnn6lfv37Oxx4eHq74+Hj997//dZY7duyYli9f7lLX4MGDZbVa9cQTT+QYCZnbCNN69erpm2++UUpKivr27etsl4L0afL6TDlz5kyO7fJ6bW3btk2tW7e+5PT1gDsw4g9ws5UrVzpHGJ2va9euBZ5n/aWXXlL37t11+eWX6+6771ajRo10+PBhffnll9qxY4ck6cknn9SaNWvUvXt33XfffapQoYJee+01paWlafbs2c66HnzwQb3zzjv6xz/+oQkTJqhSpUp6/fXXnaOksgUHB2v+/Pm6/fbbdfnll+vWW29VjRo1FBMToy+//FLdunXTyy+/XLjGyaVNqlSposjISI0fP14Wi0XvvPNOntNA+Pr66tZbb9XLL78sHx+fHNMKlGTseWnXrp0iIyP1+uuvO6fh2rJlixYvXqzBgwfr6quvLtb958VqteqNN97QgAED1Lp1a40aNUp169bVn3/+qW+//VbBwcFasWKFs7yvr69uvPFGLV26VElJSc5r4JzvmWee0YABAxQREaE777xTKSkpmjt3rkJCQhQVFXXReEaPHq177rlHN910k/r27atffvlFq1evzjHdQfv27eXj46NZs2YpPj5eNptN11xzjUJDQ3PUeffdd+u1117TyJEjtW3bNjVs2FAfffSRvv/+e82ZM0dBQUGFazwAQImgD5V/pbEPdejQIf3f//2f/vGPf2jTpk169913ddtttzmvq9evXz/nGeljxozRuXPntGDBAoWGhuZ6gLUgspN6+/btc5m27aqrrtLKlStls9l0xRVXXLSO0aNH68yZM7rmmmtUr149HTlyRHPnzlX79u2doyAmT56szz//XNddd51Gjhypjh07KikpSTt37tRHH32kw4cP5zm1U3BwsF544QWNHj1aV1xxhW677TZVqVJFv/zyi5KTk7V48WL5+vpq1qxZGjVqlHr27Klhw4YpNjZWL774oho2bKj7779fUtbZ871799aQIUPUqlUrVahQQcuXL1dsbKxuvfXWIrWlVPB+JQBMnjxZt9xyixYtWqR77rlH8+bNU/fu3XXZZZfprrvuUuPGjRUbG6tNmzbpjz/+0C+//JJrPS1atFB4eLgeeOAB/fnnnwoODtbHH3+c6zSMHTt2lCSNHz9e/fv3l4+Pz0U/A/PzG7iwcZ+vSZMm6t69u+69916lpaVpzpw5qlatmss00fn5rZ2YmKh69erp5ptvVrt27RQYGKhvvvlGW7du1XPPPZfn/gMCAtSqVSstW7ZMzZo1U9WqVdWmTZtcrzFb0sc38tM2F8pv/2Hx4sV65ZVXdMMNNyg8PFyJiYlasGCBgoODL3ni8vXXX68ZM2Zow4YN6tevX4EfV3h4uJ588klNnTpVhw8f1uDBgxUUFKRDhw5p+fLluvvuu/XAAw8U6PUdHR2tgQMHqnv37rrjjjt05swZzZ07V61bt3ZJYOWn/5KXQ4cO6ZlnnlFUVJTGjx/vXO/n56fly5erT58+euCBB7R58+Z8tUObNm3Uv39/jR8/XjabzXnC2vmzLtx666166KGHdMMNN2j8+PFKTk7W/Pnz1axZM5ekYZMmTfTII49oxowZ6tGjh2688UbZbDZt3bpVderUUXR0dI79N2nSRF9//bV69eql/v37a926dQoODs53nyb7M+WRRx7RrbfeKl9fXw0aNEhPPPGENm7cqIEDB6pBgwY6ceKEXnnlFdWrV0/du3d37j8jI0MbNmzQfffdl6/2AorMAHCLhQsXGkl5LgsXLjTGGHPo0CEjyTzzzDM56pBkpk2b5rJu165d5oYbbjCVK1c2/v7+pnnz5uaxxx5zKfPzzz+b/v37m8DAQFOxYkVz9dVXmx9++CFH/f/9739Nz549jb+/v6lbt66ZMWOGefPNN40kc+jQIZey3377renfv78JCQkx/v7+Jjw83IwcOdL89NNPzjKRkZGmUqVKBW6j8/f1/fffmyuvvNIEBASYOnXqmAcffNCsXr3aSDLffvttjjq2bNliJJl+/frluZ/iiH3atGlGkjl58uQlH1NGRoaZPn26adSokfH19TVhYWFm6tSpJjU11WXbBg0amIEDB+YavyTz4Ycf5rqvrVu35iu23Gzfvt3ceOONplq1asZms5kGDRqYIUOGmLVr1+You2bNGiPJWCwWc/To0Vzr++abb0y3bt1MQECACQ4ONoMGDTJ79uzJNe7z28hut5uHHnrIVK9e3VSsWNH079/fHDhwwDRo0MBERka6bL9gwQLTuHFj4+Pj4/K66Nmzp+nZs6dL2djYWDNq1ChTvXp14+fnZy677DLney9bQd+DAIDiRR8q/21UmvtQe/bsMTfffLMJCgoyVapUMePGjTMpKSkuZT///HPTtm1b4+/vbxo2bGhmzZpl3nrrrRyP/cI+QF59p/OFhoYaSSY2Nta57rvvvjOSTI8ePXKUj4yMNA0aNHDe/uijj0y/fv1MaGio8fPzM/Xr1zdjxowxx44dc9kuMTHRTJ061TRp0sT4+fmZ6tWrm65du5pnn33WpKenX7K9Pv/8c9O1a1dn36pz587m/fffdymzbNky06FDB2Oz2UzVqlXN8OHDzR9//OG8/9SpU2bs2LGmRYsWplKlSiYkJMR06dLFfPDBBy715Lcds997F/apCtKvBFD25fV71Zis33/h4eEmPDzcZGZmGmOMOXjwoBkxYoSpVauW8fX1NXXr1jXXXXed+eijj5zbZX8unf+9tmfPHtOnTx8TGBhoqlevbu666y7zyy+/5PicyszMNP/6179MjRo1jMViMecfAs3rd19+fgPnJ+7cnN+Pee6550xYWJix2WymR48e5pdffslR/lK/tdPS0szkyZNNu3btTFBQkKlUqZJp166deeWVV1zqufD7zBhjfvjhB9OxY0fj5+fn0hbZ39nnK+rxjdx+txelbXKLMT/9h59//tkMGzbM1K9f39hsNhMaGmquu+46lz7OxbRt29bceeeducaSn+NExhjz8ccfm+7du5tKlSqZSpUqmRYtWpixY8eaffv2Ocvk9/WdXV/Lli2NzWYzrVq1Mp988kmh+y952b59e573nTlzxhw5ciRf9UgyY8eONe+++65p2rSpsdlspkOHDrn2Wb/++mvTpk0b4+fnZ5o3b27efffdXJ93Y4x56623nH2iKlWqmJ49e5o1a9Y478/tdbl582YTFBRkrrrqKpOcnOx8nPnp08yYMcPUrVvXWK1W53O8du1ac/3115s6deoYPz8/U6dOHTNs2DDz22+/uWy7cuVKI8ns378/X20GFJXFmGK8wioAuNkvv/yi9u3b6+2339btt9/u6XAAAABKBU/1oaKiojR9+nSdPHkyz9FuAACUdYcPH1ajRo30zDPP6IEHHvB0OCigd955R2PHjlVMTIwqV67s6XBQCg0ePFgWiyXHtKVAceEafwBKlQULFigwMFA33nijp0MB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Jk2aBJvNBoPBAKDmbvW5c+fiiSeewMKFCzFhwgTXXWDl5eXo27evqy78H8XExLj+bTQaW+ZFEREREbUA9qOIiIjIW4xGIzp06OD6+d1330VYWBjeeecdVwUASZJcz9vt9lr76/X6i56jT58+2LFjBxYsWIB+/fq53R8hIgoUnPFHRCFt+/btEEURL7/8Mi677DJ07NgRJ0+erNPutttuQ25uLl5//XX89ttvGDdunOu5Sy+9FAcPHkRsbCw6dOhQawsLC2vJl0NERETUYtiPIiIiIl8RBAEKhQKVlZWu5Ft+fr7r+ezs7Frte/bsidWrVzd6zPbt22Pt2rX46quvcP/997seb0p/RKPR1LteIBGRP2Lij4hCRklJiatsxPktOjoadrsdb7zxBo4cOYL3338f8+bNq7NvREQERo8ejUcffRRXXXUVWrdu7Xpu7NixiI6OxnXXXYcNGzbg6NGjyMzMxAMPPIDjx4+35EskIiIi8gn2o4iIiMiXqqurUVBQgIKCAuzduxf3338/ysvLMWrUKHTo0AFJSUmYNWsWDh48iG+//RYvv/xyrf1nzJiBbdu24b777sPOnTuxb98+vPXWWzhz5kytdh07dsTatWvx+eefu9Yqbkp/JCUlBTt37sT+/ftx5syZOjMOiYj8CRN/RBQyMjMz0adPn1rb+++/j1deeQXPP/88unfvjg8//BBz5sypd//zZasmTpxY63GDwYD169ejTZs2GD16NLp06YJJkyahqqoKFoulJV4aERERkU+xH0VERES+tGLFCiQkJCAhIQGpqanYtm0bPv30U2RkZECtVmPp0qXYt28fevbsieeffx7PPvtsrf07duyIH3/8Eb/++isGDBiAtLQ0fPXVV1Cp6q501alTJ6xZswZLly7Fww8/3KT+yOTJk9GpUyf069cPMTExyMrKapHrQkTkCUH6Y3FkIiJq0Pvvv4+HHnoIJ0+ehEajkTscIiIiooDBfhQREREREVHLqHvLAxER1WK1WpGfn49///vfuPvuuzlYRURERNRE7EcRERERERG1LJb6JCK6iBdeeAGdO3dGfHw8ZsyYIXc4RERERAGD/SgiIiIiIqKWxVKfREREREREREREREREREGAM/6IiIiIiIiIiIiIiIiIggATf0RERERERERERERERERBgIk/IiIiIiIiIiIiIiIioiDAxB8RERERERERERERERFREGDij4iIiIiIiIiIiIiIiCgIMPFHREREREREREREREREFASY+CMiIiIiIiIiIiIiIiIKAkz8EREREREREREREREREQUBJv6IiIiIiIiIiIiIiIiIgsD/A0AY1ay/t52OAAAAAElFTkSuQmCC\n" }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "Saved: /content/t5_small_terrain_map.png\n", "\n", "======================================================================\n", "T5-SMALL COMPLETE TERRAIN MAP — SUMMARY\n", "======================================================================\n", "Model: google-t5/t5-small\n", "Total params: 60,506,624\n", "Vocab: 32128\n", "Hidden dim: 512\n", "Encoder layers: 6\n", "Decoder layers: 6\n", "Weight tying: shared→enc=True, shared→dec=True, shared→lm_head=True\n", "\n", "--- EMBEDDING GEOMETRY ---\n", "Mean norm: 520.1534\n", "Norm std: 69.8436\n", "Mean pairwise cosine: 0.0568\n", "Cosine std: 0.0600\n", "\n", "--- INTRINSIC DIMENSIONALITY ---\n", "Participation ratio: 287.2\n", "Participation / dim: 0.561\n", "Dims for 95% variance: 379 (74.0%)\n", "\n", "--- PENTACHORON GEOMETRY ---\n", "Valid simplices: 1000/1000\n", "Volume CV: 0.2327\n", "Embed/random ratio: 0.8551\n", "\n", "--- DIGIT MANIFOLD ---\n", "|i-j| correlation: -0.5753\n", "Adjacent mean: 0.6219\n", "Non-adjacent mean: 0.4418\n", "Gap: 0.1801\n", "\n", "--- REFERENCE (Qwen3.5-0.8B) ---\n", "Participation / dim: 0.535\n", "Volume CV: 0.208\n", "Embed/random ratio: 0.984\n", "Digit |i-j| corr: -0.862\n", "Mean pairwise cosine: 0.195\n" ] } ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "ad6a78d9565c40b1a793b26f6b4045e5", "f778077f0714438581d141e5d64a4298", "0d82445bb47349d7aadebf033f8230b1", "133b9b1f2995485db54fba119812d3bb", "146d181d82cf4855b029e9afa9a6955e", "094ad3df15bb4974bac0738733f0a454", "10f20467beab463faccb33a4e7271e4e", "07cebcc5197c4ca3a9a5576b8a3785c4", "61dd0acdd3ab4148adf39127ce1a99c7", "3238e4cf442e44f9a834107d022f46e3", "985ff37eb6534f1ca86274897b2584ac" ] }, "id": "fq7CT59IP6pE", "outputId": "51753bb5-ff71-4b9b-d527-235ea99f5d44" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Loading google-t5/t5-small...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "Loading weights: 0%| | 0/131 [00:00= 3\n", "\n", "Depth N Static Cos Enc Cos\n", " 1 4594 0.1602 0.6562\n", " 2 4594 0.0900 0.6200\n", " 3 4337 0.0754 0.5936\n", " 4 2794 0.0718 0.5855\n", " 5 1555 0.0686 0.5847\n", " 6 877 0.0762 0.5853\n", " 7 457 0.0681 0.5785\n", "\n", "======================================================================\n", "WORDNET CATEGORY CLUSTERING: Static vs Encoder\n", "======================================================================\n", " Category N Static intra Enc intra Lift\n", " adj.all 2318 0.0925 0.5901 +0.4976\n", " noun.act 1493 0.0909 0.6443 +0.5533\n", " noun.artifact 1055 0.0977 0.6248 +0.5271\n", " noun.person 721 0.1023 0.6140 +0.5117\n", " noun.location 487 0.1478 0.6663 +0.5185\n", " noun.communication 431 0.0973 0.6196 +0.5223\n", " noun.attribute 350 0.1142 0.6230 +0.5087\n", " adv.all 296 0.1464 0.6122 +0.4658\n", " noun.cognition 253 0.0961 0.6225 +0.5264\n", " adj.pert 200 0.1344 0.7809 +0.6465\n", " noun.group 174 0.0857 0.6132 +0.5276\n", " noun.animal 168 0.1016 0.6378 +0.5363\n", " noun.food 150 0.1757 0.6422 +0.4666\n", " verb.change 140 0.1399 0.6188 +0.4789\n", " noun.substance 119 0.1001 0.7069 +0.6067\n", " verb.cognition 99 0.1477 0.6322 +0.4845\n", " verb.communication 99 0.1379 0.6142 +0.4762\n", " noun.object 78 0.1123 0.6668 +0.5544\n", " noun.state 75 0.1230 0.6108 +0.4878\n", " noun.time 74 0.1757 0.6515 +0.4758\n", " noun.body 71 0.0989 0.6699 +0.5710\n", " noun.event 62 0.1008 0.6163 +0.5156\n", " noun.possession 55 0.1426 0.6272 +0.4846\n", " noun.Tops 46 0.0944 0.6265 +0.5321\n", " verb.body 44 0.1546 0.6253 +0.4707\n", " noun.quantity 41 0.0823 0.6715 +0.5892\n", " noun.feeling 29 0.1901 0.6747 +0.4846\n", " verb.social 26 0.1526 0.6182 +0.4656\n", " verb.possession 24 0.1364 0.6174 +0.4810\n", " noun.plant 23 0.1533 0.6922 +0.5389\n", " noun.phenomenon 20 0.1254 0.6215 +0.4962\n", " verb.competition 19 0.1342 0.6202 +0.4861\n", " verb.creation 18 0.1646 0.6335 +0.4689\n", " verb.contact 16 0.1191 0.6019 +0.4828\n", " verb.motion 14 0.1359 0.6178 +0.4819\n", " noun.process 13 0.1861 0.6609 +0.4747\n", " verb.stative 13 0.1734 0.6389 +0.4655\n", " noun.relation 11 0.1099 0.6147 +0.5048\n", " verb.consumption 11 0.2087 0.6548 +0.4461\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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X3z00UeiUaNGonTp0kKlUglHR0fx2muviffff1/cuXPHbJ+LFy+K9u3bC1dXVyGTyUzOp9FoxLRp04S/v7+wsbER5cuXF+PHjxdPnz61+r776quvhL+/v1CpVAKACA4OlrZZ28dgMIjly5eLhg0bCgcHB2Fvby/8/f3FW2+9JW7evJmjazfy9/cXAETZsmWFXq83275jxw4RFhYmqlSpIpycnISjo6OoXr26+Pjjj8X9+/dzdA7jey6rV5cuXaT6Wf1uyOp3ysmTJ0WvXr2El5eXUKlUwtvbW7Rr10789ttvJvW0Wq2YPXu2qFWrlrCxsRFOTk4iODhYbN261WL7k5OTxYQJE0SZMmWEjY2NqF69uli6dGmWbfn333/FmDFjpPeCs7OzqFatmhg6dKjYu3evSd3M3/fc0mq14vvvvxcdO3YU3t7eQq1WC3t7e1GxYkURGhoqtmzZInQ6ncV9IyMjRevWrUWJEiWESqUSZcqUEc2bNxdz5swx+/6+qN8zln6PGFn6XS6EEDqdTixZskQ0btxYODs7Sz9fbdu2FYsWLRJJSUkm9bP6ucrp/TYYDKJ8+fICgDh//ny29YmIiIiIhBBCJkSGnBhERERERERERFRg7t69i/Lly6NRo0YW07MSEREREVnCNfyIiIiIiIiIiAqJ+fPnQ6fT4e233y7ophARERFREcIZfkREREREREREBSghIQGLFi1CbGwsli9fjsqVK+Pvv/+GQqEo6KYRERERURHBgB8RERERERERUQG6ceMG/Pz8YGtri4YNG2Lx4sWoUqVKQTeLiIiIiIoQBvyIiIiIiIiIiIiIiIiIijCu4UdERERERERERERERERUhDHgR0RERERERERERERERFSEMeBHREREREREREREREREVIQx4EdERERERERERERERERUhDHgR0RERERERERERERERFSEMeBHREREREREREREREREVIQx4EdERERERERERERERERUhDHgR0RERERERERERERERFSEMeBHREREREREREREREREVIQx4EdUiKxatQoymQw3btwo6Ka8sorCPf7pp5/g5uaGpKSkgm5Kkbdjxw44Ojri/v37Bd0UIiIqxJo3b47mzZsXdDOKtKJwD9u3b49hw4YVdDNeCaGhoejVq1dBN4OIiJ6TTCbD5MmTX8q5CtvncFEYHyoIN27cgEwm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VQpxcXEmZXFxcXB2doadneXBRxsbG9jY2LyM5hFlSS6Xc9CQiIo0tVoNtVpd0M0geinkMhnkCj6kQ0REREREREQF75WLLDRq1Ah79+41Kdu9ezcaNWpUQC0iIiIiIiIiIiIiIiIiyj+FPuCXlJSEU6dO4dSpUwCA69ev49SpU7h58yaA9HScYWFhUv233noL165dw4QJE3DhwgV8++23+Omnn/Dee+8VRPOJiIiIiIiIiIiIiIiI8lWhD/gdP34cdevWRd26dQEA48aNQ926dTFp0iQAwN27d6XgHwD4+flh27Zt2L17N2rXro05c+Zg+fLlCAkJKZD2ExEREREREREREREREeWnQr+GX/PmzSGEsLp91apVFvc5efJkPraKiIiIiIiIiIiIiIiIqHAo9DP8iIiIiIheNoMQ0On1MGTx4BkRERERERERUWHBgB8RERERUSYGgwE6vYDBYCjophARERERERERZavQp/QkIiIiInrZ5HI5lDBALufzcURERERERERU+DHgR0RERESUiVwmg1yhKOhmEBERERERERHlCB9ZJiIiIiLKhGv4EREREREREVFRwoAfEREREVEmXMOPiIiIXrb9+/ejU6dOKF26NGQyGX7++Werdd966y3IZDLMnz/fpPzRo0fo168fnJ2d4erqiiFDhiApKSl/G05ERESFAgN+RERERJSlhQsXwtfXF7a2tggMDMSxY8eyrP/kyROMGjUK3t7esLGxQeXKlbF9+/aX1NoXQy6XQ6mQcQ0/IiIiemmSk5NRu3ZtLFy4MMt6W7ZswZEjR1C6dGmzbf369cO5c+ewe/du/Pbbb9i/fz+GDx+eX00mIiKiQoRr+BERERGRVZGRkRg3bhwWL16MwMBAzJ8/HyEhIbh48SI8PT3N6ms0Grzxxhvw9PTExo0bUaZMGcTGxsLV1fXlN/45cA0/IiIietnatWuHdu3aZVnn9u3beOedd7Bz50506NDBZNv58+exY8cO/PXXX6hXrx4AYMGCBWjfvj1mz55tMUBIRERErw4+skxEREREVs2dOxfDhg3DoEGDUL16dSxevBj29vZYsWKFxforVqzAo0eP8PPPP6Nx48bw9fVFcHAwateu/ZJbTkRERPRqMRgMGDBgAD744APUqFHDbHt0dDRcXV2lYB8AtG7dGnK5HEePHn2ZTSUiIqICwIAfEREREVmk0Whw4sQJtG7dWiqTy+Vo3bo1oqOjLe7zyy+/oFGjRhg1ahS8vLxQs2ZNTJ8+HXq9/mU1m4iIiOiVNHPmTCiVSrz77rsWt9+7d88sA4NSqYSbmxvu3btn9bhpaWlITEw0eREREVHRw5SeRERERGTRgwcPoNfr4eXlZVLu5eWFCxcuWNzn2rVr+OOPP9CvXz9s374dV65cwciRI6HVahEREWFxn7S0NKSlpUlfc5CJiIiIyNSJEyfw9ddfIyYmBjKZ7IUee8aMGZgyZcoLPSYRERG9fJzhR0REREQvjMFggKenJ5YuXYqAgAD07t0bn3zyCRYvXmx1nxkzZsDFxUV6lStX7iW2mIiIiKjwO3DgAOLj41G+fHkolUoolUrExsZi/Pjx8PX1BQCUKlUK8fHxJvvpdDo8evQIpUqVsnrsiRMnIiEhQXrdunUrPy+FiIiI8gln+BERERGRRe7u7lAoFIiLizMpj4uLszpo5O3tDZVKBYVCIZVVq1YN9+7dg0ajgVqtNttn4sSJGDdunPR1YmIig35EREREGQwYMMAkzToAhISEYMCAARg0aBAAoFGjRnjy5AlOnDiBgIAAAMAff/wBg8GAwMBAq8e2sbGBjY1N/jWeqLha+//rafY/XrDtIKJigwE/IiIiIrJIrVYjICAAe/fuRdeuXQGkz+Dbu3cvRo8ebXGfxo0bY/369TAYDJDL05NJXLp0Cd7e3haDfUDRH2QyCCFdr/wFp9giIiKi4iMpKQlXrlyRvr5+/TpOnToFNzc3lC9fHiVLljSpr1KpUKpUKVSpUgVA+kNWbdu2xbBhw7B48WJotVqMHj0aoaGhKF269Eu9FiIiInr5mNKTiIiIiKwaN24cli1bhtWrV+P8+fN4++23kZycLD1JHhYWhokTJ0r13377bTx69AhjxozBpUuXsG3bNkyfPh2jRo0qqEvIdwaDATp9etCPiIiIKK+OHz+OunXrom7dugDS+2F169bFpEmTcnyMdevWoWrVqmjVqhXat2+PJk2aYOnSpfnVZCIiIipEOMOPqBAxGAzQG/RQyBXSrAgiIqKC1Lt3b9y/fx+TJk3CvXv3UKdOHezYsQNeXl4AgJs3b5p8ZpUrVw47d+7Ee++9h9deew1lypTBmDFj8OGHHxbUJeQ7uVwOJQz87CYiIqLn0rx5cwghclz/xo0bZmVubm5Yv379C2wVERERFRUM+BEVInqDHlq9FgA4aEhERIXG6NGjrabw3Ldvn1lZo0aNcOTIkXxuVeEhl8kgz7BmIRVdTM9KRERERERERRUDfkSFiEKuMPmXiIiIiF4eY3pWJQwM4hIREREVV2vr/ff//sdfXF0ionzGgB9RISKXyzmzj4iIiKiAMD0rERERERERFVUM+FG+4pp0RERERFRUMD0rERERERERFVUM+FG+4pp0RERERERERERE9NyM6TOZOpOIyCIG/ChfcU06IiIiIiIiIiIiIiKi/MWAH+UrrklHRERERERERERERESUvxiJISIiIiIiIiIiIiIiIirCGPAjIiIiIiIiIiIiIiIiKsIY8CMzBoMBWp0WBoOhoJtCRERERERERERERERE2WDAr5jKKqinN+ih1WuhN+gLoGVERERERERERERERESUG8qCbgAVDGNQDwDkctO4r0KuMPmXiIiIiIiIiIiIiIiICi8G/IqprIJ6crncLAhIREREREREREREREREhRMDfsUUg3pERERERERERERERESvBkZ8qFjKag1DIiIiIiIiIiIiegWsrZf+IiIqBjjDj4qlrNYwJCIiIiIiIiIiIiIiKkoY8KNiKas1DAuSwWCA3qCHQq5gIJKIiIiIiIiIiIiIiHKEAT8qlgrrGoaceUhERERERERERERERLnFgB9RIVJYZx4SEREREREREREREVHhxYAf5RrTTuafwjrzkIiIiIiIiIiIiF6itfXS/+1/vGDbQURFBgN+lGtMO0lERERERERERERERFR4FIlozcKFC+Hr6wtbW1sEBgbi2LFjVutqtVpMnToVFStWhK2tLWrXro0dO3a8xNYWPjqdDimpKdDpdC/keAq5AiqFimkniYiIiIiIiIiIiIiICoFCH/CLjIzEuHHjEBERgZiYGNSuXRshISGIj4+3WP/TTz/FkiVLsGDBAvzzzz9466230K1bN5w8efIlt7zw0Og0SNGmQKPTvJDjyeVyqJQqzu4jIiIiIiIiIiKigrG23n9pLwuz/Gqn8bhF4R4Q0UtR6CM2c+fOxbBhwzBo0CBUr14dixcvhr29PVasWGGx/po1a/Dxxx+jffv2qFChAt5++220b98ec+bMecktLzzUSjXsVfZQK9UF3RQiIiIiIiIiIiIiIiJ6wQp1wE+j0eDEiRNo3bq1VCaXy9G6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DUL5eeedd9CsWTN8//330hRJADB9+nR07twZbm5ueP/996Gnp4cLFy7g0qVL0l3oHh4eCA8PR0BAAORyOWxsbPI9zooVK+Dj44PatWtj6dKlePbsmTS1kY+PD/73v/9h37598PT0xE8//YTTp0/D09NT2t7DwwP79u3D1atXYWdnBysrqwLPKz9hYWHIzs5Gs2bNYGpqig0bNsDExATu7u7F2l9R2djYwM7ODqtXr4azszPu3r2LyZMnF2tfHh4euH37NiIjI+Hi4gILCwvI5XIAOVNJde7cGdnZ2QgODi7JUyAiItI5zMWYiykxFyMiIiIiovKMI/yIyrm2bdvi5cuX8Pb2VmnICQwMRFJSEmrWrCk97wQA5s2bhx49emDAgAFo3Lgxbty4gX379hXYiAMACxcuRKtWrdClSxe0a9cOLVu2hJ+fX6HxzZ8/H2lpaSrLgoKC8Mcff2D//v1o2rQp3njjDSxdulSlMWbx4sU4cOAAXF1d0ahRowKPMW/ePMybNw8NGzbE0aNHsWvXLtjb2wMAPvroI7z33nvo3bs3mjVrhvj4eIwcOVJl+2HDhqFmzZpo0qQJHBwcVO66Lwpra2usWbMGAQEBaNCgAQ4ePIjff/8ddnZ2xdpfUenp6WHz5s04e/Ys6tWrh3HjxmHhwoXF2lePHj3QsWNHtG3bFg4ODti0aZO0rl27dnB2dkZQUBCqVq1aUuETERHpJOZizMWUmIsREREREVF5JhNCCG0HQUSkTkxMDDw9PXH+/Hn4+vpqO5xKIzk5GdWqVcO6devw3nvvaTscIiIi0hLmYtrBXIyIiIiIiIqDU3oSEREAQKFQIC4uDosXL4a1tTXeffddbYdEREREVGkwFyMiIiIiotfBDj8iIgIA3L17F56ennBxcUFYWBgMDHiJICIiIiorzMWIiIiIiOh1cEpPIiIiIiIiIiIiIiIiIh2mp+0AiIiIiIiIiIiIiIiIiKj42OFHREREREREREREREREpMPY4UdERERERERERERERESkw9jhR0RERERERERERERERKTD2OFHREREREREREREREREpMPY4UdERERERERERERERESkw9jhR0RERERERERERERERKTD2OFHREREREREREREREREpMPY4UdERERERERERERERESkw9jhR0RERERERERERERERKTD2OFHRERERERE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f2Pw4MFwc3PD+vXr4eTkpO2QiIotKioK/fv3h6OjI7799lv4+vpqOyQiIirnPDw84Orqim+//RYJCQmwtbXFwIEDMW/ePBgZGZXosZh3lSxdz8OJKiM+w4+IiIiIiIiIiIiIiIhIh/EZfkREREREREREREREREQ6jB1+RERERERERERERERERDqMHX5EREREREREREREREREOsxA2wGURwqFAg8fPoSFhQVkMpm2wyEiIiIAQggkJSWhatWq0NPjPUsVGXMxIiKi8oV5WOXCXIyIiKh80TQXY4efGg8fPoSrq6u2wyAiIiI17t27BxcXF22HQaWIuRgREVH5xDyscmAuRkREVD4Vlouxw08NCwsLADmVZ2lpqeVoiIiICABevHgBV1dX6TpNFRdzMSIiovKFeVjlwlyMiIiofNE0F2OHnxrK6QosLS2Z2BAREZUznFao4mMuRkREVD4xD6scmIsRERGVT4XlYpx4nYiIiIiIiIiIiIiIiEiHscOPiIiIiIiIiIiIiIiISIexw4+IiIiIiIiIiIiIiIhIh/EZfkRERERERERU6hQKBTIyMrQdBuXDyMgIenq8L5yIiIhIV7HDj4iIiIiIiIhKVUZGBm7fvg2FQqHtUCgfenp68PT0hJGRkbZDISIiIqJiYIcfEREREREREZUaIQQePXoEfX19uLq6chRZOaRQKPDw4UM8evQIbm5ukMlk2g6JiIiIiIqIHX5EREREREREVGqysrKQmpqKqlWrwtTUVNvhUD4cHBzw8OFDZGVlwdDQUNvhEBEREVER8bY6IiIiIiIiIio12dnZAMCpIss55fujfL+IiIiISLeww4+IiIiIiIiISh2niSzf+P4QERER6TZ2+BERERERERERaVlYWBisra21HQYRERER6Sh2+BERERFRhZV5PxbpF67m+5N5P1bbIRIRkYayFQIXYuJx6NIDXIiJR7ZClPoxnz59ihEjRsDNzQ1yuRxOTk4ICgpCREQEgJxRcTt37izyfj08PBAaGqqyrHfv3rh27VoJRE1ERERElZGBtgMgIiIiIioNmfdjce+NfhDpGfmWkcmN4HriZxi6VCnDyIiIqKiORj/Cyn1RiEtKk5bZWxhjRFAdtKztXGrH7dGjBzIyMrB+/XpUr14dsbGxCA8PR3x8fIkfy8TEBCYmJiW+XyIiIiKqHDjCj4iIiIgq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IiIiIqJLklarxcyZMxEVFYW0tDSsXr0akyZNwvz58wEA2dnZ+Nvf/oZZs2YhNjYW9957LwDgvffew9ChQyGVSpGdnY1Vq1bZ7VckEuGDDz6w2xYfH49t27YBAM6dOweRSITt27dj3LhxCA8PR0FBAf73v//5+5SJiIgoCDDwIyKfSMhLgGKqAlnjs6CYquhVXXaCIEB9Ro0LX12A+owal+JMx7YdmCaDCXqVPtAlERERERERXZKKioqwf/9+fPjhh/jss8+wd+9eHD582O41zz//PEaMGIEjR45g8eLFOHToEH77299ixowZOHbsGJ566iksXrzYGuZ54pFHHsHDDz+MI0eOYOzYsbj55puhVqt9dHZEREQUrDilJxH5hKXLrjeunWfpfrOuAQjfrgEYDNNpBrIDk4iIiIiIqK/QarV4/fXX8Y9//APXXnstAGDr1q3o16+f3euuueYaPPzww9bHM2fOxLXXXovFixcDAAYOHIiTJ0/iueeew5w5czyqYd68ebj99tsBAC+99BJ27tyJ1157DY8++qjD1xsMBhgMButjjUbj0fGIiIgoODDwI6I+z9/rD/o7UHQH1zkkIiIiIiLyvx9//BGtra0YM2aMdVtcXBzy8/PtXjd69Gi7x6dOncIvf/lLu23jx4/HmjVrYDabERIS4nYNY8eOtf45NDQUo0ePxqlTp5y+vri4GEuXLu20/bWpv4Q0Mtrt4warZTMuD3QJREREPYJTehJRn+fv7rdgmE6T6xwSEREREREFj6ioKI/fIxKJOi1B0dra2u1aFi1ahMbGRuv/Lly40O19EhERUc9j4EcUIH1h3bjewt/rD3I6TSIiIiIior5hwIABCAsLw8GDB63bGhsbcebMGZfvGzx4MPbv32+3bf/+/Rg4cKC1uy8pKQlVVVXW50tLS6HXd/6F0m+++cb6Z5PJhEOHDmHw4MFOjy2VShEbG2v3PyIiIup9giLw27hxI7KzsxEeHo4rrrgC3377rdPXnjhxArfffjuys7MhEomwZs0al/tesWIFRCIR5s+f79uiibrJMs1jxf4KlO0sQ11pXaBL6rP83f3m70CRiIiIiIiIgkNMTAxmz56NRx55BLt378aJEydw9913QywWu/y35sMPP4xdu3bhb3/7G86cOYPXX38dGzZswIIFC6yvueaaa7BhwwYcOXIE3333He677z6EhYV12tfGjRvxr3/9C6dPn8b999+P+vp63HXXXX45XyIiIgoeAQ/83nnnHRQVFeHJJ5/E4cOHMWLECEyZMgVKpdLh6/V6PQYMGIAVK1YgNTXV5b4PHjyIl19+GcOHD/dH6UTdEgzTPAZCX+xs5HSaREREREREfccLL7yAsWPH4qabbsJ1112H8ePHY/DgwQgPD3f6nlGjRuHdd9/F9u3bUVBQgCVLlmDZsmWYM2eO9TWrVq1CZmYmJkyYgN///vdYsGABIiM7zyCzYsUKrFixAiNGjMC+ffvw4YcfIjEx0R+nSkREREEkNNAFvPDCC5g7dy7uvPNOAMCmTZvw0UcfYcuWLXjsscc6vf7yyy/H5Ze3L7br6HmLpqYmzJw5E5s3b8bTTz/tn+KJuqGvTvNo6Ww0GUwIlYZCAQXkA+WBLouIiIiIiIjIJ2JiYvDWW29ZH+t0OixduhT33nsvAODcuXMO33f77bfj9ttvd7rffv364ZNPPrHb1tDQ0Ol1gwcPxoEDBzwvnIiIiHq1gHb4GY1GHDp0CNddd511m1gsxnXXXYevv/66W/u+//77ceONN9rtmyiY9NVpHvtqZyMRUU8KCQlxOFuCWq22rgFDRERERP5x5MgRvP322ygvL8fhw4cxc+ZMAMAvf/nLAFdGREREl7KAdvipVCqYzWakpKTYbU9JScHp06e93u/27dtx+PBhuwWSXTEYDDAYDNbHGo3G62PTpUMQBNSV1kGv0iMyMRIJeQk+nYrRMs1jX+tu66udjUREPcnZdMkGgwESiaSHqyEiIiLqe55//nmUlJRAIpHgsssuw969e3vdtJpP/PoyxMbGBroMIiIiclPAp/T0tQsXLuDBBx/EZ5995nJudFvFxcVYunSpnysjb/k7eHOGU0/6R0JeAhRQ2F3P3sJf92Kg7nEiuvSsW7cOQPsvlbz66quIjo62Pmc2m/Hll19i0KBBgSqPiIiIqE8oLCzEoUOHevy42dnZTn/xi4iIiC59AQ38EhMTERISgpqaGrvtNTU1SE1N9Wqfhw4dglKpxKhRo6zbLF9wbdiwAQaDodNUVosWLUJRUZH1sUajQWZmplfHJ98LVPBmO/Wk6rQKepWegZ8P9ObORn/diwyXichXVq9eDaD9Fwk2bdpk93ceiUSC7OxsbNq0KVDlERERERERERGRnwQ08LNMa7Br1y7ceuutAIC2tjbs2rUL8+bN82qf1157LY4dO2a37c4778SgQYOwcOFCh+vWSKVSSKVSr453KQuWrqOeCN4cnSunnux5wXLPOeOve5HhMhH5ytmzZwEAV199Nd5//33IZLIAV0RERERERERERD0h4FN6FhUVYfbs2Rg9ejTGjBmDNWvWQKfT4c477wQAzJo1C+np6SguLgYAGI1GnDx50vrnixcv4ujRo4iOjoZCoUBMTAwKCgrsjhEVFQW5XN5pO7kWLF1HPRG8OTrX3jr1ZLCHZq6oz6jxw5s/oLm+GRGyCAy/YzgS8/23xoEnYyUIAgxaA7QXtdDV6hCbHuuze5HhMhH52u7du61/tkzr1Fv+W0BERERERERERJ4LeOA3ffp01NbWYsmSJaiursbIkSOxc+dOpKSkAAAqKiogFoutr//pp59QWFhoffz888/j+eefx8SJE7Fnz56eLv+SFixdRz0RvDk7V3enngymkC1YglpvVB2uwoWvLyAkPASq0yokDU3ya+DnyVjVldZBdVqFEEkIzEYzEgcl+uxe7MlwOZjuVSLyrzfeeAPPPfccSktLAQADBw7EI488gjvuuCPAlRERERERERERka8FPPADgHnz5jmdwrNjiOfNAsQMAr0T6K6jjsFExtgMvwUT3T3XYArZ9Co9Wg2tCI8Jh/KYElHJUb0m1GmqboJOqUNIeAjMLWY0VTf59XiehNp6lR5moxlZE7KgOq2CNEbqszHtyXUNg+leJSL/eeGFF7B48WLMmzcP48ePBwDs27cP9913H1QqFR566KEAV0hERERERERERL4UFIEfBadAT2nZk8FEd881WLohgfbw0thoROW+SggQoDyuRNqotF4R6kSnRSMqOQph4WFobWlFdFq0X4/nSdAb6ADcV4LpXiUi/1m/fj1eeuklzJo1y7rtlltuwdChQ/HUU08x8CMiIiIiIiIiusQw8COnerLryJGeCCZ81UUYTGFQQl4CkguS0VzfjORhyTBoDD4dO39OCZlWmIbMsZloqW9BuCwcaYVpPtmvM54EvYEOwH0lmO5VIvKfqqoqjBs3rtP2cePGoaqqKgAVERERERERERGRPzHwo6DVE8GEr7oIgykMEolESBuVhqaaJtT/WI82YxsMWgMEQfBJMOfPzkv5QDlGzBrRY+PoSagd6ADcV4LpXiUi/1EoFHj3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PKFEaHgojE1G61h07Kwr21kGTaUGdeV1kOXKEJcRB3m+HOoSdben/nT3PgmmrlxX495VncF0HkTkvjfffBObNm3C2bNn8fXXX6N///5Ys2YNcnJy8Mtf/jLQ5RERERH1SpmZmdi/f3+gyyAiIuq2JdsP9ujxls243OP3WGYc+uijj1BTUwOZTIYRI0ZgyZIlGD9+PEQiEf71r3/h1ltv9Wi/2dnZmD9/vl22NH36dNxwww0e1xhMPA78FAoF3n33XTz++ON229955x3k5eV5XMA777yDoqIibNq0CVdccQXWrFmDKVOmoKSkBMnJyZ1er9frMWDAAPzmN79x2k34v//9D/fffz8uv/xymEwmPP7447j++utx8uRJREVFeVwj+YerUM+TTjvLfloN7QuQxmfFW6eqdOdYtrztZHL2vq721amuqT9PDVlXWofKryvtAjVHQZvteThby862G1A+UI6wyDC0aFsQKgmFQWvAha8ueNTx1p0uPVdh2Y+f/YhDrxyCXq1HS30L0i9PR8rwFOv+JdESyHJliEyMhF6lhyRaAqBzIHXhqwswGUyITIyE8oQSkYmRMBlMaDjX4JOpP3tjxxun5STqW1566SUsWbIE8+fPxzPPPAOz2QygfT29NWvWMPAjIiIiIiIioqB3++23w2g04vXXX8eAAQNQU1ODXbt2Qa1W+/xYERERiIiI8Pl+e5LHgd/SpUsxffp0fPnll9Y1/Pbv349du3bh3Xff9biAF154AXPnzsWdd94JANi0aRM++ugjbNmyBY899lin119++eW4/PL2JNjR8wCwc+dOu8fbtm1DcnIyDh06hKuuusrjGsk/XIV67oYTgiCg6nAVVCUqJA9LBgQgLiuuU4jjboDoaSdTxwAuY2yGXWDmbF+W953dfRaNlY3IujIL6hK1tS5ngVpXQZuz87TtBoyQR0AQBNQcrYG2SovzX56HNF6KMGmYw+DOUcjYnelTXYVlDecaYGoxIT47HherLyJEEgKTwWTdf1RSFOIy4mAymBCXEYeoJMcBvuX+0VRqEBoeCr1Kj7iMOMRnx0Ndou526OXsPvFmKtqe0htDSiLy3vr167F582bceuutWLFihXX76NGjsWDBggBWRkRERERERETUtYaGBuzduxd79uzBxIkTAQD9+/e3zg6ZnZ0NALjtttusz507dw7l5eUoKirC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Wufwdd58tomoe86ePYshQ4YAAN577z3cfPPNWL58OTZu3IgdO3YEuDoiIiIiIiIioq5JpVKkpqba/c8ya5FIJMKrr76K2267DZGRkcjLy8OHH35o9/4TJ07gpptuQmxsLGJiYjBhwgSUl5cDANra2rBs2TJkZGRAKpVi5MiRnToHv/32WxQWFiI8PByjR4/GkSNHOtV4/PhxTJs2DdHR0UhJScEdd9wBlUplfX7SpEmYN28e5s+fj8TEREyZMsXXw2TlcYefWq3Gb3/7W+zevRsikQilpaUYMGAA7r77bshkMqxatcofdZIPBev0eV11+TgKZ5x1TnXU1TSkXT3vjzHztKvJcq66Wh2MTUaERYV1WsNPliOz1igIAnRKHYxaIxLzE5E2Ks3tmt2pTa/Sw2w0I2tCFlSnVUgclIiopCjoVXprh5qz8XTWNeiq69NyDRorGmFoNKD2dC3CpGHdmjLVWbeq7XZHa/h5Mk62tTu6fyxjoVfp0XihEYmDEqGvbR9bX6836et1LN1dz9ObzzYRdY9EIoFe3x6ef/7555g1axYAICEhARqNJpClEREREVEv8cSvL0NsbGygyyAiInJq6dKlePbZZ/Hcc89h/fr1mDlzJs6fP4+EhARcvHgRV111FSZNmoQvvvgCsbGx2L9/P0wmEwBg7dq1WLVqFV5++WUUFhZiy5YtuOWWW3DixAnk5eWhqakJN910EyZPnoy///3vOHv2LB588EG74zc0NOCaa67BPffcg9WrV6O5uRkLFy7Eb3/7W3zxxRfW173++uv405/+hP379/t1PDwO/B566CGEhYWhoqICgwcPtm6fPn06ioqKGPj1AsE6fV5X4YGraRG7ql+mkEGeL0fDuQbEZ8dDprBfu6iraUr9MWbuhiUW7pyr7fOCIEAkEnk19WrH2nS1Out2y746hjRRSVHW4wuCgPjseOvUppY1FLsTklquQWtLKwAgPjMeaaPSujVlqrMxdfe+8lXgBdiHXrHpsZDny2FoaF8/0BfjB3RvOl5HoaW7QZ03n20i6p4rr7wSRUVFGD9+PL799lu88847ANrXX87IyAhwdUREREREREREXfvvf/+L6Ohou22PP/44Hn/8cQDt6/z97ne/AwAsX74c69atw7fffoupU6di48aNiIuLw/bt2xEWFgYAGDhwoHU/zz//PBYuXIgZM2YAAFauXIndu3djzZo12LhxI/7xj3+gra0Nr732GsLDwzF06FBUVlbiT3/6k3UfGzZsQGFhIZYvX27dtmXLFmRmZuLMmTPW4+Xl5eHZZ5/1wwjZ8zjw+/TTT/HJJ590+rIoLy8P58+f91lh5D+eBk2O+KPjravwwJt1/yzqy+qhLlHDZDBBXaKGLEdmtx9X69TVldbh7O6zaKxsRNaVWVCXqL0as4783dVkmToTgHWKRNvr5OoadqzNqDWibEcZWupbEC4Lx7A/DINIJEJUchQEQUC4LNwaClr2IxKJoFPqYDKYoFPq7Nas84blvk0anATVaRXisuJ8FlR7ez/7KvACOodegiBY1530xfgB3fsMOQot3Q3q/PnZJiLHNmzYgD//+c/45z//iZdeegnp6ekAgB07dmDq1KkBro6IiIiIiIiIqGtXX301XnrpJbttCQk/fwc5fPhw65+joqIQGxsLpVIJADh69CgmTJhgDftsaTQa/PTTTxg/frzd9vHjx+P7778HAJw6dQrDhw9HeHi49fmxY8favf7777/H7t27O4WSAFBeXm4N/C677DK3zre7PA78dDodIiM7f6ldV1fX6xdL7Ct8ETT5o+PNn10+3oaclvPUVGpQV1aH5rpmSKOlMGgN3e646omuJlfXydVzHWv76fBPUB5TIjwhHJpKDcp2lEEcIobJYIKhsb0LTRontduPL4JlW74KSB2Fe67GwlUY2HHqT0EQcOGrC10GqI5q7xh6Xfjqgk/Hr7ucXU93gjp28BH1vKysLPz3v//ttH316tUBqIaIiIiIiIiIyHNRUVFQKBROn+8Y5olEIrS1tQEAIiIi/FobADQ1NeHmm2/GypUrOz2XlpZm/XNUVJTfawG8CPwmTJiAN954A3/7298A/DyAzz77LK6++mqfF0i+54sv330d5gD+7fLxNiyynGfmlZlormuGQWtAZEIkVKdVnboEPdUTXU2urpOr5zrWVnW4CgIEAIAAAQatAWERYZDny3HinRNobW5F7vW5MGgM1v34uoPRk/vWVUjnKNxzNRauwkDLOCXkJaD803KU7ShDiCQEMekxyEOe0wDVnc9csK1r56ietrY2/PjZj9apcgdMHgCxWNzpvcHWwRes65gS+ZrZbMYHH3yAU6dOAQCGDh2KW265BSEhIQGujIiIiIiIiIjIv4YPH47XX38dra2t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IyGFtecIgoCKUxWoPFMJXa0O4WnhaNY1d1iTvesauqKrrDyvHHnf5eH84fMozy9HRGoEogZGIQ1p7eqydr5FIhFih8airrQOuhod/OX+pto6Cm3bnsu6srp2+++V1cspwZqz10Fs+9oZO9SshUfOCNgcXSfPHevrdXWNTuPrEzUwCtVnq1F6uBSqdJVLO+1csa4oERERERF5r+PHj8PPzw+jRo0y3RcREYH09HQcP34cQEuH3/XXX291H3l5eViyZAl+/fVXqNVqU2dfYWEhMjIybKqjoKAATU1NGDNmjOk+f39/jBw50lSH0aBBg0z/HxsbCwAoLS1FYmKixX0vXrwYCxcuNN2urq5GQoLlL0YTERGR92LgRz6po9Cts4DL0QCsbcdTr6xeNgcy1kKC8rxyFGwqQFN9E/wC/FBfWo+QuBCnBhau6CqrV9ej+lw16krrUFdSB3mIHNXnqi0GYh2db2u1dRS0WTqXbffvrFDGnveKIx1xrUM1bZUWACALlTk1YHM0tHR22GnkzM5B4+vTWNOIqIFRiMqIQuzQWHbaERERERGRWwUEBHT4+JVXXomkpCSsXbsWcXFxMBgMyMjIgE6nc0k9/v7+pv83/nvLGDJaIpPJIJPJXFILERERuQ8DP/JJHQU6nQVcjgZgruh4qlfXQywVIyItApo8DQKjA5E6rf1agl1ha/hlTxATEBGAutI61BTVwC/AD43VjagrrUNVYRUUKgWUqUpU5FegXl0PebgcEX0jUHmmEmHJYWbr4FmrzZ6gzZXTZNqzb0feH61DtYJNBRAgIH5UvEMBm7XXz9GA21XrDTrj56j1lLIR6REdTilLRERERETUFf3790dzczN+/fVX05SeGo0Gubm5GDBgAICWjrrs7GyL02Iat127di3GjRsHANixY4fZNlKpFABMa/5ZkpKSAqlUip07dyIpKQkA0NTUhL1792LBggVdHicRERH5PgZ+1O10FnA52v3lio4nhUqBkPgQAEDskFikTktFyuQUh9dYA+Bw91TrIEYilUB1SgVZsMzqfvwD/OEX6AdBLyBAGQD/AH9UFlairrQlhDGufde6c83WdfDsCdpcOcWiPft25P3ROlSTK1vWUnA0YLMWpNlyLi29l1wVpDrj58jSOpycYpOIiIiIiFwhLS0NV111Fe644w689tprCA4OxqJFixAfH4+r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c1OlzuHIeENCQsz+Hjxz5owbK3acvWPV6XS49NJLcfr0aXzyySfIzc3F2rVrER8f7+bKHWPveD/77DOz1/XIkSOQSCQ+cX1j71g3bNiARYsWYenSpTh+/DjefPNNfPjhh/jPf/5j34EF8gpKpVJ44403PF2GT6ipqRHS0tKE77//Xhg/frwwf/58T5fkE5YuXSoMHjzY02X4pAcffFAYO3asp8voFubPny+kpKQIBoPB06V4vcsvv1y49dZbze675pprhJkzZ3qoIqLuAYDw+eefe7oMn1BaWioAELZv3+7pUrwar+Ot43V7x3h9bhteizuG193UkZEjRwpz58413dbr9UJcXJywfPlyi9vfcMMNwuWXX25236hRo4R//vOfLq3TGewda2tJSUnCc88958LqnKsrYxUEQWhubhaCg4OFt99+21UlOlVXxysIgpCZmSn897//dUV5TuXIWJubm4XRo0cLb7zxhjB79mzhqquuckOlzmHveNetWyeEhoa6qTrnsnesr776qtCnTx9Bp9O5q0Sn6urP7XPPPScEBwcLtbW1rirRaewd69y5c4WLL77Y7L6FCxcKY8aMseu47PDzML1ej40bN6Kurg5ZWVmeLscnzJ07F5dffjkmTZrk6VJ8Tl5eHuLi4tCnTx/MnDkThYWFni7JJ3z55ZcYPnw4rr/+ekRFRSEzMxNr1671dFk+R6fT4b333sOtt94KkUjk6XK83ujRo5GdnY2TJ08CAA4dOoQdO3Zg2rRpHq6MiHqKqqoqAC3fhqb2eB3fOV63d47X553jtbj9eN1NHdHpdNi/f7/Z72axWIxJkyZh9+7dFp+ze/fudr/Lp0yZYnV7b+HIWH2VM8ZaX1+PpqYmn7j26+p4BUFAdnY2cnNzcdFFF7my1C5zdKyPPvoooqKicNttt7mjTKdxdLy1tbVISkpCQkKCz8zA4chYv/zyS2RlZWHu3LmIjo5GRkYGnnzySej1eneV7TBn/J568803cdNNNyEwMNBVZTqFI2MdPXo09u/fb5r28/fff8e3336Lyy67zK5j+zleNnXF4cOHkZWVhcbGRgQFBeHzzz/HgAEDPF2W19u4cSMOHDiAvXv3eroUnzNq1CisX78e6enpKC4uxrJlyzBu3DgcOXIEwcHBni7Pq/3+++949dVXsXDhQvznP//B3r178e9//xtSqRSz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wuOPP+6pIdjF0ffy2LFjhRtvvNHd5XaJvWNdunSpEBwcLHzwwQfC77//LmzZskVISUkRbrjhBruOy8DPA2699VYhKSlJkEqlQmRkpHDJJZfwQwIH8YMD2914441CbGysIJVKhfj4eOHGG28U8vPzPV2Wz/jqq6+EjIwMQSaTCf369RNef/11T5fkMzZv3iwAEHJzcz1dik+prq4W5s+fLyQmJgpyuVzo06eP8NBDDwlardbTpRH5nK1btwoA2v2ZPXu2p0vzKpbOEQBh3bp1ni7Na/A63nG8bm+P1+e247W4bXjdTfZ48cUXhcTEREEqlQojR44UfvnlF9Nj48ePb3ed9NFHHwl9+/YVpFKpcMEFFwjffPONmyt2nD1jPXXqlMXrofHjx7u/cAfYM9akpCSLY126dKn7C3eQPeN96KGHhNTUVEEulwtKpVLIysoSNm7c6IGqHWPvz2xrvhb4CYJ9412wYIFp2+joaOGyyy4TDhw44IGqHWPva7tr1y5h1KhRgkwmE/r06SM88cQTQnNzs5urdpy94z1x4oQAwCf/3WXPWJuamoRHHnlESElJEeRyuZCQkCDcc889QkVFhV3HFAmCPf2ARERERERERERERERERORNuIYfERERERERERERERERkQ9j4EdERERERERERERERETkwxj4EREREREREREREREREfkwBn5EREREREREREREREREPoyBHxEREREREREREREREZEPY+BHREREREREyerB8gAAEWVJREFURERERERE5MMY+BERERERERERERERERH5MAZ+RERERERERERERERERD6MgR8ReaX169cjLCzMozVMmDABCxYs8GgNRL7kp59+wpVXXom4uDiIRCJ88cUXdu/jo48+wpAhQ6BQKJCUlIRnnnnG+YUSEVG34c5rxjlz5mD69OluORYREREREZG9GPgRkU3Kyspw9913IzExETKZDDExMZgyZQp27txp2sbRD/iTk5OxevVqs/tuvPFGnDx5sotVE5E71dXVYfDgwXj55Zcdev53332HmTNn4q677sKRI0fwyiuv4LnnnsNLL73k5EqJiLyDtQBp27ZtEIlEqKysdHtNBJw+fRoikQg5OTmeLoWIiIiIiMhmfp4ugIh8w7XXXgudToe3334bffr0wfnz55GdnQ2NRuOS4wUEBCAgIMAl+yYi15g2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f/wDDzzwAF544QUcO3YMs2fPbrfNL7/8Yur6a25uxv79+zFv3jwAwNChQ/Hpp58iOTkZfn7O/2fg7bffjoyMDLzyyitobm62GLh1Vf/+/fHrr7+a3WeczcFo6NChyM3NbReitvXLL79g1qxZZrczMzMBtFybAuj0+pSIiIiIiMibcEpPIuqURqPBxRdfjPfeew+//fYbTp06hY8//hhPP/00rrrqKtN2ycnJyM7ORklJCSoqKgAAaWlp+Oyzz5CTk4NDhw7h73//e7tvQScnJ+Onn37CuXPnoFarLdawdOlSfPDBB1i6dCmOHz+Ow4cPW/yGemvXXHMNampqcPfdd2PixImIi4szPXbPPfegqKgI//rXv3DixAn873//w9KlS7Fw4UKIxZZ/NV588cV46aWXcPDgQezbtw933XVXu295O2LZsmVYvnw5XnjhBZw8eRKHDx/GunXr8Oyzz3Z530TutG/fPmRmZpo+MF24cCEyMzOxZMkSAMC6deswa9Ys/N///R/S09Mxffp07N27F4mJiaZ9vP322xg+fDjGjBmDo0ePYtu2baZpPYmIejKlUolrrrkG999/PyZPnmzxC0ovv/wyPv/8c5w4cQJz585FRUUFbr31VgDA3LlzUV5ejhkzZmDv3r0oKCjA5s2bccsttzgl2Orfvz8uvPBCPPjgg5gxY4bdszPY4t///jc2bdqElStXIi8vDy+99BI2bdpkts2SJUvwzjvvYNmyZTh69CiOHz+OjRs34r///a/Zdh9//DHeeustnDx5EkuXLsWePXtM4WhUVBQCAgKwadMmnD9/HlVVVU4fCxERERERkbMx8COiTgUFBWHUqFF47rnncNFFFyEjIwMPP/ww7rjjDrz00kum7VatWoXvv/8eCQkJpg/8n332WSiVSowePRpXXnklpkyZgqFDh5rt/9FHH8Xp06eRkpJiddq+CRMm4OOPP8aXX36JIUOG4OKLL8aePXs6rDs4OBhXXnklDh061K57Lj4+Ht9++y327NmDwYMH46677sJtt93W7sOg1latWoWEhASMGzcOf//733HfffdBoVB0WIMtbr/9drzxxhtYt24dBg4ciPHjx2P9+vXo3bt3l/dN5E4TJkyAIAjt/hjX+vT398eyZctw6tQp6HQ6/PHHH/jss89Ma1yqVCrs3r0btbW1qKurww8//NBuqlsiop7stttug06nM4V4ba1YsQIrVqzA4MGDsWPHDnz55ZdQqVQAgLi4OOzcuRN6vR6TJ0/GwIEDsWDBAoSFhVn9spOz6+uqCy+8EGvXrsXzzz+PwYMHY8uWLe2u3aZMmYKvv/4aW7ZswYgRI3DhhRfiueeeQ1JSktl2y5Ytw8aNGzFo0CC88847+OCDDzBgwAAALesfvvDCC3jttdcQFxdn9gU3IiIiIiIibyUS2i5IRURERERERF7n3Xffxb333os//vjDNO0kAJw+fRq9e/fGwYMHMWTIEI/V99hjj+Hjjz/Gb7/95rEabCESifD5559j+vTpni6FiIiIiIjIabiGHxERERERkRerr69HcXExVqxYgX/+859mYZ83MK7R/NJLL+Hxxx/3dDlEREREREQ9Eqf0JCIiIiIi8mJPP/00+vXrh5iYGCxevNjT5bQzb948DBs2DBMmTHDZdJ5ERERERETUMU7pSUREREREREREREREROTD2OFHRERERERERERERERE5MMY+BERERERERERERERERH5MAZ+RERERERERERERERERD6MgR8RERERERERERERERGRD2PgR0REREREREREREREROTDGPgRERERERERERERERER+TAGfkREREREREREREREREQ+jIEfERERERERERERERERkQ9j4EdERERERERERERERETkw/4fNIAP/Ne/1fwAAAAASUVORK5CYII=\n" }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "Saved: /content/t5_wordnet_geometry.png\n", "\n", "======================================================================\n", "T5-SMALL × WORDNET — SUMMARY\n", "======================================================================\n", "WordNet entries matched: 9362\n", "Encoding time: 2.7s\n", "Throughput: 3404 defs/s\n", "\n", "--- STATIC vs ENCODER TRANSFORMATION ---\n", "Cosine(static, encoder): 0.0966 ± 0.0640\n", "\n", "--- WORDNET RELATIONAL ALIGNMENT ---\n", "Static Pearson: 0.0781\n", "Static Spearman: 0.0151\n", "Encoder Pearson: 0.0953\n", "Encoder Spearman: 0.0811\n", "Lift (Pearson): +0.0172\n", "Lift (Spearman): +0.0660\n", "\n", "--- PENTACHORON GEOMETRY ---\n", "Static CV: 0.1758\n", "Encoder CV: 0.2012\n", "Per-simplex correlation: -0.0108\n" ] } ], "source": [ "# ============================================================================\n", "# T5-SMALL × WORDNET: Relational Geometry via Summarization\n", "# Feed \"summarize: {definition}\" through encoder, compare hidden state\n", "# geometry against WordNet's relational graph structure.\n", "# ============================================================================\n", "\n", "# %% Cell 1: Setup and matching\n", "# !pip install nltk -q\n", "import torch\n", "import numpy as np\n", "import math\n", "import time\n", "from transformers import T5ForConditionalGeneration, T5Tokenizer\n", "import matplotlib.pyplot as plt\n", "from scipy.stats import spearmanr\n", "\n", "import nltk\n", "nltk.download('wordnet', quiet=True)\n", "nltk.download('omw-1.4', quiet=True)\n", "from nltk.corpus import wordnet as wn\n", "\n", "model_id = \"google-t5/t5-small\"\n", "print(f\"Loading {model_id}...\")\n", "tokenizer = T5Tokenizer.from_pretrained(model_id, legacy=True)\n", "model = T5ForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.float32)\n", "model.eval()\n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "model = model.to(device)\n", "print(f\"Device: {device}\")\n", "\n", "# Build WordNet → T5 token mapping\n", "print(\"\\nMatching WordNet lemmas to T5 single-tokens...\")\n", "t5_vocab = {tokenizer.decode([i]).strip(): i for i in range(tokenizer.vocab_size)}\n", "\n", "matched = [] # (lemma_name, synset, token_id, definition)\n", "seen_tokens = set()\n", "\n", "for synset in wn.all_synsets():\n", " for lemma in synset.lemmas():\n", " name = lemma.name().replace('_', ' ')\n", " # Try as single T5 token\n", " ids = tokenizer.encode(name, add_special_tokens=False)\n", " if len(ids) == 1 and ids[0] not in seen_tokens:\n", " defn = synset.definition()\n", " if len(defn) > 10: # skip trivially short definitions\n", " matched.append((name, synset, ids[0], defn))\n", " seen_tokens.add(ids[0])\n", "\n", "print(f\"Matched: {len(matched)} unique single-token WordNet entries\")\n", "print(f\"Sample: {[(m[0], m[3][:60]) for m in matched[:5]]}\")\n", "\n", "# %% Cell 2: Batch encode through T5 encoder\n", "print(f\"\\n{'='*70}\")\n", "print(\"ENCODING WORDNET DEFINITIONS THROUGH T5 ENCODER\")\n", "print(f\"{'='*70}\")\n", "\n", "BATCH_SIZE = 64\n", "MAX_LEN = 128 # truncate long definitions\n", "\n", "# Prepare \"summarize: {definition}\" inputs\n", "texts = [f\"summarize: {m[3]}\" for m in matched]\n", "token_ids_list = [m[2] for m in matched]\n", "lemma_names = [m[0] for m in matched]\n", "synsets = [m[1] for m in matched]\n", "\n", "# Storage for encoder final hidden states (mean-pooled per definition)\n", "encoder_reps = np.zeros((len(matched), 512), dtype=np.float32)\n", "\n", "t0 = time.time()\n", "n_batches = (len(texts) + BATCH_SIZE - 1) // BATCH_SIZE\n", "\n", "for batch_idx in range(n_batches):\n", " start = batch_idx * BATCH_SIZE\n", " end = min(start + BATCH_SIZE, len(texts))\n", " batch_texts = texts[start:end]\n", "\n", " inputs = tokenizer(\n", " batch_texts,\n", " return_tensors=\"pt\",\n", " padding=True,\n", " truncation=True,\n", " max_length=MAX_LEN,\n", " ).to(device)\n", "\n", " with torch.no_grad():\n", " enc_out = model.encoder(\n", " input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask,\n", " )\n", " # Mean pool over non-padding positions\n", " hidden = enc_out.last_hidden_state.float() # [B, seq, 512]\n", " mask = inputs.attention_mask.unsqueeze(-1).float() # [B, seq, 1]\n", " pooled = (hidden * mask).sum(dim=1) / mask.sum(dim=1) # [B, 512]\n", " encoder_reps[start:end] = pooled.cpu().numpy()\n", "\n", " if (batch_idx + 1) % 50 == 0 or batch_idx == n_batches - 1:\n", " elapsed = time.time() - t0\n", " print(f\" Batch {batch_idx+1}/{n_batches} ({end}/{len(texts)}) - {elapsed:.1f}s\")\n", "\n", "total_time = time.time() - t0\n", "print(f\"\\nEncoded {len(texts)} definitions in {total_time:.1f}s ({len(texts)/total_time:.0f} defs/s)\")\n", "\n", "# %% Cell 3: Static embedding extraction for same tokens\n", "print(f\"\\n{'='*70}\")\n", "print(\"STATIC EMBEDDINGS FOR MATCHED TOKENS\")\n", "print(f\"{'='*70}\")\n", "\n", "E = model.shared.weight.detach().float().cpu().numpy()\n", "static_reps = E[token_ids_list]\n", "\n", "static_norms = np.linalg.norm(static_reps, axis=1)\n", "encoder_norms = np.linalg.norm(encoder_reps, axis=1)\n", "print(f\"Static embed norms: mean={static_norms.mean():.2f} std={static_norms.std():.2f}\")\n", "print(f\"Encoder rep norms: mean={encoder_norms.mean():.2f} std={encoder_norms.std():.2f}\")\n", "\n", "# Per-token cosine between static and encoder representation\n", "dot = (static_reps * encoder_reps).sum(axis=1)\n", "cos_static_enc = dot / (static_norms * encoder_norms + 1e-8)\n", "print(f\"\\nCosine(static, encoder) per token:\")\n", "print(f\" Mean: {cos_static_enc.mean():.4f} Std: {cos_static_enc.std():.4f}\")\n", "print(f\" This tells us how much the encoder transforms the representation\")\n", "\n", "# %% Cell 4: WordNet relational structure\n", "print(f\"\\n{'='*70}\")\n", "print(\"WORDNET GRAPH STRUCTURE\")\n", "print(f\"{'='*70}\")\n", "\n", "# Compute WordNet path similarity for a sample of pairs\n", "N_REL = min(3000, len(matched))\n", "rng = np.random.default_rng(42)\n", "rel_idx = rng.choice(len(matched), size=N_REL, replace=False)\n", "\n", "# Pairwise WordNet path similarity (expensive, so subsample pairs)\n", "N_PAIRS = 500000\n", "pair_i = rng.choice(N_REL, size=N_PAIRS)\n", "pair_j = rng.choice(N_REL, size=N_PAIRS)\n", "# Remove self-pairs\n", "valid = pair_i != pair_j\n", "pair_i = pair_i[valid]\n", "pair_j = pair_j[valid]\n", "\n", "print(f\"Computing WordNet path similarity for {len(pair_i)} pairs...\")\n", "t0 = time.time()\n", "\n", "wn_sims = []\n", "enc_cosines = []\n", "static_cosines = []\n", "\n", "# Normalize for cosine\n", "enc_sub = encoder_reps[rel_idx]\n", "static_sub = static_reps[rel_idx]\n", "enc_n = enc_sub / (np.linalg.norm(enc_sub, axis=1, keepdims=True) + 1e-8)\n", "static_n = static_sub / (np.linalg.norm(static_sub, axis=1, keepdims=True) + 1e-8)\n", "\n", "batch_count = 0\n", "for pi, pj in zip(pair_i, pair_j):\n", " s1 = synsets[rel_idx[pi]]\n", " s2 = synsets[rel_idx[pj]]\n", " sim = s1.path_similarity(s2)\n", " if sim is not None and sim > 0:\n", " wn_sims.append(sim)\n", " enc_cosines.append(np.dot(enc_n[pi], enc_n[pj]))\n", " static_cosines.append(np.dot(static_n[pi], static_n[pj]))\n", " batch_count += 1\n", " if batch_count % 100000 == 0:\n", " print(f\" {batch_count}/{len(pair_i)} pairs processed...\")\n", "\n", "wn_sims = np.array(wn_sims)\n", "enc_cosines = np.array(enc_cosines)\n", "static_cosines = np.array(static_cosines)\n", "\n", "elapsed = time.time() - t0\n", "print(f\"Valid pairs with path similarity: {len(wn_sims)} ({elapsed:.1f}s)\")\n", "\n", "# %% Cell 5: Relational correlation — the money shot\n", "print(f\"\\n{'='*70}\")\n", "print(\"RELATIONAL CORRELATION: WordNet vs T5 Geometry\")\n", "print(f\"{'='*70}\")\n", "\n", "# Pearson\n", "static_pearson = np.corrcoef(wn_sims, static_cosines)[0, 1]\n", "enc_pearson = np.corrcoef(wn_sims, enc_cosines)[0, 1]\n", "\n", "# Spearman\n", "static_spearman, _ = spearmanr(wn_sims, static_cosines)\n", "enc_spearman, _ = spearmanr(wn_sims, enc_cosines)\n", "\n", "print(f\"Static embeddings vs WordNet path similarity:\")\n", "print(f\" Pearson: {static_pearson:.6f}\")\n", "print(f\" Spearman: {static_spearman:.6f}\")\n", "\n", "print(f\"\\nEncoder representations vs WordNet path similarity:\")\n", "print(f\" Pearson: {enc_pearson:.6f}\")\n", "print(f\" Spearman: {enc_spearman:.6f}\")\n", "\n", "print(f\"\\nLift from encoder processing:\")\n", "print(f\" Pearson: {enc_pearson - static_pearson:+.6f}\")\n", "print(f\" Spearman: {enc_spearman - static_spearman:+.6f}\")\n", "\n", "# %% Cell 6: WordNet distance bands\n", "print(f\"\\n{'='*70}\")\n", "print(\"COSINE BY WORDNET DISTANCE BAND\")\n", "print(f\"{'='*70}\")\n", "\n", "bands = [(0.9, 1.0), (0.5, 0.9), (0.25, 0.5), (0.1, 0.25), (0.05, 0.1), (0.0, 0.05)]\n", "print(f\"{'WN Band':>12s} {'N':>7s} {'Static Cos':>10s} {'Enc Cos':>10s} {'Gap':>8s}\")\n", "for lo, hi in bands:\n", " mask = (wn_sims >= lo) & (wn_sims < hi) if lo > 0 else (wn_sims > lo) & (wn_sims <= hi)\n", " if mask.sum() < 10:\n", " continue\n", " sc = static_cosines[mask].mean()\n", " ec = enc_cosines[mask].mean()\n", " print(f\" [{lo:.2f},{hi:.2f}) {mask.sum():7d} {sc:10.4f} {ec:10.4f} {ec-sc:+8.4f}\")\n", "\n", "# %% Cell 7: Pentachoron geometry in encoder space\n", "print(f\"\\n{'='*70}\")\n", "print(\"PENTACHORON GEOMETRY: Static vs Encoder Space\")\n", "print(f\"{'='*70}\")\n", "\n", "def cayley_menger_volume_sq(points):\n", " n = len(points)\n", " D = np.zeros((n + 1, n + 1))\n", " D[0, 1:] = 1\n", " D[1:, 0] = 1\n", " for i in range(n):\n", " for j in range(i + 1, n):\n", " d_sq = np.sum((points[i] - points[j]) ** 2)\n", " D[i + 1, j + 1] = d_sq\n", " D[j + 1, i + 1] = d_sq\n", " k = n - 1\n", " sign = (-1) ** (k + 1)\n", " factorial_sq = math.factorial(k) ** 2\n", " denom = (2 ** k) * factorial_sq\n", " det = np.linalg.det(D)\n", " vol_sq = sign * det / denom\n", " return vol_sq\n", "\n", "N_SIMP = 1000\n", "vols_static = []\n", "vols_encoder = []\n", "\n", "for _ in range(N_SIMP):\n", " idx = rng.choice(len(matched), size=5, replace=False)\n", "\n", " pts_s = static_reps[idx]\n", " vs = cayley_menger_volume_sq(pts_s)\n", " if vs > 0:\n", " vols_static.append(np.sqrt(vs))\n", "\n", " pts_e = encoder_reps[idx]\n", " ve = cayley_menger_volume_sq(pts_e)\n", " if ve > 0:\n", " vols_encoder.append(np.sqrt(ve))\n", "\n", "vols_static = np.array(vols_static)\n", "vols_encoder = np.array(vols_encoder)\n", "\n", "print(f\"Static: valid={len(vols_static)} mean={vols_static.mean():.4e} CV={vols_static.std()/vols_static.mean():.4f}\")\n", "print(f\"Encoder: valid={len(vols_encoder)} mean={vols_encoder.mean():.4e} CV={vols_encoder.std()/vols_encoder.mean():.4f}\")\n", "\n", "min_len = min(len(vols_static), len(vols_encoder))\n", "vol_corr = np.corrcoef(vols_static[:min_len], vols_encoder[:min_len])[0, 1]\n", "print(f\"Per-simplex volume correlation (static vs encoder): {vol_corr:.4f}\")\n", "\n", "# %% Cell 8: Hypernym chain geometry\n", "print(f\"\\n{'='*70}\")\n", "print(\"HYPERNYM CHAIN GEOMETRY\")\n", "print(f\"{'='*70}\")\n", "\n", "# Find tokens that form hypernym chains in WordNet\n", "# e.g., dog → canine → carnivore → mammal → animal → organism\n", "# Measure whether cosine decays with hypernym distance\n", "\n", "# Build lookup: synset -> index in matched\n", "synset_to_idx = {}\n", "for i, (name, syn, tid, defn) in enumerate(matched):\n", " if syn not in synset_to_idx:\n", " synset_to_idx[syn] = i\n", "\n", "# Find hypernym chains of length >= 3\n", "chains = []\n", "for syn, idx in synset_to_idx.items():\n", " chain = [(syn, idx)]\n", " current = syn\n", " for _ in range(10): # max depth\n", " hypernyms = current.hypernyms()\n", " if not hypernyms:\n", " break\n", " parent = hypernyms[0]\n", " if parent in synset_to_idx:\n", " chain.append((parent, synset_to_idx[parent]))\n", " current = parent\n", " if len(chain) >= 3:\n", " chains.append(chain)\n", "\n", "print(f\"Found {len(chains)} chains of length >= 3\")\n", "\n", "if len(chains) > 0:\n", " # Measure cosine decay along chains\n", " max_depth = min(8, max(len(c) for c in chains))\n", " depth_cosines_static = {d: [] for d in range(1, max_depth)}\n", " depth_cosines_enc = {d: [] for d in range(1, max_depth)}\n", "\n", " for chain in chains:\n", " root_idx = chain[0][1]\n", " root_s = static_n[0] if root_idx >= N_REL else static_reps[root_idx] / (np.linalg.norm(static_reps[root_idx]) + 1e-8)\n", " root_e = enc_n[0] if root_idx >= N_REL else encoder_reps[root_idx] / (np.linalg.norm(encoder_reps[root_idx]) + 1e-8)\n", "\n", " # Recompute properly\n", " rs = static_reps[root_idx]\n", " re = encoder_reps[root_idx]\n", " rs_n = rs / (np.linalg.norm(rs) + 1e-8)\n", " re_n = re / (np.linalg.norm(re) + 1e-8)\n", "\n", " for depth in range(1, min(len(chain), max_depth)):\n", " anc_idx = chain[depth][1]\n", " as_n = static_reps[anc_idx] / (np.linalg.norm(static_reps[anc_idx]) + 1e-8)\n", " ae_n = encoder_reps[anc_idx] / (np.linalg.norm(encoder_reps[anc_idx]) + 1e-8)\n", " depth_cosines_static[depth].append(np.dot(rs_n, as_n))\n", " depth_cosines_enc[depth].append(np.dot(re_n, ae_n))\n", "\n", " print(f\"\\n{'Depth':>5s} {'N':>5s} {'Static Cos':>10s} {'Enc Cos':>10s}\")\n", " for d in range(1, max_depth):\n", " if len(depth_cosines_static[d]) > 0:\n", " sc = np.mean(depth_cosines_static[d])\n", " ec = np.mean(depth_cosines_enc[d])\n", " print(f\" {d:3d} {len(depth_cosines_static[d]):5d} {sc:10.4f} {ec:10.4f}\")\n", "\n", "# %% Cell 9: Category-level semantic clustering comparison\n", "print(f\"\\n{'='*70}\")\n", "print(\"WORDNET CATEGORY CLUSTERING: Static vs Encoder\")\n", "print(f\"{'='*70}\")\n", "\n", "# Use WordNet's top-level categories (lexicographer names)\n", "from collections import defaultdict\n", "lexname_groups = defaultdict(list)\n", "\n", "for i, (name, syn, tid, defn) in enumerate(matched):\n", " lexname = syn.lexname()\n", " lexname_groups[lexname].append(i)\n", "\n", "print(f\"{'Category':>25s} {'N':>5s} {'Static intra':>12s} {'Enc intra':>12s} {'Lift':>8s}\")\n", "for lexname, indices in sorted(lexname_groups.items(), key=lambda x: -len(x[1])):\n", " if len(indices) < 10:\n", " continue\n", " idx_arr = np.array(indices[:200]) # cap at 200\n", "\n", " s_cat = static_reps[idx_arr]\n", " e_cat = encoder_reps[idx_arr]\n", " s_n = s_cat / (np.linalg.norm(s_cat, axis=1, keepdims=True) + 1e-8)\n", " e_n = e_cat / (np.linalg.norm(e_cat, axis=1, keepdims=True) + 1e-8)\n", "\n", " n_c = len(idx_arr)\n", " tri_c = np.triu_indices(n_c, k=1)\n", " intra_s = (s_n @ s_n.T)[tri_c].mean()\n", " intra_e = (e_n @ e_n.T)[tri_c].mean()\n", " print(f\" {lexname:23s} {len(indices):5d} {intra_s:12.4f} {intra_e:12.4f} {intra_e-intra_s:+8.4f}\")\n", "\n", "# %% Cell 10: Visualization\n", "fig, axes = plt.subplots(2, 3, figsize=(18, 10))\n", "fig.suptitle(\"T5-Small × WordNet: Static vs Encoder Geometry\", fontsize=14)\n", "\n", "# 1. WN sim vs encoder cosine scatter\n", "sub = rng.choice(len(wn_sims), size=min(50000, len(wn_sims)), replace=False)\n", "axes[0, 0].scatter(wn_sims[sub], enc_cosines[sub], alpha=0.02, s=1, color='darkgreen')\n", "axes[0, 0].set_xlabel(\"WordNet path similarity\")\n", "axes[0, 0].set_ylabel(\"Encoder cosine\")\n", "axes[0, 0].set_title(f\"Encoder vs WordNet (r={enc_pearson:.4f})\")\n", "\n", "# 2. WN sim vs static cosine scatter\n", "axes[0, 1].scatter(wn_sims[sub], static_cosines[sub], alpha=0.02, s=1, color='steelblue')\n", "axes[0, 1].set_xlabel(\"WordNet path similarity\")\n", "axes[0, 1].set_ylabel(\"Static cosine\")\n", "axes[0, 1].set_title(f\"Static vs WordNet (r={static_pearson:.4f})\")\n", "\n", "# 3. Static vs encoder cosine per token\n", "axes[0, 2].hist(cos_static_enc, bins=200, color='darkorange', alpha=0.8)\n", "axes[0, 2].set_title(f\"Cosine(static, encoder) mean={cos_static_enc.mean():.3f}\")\n", "\n", "# 4. Pentachoron volumes\n", "if len(vols_static) > 0 and len(vols_encoder) > 0:\n", " axes[1, 0].scatter(vols_static[:min_len], vols_encoder[:min_len], alpha=0.3, s=5, color='purple')\n", " axes[1, 0].set_xlabel(\"Static volume\")\n", " axes[1, 0].set_ylabel(\"Encoder volume\")\n", " axes[1, 0].set_title(f\"Pentachoron vols (r={vol_corr:.4f})\")\n", "\n", "# 5. Hypernym depth decay\n", "if len(chains) > 0:\n", " depths = []\n", " cos_s_means = []\n", " cos_e_means = []\n", " for d in range(1, max_depth):\n", " if len(depth_cosines_static[d]) > 0:\n", " depths.append(d)\n", " cos_s_means.append(np.mean(depth_cosines_static[d]))\n", " cos_e_means.append(np.mean(depth_cosines_enc[d]))\n", " axes[1, 1].plot(depths, cos_s_means, 'o-', label='Static', color='steelblue')\n", " axes[1, 1].plot(depths, cos_e_means, 's-', label='Encoder', color='crimson')\n", " axes[1, 1].set_xlabel(\"Hypernym depth\")\n", " axes[1, 1].set_ylabel(\"Mean cosine to root\")\n", " axes[1, 1].set_title(\"Hypernym chain cosine decay\")\n", " axes[1, 1].legend()\n", "\n", "# 6. Category intra-cosine comparison\n", "cat_names_plot = []\n", "static_intras = []\n", "enc_intras = []\n", "for lexname, indices in sorted(lexname_groups.items(), key=lambda x: -len(x[1])):\n", " if len(indices) < 10:\n", " continue\n", " idx_arr = np.array(indices[:200])\n", " s_cat = static_reps[idx_arr]\n", " e_cat = encoder_reps[idx_arr]\n", " s_n = s_cat / (np.linalg.norm(s_cat, axis=1, keepdims=True) + 1e-8)\n", " e_n = e_cat / (np.linalg.norm(e_cat, axis=1, keepdims=True) + 1e-8)\n", " n_c = len(idx_arr)\n", " tri_c = np.triu_indices(n_c, k=1)\n", " static_intras.append((s_n @ s_n.T)[tri_c].mean())\n", " enc_intras.append((e_n @ e_n.T)[tri_c].mean())\n", " cat_names_plot.append(lexname.split('.')[-1][:12] if '.' in lexname else lexname[:12])\n", "\n", " if len(cat_names_plot) >= 15:\n", " break\n", "\n", "y_pos = np.arange(len(cat_names_plot))\n", "axes[1, 2].barh(y_pos - 0.15, static_intras, 0.3, label='Static', color='steelblue', alpha=0.7)\n", "axes[1, 2].barh(y_pos + 0.15, enc_intras, 0.3, label='Encoder', color='crimson', alpha=0.7)\n", "axes[1, 2].set_yticks(y_pos)\n", "axes[1, 2].set_yticklabels(cat_names_plot)\n", "axes[1, 2].set_title(\"Intra-category cosine by WordNet lexname\")\n", "axes[1, 2].legend()\n", "\n", "plt.tight_layout()\n", "plt.savefig(\"/content/t5_wordnet_geometry.png\", dpi=150, bbox_inches='tight')\n", "plt.show()\n", "print(\"\\nSaved: /content/t5_wordnet_geometry.png\")\n", "\n", "# %% Cell 11: Summary\n", "print(f\"\\n{'='*70}\")\n", "print(\"T5-SMALL × WORDNET — SUMMARY\")\n", "print(f\"{'='*70}\")\n", "print(f\"WordNet entries matched: {len(matched)}\")\n", "print(f\"Encoding time: {total_time:.1f}s\")\n", "print(f\"Throughput: {len(texts)/total_time:.0f} defs/s\")\n", "print(f\"\")\n", "print(f\"--- STATIC vs ENCODER TRANSFORMATION ---\")\n", "print(f\"Cosine(static, encoder): {cos_static_enc.mean():.4f} ± {cos_static_enc.std():.4f}\")\n", "print(f\"\")\n", "print(f\"--- WORDNET RELATIONAL ALIGNMENT ---\")\n", "print(f\"Static Pearson: {static_pearson:.4f}\")\n", "print(f\"Static Spearman: {static_spearman:.4f}\")\n", "print(f\"Encoder Pearson: {enc_pearson:.4f}\")\n", "print(f\"Encoder Spearman: {enc_spearman:.4f}\")\n", "print(f\"Lift (Pearson): {enc_pearson - static_pearson:+.4f}\")\n", "print(f\"Lift (Spearman): {enc_spearman - static_spearman:+.4f}\")\n", "print(f\"\")\n", "print(f\"--- PENTACHORON GEOMETRY ---\")\n", "print(f\"Static CV: {vols_static.std()/vols_static.mean():.4f}\")\n", "print(f\"Encoder CV: {vols_encoder.std()/vols_encoder.mean():.4f}\")\n", "print(f\"Per-simplex correlation: {vol_corr:.4f}\")" ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# T5-SMALL × WORDNET: 50-Seed Stability Test\n", "# Run AFTER the main WordNet probe (reuses encoder_reps, static_reps, etc.)\n", "# ============================================================================\n", "\n", "# %% Cell 1: 50-seed sweep\n", "import numpy as np\n", "import time\n", "from scipy.stats import spearmanr\n", "from tqdm import tqdm\n", "\n", "import torch\n", "\n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "print(f\"Compute device: {device}\")\n", "\n", "N_SEEDS = 50\n", "N_REL_SAMPLE = 2000\n", "N_PAIRS_PER = 200000\n", "N_SIMP_PER = 500\n", "\n", "# Precompute GPU tensors — all reps normalized on GPU once\n", "enc_reps_t = torch.tensor(encoder_reps, device=device, dtype=torch.float32)\n", "static_reps_t = torch.tensor(static_reps, device=device, dtype=torch.float32)\n", "enc_normed_t = enc_reps_t / (enc_reps_t.norm(dim=1, keepdim=True) + 1e-8)\n", "static_normed_t = static_reps_t / (static_reps_t.norm(dim=1, keepdim=True) + 1e-8)\n", "\n", "# Precompute hypernym chain index tensors for fast GPU gather\n", "chain_roots = []\n", "chain_depths = {1: [], 3: [], 5: []}\n", "for chain in chains:\n", " root_idx = chain[0][1]\n", " chain_roots.append(root_idx)\n", " for d in [1, 3, 5]:\n", " if d < len(chain):\n", " chain_depths[d].append((len(chain_roots) - 1, chain[d][1]))\n", "\n", "# Batched Cayley-Menger on GPU\n", "def cayley_menger_batch_gpu(points_batch):\n", " \"\"\"points_batch: [B, 5, D] -> volumes [B]\"\"\"\n", " B = points_batch.shape[0]\n", " # Pairwise squared distances [B, 5, 5]\n", " diff = points_batch.unsqueeze(2) - points_batch.unsqueeze(1) # [B,5,5,D]\n", " D_sq = (diff ** 2).sum(dim=-1) # [B, 5, 5]\n", "\n", " # Build Cayley-Menger matrix [B, 6, 6]\n", " CM = torch.zeros(B, 6, 6, device=points_batch.device, dtype=points_batch.dtype)\n", " CM[:, 0, 1:] = 1.0\n", " CM[:, 1:, 0] = 1.0\n", " CM[:, 1:, 1:] = D_sq\n", "\n", " det = torch.linalg.det(CM) # [B]\n", " # k=4 (4-simplex): sign = (-1)^5 = -1, denom = 2^4 * (4!)^2 = 16 * 576 = 9216\n", " vol_sq = -det / 9216.0\n", " return vol_sq\n", "\n", "# Storage\n", "results = {\n", " 'enc_pearson': [], 'enc_spearman': [],\n", " 'static_pearson': [], 'static_spearman': [],\n", " 'enc_cv': [], 'static_cv': [],\n", " 'enc_vol_mean': [], 'static_vol_mean': [],\n", " 'hyp_depth1_enc': [], 'hyp_depth3_enc': [], 'hyp_depth5_enc': [],\n", " 'hyp_depth1_static': [], 'hyp_depth3_static': [], 'hyp_depth5_static': [],\n", " 'band_high_enc': [], 'band_low_enc': [],\n", " 'band_high_static': [], 'band_low_static': [],\n", "}\n", "\n", "N_TOTAL = len(matched)\n", "print(f\"Running {N_SEEDS} seeds across {N_TOTAL} WordNet entries...\")\n", "print(f\" Per seed: {N_REL_SAMPLE} rel tokens, {N_PAIRS_PER} WN pairs, {N_SIMP_PER} simplices\")\n", "\n", "t0 = time.time()\n", "\n", "for seed in range(N_SEEDS):\n", " rng = np.random.default_rng(seed)\n", "\n", " # Sample tokens\n", " rel_idx = rng.choice(N_TOTAL, size=min(N_REL_SAMPLE, N_TOTAL), replace=False)\n", " rel_idx_t = torch.tensor(rel_idx, device=device, dtype=torch.long)\n", "\n", " # GPU normalized subsets\n", " enc_n = enc_normed_t[rel_idx_t] # [N_REL, 512]\n", " static_n = static_normed_t[rel_idx_t] # [N_REL, 512]\n", "\n", " # Random pairs — WN similarity is CPU-bound, but cosines are precomputed on GPU\n", " pi = rng.choice(len(rel_idx), size=N_PAIRS_PER)\n", " pj = rng.choice(len(rel_idx), size=N_PAIRS_PER)\n", " valid = pi != pj\n", " pi, pj = pi[valid], pj[valid]\n", "\n", " # Batch cosines on GPU for ALL pairs at once\n", " pi_t = torch.tensor(pi, device=device, dtype=torch.long)\n", " pj_t = torch.tensor(pj, device=device, dtype=torch.long)\n", " enc_cos_all = (enc_n[pi_t] * enc_n[pj_t]).sum(dim=1).cpu().numpy()\n", " static_cos_all = (static_n[pi_t] * static_n[pj_t]).sum(dim=1).cpu().numpy()\n", "\n", " # WN similarity — CPU bound, unavoidable\n", " wn_s = np.empty(len(pi), dtype=np.float32)\n", " wn_valid = np.zeros(len(pi), dtype=bool)\n", " for k in tqdm(range(len(pi)), desc=f\"Seed {seed+1} WN pairs\", leave=False, miniters=10000):\n", " sim = synsets[rel_idx[pi[k]]].path_similarity(synsets[rel_idx[pj[k]]])\n", " if sim is not None and sim > 0:\n", " wn_s[k] = sim\n", " wn_valid[k] = True\n", "\n", " wn_s = wn_s[wn_valid]\n", " enc_c = enc_cos_all[wn_valid]\n", " static_c = static_cos_all[wn_valid]\n", "\n", " # Relational correlations\n", " results['enc_pearson'].append(np.corrcoef(wn_s, enc_c)[0, 1])\n", " results['static_pearson'].append(np.corrcoef(wn_s, static_c)[0, 1])\n", " sp_enc, _ = spearmanr(wn_s, enc_c)\n", " sp_static, _ = spearmanr(wn_s, static_c)\n", " results['enc_spearman'].append(sp_enc)\n", " results['static_spearman'].append(sp_static)\n", "\n", " # Distance bands\n", " high_mask = wn_s >= 0.25\n", " low_mask = wn_s < 0.1\n", " if high_mask.sum() > 0:\n", " results['band_high_enc'].append(enc_c[high_mask].mean())\n", " results['band_high_static'].append(static_c[high_mask].mean())\n", " if low_mask.sum() > 0:\n", " results['band_low_enc'].append(enc_c[low_mask].mean())\n", " results['band_low_static'].append(static_c[low_mask].mean())\n", "\n", " # Pentachoron geometry — batched on GPU\n", " simp_idx = np.stack([rng.choice(N_TOTAL, size=5, replace=False) for _ in range(N_SIMP_PER)])\n", " simp_idx_t = torch.tensor(simp_idx, device=device, dtype=torch.long)\n", "\n", " static_pts = static_reps_t[simp_idx_t] # [N_SIMP, 5, 512]\n", " enc_pts = enc_reps_t[simp_idx_t] # [N_SIMP, 5, 512]\n", "\n", " vol_sq_s = cayley_menger_batch_gpu(static_pts)\n", " vol_sq_e = cayley_menger_batch_gpu(enc_pts)\n", "\n", " valid_s = vol_sq_s > 0\n", " valid_e = vol_sq_e > 0\n", "\n", " if valid_s.sum() > 0:\n", " vs = torch.sqrt(vol_sq_s[valid_s]).cpu().numpy()\n", " results['static_cv'].append(vs.std() / vs.mean())\n", " results['static_vol_mean'].append(vs.mean())\n", " if valid_e.sum() > 0:\n", " ve = torch.sqrt(vol_sq_e[valid_e]).cpu().numpy()\n", " results['enc_cv'].append(ve.std() / ve.mean())\n", " results['enc_vol_mean'].append(ve.mean())\n", "\n", " # Hypernym chains — GPU cosine, CPU chain lookup\n", " chain_sub = rng.choice(len(chains), size=min(1000, len(chains)), replace=False)\n", "\n", " for d in [1, 3, 5]:\n", " root_indices = []\n", " anc_indices = []\n", " for ci in chain_sub:\n", " chain = chains[ci]\n", " if d < len(chain):\n", " root_indices.append(chain[0][1])\n", " anc_indices.append(chain[d][1])\n", "\n", " if len(root_indices) > 0:\n", " root_t = torch.tensor(root_indices, device=device, dtype=torch.long)\n", " anc_t = torch.tensor(anc_indices, device=device, dtype=torch.long)\n", "\n", " enc_cos_hyp = (enc_normed_t[root_t] * enc_normed_t[anc_t]).sum(dim=1).mean().item()\n", " static_cos_hyp = (static_normed_t[root_t] * static_normed_t[anc_t]).sum(dim=1).mean().item()\n", "\n", " results[f'hyp_depth{d}_enc'].append(enc_cos_hyp)\n", " results[f'hyp_depth{d}_static'].append(static_cos_hyp)\n", "\n", " if (seed + 1) % 10 == 0:\n", " elapsed = time.time() - t0\n", " print(f\" Seed {seed+1}/{N_SEEDS} - {elapsed:.1f}s\")\n", "\n", "total_time = time.time() - t0\n", "print(f\"\\nCompleted {N_SEEDS} seeds in {total_time:.1f}s ({total_time/N_SEEDS:.1f}s/seed)\")\n", "\n", "# %% Cell 2: Results\n", "print(f\"\\n{'='*70}\")\n", "print(f\"50-SEED STABILITY REPORT\")\n", "print(f\"{'='*70}\")\n", "\n", "def report(name, vals):\n", " v = np.array(vals)\n", " print(f\" {name:35s} {v.mean():.6f} ± {v.std():.6f} [{v.min():.6f}, {v.max():.6f}]\")\n", "\n", "print(f\"\\n--- RELATIONAL CORRELATION (WordNet vs T5) ---\")\n", "report(\"Encoder Pearson\", results['enc_pearson'])\n", "report(\"Encoder Spearman\", results['enc_spearman'])\n", "report(\"Static Pearson\", results['static_pearson'])\n", "report(\"Static Spearman\", results['static_spearman'])\n", "\n", "print(f\"\\n--- DISTANCE BANDS ---\")\n", "report(\"High WN sim (≥0.25) Enc cos\", results['band_high_enc'])\n", "report(\"High WN sim (≥0.25) Static cos\", results['band_high_static'])\n", "report(\"Low WN sim (<0.10) Enc cos\", results['band_low_enc'])\n", "report(\"Low WN sim (<0.10) Static cos\", results['band_low_static'])\n", "if len(results['band_high_enc']) > 0 and len(results['band_low_enc']) > 0:\n", " gradient = np.array(results['band_high_enc']) - np.array(results['band_low_enc'])\n", " report(\"Enc gradient (high - low)\", gradient.tolist())\n", " gradient_s = np.array(results['band_high_static']) - np.array(results['band_low_static'])\n", " report(\"Static gradient (high - low)\", gradient_s.tolist())\n", "\n", "print(f\"\\n--- PENTACHORON GEOMETRY ---\")\n", "report(\"Encoder CV\", results['enc_cv'])\n", "report(\"Static CV\", results['static_cv'])\n", "\n", "print(f\"\\n--- HYPERNYM CHAIN DECAY ---\")\n", "report(\"Depth 1 Encoder cos\", results['hyp_depth1_enc'])\n", "report(\"Depth 3 Encoder cos\", results['hyp_depth3_enc'])\n", "report(\"Depth 5 Encoder cos\", results['hyp_depth5_enc'])\n", "report(\"Depth 1 Static cos\", results['hyp_depth1_static'])\n", "report(\"Depth 3 Static cos\", results['hyp_depth3_static'])\n", "report(\"Depth 5 Static cos\", results['hyp_depth5_static'])\n", "\n", "if len(results['hyp_depth1_enc']) > 0 and len(results['hyp_depth5_enc']) > 0:\n", " decay_enc = np.array(results['hyp_depth1_enc']) - np.array(results['hyp_depth5_enc'][:len(results['hyp_depth1_enc'])])\n", " decay_static = np.array(results['hyp_depth1_static']) - np.array(results['hyp_depth5_static'][:len(results['hyp_depth1_static'])])\n", " report(\"Hypernym decay 1→5 Encoder\", decay_enc.tolist())\n", " report(\"Hypernym decay 1→5 Static\", decay_static.tolist())\n", "\n", "print(f\"\\n--- INVARIANT CHECK ---\")\n", "enc_cv_arr = np.array(results['enc_cv'])\n", "static_cv_arr = np.array(results['static_cv'])\n", "print(f\" Encoder CV coefficient of variation: {enc_cv_arr.std()/enc_cv_arr.mean()*100:.2f}%\")\n", "print(f\" Static CV coefficient of variation: {static_cv_arr.std()/static_cv_arr.mean()*100:.2f}%\")\n", "enc_p = np.array(results['enc_pearson'])\n", "print(f\" Enc Pearson CV: {enc_p.std()/enc_p.mean()*100:.2f}%\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1gjbeD9bU4e2", "outputId": "dc3ef202-ec4d-4e62-fa13-f58d243a52a3" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Compute device: cuda\n", "Running 50 seeds across 9362 WordNet entries...\n", " Per seed: 2000 rel tokens, 200000 WN pairs, 500 simplices\n" ] }, { "output_type": "stream", "name": "stderr", "text": [] }, { "output_type": "stream", "name": "stdout", "text": [ " Seed 10/50 - 140.5s\n" ] }, { "output_type": "stream", "name": "stderr", "text": [] }, { "output_type": "stream", "name": "stdout", "text": [ " Seed 20/50 - 278.9s\n" ] }, { "output_type": "stream", "name": "stderr", "text": [] }, { "output_type": "stream", "name": "stdout", "text": [ " Seed 30/50 - 419.5s\n" ] }, { "output_type": "stream", "name": "stderr", "text": [] }, { "output_type": "stream", "name": "stdout", "text": [ " Seed 40/50 - 559.4s\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ " " ] }, { "output_type": "stream", "name": "stdout", "text": [ " Seed 50/50 - 698.2s\n", "\n", "Completed 50 seeds in 698.2s (14.0s/seed)\n", "\n", "======================================================================\n", "50-SEED STABILITY REPORT\n", "======================================================================\n", "\n", "--- RELATIONAL CORRELATION (WordNet vs T5) ---\n", " Encoder Pearson 0.100181 ± 0.007582 [0.083804, 0.114610]\n", " Encoder Spearman 0.090184 ± 0.009811 [0.071893, 0.108174]\n", " Static Pearson 0.078056 ± 0.005913 [0.066341, 0.089730]\n", " Static Spearman 0.018871 ± 0.006368 [0.004202, 0.033925]\n", "\n", "--- DISTANCE BANDS ---\n", " High WN sim (≥0.25) Enc cos 0.572830 ± 0.001704 [0.569413, 0.576464]\n", " High WN sim (≥0.25) Static cos 0.077198 ± 0.001264 [0.074255, 0.080203]\n", " Low WN sim (<0.10) Enc cos 0.550390 ± 0.001203 [0.547880, 0.552723]\n", " Low WN sim (<0.10) Static cos 0.060636 ± 0.000676 [0.059090, 0.062310]\n", " Enc gradient (high - low) 0.022439 ± 0.001845 [0.018949, 0.026486]\n", " Static gradient (high - low) 0.016562 ± 0.001197 [0.013462, 0.018668]\n", "\n", "--- PENTACHORON GEOMETRY ---\n", " Encoder CV 0.204487 ± 0.005787 [0.191265, 0.217688]\n", " Static CV 0.170896 ± 0.004756 [0.157715, 0.180879]\n", "\n", "--- HYPERNYM CHAIN DECAY ---\n", " Depth 1 Encoder cos 0.655793 ± 0.002432 [0.648798, 0.660564]\n", " Depth 3 Encoder cos 0.593188 ± 0.002011 [0.587414, 0.598273]\n", " Depth 5 Encoder cos 0.584951 ± 0.004099 [0.575778, 0.593843]\n", " Depth 1 Static cos 0.160071 ± 0.004049 [0.152392, 0.168158]\n", " Depth 3 Static cos 0.075521 ± 0.001911 [0.070182, 0.078923]\n", " Depth 5 Static cos 0.068971 ± 0.003064 [0.060871, 0.076079]\n", " Hypernym decay 1→5 Encoder 0.070842 ± 0.004060 [0.062599, 0.080202]\n", " Hypernym decay 1→5 Static 0.091100 ± 0.004925 [0.080025, 0.099674]\n", "\n", "--- INVARIANT CHECK ---\n", " Encoder CV coefficient of variation: 2.83%\n", " Static CV coefficient of variation: 2.78%\n", " Enc Pearson CV: 7.57%\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "\r" ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# GEOMETRIC RESIDUAL MODULATOR\n", "# Injects geometric structure into the residual stream via LERP.\n", "# Q reads a better map. No loss changes. No architecture changes.\n", "# Just a better starting terrain for the existing compass.\n", "# ============================================================================\n", "\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import numpy as np\n", "import math\n", "from typing import Optional, Dict\n", "\n", "\n", "class GeometricResidualModulator(nn.Module):\n", " \"\"\"\n", " Injects geometric structure into a transformer's residual stream.\n", "\n", " Mechanism:\n", " residual_out = (1 - alpha) * residual_in + alpha * geometric_target\n", "\n", " Where geometric_target is derived from the token's geometric embedding\n", " projected into the residual stream's coordinate system.\n", "\n", " The alpha is small (0.01-0.1) so the model's existing computation\n", " dominates. The geometric delta is a nudge, not a replacement.\n", "\n", " Intervention point: between residual accumulation and pre-attention LayerNorm.\n", " \"\"\"\n", "\n", " def __init__(\n", " self,\n", " d_model: int = 512,\n", " vocab_size: int = 32128,\n", " n_geometric_dims: int = 64,\n", " initial_alpha: float = 0.01,\n", " learnable_alpha: bool = True,\n", " per_layer_alpha: bool = False,\n", " n_layers: int = 6,\n", " ):\n", " super().__init__()\n", " self.d_model = d_model\n", " self.vocab_size = vocab_size\n", " self.n_geometric_dims = n_geometric_dims\n", " self.n_layers = n_layers\n", "\n", " # Geometric embedding: each token gets a geometric fingerprint\n", " # This is the \"terrain\" — initialized with structure, then frozen or lightly tuned\n", " self.geometric_embed = nn.Embedding(vocab_size, n_geometric_dims)\n", "\n", " # Projection from geometric space to residual stream space\n", " # This learns HOW to inject the geometry, not WHAT the geometry is\n", " self.proj = nn.Linear(n_geometric_dims, d_model, bias=False)\n", "\n", " # LERP coefficient — store in logit space so sigmoid gives desired alpha\n", " # sigmoid(logit(x)) = x\n", " def _logit(x):\n", " return math.log(x / (1 - x))\n", "\n", " if per_layer_alpha:\n", " if learnable_alpha:\n", " self.alpha = nn.Parameter(torch.full((n_layers,), _logit(initial_alpha)))\n", " else:\n", " self.register_buffer('alpha', torch.full((n_layers,), _logit(initial_alpha)))\n", " else:\n", " if learnable_alpha:\n", " self.alpha = nn.Parameter(torch.tensor(_logit(initial_alpha)))\n", " else:\n", " self.register_buffer('alpha', torch.tensor(_logit(initial_alpha)))\n", "\n", " # Initialize projection to be small — don't disrupt existing model\n", " nn.init.normal_(self.proj.weight, std=0.01)\n", "\n", " def init_from_cayley_menger(self, simplices: torch.Tensor):\n", " \"\"\"\n", " Initialize geometric embeddings from precomputed simplex vertices.\n", "\n", " Args:\n", " simplices: [vocab_size, n_vertices, n_geometric_dims] or\n", " [vocab_size, n_geometric_dims] (already pooled)\n", " \"\"\"\n", " with torch.no_grad():\n", " if simplices.dim() == 3:\n", " # Sum-pool vertices\n", " pooled = simplices.sum(dim=1)\n", " else:\n", " pooled = simplices\n", "\n", " # Normalize to unit sphere — geometry is in the directions, not magnitudes\n", " norms = pooled.norm(dim=1, keepdim=True).clamp(min=1e-8)\n", " normalized = pooled / norms\n", "\n", " self.geometric_embed.weight.copy_(normalized[:self.vocab_size])\n", "\n", " def init_from_relational_target(self, pairwise_cosine_target: torch.Tensor, n_dims: int = None):\n", " \"\"\"\n", " Initialize geometric embeddings from a target pairwise similarity matrix.\n", " Uses eigendecomposition to find embeddings that reproduce the target.\n", "\n", " Args:\n", " pairwise_cosine_target: [vocab_size, vocab_size] target similarity\n", " n_dims: number of dimensions to keep (default: self.n_geometric_dims)\n", " \"\"\"\n", " if n_dims is None:\n", " n_dims = self.n_geometric_dims\n", "\n", " with torch.no_grad():\n", " # Eigendecomposition of target similarity\n", " eigvals, eigvecs = torch.linalg.eigh(pairwise_cosine_target)\n", " # Take top n_dims eigenvectors (largest eigenvalues)\n", " top_idx = torch.argsort(eigvals, descending=True)[:n_dims]\n", " top_vecs = eigvecs[:, top_idx] # [vocab_size, n_dims]\n", " top_vals = eigvals[top_idx].clamp(min=0).sqrt() # scale by sqrt(eigenvalue)\n", "\n", " embeddings = top_vecs * top_vals.unsqueeze(0)\n", "\n", " # Normalize\n", " norms = embeddings.norm(dim=1, keepdim=True).clamp(min=1e-8)\n", " embeddings = embeddings / norms\n", "\n", " self.geometric_embed.weight.copy_(embeddings[:self.vocab_size])\n", "\n", " def forward(\n", " self,\n", " residual: torch.Tensor,\n", " token_ids: torch.Tensor,\n", " layer_idx: int = 0,\n", " ) -> torch.Tensor:\n", " \"\"\"\n", " Apply geometric modulation to residual stream.\n", "\n", " Args:\n", " residual: [batch, seq_len, d_model] current residual state\n", " token_ids: [batch, seq_len] token indices\n", " layer_idx: which layer (for per-layer alpha)\n", "\n", " Returns:\n", " modulated: [batch, seq_len, d_model] residual with geometric delta\n", " \"\"\"\n", " # Get geometric fingerprints for these tokens\n", " geo = self.geometric_embed(token_ids) # [B, S, n_geo]\n", "\n", " # Project into residual stream coordinates\n", " geo_projected = self.proj(geo) # [B, S, d_model]\n", "\n", " # Get alpha for this layer\n", " if self.alpha.dim() > 0:\n", " a = torch.sigmoid(self.alpha[layer_idx]) # sigmoid to keep in [0, 1]\n", " else:\n", " a = torch.sigmoid(self.alpha)\n", "\n", " # LERP: nudge residual toward geometric target\n", " modulated = (1 - a) * residual + a * geo_projected\n", "\n", " return modulated\n", "\n", " def get_geometric_similarity(self, token_ids_a: torch.Tensor, token_ids_b: torch.Tensor) -> torch.Tensor:\n", " \"\"\"Compute cosine similarity in geometric space between token sets.\"\"\"\n", " geo_a = self.geometric_embed(token_ids_a) # [..., n_geo]\n", " geo_b = self.geometric_embed(token_ids_b)\n", " geo_a = F.normalize(geo_a, dim=-1)\n", " geo_b = F.normalize(geo_b, dim=-1)\n", " return (geo_a * geo_b).sum(dim=-1)\n", "\n", " def geometric_residuals(self) -> Dict[str, torch.Tensor]:\n", " \"\"\"\n", " Compute geometric health metrics — the PDE residuals.\n", " These measure how well the geometric embeddings satisfy structural constraints.\n", " \"\"\"\n", " W = self.geometric_embed.weight # [vocab_size, n_geo]\n", " W_n = F.normalize(W, dim=1)\n", "\n", " # 1. Pairwise cosine distribution (sample for speed)\n", " idx = torch.randperm(min(self.vocab_size, 5000))[:5000]\n", " sample = W_n[idx]\n", " cos_mat = sample @ sample.T\n", " tri = torch.triu_indices(len(idx), len(idx), offset=1)\n", " flat_cos = cos_mat[tri[0], tri[1]]\n", "\n", " # 2. Norm distribution\n", " norms = W.norm(dim=1)\n", "\n", " # 3. Effective dimensionality (participation ratio)\n", " # Covariance eigenspectrum\n", " centered = W - W.mean(dim=0)\n", " cov = (centered.T @ centered) / W.shape[0]\n", " eigvals = torch.linalg.eigvalsh(cov)\n", " pr = (eigvals.sum() ** 2) / (eigvals ** 2).sum()\n", "\n", " # 4. Alpha state\n", " a = torch.sigmoid(self.alpha)\n", "\n", " return {\n", " 'cos_mean': flat_cos.mean(),\n", " 'cos_std': flat_cos.std(),\n", " 'norm_mean': norms.mean(),\n", " 'norm_std': norms.std(),\n", " 'participation_ratio': pr,\n", " 'pr_over_dim': pr / self.n_geometric_dims,\n", " 'alpha': a,\n", " }\n", "\n", "\n", "class ModulatedT5Encoder(nn.Module):\n", " \"\"\"\n", " Wraps a T5 encoder with geometric residual modulation.\n", " Hooks into the residual stream at configurable layers.\n", " \"\"\"\n", "\n", " def __init__(\n", " self,\n", " t5_encoder: nn.Module,\n", " modulator: GeometricResidualModulator,\n", " modulate_layers: Optional[list] = None,\n", " ):\n", " super().__init__()\n", " self.encoder = t5_encoder\n", " self.modulator = modulator\n", " # Default: modulate at every layer\n", " if modulate_layers is None:\n", " n_layers = len(t5_encoder.block)\n", " modulate_layers = list(range(n_layers))\n", " self.modulate_layers = set(modulate_layers)\n", "\n", " # Store token_ids for the hooks\n", " self._current_token_ids = None\n", "\n", " def forward(self, input_ids, attention_mask=None, output_hidden_states=False, **kwargs):\n", " \"\"\"\n", " Forward pass with geometric modulation injected into residual stream.\n", "\n", " We manually step through encoder blocks instead of calling encoder.forward()\n", " so we can intervene between blocks.\n", " \"\"\"\n", " self._current_token_ids = input_ids\n", "\n", " # Get embeddings\n", " hidden_states = self.encoder.embed_tokens(input_ids)\n", " hidden_states = self.encoder.dropout(hidden_states)\n", "\n", " # Prepare extended attention mask (same as T5 encoder does internally)\n", " if attention_mask is not None:\n", " # [B, S] -> [B, 1, 1, S] with large negative values for padding\n", " extended_attention_mask = attention_mask[:, None, None, :].to(dtype=hidden_states.dtype)\n", " extended_attention_mask = (1.0 - extended_attention_mask) * torch.finfo(hidden_states.dtype).min\n", " else:\n", " extended_attention_mask = None\n", "\n", " all_hidden_states = [hidden_states] if output_hidden_states else None\n", "\n", " position_bias = None\n", "\n", " # Build cache_position — simple sequential indices\n", " seq_length = input_ids.shape[1]\n", " cache_position = torch.arange(seq_length, device=input_ids.device)\n", "\n", " # Step through blocks with modulation\n", " for i, block in enumerate(self.encoder.block):\n", " # MODULATE: inject geometric structure before the block processes it\n", " if i in self.modulate_layers:\n", " hidden_states = self.modulator(\n", " residual=hidden_states,\n", " token_ids=input_ids,\n", " layer_idx=i,\n", " )\n", "\n", " # Run the actual transformer block\n", " block_output = block(\n", " hidden_states,\n", " attention_mask=extended_attention_mask,\n", " position_bias=position_bias,\n", " cache_position=cache_position,\n", " )\n", " hidden_states = block_output[0]\n", "\n", " # Extract position bias from first block's self-attention output\n", " # T5Block returns: (hidden, ) + attention_outputs\n", " # where attention_outputs includes position_bias\n", " if position_bias is None:\n", " # position_bias is typically the second element after hidden_states\n", " # but the exact index depends on block config; try to find it\n", " for out in block_output[1:]:\n", " if isinstance(out, torch.Tensor) and out.dim() == 4:\n", " position_bias = out\n", " break\n", "\n", " if output_hidden_states:\n", " all_hidden_states.append(hidden_states)\n", "\n", " # Final layer norm\n", " hidden_states = self.encoder.final_layer_norm(hidden_states)\n", " hidden_states = self.encoder.dropout(hidden_states)\n", "\n", " if output_hidden_states:\n", " all_hidden_states.append(hidden_states)\n", " return type('Output', (), {\n", " 'last_hidden_state': hidden_states,\n", " 'hidden_states': tuple(all_hidden_states),\n", " })()\n", " else:\n", " return type('Output', (), {\n", " 'last_hidden_state': hidden_states,\n", " })()\n", "\n", "\n", "# ============================================================================\n", "# MEASUREMENT UTILITIES\n", "# ============================================================================\n", "\n", "def measure_modulator_impact(\n", " original_encoder,\n", " modulated_encoder,\n", " tokenizer,\n", " test_sentences: list,\n", ") -> Dict[str, float]:\n", " \"\"\"\n", " Compare encoder outputs with and without geometric modulation.\n", " Measures how much the modulator changes the representation.\n", " \"\"\"\n", " device = next(modulated_encoder.parameters()).device\n", "\n", " results = {\n", " 'cos_per_token': [],\n", " 'norm_ratio': [],\n", " 'pairwise_cos_shift': [],\n", " }\n", "\n", " for sent in test_sentences:\n", " inputs = tokenizer(sent, return_tensors=\"pt\", padding=False).to(device)\n", "\n", " with torch.no_grad():\n", " orig_out = original_encoder(\n", " input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask,\n", " )\n", " mod_out = modulated_encoder(\n", " input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask,\n", " )\n", "\n", " orig_h = orig_out.last_hidden_state[0] # [seq, d_model]\n", " mod_h = mod_out.last_hidden_state[0]\n", "\n", " # Per-token cosine between original and modulated\n", " cos = F.cosine_similarity(orig_h, mod_h, dim=-1)\n", " results['cos_per_token'].extend(cos.cpu().tolist())\n", "\n", " # Norm ratio\n", " orig_norms = orig_h.norm(dim=-1)\n", " mod_norms = mod_h.norm(dim=-1)\n", " ratio = (mod_norms / (orig_norms + 1e-8))\n", " results['norm_ratio'].extend(ratio.cpu().tolist())\n", "\n", " # Pairwise cosine shift\n", " if orig_h.shape[0] > 1:\n", " orig_n = F.normalize(orig_h, dim=-1)\n", " mod_n = F.normalize(mod_h, dim=-1)\n", " orig_pw = (orig_n @ orig_n.T)\n", " mod_pw = (mod_n @ mod_n.T)\n", " tri = torch.triu_indices(orig_h.shape[0], orig_h.shape[0], offset=1)\n", " shift = (mod_pw[tri[0], tri[1]] - orig_pw[tri[0], tri[1]])\n", " results['pairwise_cos_shift'].extend(shift.cpu().tolist())\n", "\n", " return {\n", " 'cos_mean': np.mean(results['cos_per_token']),\n", " 'cos_std': np.std(results['cos_per_token']),\n", " 'norm_ratio_mean': np.mean(results['norm_ratio']),\n", " 'pairwise_shift_mean': np.mean(results['pairwise_cos_shift']),\n", " 'pairwise_shift_std': np.std(results['pairwise_cos_shift']),\n", " }\n", "\n", "\n", "# ============================================================================\n", "# QUICK TEST\n", "# ============================================================================\n", "\n", "if __name__ == \"__main__\":\n", " from transformers import T5ForConditionalGeneration, T5Tokenizer\n", "\n", " model_id = \"google-t5/t5-small\"\n", " print(f\"Loading {model_id}...\")\n", " tokenizer = T5Tokenizer.from_pretrained(model_id, legacy=True)\n", " model = T5ForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.float32)\n", " model.eval()\n", "\n", " device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", " model = model.to(device)\n", "\n", " # Create modulator\n", " modulator = GeometricResidualModulator(\n", " d_model=512,\n", " vocab_size=32128,\n", " n_geometric_dims=64,\n", " initial_alpha=0.01, # Start very small — barely perturb\n", " learnable_alpha=True,\n", " per_layer_alpha=True,\n", " n_layers=6,\n", " ).to(device)\n", "\n", " # Wrap encoder\n", " mod_encoder = ModulatedT5Encoder(\n", " t5_encoder=model.encoder,\n", " modulator=modulator,\n", " modulate_layers=[0, 1, 2, 3, 4, 5], # all layers\n", " )\n", "\n", " print(f\"\\nModulator params: {sum(p.numel() for p in modulator.parameters()):,}\")\n", " print(f\" Geometric embed: {modulator.geometric_embed.weight.shape}\")\n", " print(f\" Projection: {modulator.proj.weight.shape}\")\n", " print(f\" Alpha: {torch.sigmoid(modulator.alpha).detach().cpu().numpy()}\")\n", "\n", " # Check geometric health\n", " health = modulator.geometric_residuals()\n", " print(f\"\\nGeometric health (random init):\")\n", " for k, v in health.items():\n", " if isinstance(v, torch.Tensor):\n", " print(f\" {k}: {v.item():.6f}\" if v.dim() == 0 else f\" {k}: {v.detach().cpu().numpy()}\")\n", " else:\n", " print(f\" {k}: {v}\")\n", "\n", " # Measure impact on encoder output\n", " test_sents = [\n", " \"summarize: The cat sat on the mat.\",\n", " \"summarize: Quantum mechanics describes particles at atomic scale.\",\n", " \"summarize: The derivative of x squared is two x.\",\n", " \"summarize: Love is patient, love is kind.\",\n", " \"summarize: Mount Everest is the tallest mountain.\",\n", " ]\n", "\n", " impact = measure_modulator_impact(\n", " original_encoder=model.encoder,\n", " modulated_encoder=mod_encoder,\n", " tokenizer=tokenizer,\n", " test_sentences=test_sents,\n", " )\n", "\n", " print(f\"\\nModulator impact (alpha={torch.sigmoid(modulator.alpha).mean().item():.4f}):\")\n", " for k, v in impact.items():\n", " print(f\" {k}: {v:.6f}\")\n", "\n", " print(f\"\\nAt alpha=0.01, the modulator should barely change the output.\")\n", " print(f\"cos_mean near 1.0 = minimal disruption. Good.\")\n", " print(f\"The geometric structure is there but whispering, not shouting.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 500, "referenced_widgets": [ "0c318e9ab72b41fd9318a628803f1569", "c99973cbbe4341b9848c04ec8883847f", "d25266d36e90414aaf2e7f8b18b0d728", "d697e80b239a4d7e81bc13f586de5b61", "5256f18342374bb28722719bae6dd66a", "83ca1fe551b445fbbd08ed721f625372", "881e498faf694afea3bcd9f8a3d06177", "3b09278e92e140bf8af3f452a92e846c", "5a85fe2cf41f4153a5a2569603a46028", "881d97191a0f40e3a6181a4e7b56caa5", "b0a1a9dd1c2c4fbcad39f9864b241eb0" ] }, "id": "Z8unU-1vfFL6", "outputId": "83a61f72-17b6-400f-f31a-1a0f0314dc2f" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Loading google-t5/t5-small...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "Loading weights: 0%| | 0/131 [00:00 0:\n", " wn_s.append(sim)\n", " orig_c.append(np.dot(orig_n[a], orig_n[b]))\n", " mod_c.append(np.dot(mod_n[a], mod_n[b]))\n", " static_c.append(np.dot(static_n[a], static_n[b]))\n", "\n", "wn_s = np.array(wn_s)\n", "orig_c = np.array(orig_c)\n", "mod_c = np.array(mod_c)\n", "static_c = np.array(static_c)\n", "\n", "print(f\"Valid pairs: {len(wn_s)}\")\n", "\n", "# Correlations\n", "orig_pearson = np.corrcoef(wn_s, orig_c)[0, 1]\n", "mod_pearson = np.corrcoef(wn_s, mod_c)[0, 1]\n", "static_pearson = np.corrcoef(wn_s, static_c)[0, 1]\n", "\n", "orig_spearman, _ = spearmanr(wn_s, orig_c)\n", "mod_spearman, _ = spearmanr(wn_s, mod_c)\n", "static_spearman, _ = spearmanr(wn_s, static_c)\n", "\n", "print(f\"\\n{'Metric':30s} {'Static':>10s} {'Original':>10s} {'Modulated':>10s} {'Δ(mod-orig)':>12s}\")\n", "print(f\"{'Pearson':30s} {static_pearson:10.6f} {orig_pearson:10.6f} {mod_pearson:10.6f} {mod_pearson-orig_pearson:+12.6f}\")\n", "print(f\"{'Spearman':30s} {static_spearman:10.6f} {orig_spearman:10.6f} {mod_spearman:10.6f} {mod_spearman-orig_spearman:+12.6f}\")\n", "\n", "# %% Cell 3: Distance bands\n", "print(f\"\\n--- DISTANCE BANDS ---\")\n", "bands = [(0.5, 1.0), (0.25, 0.5), (0.10, 0.25), (0.05, 0.10), (0.0, 0.05)]\n", "print(f\"{'Band':>12s} {'N':>7s} {'Orig Cos':>10s} {'Mod Cos':>10s} {'Δ':>8s}\")\n", "for lo, hi in bands:\n", " mask = (wn_s >= lo) & (wn_s < hi) if hi < 1.0 else (wn_s >= lo) & (wn_s <= hi)\n", " if mask.sum() < 5:\n", " continue\n", " oc = orig_c[mask].mean()\n", " mc = mod_c[mask].mean()\n", " print(f\" [{lo:.2f},{hi:.2f}) {mask.sum():7d} {oc:10.4f} {mc:10.4f} {mc-oc:+8.4f}\")\n", "\n", "# Gradient\n", "high_mask = wn_s >= 0.25\n", "low_mask = wn_s < 0.10\n", "if high_mask.sum() > 0 and low_mask.sum() > 0:\n", " orig_grad = orig_c[high_mask].mean() - orig_c[low_mask].mean()\n", " mod_grad = mod_c[high_mask].mean() - mod_c[low_mask].mean()\n", " print(f\"\\n Gradient (high-low): orig={orig_grad:.6f} mod={mod_grad:.6f} Δ={mod_grad-orig_grad:+.6f}\")\n", "\n", "# %% Cell 4: Per-token divergence from original\n", "print(f\"\\n--- PER-TOKEN MODULATION ---\")\n", "# Cosine between original and modulated per-token\n", "per_tok_cos = (orig_sub * mod_sub).sum(axis=1) / (\n", " np.linalg.norm(orig_sub, axis=1) * np.linalg.norm(mod_sub, axis=1) + 1e-8\n", ")\n", "print(f\"Cosine(orig, mod) per token: mean={per_tok_cos.mean():.6f} std={per_tok_cos.std():.6f}\")\n", "print(f\" min={per_tok_cos.min():.6f} max={per_tok_cos.max():.6f}\")\n", "\n", "# %% Cell 5: Pentachoron geometry comparison\n", "import math\n", "\n", "def cayley_menger_volume_sq(points):\n", " n = len(points)\n", " D = np.zeros((n + 1, n + 1))\n", " D[0, 1:] = 1\n", " D[1:, 0] = 1\n", " for i in range(n):\n", " for j in range(i + 1, n):\n", " d_sq = np.sum((points[i] - points[j]) ** 2)\n", " D[i + 1, j + 1] = d_sq\n", " D[j + 1, i + 1] = d_sq\n", " k = n - 1\n", " sign = (-1) ** (k + 1)\n", " factorial_sq = math.factorial(k) ** 2\n", " denom = (2 ** k) * factorial_sq\n", " det = np.linalg.det(D)\n", " vol_sq = sign * det / denom\n", " return vol_sq\n", "\n", "print(f\"\\n--- PENTACHORON GEOMETRY ---\")\n", "N_SIMP = 500\n", "vols_orig = []\n", "vols_mod = []\n", "rng2 = np.random.default_rng(42)\n", "\n", "for _ in range(N_SIMP):\n", " idx = rng2.choice(len(matched), size=5, replace=False)\n", " vo = cayley_menger_volume_sq(encoder_reps[idx])\n", " vm = cayley_menger_volume_sq(mod_encoder_reps[idx])\n", " if vo > 0:\n", " vols_orig.append(np.sqrt(vo))\n", " if vm > 0:\n", " vols_mod.append(np.sqrt(vm))\n", "\n", "vols_orig = np.array(vols_orig)\n", "vols_mod = np.array(vols_mod)\n", "print(f\"Original: mean={vols_orig.mean():.4e} CV={vols_orig.std()/vols_orig.mean():.4f}\")\n", "print(f\"Modulated: mean={vols_mod.mean():.4e} CV={vols_mod.std()/vols_mod.mean():.4f}\")\n", "print(f\"CV delta: {vols_mod.std()/vols_mod.mean() - vols_orig.std()/vols_orig.mean():+.4f}\")\n", "\n", "# %% Cell 6: Summary\n", "print(f\"\\n{'='*70}\")\n", "print(\"SINGLE-SEED RESULT\")\n", "print(f\"{'='*70}\")\n", "alpha_val = torch.sigmoid(modulator.alpha).mean().item()\n", "print(f\"Alpha: {alpha_val:.4f}\")\n", "print(f\"Modulator params: {sum(p.numel() for p in modulator.parameters()):,}\")\n", "print(f\"Init: random (no geometric structure yet)\")\n", "print(f\"\")\n", "print(f\"Pearson (orig): {orig_pearson:.6f}\")\n", "print(f\"Pearson (mod): {mod_pearson:.6f} Δ={mod_pearson-orig_pearson:+.6f}\")\n", "print(f\"Spearman (orig): {orig_spearman:.6f}\")\n", "print(f\"Spearman (mod): {mod_spearman:.6f} Δ={mod_spearman-orig_spearman:+.6f}\")\n", "print(f\"\")\n", "print(f\"Per-token cos(orig,mod): {per_tok_cos.mean():.6f}\")\n", "print(f\"Pentachoron CV orig: {vols_orig.std()/vols_orig.mean():.4f}\")\n", "print(f\"Pentachoron CV mod: {vols_mod.std()/vols_mod.mean():.4f}\")\n", "print(f\"\")\n", "if mod_pearson > orig_pearson:\n", " print(f\">>> Random geometric noise at {alpha_val:.1%} improved relational correlation\")\n", " print(f\">>> This means the intervention point WORKS — now initialize with real structure\")\n", "elif mod_pearson < orig_pearson - 0.005:\n", " print(f\">>> Random noise degraded correlation — expected at this alpha\")\n", " print(f\">>> The intervention point works (it changes things) — need real geometry\")\n", "else:\n", " print(f\">>> Correlation unchanged — the ghost is too quiet at {alpha_val:.1%}\")\n", " print(f\">>> Try alpha=0.05 or initialize with WordNet-derived structure\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "I-1m-4Jfl4Vk", "outputId": "cbed9d8d-de52-45b5-999d-33699b195d12" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Encoding 9362 definitions through MODULATED encoder...\n", "Done in 2.7s (3423 defs/s)\n", "\n", "======================================================================\n", "SINGLE-SEED COMPARISON: Original vs Modulated\n", "======================================================================\n", "Computing WordNet similarities for 50K pairs...\n", "Valid pairs: 50000\n", "\n", "Metric Static Original Modulated Δ(mod-orig)\n", "Pearson 0.079536 0.098215 0.098349 +0.000133\n", "Spearman 0.016795 0.079290 0.079241 -0.000049\n", "\n", "--- DISTANCE BANDS ---\n", " Band N Orig Cos Mod Cos Δ\n", " [0.25,0.50) 5268 0.5746 0.5777 +0.0031\n", " [0.10,0.25) 14470 0.5645 0.5674 +0.0030\n", " [0.05,0.10) 29686 0.5528 0.5559 +0.0031\n", " [0.00,0.05) 572 0.5614 0.5642 +0.0028\n", "\n", " Gradient (high-low): orig=0.021872 mod=0.021845 Δ=-0.000028\n", "\n", "--- PER-TOKEN MODULATION ---\n", "Cosine(orig, mod) per token: mean=0.999752 std=0.000146\n", " min=0.996252 max=0.999863\n", "\n", "--- PENTACHORON GEOMETRY ---\n", "Original: mean=1.0364e-01 CV=0.2025\n", "Modulated: mean=1.0043e-01 CV=0.2010\n", "CV delta: -0.0014\n", "\n", "======================================================================\n", "SINGLE-SEED RESULT\n", "======================================================================\n", "Alpha: 0.0100\n", "Modulator params: 2,088,966\n", "Init: random (no geometric structure yet)\n", "\n", "Pearson (orig): 0.098215\n", "Pearson (mod): 0.098349 Δ=+0.000133\n", "Spearman (orig): 0.079290\n", "Spearman (mod): 0.079241 Δ=-0.000049\n", "\n", "Per-token cos(orig,mod): 0.999752\n", "Pentachoron CV orig: 0.2025\n", "Pentachoron CV mod: 0.2010\n", "\n", ">>> Random geometric noise at 1.0% improved relational correlation\n", ">>> This means the intervention point WORKS — now initialize with real structure\n" ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# FEED IT REAL GEOMETRY: WordNet → Geometric Modulator\n", "# Compute WordNet relational structure, eigendecompose into embeddings,\n", "# initialize modulator, measure impact.\n", "# Run AFTER WordNet probe + modulator are loaded.\n", "# ============================================================================\n", "\n", "# %% Cell 1: Build WordNet similarity matrix for matched tokens\n", "import torch\n", "import numpy as np\n", "import time\n", "from scipy.stats import spearmanr\n", "from nltk.corpus import wordnet as wn\n", "from tqdm import tqdm\n", "\n", "# We can't compute 9362×9362 = 87M path_similarity calls (too slow)\n", "# Strategy: subsample N tokens, build NxN similarity, eigendecompose,\n", "# then project remaining tokens via their nearest neighbors\n", "\n", "N_ANCHOR = 3000 # anchor tokens for eigendecomposition\n", "rng = np.random.default_rng(42)\n", "anchor_idx = rng.choice(len(matched), size=N_ANCHOR, replace=False)\n", "\n", "print(f\"Building {N_ANCHOR}x{N_ANCHOR} WordNet similarity matrix...\")\n", "print(f\"This is {N_ANCHOR * (N_ANCHOR-1) // 2:,} unique pairs\")\n", "\n", "# Use Wu-Palmer similarity — much faster than path_similarity\n", "# wup_similarity uses lowest common subsumer depth, O(1) per call\n", "sim_matrix = np.zeros((N_ANCHOR, N_ANCHOR), dtype=np.float32)\n", "\n", "t0 = time.time()\n", "for i in tqdm(range(N_ANCHOR), desc=\"WN similarity rows\"):\n", " syn_i = synsets[anchor_idx[i]]\n", " for j in range(i + 1, N_ANCHOR):\n", " syn_j = synsets[anchor_idx[j]]\n", " sim = syn_i.wup_similarity(syn_j)\n", " if sim is not None:\n", " sim_matrix[i, j] = sim\n", " sim_matrix[j, i] = sim\n", " # Self-similarity = 1\n", " sim_matrix[i, i] = 1.0\n", "\n", "elapsed = time.time() - t0\n", "print(f\"Built in {elapsed:.1f}s ({N_ANCHOR * N_ANCHOR / elapsed:.0f} pairs/s)\")\n", "print(f\"Non-zero entries: {(sim_matrix > 0).sum():,} / {N_ANCHOR * N_ANCHOR:,}\")\n", "print(f\"Mean similarity: {sim_matrix[sim_matrix > 0].mean():.4f}\")\n", "\n", "# %% Cell 2: Eigendecompose into geometric embeddings\n", "print(f\"\\n{'='*70}\")\n", "print(\"EIGENDECOMPOSITION → 64-d GEOMETRIC EMBEDDINGS\")\n", "print(f\"{'='*70}\")\n", "\n", "N_GEO = 64 # geometric embedding dimensionality\n", "\n", "# Eigendecomposition of similarity matrix\n", "eigvals, eigvecs = np.linalg.eigh(sim_matrix)\n", "# Sort descending\n", "idx_sort = np.argsort(eigvals)[::-1]\n", "eigvals = eigvals[idx_sort]\n", "eigvecs = eigvecs[:, idx_sort]\n", "\n", "# Take top N_GEO\n", "top_vals = eigvals[:N_GEO]\n", "top_vecs = eigvecs[:, :N_GEO] # [N_ANCHOR, N_GEO]\n", "\n", "# Scale by sqrt(eigenvalue) — larger eigenvalues = more important directions\n", "scales = np.sqrt(np.maximum(top_vals, 0))\n", "anchor_embeddings = top_vecs * scales[None, :] # [N_ANCHOR, N_GEO]\n", "\n", "# Normalize to unit sphere\n", "norms = np.linalg.norm(anchor_embeddings, axis=1, keepdims=True)\n", "norms = np.maximum(norms, 1e-8)\n", "anchor_embeddings = anchor_embeddings / norms\n", "\n", "print(f\"Top 10 eigenvalues: {eigvals[:10]}\")\n", "print(f\"Eigenvalue cumulative variance (top 64): {eigvals[:N_GEO].sum() / eigvals[eigvals > 0].sum():.4f}\")\n", "print(f\"Anchor embedding shape: {anchor_embeddings.shape}\")\n", "\n", "# Verify: reconstruct pairwise cosine and compare to original similarity\n", "recon_cos = anchor_embeddings @ anchor_embeddings.T\n", "tri = np.triu_indices(N_ANCHOR, k=1)\n", "recon_corr = np.corrcoef(sim_matrix[tri], recon_cos[tri])[0, 1]\n", "print(f\"Reconstruction correlation (WN sim vs embedding cosine): {recon_corr:.4f}\")\n", "\n", "# %% Cell 3: Project remaining tokens via nearest-neighbor interpolation\n", "print(f\"\\n{'='*70}\")\n", "print(\"PROJECTING REMAINING TOKENS\")\n", "print(f\"{'='*70}\")\n", "\n", "# For non-anchor tokens, find K nearest anchors by WN similarity and average their embeddings\n", "K_NEIGHBORS = 5\n", "all_geo_embeddings = np.zeros((len(matched), N_GEO), dtype=np.float32)\n", "\n", "# Place anchor embeddings\n", "for local_i, global_i in enumerate(anchor_idx):\n", " all_geo_embeddings[global_i] = anchor_embeddings[local_i]\n", "\n", "# For non-anchors: compute WN similarity to all anchors, weight by top-K\n", "non_anchor_mask = np.ones(len(matched), dtype=bool)\n", "non_anchor_mask[anchor_idx] = False\n", "non_anchor_indices = np.where(non_anchor_mask)[0]\n", "\n", "print(f\"Projecting {len(non_anchor_indices)} non-anchor tokens via {K_NEIGHBORS}-NN...\")\n", "t0 = time.time()\n", "\n", "for count, global_i in enumerate(tqdm(non_anchor_indices, desc=\"Projecting\")):\n", " syn_i = synsets[global_i]\n", " sims_to_anchors = np.zeros(N_ANCHOR, dtype=np.float32)\n", " for local_j in range(N_ANCHOR):\n", " syn_j = synsets[anchor_idx[local_j]]\n", " sim = syn_i.wup_similarity(syn_j)\n", " if sim is not None:\n", " sims_to_anchors[local_j] = sim\n", "\n", " # Top-K neighbors\n", " top_k = np.argsort(sims_to_anchors)[-K_NEIGHBORS:]\n", " top_sims = sims_to_anchors[top_k]\n", "\n", " if top_sims.sum() > 0:\n", " weights = top_sims / top_sims.sum()\n", " interpolated = (anchor_embeddings[top_k] * weights[:, None]).sum(axis=0)\n", " norm = np.linalg.norm(interpolated)\n", " if norm > 1e-8:\n", " all_geo_embeddings[global_i] = interpolated / norm\n", "\n", "elapsed = time.time() - t0\n", "print(f\"Projected in {elapsed:.1f}s\")\n", "\n", "# Stats\n", "geo_norms = np.linalg.norm(all_geo_embeddings, axis=1)\n", "print(f\"Geometric embedding coverage: {(geo_norms > 0.1).sum()} / {len(matched)}\")\n", "print(f\"Mean norm: {geo_norms[geo_norms > 0.1].mean():.4f}\")\n", "\n", "# %% Cell 4: Initialize modulator and re-encode\n", "print(f\"\\n{'='*70}\")\n", "print(\"INITIALIZING MODULATOR WITH WORDNET GEOMETRY\")\n", "print(f\"{'='*70}\")\n", "\n", "# Set the geometric embeddings for matched tokens\n", "with torch.no_grad():\n", " geo_tensor = torch.tensor(all_geo_embeddings, dtype=torch.float32, device=device)\n", " # Place into modulator's embedding — only matched token positions\n", " for i, (name, syn, tid, defn) in enumerate(matched):\n", " modulator.geometric_embed.weight[tid] = geo_tensor[i]\n", "\n", "# Check geometric health after initialization\n", "health = modulator.geometric_residuals()\n", "print(f\"Geometric health (WordNet init):\")\n", "for k, v in health.items():\n", " if isinstance(v, torch.Tensor):\n", " if v.dim() == 0:\n", " print(f\" {k}: {v.item():.6f}\")\n", " else:\n", " print(f\" {k}: {v.detach().cpu().numpy()}\")\n", " else:\n", " print(f\" {k}: {v}\")\n", "\n", "# Re-encode through modulated encoder\n", "mod_wn_reps = np.zeros((len(matched), 512), dtype=np.float32)\n", "\n", "print(f\"\\nEncoding {len(matched)} definitions through WordNet-initialized modulator...\")\n", "t0 = time.time()\n", "BATCH_SIZE = 64\n", "n_batches = (len(texts) + BATCH_SIZE - 1) // BATCH_SIZE\n", "\n", "for batch_idx in range(n_batches):\n", " start = batch_idx * BATCH_SIZE\n", " end = min(start + BATCH_SIZE, len(texts))\n", " batch_texts = texts[start:end]\n", "\n", " inputs = tokenizer(\n", " batch_texts,\n", " return_tensors=\"pt\",\n", " padding=True,\n", " truncation=True,\n", " max_length=128,\n", " ).to(device)\n", "\n", " with torch.no_grad():\n", " enc_out = mod_encoder(\n", " input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask,\n", " )\n", " hidden = enc_out.last_hidden_state.float()\n", " mask = inputs.attention_mask.unsqueeze(-1).float()\n", " pooled = (hidden * mask).sum(dim=1) / mask.sum(dim=1)\n", " mod_wn_reps[start:end] = pooled.cpu().numpy()\n", "\n", "print(f\"Done in {time.time()-t0:.1f}s\")\n", "\n", "# %% Cell 5: Full comparison — static vs original vs random_mod vs wordnet_mod\n", "print(f\"\\n{'='*70}\")\n", "print(\"FULL COMPARISON: Static vs Original vs Random-Mod vs WordNet-Mod\")\n", "print(f\"{'='*70}\")\n", "\n", "rng2 = np.random.default_rng(42)\n", "N_REL = min(3000, len(matched))\n", "rel_idx = rng2.choice(len(matched), size=N_REL, replace=False)\n", "\n", "# Normalize all four\n", "orig_sub = encoder_reps[rel_idx]\n", "rand_sub = mod_encoder_reps[rel_idx] # from previous random init run\n", "wn_sub = mod_wn_reps[rel_idx]\n", "stat_sub = static_reps[rel_idx]\n", "\n", "orig_n = orig_sub / (np.linalg.norm(orig_sub, axis=1, keepdims=True) + 1e-8)\n", "rand_n = rand_sub / (np.linalg.norm(rand_sub, axis=1, keepdims=True) + 1e-8)\n", "wn_n = wn_sub / (np.linalg.norm(wn_sub, axis=1, keepdims=True) + 1e-8)\n", "stat_n = stat_sub / (np.linalg.norm(stat_sub, axis=1, keepdims=True) + 1e-8)\n", "\n", "# WN similarities for 50K pairs\n", "pi = rng2.choice(N_REL, size=50000)\n", "pj = rng2.choice(N_REL, size=50000)\n", "valid = pi != pj\n", "pi, pj = pi[valid], pj[valid]\n", "\n", "wn_s, orig_c, rand_c, wn_c, stat_c = [], [], [], [], []\n", "\n", "print(\"Computing 50K WordNet pairs...\")\n", "for k in tqdm(range(min(50000, len(pi))), desc=\"WN pairs\", miniters=5000):\n", " a, b = pi[k], pj[k]\n", " sim = synsets[rel_idx[a]].path_similarity(synsets[rel_idx[b]])\n", " if sim is not None and sim > 0:\n", " wn_s.append(sim)\n", " orig_c.append(np.dot(orig_n[a], orig_n[b]))\n", " rand_c.append(np.dot(rand_n[a], rand_n[b]))\n", " wn_c.append(np.dot(wn_n[a], wn_n[b]))\n", " stat_c.append(np.dot(stat_n[a], stat_n[b]))\n", "\n", "wn_s = np.array(wn_s)\n", "orig_c = np.array(orig_c)\n", "rand_c = np.array(rand_c)\n", "wn_c = np.array(wn_c)\n", "stat_c = np.array(stat_c)\n", "\n", "print(f\"Valid pairs: {len(wn_s)}\")\n", "\n", "# Correlations\n", "methods = {\n", " 'Static': stat_c,\n", " 'Original': orig_c,\n", " 'Random-Mod': rand_c,\n", " 'WordNet-Mod': wn_c,\n", "}\n", "\n", "print(f\"\\n{'Method':20s} {'Pearson':>10s} {'Spearman':>10s} {'ΔP vs Orig':>12s} {'ΔS vs Orig':>12s}\")\n", "orig_p = np.corrcoef(wn_s, orig_c)[0, 1]\n", "orig_sp, _ = spearmanr(wn_s, orig_c)\n", "\n", "for name, cos_arr in methods.items():\n", " p = np.corrcoef(wn_s, cos_arr)[0, 1]\n", " sp, _ = spearmanr(wn_s, cos_arr)\n", " dp = p - orig_p if name != 'Original' else 0.0\n", " ds = sp - orig_sp if name != 'Original' else 0.0\n", " print(f\" {name:18s} {p:10.6f} {sp:10.6f} {dp:+12.6f} {ds:+12.6f}\")\n", "\n", "# Distance bands for all methods\n", "print(f\"\\n--- DISTANCE BANDS ---\")\n", "bands = [(0.5, 1.0), (0.25, 0.5), (0.10, 0.25), (0.05, 0.10), (0.0, 0.05)]\n", "print(f\"{'Band':>12s} {'Orig':>8s} {'Random':>8s} {'WordNet':>8s} {'Δ(WN-Orig)':>10s}\")\n", "for lo, hi in bands:\n", " mask = (wn_s >= lo) & (wn_s < hi) if hi < 1.0 else (wn_s >= lo) & (wn_s <= hi)\n", " if mask.sum() < 5:\n", " continue\n", " oc = orig_c[mask].mean()\n", " rc = rand_c[mask].mean()\n", " wc = wn_c[mask].mean()\n", " print(f\" [{lo:.2f},{hi:.2f}) {oc:8.4f} {rc:8.4f} {wc:8.4f} {wc-oc:+10.4f}\")\n", "\n", "# Gradient\n", "high_mask = wn_s >= 0.25\n", "low_mask = wn_s < 0.10\n", "if high_mask.sum() > 0 and low_mask.sum() > 0:\n", " for name, cos_arr in methods.items():\n", " grad = cos_arr[high_mask].mean() - cos_arr[low_mask].mean()\n", " print(f\" {name:18s} gradient: {grad:.6f}\")\n", "\n", "# %% Cell 6: Pentachoron comparison\n", "print(f\"\\n--- PENTACHORON GEOMETRY ---\")\n", "import math\n", "\n", "def cayley_menger_volume_sq(points):\n", " n = len(points)\n", " D = np.zeros((n + 1, n + 1))\n", " D[0, 1:] = 1\n", " D[1:, 0] = 1\n", " for i in range(n):\n", " for j in range(i + 1, n):\n", " d_sq = np.sum((points[i] - points[j]) ** 2)\n", " D[i + 1, j + 1] = d_sq\n", " D[j + 1, i + 1] = d_sq\n", " k = n - 1\n", " sign = (-1) ** (k + 1)\n", " factorial_sq = math.factorial(k) ** 2\n", " denom = (2 ** k) * factorial_sq\n", " det = np.linalg.det(D)\n", " vol_sq = sign * det / denom\n", " return vol_sq\n", "\n", "rng3 = np.random.default_rng(42)\n", "vols = {'Original': [], 'Random-Mod': [], 'WordNet-Mod': []}\n", "rep_sets = {'Original': encoder_reps, 'Random-Mod': mod_encoder_reps, 'WordNet-Mod': mod_wn_reps}\n", "\n", "for _ in range(500):\n", " idx = rng3.choice(len(matched), size=5, replace=False)\n", " for name, reps in rep_sets.items():\n", " v = cayley_menger_volume_sq(reps[idx])\n", " if v > 0:\n", " vols[name].append(np.sqrt(v))\n", "\n", "for name in vols:\n", " v = np.array(vols[name])\n", " print(f\" {name:18s}: CV={v.std()/v.mean():.4f} mean={v.mean():.4e}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "uaw0dU0zmzzk", "outputId": "90352ed4-87c3-4af3-f2c5-428f742330ff" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Building 3000x3000 WordNet similarity matrix...\n", "This is 4,498,500 unique pairs\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WN similarity rows: 100%|██████████| 3000/3000 [06:35<00:00, 7.59it/s] \n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Built in 395.5s (22755 pairs/s)\n", "Non-zero entries: 9,000,000 / 9,000,000\n", "Mean similarity: 0.2403\n", "\n", "======================================================================\n", "EIGENDECOMPOSITION → 64-d GEOMETRIC EMBEDDINGS\n", "======================================================================\n", "Top 10 eigenvalues: [742.0321 261.1789 254.96997 72.47133 64.1298 50.615326\n", " 30.519474 28.300728 25.586512 23.380625]\n", "Eigenvalue cumulative variance (top 64): 0.6134\n", "Anchor embedding shape: (3000, 64)\n", "Reconstruction correlation (WN sim vs embedding cosine): 0.9210\n", "\n", "======================================================================\n", "PROJECTING REMAINING TOKENS\n", "======================================================================\n", "Projecting 6362 non-anchor tokens via 5-NN...\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "Projecting: 100%|██████████| 6362/6362 [27:53<00:00, 3.80it/s]\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Projected in 1673.0s\n", "Geometric embedding coverage: 9362 / 9362\n", "Mean norm: 1.0000\n", "\n", "======================================================================\n", "INITIALIZING MODULATOR WITH WORDNET GEOMETRY\n", "======================================================================\n", "Geometric health (WordNet init):\n", " cos_mean: 0.100469\n", " cos_std: 0.255441\n", " norm_mean: 5.938809\n", " norm_std: 3.222425\n", " participation_ratio: 63.797367\n", " pr_over_dim: 0.996834\n", " alpha: [0.01 0.01 0.01 0.01 0.01 0.01]\n", "\n", "Encoding 9362 definitions through WordNet-initialized modulator...\n", "Done in 2.8s\n", "\n", "======================================================================\n", "FULL COMPARISON: Static vs Original vs Random-Mod vs WordNet-Mod\n", "======================================================================\n", "Computing 50K WordNet pairs...\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WN pairs: 100%|██████████| 49981/49981 [00:04<00:00, 10484.82it/s]\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Valid pairs: 49981\n", "\n", "Method Pearson Spearman ΔP vs Orig ΔS vs Orig\n", " Static 0.074622 0.013667 -0.024666 -0.070882\n", " Original 0.099288 0.084549 +0.000000 +0.000000\n", " Random-Mod 0.099486 0.084376 +0.000198 -0.000174\n", " WordNet-Mod 0.099488 0.084379 +0.000200 -0.000171\n", "\n", "--- DISTANCE BANDS ---\n", " Band Orig Random WordNet Δ(WN-Orig)\n", " [0.25,0.50) 0.5752 0.5783 0.5783 +0.0031\n", " [0.10,0.25) 0.5657 0.5687 0.5687 +0.0029\n", " [0.05,0.10) 0.5526 0.5558 0.5558 +0.0031\n", " [0.00,0.05) 0.5569 0.5597 0.5597 +0.0028\n", " Static gradient: 0.015978\n", " Original gradient: 0.022475\n", " Random-Mod gradient: 0.022466\n", " WordNet-Mod gradient: 0.022467\n", "\n", "--- PENTACHORON GEOMETRY ---\n", " Original : CV=0.2025 mean=1.0364e-01\n", " Random-Mod : CV=0.2010 mean=1.0043e-01\n", " WordNet-Mod : CV=0.2010 mean=1.0043e-01\n" ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# GEOMETRIC RESIDUAL MODULATOR — FULL SELF-CONTAINED PIPELINE\n", "# Load T5 → Match WordNet → Encode → Build Modulator → Procrustes → Measure\n", "# One file. No dependencies on prior cells. Just run it.\n", "# ============================================================================\n", "\n", "# %% Cell 1: Setup — load everything\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import numpy as np\n", "import math\n", "import time\n", "from scipy.linalg import orthogonal_procrustes\n", "from scipy.stats import spearmanr\n", "from tqdm import tqdm\n", "from transformers import T5ForConditionalGeneration, T5Tokenizer\n", "from collections import defaultdict\n", "\n", "import nltk\n", "nltk.download('wordnet', quiet=True)\n", "nltk.download('omw-1.4', quiet=True)\n", "from nltk.corpus import wordnet as wn\n", "\n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "print(f\"Device: {device}\")\n", "\n", "model_id = \"google-t5/t5-small\"\n", "print(f\"Loading {model_id}...\")\n", "tokenizer = T5Tokenizer.from_pretrained(model_id, legacy=True)\n", "model = T5ForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.float32)\n", "model.eval()\n", "model = model.to(device)\n", "\n", "# %% Cell 2: Match WordNet to T5 tokenizer\n", "print(f\"\\n{'='*70}\")\n", "print(\"MATCHING WORDNET → T5 TOKENIZER\")\n", "print(f\"{'='*70}\")\n", "\n", "matched = []\n", "seen_tokens = set()\n", "for synset in wn.all_synsets():\n", " for lemma in synset.lemmas():\n", " name = lemma.name().replace('_', ' ')\n", " ids = tokenizer.encode(name, add_special_tokens=False)\n", " if len(ids) == 1 and ids[0] not in seen_tokens:\n", " defn = synset.definition()\n", " if len(defn) > 10:\n", " matched.append((name, synset, ids[0], defn))\n", " seen_tokens.add(ids[0])\n", "\n", "synsets = [m[1] for m in matched]\n", "token_ids_list = [m[2] for m in matched]\n", "texts = [f\"summarize: {m[3]}\" for m in matched]\n", "print(f\"Matched: {len(matched)} tokens\")\n", "\n", "# %% Cell 3: Encode definitions through ORIGINAL encoder\n", "print(f\"\\n{'='*70}\")\n", "print(\"ENCODING THROUGH ORIGINAL ENCODER\")\n", "print(f\"{'='*70}\")\n", "\n", "BATCH_SIZE = 64\n", "MAX_LEN = 128\n", "\n", "encoder_reps = np.zeros((len(matched), 512), dtype=np.float32)\n", "t0 = time.time()\n", "n_batches = (len(texts) + BATCH_SIZE - 1) // BATCH_SIZE\n", "\n", "for batch_idx in range(n_batches):\n", " start = batch_idx * BATCH_SIZE\n", " end = min(start + BATCH_SIZE, len(texts))\n", " inputs = tokenizer(texts[start:end], return_tensors=\"pt\", padding=True,\n", " truncation=True, max_length=MAX_LEN).to(device)\n", " with torch.no_grad():\n", " enc_out = model.encoder(input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask)\n", " hidden = enc_out.last_hidden_state.float()\n", " mask = inputs.attention_mask.unsqueeze(-1).float()\n", " pooled = (hidden * mask).sum(dim=1) / mask.sum(dim=1)\n", " encoder_reps[start:end] = pooled.cpu().numpy()\n", "\n", "print(f\"Encoded {len(texts)} definitions in {time.time()-t0:.1f}s\")\n", "\n", "# Static embeddings\n", "E = model.shared.weight.detach().float().cpu().numpy()\n", "static_reps = E[token_ids_list]\n", "print(f\"Modulator params: {sum(p.numel() for p in modulator.parameters()):,}\")\n", "print(f\"Alpha: {torch.sigmoid(modulator.alpha).detach().cpu().numpy()}\")\n", "\n", "# %% Cell 5: Build WordNet similarity matrix\n", "print(f\"\\n{'='*70}\")\n", "print(\"BUILDING WORDNET SIMILARITY MATRIX (3000 anchors)\")\n", "print(f\"{'='*70}\")\n", "\n", "N_ANCHOR = 3000\n", "rng = np.random.default_rng(42)\n", "anchor_idx = rng.choice(len(matched), size=N_ANCHOR, replace=False)\n", "anchor_synsets = [synsets[i] for i in anchor_idx]\n", "\n", "sim_matrix = np.eye(N_ANCHOR, dtype=np.float32)\n", "t0 = time.time()\n", "\n", "for i in tqdm(range(N_ANCHOR), desc=\"WN sim\", miniters=100):\n", " syn_i = anchor_synsets[i]\n", " for j in range(i + 1, N_ANCHOR):\n", " sim = syn_i.wup_similarity(anchor_synsets[j])\n", " if sim is not None:\n", " sim_matrix[i, j] = sim\n", " sim_matrix[j, i] = sim\n", "\n", "print(f\"Built in {time.time()-t0:.1f}s\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "381847c96f0a45be9b339d383706b903", "adeea25bfa7a470583a3f079e874c374", "4b2e1a9b4af249eebd8e8640d2ce8f92", "9e18611181894214898c98171b6e94f5", "cc6ca3d3de57457f9841a5eff47bc840", "fe83458b9cdc40a680714c335468eb56", "660b9b99e80a4bb8946a240978a05a52", "ce2d428a79024035b67f84165daae085", "6eea0930b90e4c3091b92549e3087277", "402bda68a3b547ecb3ac575f65b3767f", "361d4e7291e64daebd656db21af8d6bd", "ac113d9f12c144ce9095e80a0474f25d", "7fc5bc176d5b4d36bdf2eabe3943bb8a", "489df8a33a944755b804a18b206da8cc", "bde89f446eeb44e993fe7548e6f7eb1c", "675b696c085e4cc18a558193c14a4923", "911e2748d18a40f7b2e0b82c476d388a", "47056ee5c5874baf9437eabb086ab01d", "3ac860fe06464d029bf3ff33b8c96847", "df9a2596651042399eb676ac983eed37", "3caa229745104f23b91d87e486090781", "2212fb13fdaa4cbab6b4ed05c62006a6", "343c22a042c34d6e8831d0a50b97b7cd", "af2087e2c8f64f689cf063ad402b642e", "4b9a248c56ba44ad901c8dd0da7ed69c", "9ff0d48d3be8414bbf8c6f305f68c55a", "12be9d6fa948456885748617849e6568", "b9db16da0493475f9a3ca2daf21d41fd", "84eae3bda94548a080dccf84b71ca783", "c2efe7611436460f8cc0cff141077bea", "25608bbed9de4f27b622c70c23bb49d6", "4d4978e6eabc4a148c577c23e16f6d9f", "8acca8e2d54a4628b766221ce6f069f5", "aa67fa90f77f4249a3a030560d54c33e", "d54382ce11d1470b89e42bfea7f9a3c5", "4b5e5ee8f4c14b858296cd78a8e2f3ad", "f96d45e35c7c4b2f808a452255970c25", "0f676092842b4934a81b100edb687c13", "8a77f167ff8c4cdb9ecba6ec535c4328", "5c64130ad08c46d0a1aa9689525b6ecc", "995d2bea39a6499c9b23a4b0377f665e", "2d94dcb396a5478b87a4c76d92430bd3", "afea0d7cffb0435dbe80cd327eff4fc2", "e09a190200a34c94a216e7cc0530b515", "cc41ed5e0e5e48449b59e7056a55fd06", "680096b3941d4d51959eab9f61857378", "d3cdabf3863a4b839d361402919854d6", "8fbc1bbd78e2482b9ef84cf87540d3d5", "5dc8cb0e4d2740eaa126beb480d7d1a5", "d9e3ae735cda41779d2f37575955d3b7", "0f03dfe168044d149b2cf0fa58c1fbdb", "b26b0d30243a43fd945362d8b560ca82", "20b7a4b9d445474f8f39b9175c037f96", "6ec79acf9bd14c038c79ae00e9e21241", "da4732e13dd94ba3b7ca5ad81abc2c90", "9d39d9c9765f466dac22228e5567aabb", "2963d44a1b7641d8a0f4b7b2551f67cc", "4c151aa0103340de867c16e13271814b", "7da4da2a94e040319a82386de8c68470", "8442bbf187d64a9c8894f8a6f7762eba", "2c73a519b6f14279bc92066d1bcd2e08", "a48eb9c808d14bfdb3bc1ad461daccc2", "c8d1cba5e69a4edc915b219e7d69b9ae", "e04f7ebcb84e420cb056fb090b101cd3", "d6976eae93774411b07372941952bfcc", "79c2ab33f84b4d70ae793ca484d3ae19", "1002e3c473204b9a8becf18bdd5b4897", "d1aa2ed75c954c6697f87e2bac03f54f", "79b0860a8f1e41f5b99c3279a1ca11b6", "19c7b7f78d7f4a0a99e7fc5e55cb6783", "070231b9c3ca4c69b820124247a23a58", "394a81cfd3084b29a3e2fe58f829011a", "2eaae2abb9574ec6aaaae731c9b6baa2", "911ec44efdf945a58e52c7d4f0feaddf", "541f4d24c15a4f8f9252c24601f1ed07", "b43e74fccded41b088446f47f03b6f65", "1f2fe151f00b40a0ba85d139070d979e" ] }, "id": "-05DKneHEXjN", "outputId": "3ae7bb1f-0283-44e5-d319-5b7eaa84cec2" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Device: cuda\n", "Loading google-t5/t5-small...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "tokenizer_config.json: 0.00B [00:00, ?B/s]" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "381847c96f0a45be9b339d383706b903" } }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "spiece.model: 0%| | 0.00/792k [00:00 0:\n", " wn_s.append(sim)\n", " for name, normed in sets_n.items():\n", " cos_arrays[name].append(np.dot(normed[a], normed[b]))\n", "\n", "wn_s = np.array(wn_s)\n", "for name in cos_arrays:\n", " cos_arrays[name] = np.array(cos_arrays[name])\n", "\n", "orig_p = np.corrcoef(wn_s, cos_arrays['Original'])[0, 1]\n", "orig_sp, _ = spearmanr(wn_s, cos_arrays['Original'])\n", "\n", "print(f\"\\n{'Method':20s} {'Pearson':>10s} {'Spearman':>10s} {'ΔP':>10s} {'ΔS':>10s}\")\n", "for name, cos_arr in cos_arrays.items():\n", " p = np.corrcoef(wn_s, cos_arr)[0, 1]\n", " sp, _ = spearmanr(wn_s, cos_arr)\n", " dp = p - orig_p if name != 'Original' else 0.0\n", " ds = sp - orig_sp if name != 'Original' else 0.0\n", " print(f\" {name:18s} {p:10.6f} {sp:10.6f} {dp:+10.6f} {ds:+10.6f}\")\n", "\n", "# Distance bands\n", "print(f\"\\n--- DISTANCE BANDS ---\")\n", "bands = [(0.5, 1.0), (0.25, 0.5), (0.10, 0.25), (0.05, 0.10), (0.0, 0.05)]\n", "print(f\"{'Band':>12s} {'Orig':>8s} {'Procrust':>8s} {'Δ':>8s}\")\n", "for lo, hi in bands:\n", " mask = (wn_s >= lo) & (wn_s < hi) if hi < 1.0 else (wn_s >= lo) & (wn_s <= hi)\n", " if mask.sum() < 5:\n", " continue\n", " oc = cos_arrays['Original'][mask].mean()\n", " pc = cos_arrays['Procrustes'][mask].mean()\n", " print(f\" [{lo:.2f},{hi:.2f}) {oc:8.4f} {pc:8.4f} {pc-oc:+8.4f}\")\n", "\n", "# Gradients\n", "high_mask = wn_s >= 0.25\n", "low_mask = wn_s < 0.10\n", "if high_mask.sum() > 0 and low_mask.sum() > 0:\n", " print(f\"\\n Gradients (high - low):\")\n", " for name, cos_arr in cos_arrays.items():\n", " grad = cos_arr[high_mask].mean() - cos_arr[low_mask].mean()\n", " print(f\" {name:18s}: {grad:.6f}\")\n", "\n", "# Pentachoron\n", "print(f\"\\n--- PENTACHORON GEOMETRY ---\")\n", "def cayley_menger_volume_sq(points):\n", " n = len(points)\n", " D = np.zeros((n + 1, n + 1))\n", " D[0, 1:] = 1; D[1:, 0] = 1\n", " for i in range(n):\n", " for j in range(i + 1, n):\n", " d_sq = np.sum((points[i] - points[j]) ** 2)\n", " D[i + 1, j + 1] = d_sq; D[j + 1, i + 1] = d_sq\n", " k = n - 1\n", " det = np.linalg.det(D)\n", " return ((-1) ** (k + 1)) * det / ((2 ** k) * (math.factorial(k) ** 2))\n", "\n", "rng3 = np.random.default_rng(42)\n", "for name, reps in [('Original', encoder_reps), ('Procrustes', proc_reps)]:\n", " vols = []\n", " for _ in range(500):\n", " idx = rng3.choice(len(matched), size=5, replace=False)\n", " v = cayley_menger_volume_sq(reps[idx])\n", " if v > 0:\n", " vols.append(np.sqrt(v))\n", " vols = np.array(vols)\n", " print(f\" {name:18s}: CV={vols.std()/vols.mean():.4f} mean={vols.mean():.4e}\")\n", "\n", "print(f\"\\n{'='*70}\")\n", "print(\"DONE\")\n", "print(f\"{'='*70}\")\n", "print(f\"Alpha: {torch.sigmoid(modulator.alpha).detach().cpu().numpy()}\")\n", "print(f\"Procrustes alignment cosine: {alignment_cos.mean():.4f}\")\n", "print(f\"Per-token preservation: {per_tok.mean():.6f}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GiGbJel6Jr80", "outputId": "42c80532-a68f-426e-9c5f-e6fd34896a45" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "======================================================================\n", "BUILDING GEOMETRIC RESIDUAL MODULATOR\n", "======================================================================\n", "\n", "======================================================================\n", "EIGENDECOMPOSITION → 64-d GEOMETRIC EMBEDDINGS\n", "======================================================================\n", "Reconstruction correlation: 0.9210\n", "Top 5 eigenvalues: [742.0321 261.1789 254.96997 72.47133 64.1298 ]\n", "\n", "======================================================================\n", "FAST PROJECTION VIA EMBEDDING COSINE PROXY\n", "======================================================================\n", "Projected 6362 tokens in 0.1s\n", "\n", "======================================================================\n", "PROCRUSTES ALIGNMENT: Geometric → Residual Stream\n", "======================================================================\n", "Procrustes scale: 874.2267\n", "Alignment cosine: mean=0.3724 std=0.2078\n", "Projection norm: 1.2542\n", "Geo health: cos_mean=0.1352, pr/dim=0.9967\n", "\n", "======================================================================\n", "ENCODING THROUGH PROCRUSTES-ALIGNED MODULATOR\n", "======================================================================\n", "Done in 2.8s\n", "Per-token cos(orig, procrustes): mean=0.176317 std=0.064458\n", "\n", "======================================================================\n", "FULL COMPARISON: Static | Original | Procrustes-Aligned\n", "======================================================================\n", "Computing 50K WordNet pairs...\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WN pairs: 100%|██████████| 49981/49981 [00:04<00:00, 11275.45it/s]" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "Method Pearson Spearman ΔP ΔS\n", " Static 0.074622 0.013667 -0.024666 -0.070882\n", " Original 0.099288 0.084549 +0.000000 +0.000000\n", " Procrustes 0.184848 0.134384 +0.085560 +0.049835\n", "\n", "--- DISTANCE BANDS ---\n", " Band Orig Procrust Δ\n", " [0.25,0.50) 0.5752 0.5145 -0.0607\n", " [0.10,0.25) 0.5657 0.4579 -0.1078\n", " [0.05,0.10) 0.5526 0.4386 -0.1140\n", " [0.00,0.05) 0.5569 0.4405 -0.1163\n", "\n", " Gradients (high - low):\n", " Static : 0.015978\n", " Original : 0.022475\n", " Procrustes : 0.075829\n", "\n", "--- PENTACHORON GEOMETRY ---\n", " Original : CV=0.2025 mean=1.0364e-01\n", " Procrustes : CV=0.3493 mean=3.1321e-01\n", "\n", "======================================================================\n", "DONE\n", "======================================================================\n", "Alpha: [0.5 0.5 0.5 0.5 0.5 0.5]\n", "Procrustes alignment cosine: 0.3724\n", "Per-token preservation: 0.176317\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "\n" ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# TALK TO THE MODULATED T5\n", "# Run AFTER the full pipeline (modulator, mod_encoder, model all in memory)\n", "# Compare what T5 says with and without geometric modulation\n", "# ============================================================================\n", "\n", "# %% Cell 1: Generation helper\n", "import torch\n", "\n", "def generate_comparison(prompt, max_new_tokens=128, temperature=0.7):\n", " \"\"\"Generate from both original and modulated encoder, compare outputs.\"\"\"\n", "\n", " inputs = tokenizer(prompt, return_tensors=\"pt\", padding=False).to(device)\n", "\n", " # --- Original encoder → decoder generation ---\n", " with torch.no_grad():\n", " orig_enc_out = model.encoder(\n", " input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask,\n", " )\n", " orig_generated = model.generate(\n", " encoder_outputs=orig_enc_out,\n", " attention_mask=inputs.attention_mask,\n", " max_new_tokens=max_new_tokens,\n", " do_sample=True if temperature > 0 else False,\n", " temperature=temperature,\n", " top_p=0.9,\n", " )\n", " orig_text = tokenizer.decode(orig_generated[0], skip_special_tokens=True)\n", "\n", " # --- Modulated encoder → decoder generation ---\n", " with torch.no_grad():\n", " mod_enc_out = mod_encoder(\n", " input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask,\n", " )\n", " # Wrap in the format model.generate expects\n", " from transformers.modeling_outputs import BaseModelOutput\n", " mod_enc_wrapped = BaseModelOutput(last_hidden_state=mod_enc_out.last_hidden_state)\n", "\n", " mod_generated = model.generate(\n", " encoder_outputs=mod_enc_wrapped,\n", " attention_mask=inputs.attention_mask,\n", " max_new_tokens=max_new_tokens,\n", " do_sample=True if temperature > 0 else False,\n", " temperature=temperature,\n", " top_p=0.9,\n", " )\n", " mod_text = tokenizer.decode(mod_generated[0], skip_special_tokens=True)\n", "\n", " return orig_text, mod_text\n", "\n", "\n", "def talk(prompt, max_new_tokens=128, temperature=0.0):\n", " \"\"\"Pretty-print comparison.\"\"\"\n", " print(f\"\\n{'='*70}\")\n", " print(f\"PROMPT: {prompt}\")\n", " print(f\"{'='*70}\")\n", "\n", " orig, mod = generate_comparison(prompt, max_new_tokens, temperature)\n", "\n", " print(f\"\\n ORIGINAL: {orig}\")\n", " print(f\" MODULATED: {mod}\")\n", "\n", " if orig == mod:\n", " print(f\"\\n >>> IDENTICAL (modulator too quiet or greedy decoding converged)\")\n", " else:\n", " # Count token-level differences\n", " orig_toks = tokenizer.encode(orig)\n", " mod_toks = tokenizer.encode(mod)\n", " max_len = max(len(orig_toks), len(mod_toks))\n", " diffs = sum(1 for i in range(min(len(orig_toks), len(mod_toks)))\n", " if orig_toks[i] != mod_toks[i])\n", " diffs += abs(len(orig_toks) - len(mod_toks))\n", " print(f\"\\n >>> {diffs} token differences out of {max_len}\")\n", "\n", "\n", "# %% Cell 2: Test it — T5 tasks\n", "print(\"Alpha:\", torch.sigmoid(modulator.alpha).detach().cpu().numpy())\n", "print()\n", "\n", "# Summarization\n", "talk(\"summarize: The cat is a small domesticated carnivorous mammal with soft fur, a short snout, and retractable claws. It is widely kept as a pet and valued for companionship and ability to hunt vermin.\")\n", "\n", "# Translation\n", "talk(\"translate English to German: The geometric structure of language is a universal attractor.\")\n", "\n", "# Question-style\n", "talk(\"summarize: Mathematics is the study of numbers, quantities, shapes, and patterns. It uses rigorous logical reasoning and abstraction to understand structures that exist independently of physical reality.\")\n", "\n", "# Semantic similarity test — do related concepts change differently?\n", "talk(\"summarize: A dog is a domesticated descendant of the wolf, characterized by loyalty and trainability.\")\n", "talk(\"summarize: A wolf is a large wild canine that lives and hunts in packs across the Northern Hemisphere.\")\n", "\n", "# Abstract concept\n", "talk(\"summarize: Love is a complex set of emotions, behaviors, and beliefs associated with strong feelings of affection, protectiveness, warmth, and respect for another person.\")\n", "\n", "# Numbers (digit manifold test)\n", "talk(\"summarize: Seven is a prime number that comes after six and before eight in the natural number sequence.\")\n", "\n", "# %% Cell 3: Sweep alpha and regenerate one prompt to see sensitivity\n", "print(f\"\\n{'='*70}\")\n", "print(\"ALPHA SENSITIVITY — same prompt, varying geometric strength\")\n", "print(f\"{'='*70}\")\n", "\n", "test_prompt = \"summarize: A triangle is a polygon with three edges and three vertices. It is one of the basic shapes in geometry.\"\n", "\n", "for alpha_val in [0.01, 0.05, 0.10, 0.20, 0.50]:\n", " logit = torch.tensor(alpha_val / (1 - alpha_val)).log()\n", " with torch.no_grad():\n", " modulator.alpha.fill_(logit.item())\n", "\n", " _, mod_text = generate_comparison(test_prompt, max_new_tokens=64, temperature=0.0)\n", " print(f\" alpha={alpha_val:.2f}: {mod_text}\")\n", "\n", "# Reset alpha\n", "import math\n", "with torch.no_grad():\n", " modulator.alpha.fill_(math.log(0.01 / 0.99))\n", "print(f\"\\nAlpha reset to 0.01\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "iuWhbgigLKSg", "outputId": "eea3f8b7-8e4e-4969-ce81-47bde8336d1e" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Alpha set to: [0.29514 0.29514 0.29514 0.29514 0.29514 0.29514]\n", "\n", "Encoding 9362 definitions at alpha=0.29514...\n", "Done in 2.8s\n", "Per-token cos(orig, 0.29514): mean=0.650405 std=0.063215\n", "\n", "======================================================================\n", "RELATIONAL MEASUREMENT AT ALPHA = 0.29514\n", "======================================================================\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WN pairs: 100%|██████████| 49981/49981 [00:04<00:00, 11041.62it/s]\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "Method Pearson Spearman ΔP ΔS\n", " Static 0.074622 0.013667 -0.024666 -0.070882\n", " Original 0.099288 0.084549 +0.000000 +0.000000\n", " α=0.29514 0.023690 -0.019037 -0.075597 -0.103587\n", "\n", "--- DISTANCE BANDS ---\n", " Band Orig 0.29514 Δ\n", " [0.25,0.50) 0.5752 0.6092 +0.0341\n", " [0.10,0.25) 0.5657 0.5997 +0.0340\n", " [0.05,0.10) 0.5526 0.6019 +0.0493\n", " [0.00,0.05) 0.5569 0.6187 +0.0619\n", "\n", " Gradients (high - low):\n", " Static : 0.015978\n", " Original : 0.022475\n", " α=0.29514 : 0.007025\n", "\n", "--- PENTACHORON GEOMETRY ---\n", " Original : CV=0.2025 mean=1.0364e-01\n", " α=0.29514 : CV=0.2791 mean=7.4494e-02\n", "\n", "======================================================================\n", "COHERENCE TEST AT ALPHA = 0.29514\n", "======================================================================\n", "\n", " ORIG: the cat is a small domesticated carnivorous mammal with soft fur.\n", " 0.29: the ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n", "\n", " ORIG: Die geometrische Struktur der Sprache ist ein universeller Attraktor.\n", " 0.29: Die geometrische Struktur der Sprache ist ein universeller Einspruch.\n", "\n", " ORIG: mathematics is the study of numbers, quantities, shapes, and patterns.\n", " 0.29: the study is the study of numbers, quantities, shapes, and numbers.\n", "\n", " ORIG: seven is a prime number that comes after six and before eight.\n", " 0.29: the first time in a row, the first time in a row, has been a tad.\n" ] }, { "output_type": "error", "ename": "KeyboardInterrupt", "evalue": "", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_7348/842646542.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 174\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtransformers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodeling_outputs\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mBaseModelOutput\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 175\u001b[0m \u001b[0mmod_wrapped\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBaseModelOutput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlast_hidden_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmod_enc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlast_hidden_state\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 176\u001b[0;31m mod_gen = model.generate(encoder_outputs=mod_wrapped,\n\u001b[0m\u001b[1;32m 177\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 178\u001b[0m max_new_tokens=64)\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/utils/_contextlib.py\u001b[0m in \u001b[0;36mdecorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[0;31m# pyrefly: ignore [bad-context-manager]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mctx_factory\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 124\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 125\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/transformers/generation/utils.py\u001b[0m in \u001b[0;36mgenerate\u001b[0;34m(self, inputs, generation_config, logits_processor, stopping_criteria, prefix_allowed_tokens_fn, synced_gpus, assistant_model, streamer, negative_prompt_ids, negative_prompt_attention_mask, custom_generate, **kwargs)\u001b[0m\n\u001b[1;32m 2667\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2668\u001b[0m \u001b[0;31m# 9. Call generation mode\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2669\u001b[0;31m result = decoding_method(\n\u001b[0m\u001b[1;32m 2670\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2671\u001b[0m \u001b[0minput_ids\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/transformers/generation/utils.py\u001b[0m in \u001b[0;36m_sample\u001b[0;34m(self, input_ids, logits_processor, stopping_criteria, generation_config, synced_gpus, streamer, **model_kwargs)\u001b[0m\n\u001b[1;32m 2872\u001b[0m \u001b[0mmodel_inputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_inputs_for_generation\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mmodel_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2873\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_optimize_model_for_decode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2874\u001b[0;31m \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel_forward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mmodel_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2875\u001b[0m \u001b[0mprefill_consumed\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2876\u001b[0m model_kwargs = self._update_model_kwargs_for_generation(\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1774\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1775\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1776\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1777\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1778\u001b[0m \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1785\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1786\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1787\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1788\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1789\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/transformers/models/t5/modeling_t5.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input_ids, attention_mask, decoder_input_ids, decoder_attention_mask, encoder_outputs, past_key_values, inputs_embeds, decoder_inputs_embeds, labels, use_cache, output_attentions, output_hidden_states, return_dict, cache_position, **kwargs)\u001b[0m\n\u001b[1;32m 1121\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1122\u001b[0m \u001b[0;31m# Decode\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1123\u001b[0;31m decoder_outputs = self.decoder(\n\u001b[0m\u001b[1;32m 1124\u001b[0m \u001b[0minput_ids\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdecoder_input_ids\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1125\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdecoder_attention_mask\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1774\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1775\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1776\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1777\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1778\u001b[0m \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1785\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1786\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1787\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1788\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1789\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/transformers/models/t5/modeling_t5.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input_ids, attention_mask, encoder_hidden_states, encoder_attention_mask, inputs_embeds, past_key_values, use_cache, output_attentions, output_hidden_states, return_dict, cache_position, **kwargs)\u001b[0m\n\u001b[1;32m 765\u001b[0m \u001b[0mall_hidden_states\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mall_hidden_states\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhidden_states\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 766\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 767\u001b[0;31m layer_outputs = layer_module(\n\u001b[0m\u001b[1;32m 768\u001b[0m \u001b[0mhidden_states\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 769\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/transformers/modeling_layers.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_gradient_checkpointing_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpartial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__call__\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 93\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__call__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 94\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1774\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1775\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1776\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1777\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1778\u001b[0m \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1785\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1786\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1787\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1788\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1789\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/transformers/models/t5/modeling_t5.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, hidden_states, attention_mask, position_bias, encoder_hidden_states, encoder_attention_mask, encoder_decoder_position_bias, past_key_values, use_cache, output_attentions, return_dict, cache_position)\u001b[0m\n\u001b[1;32m 475\u001b[0m \u001b[0mdo_cross_attention\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_decoder\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mencoder_hidden_states\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 476\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdo_cross_attention\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 477\u001b[0;31m cross_attention_outputs = self.layer[1](\n\u001b[0m\u001b[1;32m 478\u001b[0m \u001b[0mhidden_states\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 479\u001b[0m \u001b[0mkey_value_states\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencoder_hidden_states\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1774\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1775\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1776\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1777\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1778\u001b[0m \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1785\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1786\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1787\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1788\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1789\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/transformers/models/t5/modeling_t5.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, hidden_states, key_value_states, attention_mask, position_bias, past_key_values, use_cache, query_length, output_attentions, cache_position)\u001b[0m\n\u001b[1;32m 409\u001b[0m ):\n\u001b[1;32m 410\u001b[0m \u001b[0mnormed_hidden_states\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayer_norm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhidden_states\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 411\u001b[0;31m attention_output = self.EncDecAttention(\n\u001b[0m\u001b[1;32m 412\u001b[0m \u001b[0mnormed_hidden_states\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 413\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1774\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1775\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1776\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1777\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1778\u001b[0m \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1785\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1786\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1787\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1788\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1789\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/transformers/models/t5/modeling_t5.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, hidden_states, mask, key_value_states, position_bias, past_key_values, query_length, use_cache, output_attentions, cache_position)\u001b[0m\n\u001b[1;32m 339\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 340\u001b[0m \u001b[0;31m# (batch_size, n_heads, seq_length, key_length)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 341\u001b[0;31m \u001b[0mattn_weights\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfunctional\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoftmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mscores\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdim\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype_as\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mscores\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 342\u001b[0m \u001b[0mattn_weights\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfunctional\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdropout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattn_weights\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdropout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraining\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtraining\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 343\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.12/dist-packages/torch/nn/functional.py\u001b[0m in \u001b[0;36msoftmax\u001b[0;34m(input, dim, _stacklevel, dtype)\u001b[0m\n\u001b[1;32m 2155\u001b[0m \u001b[0mdim\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_get_softmax_dim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"softmax\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdim\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_stacklevel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2156\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdtype\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2157\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoftmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdim\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2158\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2159\u001b[0m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msoftmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdim\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# TRAIN THE GEOMETRIC MODULATOR — LET ALPHA FIND ITSELF\n", "# Freeze T5. Train only: geometric_embed, proj, alpha.\n", "# Task: summarize definitions → lemma words\n", "# Watch where alpha settles.\n", "# Run AFTER the full pipeline (model, modulator, mod_encoder, matched, etc.)\n", "# ============================================================================\n", "\n", "# %% Cell 1: Setup training\n", "import torch\n", "import torch.nn.functional as F\n", "import numpy as np\n", "import math\n", "import time\n", "from scipy.stats import spearmanr\n", "from tqdm import tqdm\n", "\n", "# Freeze T5 entirely\n", "for param in model.parameters():\n", " param.requires_grad = False\n", "\n", "# Unfreeze only the modulator\n", "for param in modulator.parameters():\n", " param.requires_grad = True\n", "\n", "# Reset alpha to neutral starting point — let it find its own equilibrium\n", "INITIAL_ALPHA = 0.01\n", "with torch.no_grad():\n", " modulator.alpha.fill_(math.log(INITIAL_ALPHA / (1 - INITIAL_ALPHA)))\n", "\n", "trainable = sum(p.numel() for p in modulator.parameters() if p.requires_grad)\n", "frozen = sum(p.numel() for p in model.parameters())\n", "print(f\"Frozen T5 params: {frozen:,}\")\n", "print(f\"Trainable mod params: {trainable:,}\")\n", "print(f\"Ratio: {trainable/frozen*100:.3f}%\")\n", "print(f\"Starting alpha: {torch.sigmoid(modulator.alpha).detach().cpu().numpy()}\")\n", "\n", "# %% Cell 2: Build dataset — (input: \"summarize: definition\", target: lemma)\n", "print(f\"\\n{'='*70}\")\n", "print(\"BUILDING TRAINING DATA\")\n", "print(f\"{'='*70}\")\n", "\n", "# Pair each definition with its lemma as the target\n", "train_inputs = []\n", "train_targets = []\n", "\n", "for name, syn, tid, defn in matched:\n", " train_inputs.append(f\"summarize: {defn}\")\n", " train_targets.append(name)\n", "\n", "# Shuffle and split\n", "rng = np.random.default_rng(42)\n", "perm = rng.permutation(len(train_inputs))\n", "n_train = int(len(perm) * 0.9)\n", "train_idx = perm[:n_train]\n", "val_idx = perm[n_train:]\n", "\n", "print(f\"Train: {len(train_idx)}, Val: {len(val_idx)}\")\n", "print(f\"Example: '{train_inputs[train_idx[0]][:80]}...' → '{train_targets[train_idx[0]]}'\")\n", "\n", "# %% Cell 3: Training loop\n", "print(f\"\\n{'='*70}\")\n", "print(\"TRAINING — ALPHA FINDS ITSELF\")\n", "print(f\"{'='*70}\")\n", "\n", "BATCH_SIZE = 32\n", "N_EPOCHS = 100\n", "LR = 1e-3\n", "MAX_INPUT_LEN = 128\n", "MAX_TARGET_LEN = 16\n", "\n", "optimizer = torch.optim.AdamW(modulator.parameters(), lr=LR, weight_decay=0.01)\n", "scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=N_EPOCHS)\n", "\n", "# Tracking\n", "alpha_history = []\n", "loss_history = []\n", "val_loss_history = []\n", "\n", "def compute_batch_loss(batch_indices, inputs_list, targets_list):\n", " \"\"\"Forward pass through modulated encoder + T5 decoder, return CE loss.\"\"\"\n", " batch_in = [inputs_list[i] for i in batch_indices]\n", " batch_tgt = [targets_list[i] for i in batch_indices]\n", "\n", " # Tokenize\n", " enc_inputs = tokenizer(\n", " batch_in, return_tensors=\"pt\", padding=True,\n", " truncation=True, max_length=MAX_INPUT_LEN,\n", " ).to(device)\n", "\n", " dec_inputs = tokenizer(\n", " batch_tgt, return_tensors=\"pt\", padding=True,\n", " truncation=True, max_length=MAX_TARGET_LEN,\n", " ).to(device)\n", "\n", " labels = dec_inputs.input_ids.clone()\n", " labels[labels == tokenizer.pad_token_id] = -100 # ignore padding in loss\n", "\n", " # Forward through modulated encoder\n", " enc_out = mod_encoder(\n", " input_ids=enc_inputs.input_ids,\n", " attention_mask=enc_inputs.attention_mask,\n", " )\n", "\n", " # Forward through T5 decoder with encoder output\n", " dec_out = model.decoder(\n", " input_ids=dec_inputs.input_ids,\n", " encoder_hidden_states=enc_out.last_hidden_state,\n", " encoder_attention_mask=enc_inputs.attention_mask,\n", " )\n", "\n", " # LM head + loss\n", " logits = model.lm_head(dec_out.last_hidden_state)\n", " loss = F.cross_entropy(\n", " logits.view(-1, logits.size(-1)),\n", " labels.view(-1),\n", " ignore_index=-100,\n", " )\n", " return loss\n", "\n", "\n", "t0 = time.time()\n", "\n", "for epoch in range(N_EPOCHS):\n", " # Shuffle training data\n", " epoch_perm = rng.permutation(len(train_idx))\n", " epoch_indices = train_idx[epoch_perm]\n", "\n", " n_batches = (len(epoch_indices) + BATCH_SIZE - 1) // BATCH_SIZE\n", " epoch_losses = []\n", "\n", " modulator.train()\n", "\n", " for batch_i in range(n_batches):\n", " start = batch_i * BATCH_SIZE\n", " end = min(start + BATCH_SIZE, len(epoch_indices))\n", " batch_idx = epoch_indices[start:end]\n", "\n", " optimizer.zero_grad()\n", " loss = compute_batch_loss(batch_idx, train_inputs, train_targets)\n", " loss.backward()\n", "\n", " # Gradient clip\n", " torch.nn.utils.clip_grad_norm_(modulator.parameters(), 1.0)\n", " optimizer.step()\n", "\n", " epoch_losses.append(loss.item())\n", "\n", " # Track alpha every 10 batches\n", " if batch_i % 10 == 0:\n", " current_alpha = torch.sigmoid(modulator.alpha).detach().cpu().numpy()\n", " alpha_history.append(current_alpha.copy())\n", "\n", " scheduler.step()\n", "\n", " # Validation\n", " modulator.eval()\n", " val_losses = []\n", " val_batches = (len(val_idx) + BATCH_SIZE - 1) // BATCH_SIZE\n", "\n", " with torch.no_grad():\n", " for batch_i in range(val_batches):\n", " start = batch_i * BATCH_SIZE\n", " end = min(start + BATCH_SIZE, len(val_idx))\n", " batch = val_idx[start:end]\n", " vloss = compute_batch_loss(batch, train_inputs, train_targets)\n", " val_losses.append(vloss.item())\n", "\n", " train_loss = np.mean(epoch_losses)\n", " val_loss = np.mean(val_losses)\n", " loss_history.append(train_loss)\n", " val_loss_history.append(val_loss)\n", "\n", " current_alpha = torch.sigmoid(modulator.alpha).detach().cpu().numpy()\n", " elapsed = time.time() - t0\n", "\n", " print(f\" Epoch {epoch+1:2d}/{N_EPOCHS} \"\n", " f\"train_loss={train_loss:.4f} val_loss={val_loss:.4f} \"\n", " f\"alpha=[{', '.join(f'{a:.4f}' for a in current_alpha)}] \"\n", " f\"({elapsed:.0f}s)\")\n", "\n", "total_time = time.time() - t0\n", "print(f\"\\nTraining complete in {total_time:.1f}s\")\n", "\n", "# %% Cell 4: Alpha convergence analysis\n", "print(f\"\\n{'='*70}\")\n", "print(\"ALPHA CONVERGENCE ANALYSIS\")\n", "print(f\"{'='*70}\")\n", "\n", "alpha_arr = np.array(alpha_history) # [n_checkpoints, n_layers]\n", "print(f\"Alpha checkpoints: {alpha_arr.shape[0]}\")\n", "print(f\"\\nFinal alpha per layer:\")\n", "final_alpha = torch.sigmoid(modulator.alpha).detach().cpu().numpy()\n", "for i, a in enumerate(final_alpha):\n", " print(f\" Layer {i}: {a:.6f}\")\n", "\n", "print(f\"\\nMean final alpha: {final_alpha.mean():.6f}\")\n", "print(f\"Std final alpha: {final_alpha.std():.6f}\")\n", "\n", "# Distance from known constants\n", "print(f\"\\nDistance from known constants:\")\n", "print(f\" |α - 0.29154| = {abs(final_alpha.mean() - 0.29154):.6f}\")\n", "print(f\" |α - 0.50000| = {abs(final_alpha.mean() - 0.50000):.6f}\")\n", "print(f\" |α - 0.70846| = {abs(final_alpha.mean() - 0.70846):.6f}\") # 1 - 0.29154\n", "\n", "# %% Cell 5: Measure relational correlation at trained alpha\n", "print(f\"\\n{'='*70}\")\n", "print(\"POST-TRAINING RELATIONAL MEASUREMENT\")\n", "print(f\"{'='*70}\")\n", "\n", "modulator.eval()\n", "\n", "# Re-encode all definitions with trained modulator\n", "trained_reps = np.zeros((len(matched), 512), dtype=np.float32)\n", "n_batches = (len(texts) + BATCH_SIZE - 1) // BATCH_SIZE\n", "\n", "for batch_idx in range(n_batches):\n", " start = batch_idx * BATCH_SIZE\n", " end = min(start + BATCH_SIZE, len(texts))\n", " inputs = tokenizer(texts[start:end], return_tensors=\"pt\", padding=True,\n", " truncation=True, max_length=MAX_INPUT_LEN).to(device)\n", " with torch.no_grad():\n", " enc_out = mod_encoder(input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask)\n", " hidden = enc_out.last_hidden_state.float()\n", " mask = inputs.attention_mask.unsqueeze(-1).float()\n", " pooled = (hidden * mask).sum(dim=1) / mask.sum(dim=1)\n", " trained_reps[start:end] = pooled.cpu().numpy()\n", "\n", "# Per-token preservation\n", "per_tok = (encoder_reps * trained_reps).sum(axis=1) / (\n", " np.linalg.norm(encoder_reps, axis=1) * np.linalg.norm(trained_reps, axis=1) + 1e-8\n", ")\n", "print(f\"Per-token cos(orig, trained): mean={per_tok.mean():.6f}\")\n", "\n", "# Relational correlation\n", "rng2 = np.random.default_rng(42)\n", "N_REL = min(3000, len(matched))\n", "rel_idx2 = rng2.choice(len(matched), size=N_REL, replace=False)\n", "\n", "sets = {\n", " 'Original': encoder_reps[rel_idx2],\n", " 'Trained': trained_reps[rel_idx2],\n", "}\n", "sets_n = {name: reps / (np.linalg.norm(reps, axis=1, keepdims=True) + 1e-8)\n", " for name, reps in sets.items()}\n", "\n", "pi = rng2.choice(N_REL, size=50000)\n", "pj = rng2.choice(N_REL, size=50000)\n", "valid = pi != pj\n", "pi, pj = pi[valid], pj[valid]\n", "\n", "wn_s = []\n", "cos_arrays = {name: [] for name in sets_n}\n", "\n", "for k in tqdm(range(min(50000, len(pi))), desc=\"WN pairs\", miniters=5000):\n", " a, b = pi[k], pj[k]\n", " sim = synsets[rel_idx2[a]].path_similarity(synsets[rel_idx2[b]])\n", " if sim is not None and sim > 0:\n", " wn_s.append(sim)\n", " for name, normed in sets_n.items():\n", " cos_arrays[name].append(np.dot(normed[a], normed[b]))\n", "\n", "wn_s = np.array(wn_s)\n", "for name in cos_arrays:\n", " cos_arrays[name] = np.array(cos_arrays[name])\n", "\n", "orig_p = np.corrcoef(wn_s, cos_arrays['Original'])[0, 1]\n", "trained_p = np.corrcoef(wn_s, cos_arrays['Trained'])[0, 1]\n", "orig_sp, _ = spearmanr(wn_s, cos_arrays['Original'])\n", "trained_sp, _ = spearmanr(wn_s, cos_arrays['Trained'])\n", "\n", "print(f\"\\n{'Method':20s} {'Pearson':>10s} {'Spearman':>10s}\")\n", "print(f\" {'Original':18s} {orig_p:10.6f} {orig_sp:10.6f}\")\n", "print(f\" {'Trained':18s} {trained_p:10.6f} {trained_sp:10.6f}\")\n", "print(f\" {'Δ':18s} {trained_p-orig_p:+10.6f} {trained_sp-orig_sp:+10.6f}\")\n", "\n", "# Gradient\n", "high_mask = wn_s >= 0.25\n", "low_mask = wn_s < 0.10\n", "if high_mask.sum() > 0 and low_mask.sum() > 0:\n", " orig_grad = cos_arrays['Original'][high_mask].mean() - cos_arrays['Original'][low_mask].mean()\n", " trained_grad = cos_arrays['Trained'][high_mask].mean() - cos_arrays['Trained'][low_mask].mean()\n", " print(f\"\\n Gradient: orig={orig_grad:.6f} trained={trained_grad:.6f} Δ={trained_grad-orig_grad:+.6f}\")\n", "\n", "# Pentachoron\n", "def cayley_menger_volume_sq(points):\n", " n = len(points)\n", " D = np.zeros((n + 1, n + 1))\n", " D[0, 1:] = 1; D[1:, 0] = 1\n", " for i in range(n):\n", " for j in range(i + 1, n):\n", " d_sq = np.sum((points[i] - points[j]) ** 2)\n", " D[i + 1, j + 1] = d_sq; D[j + 1, i + 1] = d_sq\n", " k = n - 1\n", " det = np.linalg.det(D)\n", " return ((-1) ** (k + 1)) * det / ((2 ** k) * (math.factorial(k) ** 2))\n", "\n", "rng3 = np.random.default_rng(42)\n", "for name, reps in [('Original', encoder_reps), ('Trained', trained_reps)]:\n", " vols = []\n", " for _ in range(500):\n", " idx = rng3.choice(len(matched), size=5, replace=False)\n", " v = cayley_menger_volume_sq(reps[idx])\n", " if v > 0:\n", " vols.append(np.sqrt(v))\n", " vols = np.array(vols)\n", " print(f\" {name:18s}: CV={vols.std()/vols.mean():.4f} mean={vols.mean():.4e}\")\n", "\n", "# %% Cell 6: Coherence check\n", "print(f\"\\n{'='*70}\")\n", "print(\"POST-TRAINING COHERENCE\")\n", "print(f\"{'='*70}\")\n", "\n", "from transformers.modeling_outputs import BaseModelOutput\n", "\n", "test_prompts = [\n", " \"summarize: The cat is a small domesticated carnivorous mammal with soft fur.\",\n", " \"translate English to German: The geometric structure of language is a universal attractor.\",\n", " \"summarize: A triangle is a polygon with three edges and three vertices.\",\n", " \"summarize: Seven is a prime number that comes after six and before eight.\",\n", "]\n", "\n", "for prompt in test_prompts:\n", " inputs = tokenizer(prompt, return_tensors=\"pt\").to(device)\n", " with torch.no_grad():\n", " orig_enc = model.encoder(input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask)\n", " orig_gen = model.generate(encoder_outputs=orig_enc,\n", " attention_mask=inputs.attention_mask,\n", " max_new_tokens=64)\n", " orig_text = tokenizer.decode(orig_gen[0], skip_special_tokens=True)\n", "\n", " mod_enc = mod_encoder(input_ids=inputs.input_ids,\n", " attention_mask=inputs.attention_mask)\n", " mod_wrapped = BaseModelOutput(last_hidden_state=mod_enc.last_hidden_state)\n", " mod_gen = model.generate(encoder_outputs=mod_wrapped,\n", " attention_mask=inputs.attention_mask,\n", " max_new_tokens=64)\n", " mod_text = tokenizer.decode(mod_gen[0], skip_special_tokens=True)\n", "\n", " print(f\"\\n ORIG: {orig_text}\")\n", " print(f\" TRAINED: {mod_text}\")\n", "\n", "# %% Cell 7: Visualization\n", "import matplotlib.pyplot as plt\n", "\n", "fig, axes = plt.subplots(1, 3, figsize=(18, 5))\n", "fig.suptitle(f\"Geometric Modulator Training — Final α={final_alpha.mean():.5f}\", fontsize=14)\n", "\n", "# 1. Alpha convergence\n", "alpha_arr = np.array(alpha_history)\n", "for layer in range(alpha_arr.shape[1]):\n", " axes[0].plot(alpha_arr[:, layer], alpha=0.5, label=f'L{layer}')\n", "axes[0].axhline(0.29154, color='red', ls='--', alpha=0.7, label='0.29154')\n", "axes[0].axhline(0.50, color='gray', ls=':', alpha=0.5, label='0.50')\n", "axes[0].set_xlabel(\"Checkpoint (every 10 batches)\")\n", "axes[0].set_ylabel(\"Alpha\")\n", "axes[0].set_title(\"Alpha convergence per layer\")\n", "axes[0].legend(fontsize=7)\n", "\n", "# 2. Loss curves\n", "axes[1].plot(loss_history, 'b-', label='Train')\n", "axes[1].plot(val_loss_history, 'r-', label='Val')\n", "axes[1].set_xlabel(\"Epoch\")\n", "axes[1].set_ylabel(\"Loss\")\n", "axes[1].set_title(\"Training loss\")\n", "axes[1].legend()\n", "\n", "# 3. Alpha distribution at end\n", "axes[2].bar(range(len(final_alpha)), final_alpha, color='teal')\n", "axes[2].axhline(0.29154, color='red', ls='--', label='0.29154')\n", "axes[2].set_xlabel(\"Layer\")\n", "axes[2].set_ylabel(\"Final alpha\")\n", "axes[2].set_title(\"Per-layer final alpha\")\n", "axes[2].legend()\n", "\n", "plt.tight_layout()\n", "plt.savefig(\"/content/modulator_training.png\", dpi=150, bbox_inches='tight')\n", "plt.show()\n", "print(\"\\nSaved: /content/modulator_training.png\")\n", "\n", "# %% Cell 8: Final summary\n", "print(f\"\\n{'='*70}\")\n", "print(\"FINAL SUMMARY\")\n", "print(f\"{'='*70}\")\n", "print(f\"Model: {model_id}\")\n", "print(f\"Trainable params: {trainable:,} ({trainable/frozen*100:.3f}% of T5)\")\n", "print(f\"Epochs: {N_EPOCHS}, Time: {total_time:.0f}s\")\n", "print(f\"\")\n", "print(f\"Final alpha per layer: {final_alpha}\")\n", "print(f\"Mean alpha: {final_alpha.mean():.6f}\")\n", "print(f\"|α - 0.29154| = {abs(final_alpha.mean() - 0.29154):.6f}\")\n", "print(f\"\")\n", "print(f\"Pearson: orig={orig_p:.4f} trained={trained_p:.4f} Δ={trained_p-orig_p:+.4f}\")\n", "print(f\"Per-token preservation: {per_tok.mean():.4f}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "oUJLYoKkOdxH", "outputId": "86c5478b-56b2-4ebe-89e8-681691b70053" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Frozen T5 params: 60,506,624\n", "Trainable mod params: 2,088,966\n", "Ratio: 3.452%\n", "Starting alpha: [0.01 0.01 0.01 0.01 0.01 0.01]\n", "\n", "======================================================================\n", "BUILDING TRAINING DATA\n", "======================================================================\n", "Train: 8425, Val: 937\n", "Example: 'summarize: the act of retaining something...' → 'keeping'\n", "\n", "======================================================================\n", "TRAINING — ALPHA FINDS ITSELF\n", "======================================================================\n", " Epoch 1/100 train_loss=12.9713 val_loss=11.5540 alpha=[0.0129, 0.0130, 0.0130, 0.0129, 0.0129, 0.0129] (15s)\n", " Epoch 2/100 train_loss=10.1300 val_loss=8.4747 alpha=[0.0164, 0.0172, 0.0168, 0.0167, 0.0165, 0.0167] (29s)\n", " Epoch 3/100 train_loss=7.1156 val_loss=5.4149 alpha=[0.0197, 0.0223, 0.0219, 0.0216, 0.0212, 0.0214] (44s)\n", " Epoch 4/100 train_loss=4.7712 val_loss=3.5570 alpha=[0.0213, 0.0275, 0.0275, 0.0277, 0.0271, 0.0273] (58s)\n", " Epoch 5/100 train_loss=3.2497 val_loss=2.4842 alpha=[0.0222, 0.0318, 0.0333, 0.0347, 0.0338, 0.0345] (72s)\n", " Epoch 6/100 train_loss=2.3275 val_loss=1.8919 alpha=[0.0222, 0.0353, 0.0386, 0.0413, 0.0404, 0.0421] (87s)\n", " Epoch 7/100 train_loss=1.7692 val_loss=1.5055 alpha=[0.0221, 0.0380, 0.0435, 0.0478, 0.0474, 0.0502] (101s)\n", " Epoch 8/100 train_loss=1.3873 val_loss=1.2490 alpha=[0.0220, 0.0400, 0.0477, 0.0530, 0.0536, 0.0582] (115s)\n", " Epoch 9/100 train_loss=1.1296 val_loss=1.0576 alpha=[0.0220, 0.0415, 0.0515, 0.0579, 0.0598, 0.0662] (130s)\n", " Epoch 10/100 train_loss=0.9200 val_loss=0.8825 alpha=[0.0222, 0.0430, 0.0550, 0.0620, 0.0656, 0.0736] (144s)\n", " Epoch 11/100 train_loss=0.7758 val_loss=0.7797 alpha=[0.0223, 0.0439, 0.0579, 0.0659, 0.0711, 0.0811] (158s)\n", " Epoch 12/100 train_loss=0.6646 val_loss=0.6757 alpha=[0.0227, 0.0449, 0.0607, 0.0698, 0.0773, 0.0888] (173s)\n", " Epoch 13/100 train_loss=0.5609 val_loss=0.6035 alpha=[0.0229, 0.0457, 0.0633, 0.0729, 0.0824, 0.0945] (187s)\n", " Epoch 14/100 train_loss=0.4879 val_loss=0.5452 alpha=[0.0231, 0.0459, 0.0650, 0.0752, 0.0871, 0.1000] (201s)\n", " Epoch 15/100 train_loss=0.4320 val_loss=0.4909 alpha=[0.0233, 0.0463, 0.0671, 0.0782, 0.0926, 0.1059] (216s)\n", " Epoch 16/100 train_loss=0.3787 val_loss=0.4451 alpha=[0.0235, 0.0463, 0.0686, 0.0810, 0.0977, 0.1115] (230s)\n", " Epoch 17/100 train_loss=0.3352 val_loss=0.4069 alpha=[0.0236, 0.0465, 0.0699, 0.0835, 0.1023, 0.1162] (245s)\n", " Epoch 18/100 train_loss=0.3009 val_loss=0.3751 alpha=[0.0240, 0.0468, 0.0714, 0.0858, 0.1067, 0.1207] (259s)\n", " Epoch 19/100 train_loss=0.2733 val_loss=0.3464 alpha=[0.0242, 0.0471, 0.0731, 0.0883, 0.1115, 0.1256] (273s)\n", " Epoch 20/100 train_loss=0.2558 val_loss=0.3277 alpha=[0.0246, 0.0475, 0.0746, 0.0903, 0.1153, 0.1291] (288s)\n", " Epoch 21/100 train_loss=0.2251 val_loss=0.3144 alpha=[0.0249, 0.0475, 0.0754, 0.0916, 0.1183, 0.1316] (302s)\n", " Epoch 22/100 train_loss=0.2083 val_loss=0.3109 alpha=[0.0250, 0.0476, 0.0762, 0.0933, 0.1222, 0.1351] (316s)\n", " Epoch 23/100 train_loss=0.1908 val_loss=0.2637 alpha=[0.0256, 0.0483, 0.0781, 0.0959, 0.1265, 0.1384] (331s)\n", " Epoch 24/100 train_loss=0.1790 val_loss=0.2615 alpha=[0.0258, 0.0486, 0.0791, 0.0975, 0.1299, 0.1412] (345s)\n", " Epoch 25/100 train_loss=0.1633 val_loss=0.2494 alpha=[0.0262, 0.0490, 0.0801, 0.0994, 0.1326, 0.1434] (359s)\n", " Epoch 26/100 train_loss=0.1521 val_loss=0.2418 alpha=[0.0263, 0.0491, 0.0808, 0.1007, 0.1353, 0.1458] (374s)\n", " Epoch 27/100 train_loss=0.1403 val_loss=0.2341 alpha=[0.0265, 0.0494, 0.0820, 0.1023, 0.1384, 0.1484] (388s)\n", " Epoch 28/100 train_loss=0.1310 val_loss=0.2507 alpha=[0.0266, 0.0494, 0.0824, 0.1034, 0.1403, 0.1500] (403s)\n", " Epoch 29/100 train_loss=0.1186 val_loss=0.2490 alpha=[0.0267, 0.0494, 0.0828, 0.1046, 0.1431, 0.1518] (417s)\n", " Epoch 30/100 train_loss=0.1119 val_loss=0.2310 alpha=[0.0271, 0.0498, 0.0840, 0.1064, 0.1457, 0.1540] (431s)\n", " Epoch 31/100 train_loss=0.1032 val_loss=0.2128 alpha=[0.0274, 0.0503, 0.0852, 0.1080, 0.1478, 0.1555] (446s)\n", " Epoch 32/100 train_loss=0.0954 val_loss=0.2118 alpha=[0.0276, 0.0507, 0.0858, 0.1090, 0.1502, 0.1577] (460s)\n", " Epoch 33/100 train_loss=0.0872 val_loss=0.2071 alpha=[0.0279, 0.0510, 0.0870, 0.1108, 0.1522, 0.1597] (475s)\n", " Epoch 34/100 train_loss=0.0810 val_loss=0.1999 alpha=[0.0282, 0.0515, 0.0881, 0.1123, 0.1542, 0.1617] (489s)\n", " Epoch 35/100 train_loss=0.0765 val_loss=0.1962 alpha=[0.0283, 0.0515, 0.0884, 0.1133, 0.1556, 0.1636] (504s)\n", " Epoch 36/100 train_loss=0.0713 val_loss=0.1950 alpha=[0.0285, 0.0521, 0.0891, 0.1144, 0.1577, 0.1657] (518s)\n", " Epoch 37/100 train_loss=0.0690 val_loss=0.1927 alpha=[0.0288, 0.0524, 0.0898, 0.1159, 0.1597, 0.1675] (533s)\n", " Epoch 38/100 train_loss=0.0604 val_loss=0.1932 alpha=[0.0289, 0.0527, 0.0904, 0.1171, 0.1619, 0.1705] (547s)\n", " Epoch 39/100 train_loss=0.0575 val_loss=0.2080 alpha=[0.0289, 0.0526, 0.0903, 0.1180, 0.1630, 0.1721] (561s)\n", " Epoch 40/100 train_loss=0.0543 val_loss=0.2059 alpha=[0.0294, 0.0534, 0.0917, 0.1202, 0.1651, 0.1741] (576s)\n", " Epoch 41/100 train_loss=0.0504 val_loss=0.1864 alpha=[0.0295, 0.0535, 0.0917, 0.1208, 0.1679, 0.1767] (590s)\n", " Epoch 42/100 train_loss=0.0459 val_loss=0.1865 alpha=[0.0297, 0.0541, 0.0925, 0.1218, 0.1694, 0.1780] (604s)\n", " Epoch 43/100 train_loss=0.0407 val_loss=0.1843 alpha=[0.0299, 0.0544, 0.0930, 0.1224, 0.1709, 0.1801] (619s)\n", " Epoch 44/100 train_loss=0.0370 val_loss=0.1924 alpha=[0.0303, 0.0551, 0.0942, 0.1240, 0.1722, 0.1816] (633s)\n", " Epoch 45/100 train_loss=0.0342 val_loss=0.1805 alpha=[0.0305, 0.0556, 0.0946, 0.1244, 0.1733, 0.1830] (648s)\n", " Epoch 46/100 train_loss=0.0400 val_loss=0.1794 alpha=[0.0306, 0.0557, 0.0948, 0.1247, 0.1748, 0.1840] (662s)\n", " Epoch 47/100 train_loss=0.0334 val_loss=0.1778 alpha=[0.0308, 0.0560, 0.0951, 0.1248, 0.1757, 0.1853] (676s)\n", " Epoch 48/100 train_loss=0.0281 val_loss=0.1763 alpha=[0.0310, 0.0564, 0.0957, 0.1260, 0.1771, 0.1879] (691s)\n", " Epoch 49/100 train_loss=0.0259 val_loss=0.1801 alpha=[0.0313, 0.0568, 0.0963, 0.1265, 0.1774, 0.1894] (705s)\n", " Epoch 50/100 train_loss=0.0247 val_loss=0.1833 alpha=[0.0315, 0.0573, 0.0970, 0.1273, 0.1782, 0.1912] (720s)\n", " Epoch 51/100 train_loss=0.0256 val_loss=0.1796 alpha=[0.0318, 0.0575, 0.0972, 0.1275, 0.1803, 0.1937] (734s)\n", " Epoch 52/100 train_loss=0.0210 val_loss=0.1727 alpha=[0.0319, 0.0579, 0.0974, 0.1278, 0.1802, 0.1947] (748s)\n", " Epoch 53/100 train_loss=0.0212 val_loss=0.1752 alpha=[0.0318, 0.0577, 0.0970, 0.1277, 0.1805, 0.1965] (763s)\n", " Epoch 54/100 train_loss=0.0190 val_loss=0.1751 alpha=[0.0322, 0.0583, 0.0980, 0.1293, 0.1821, 0.1982] (777s)\n", " Epoch 55/100 train_loss=0.0177 val_loss=0.1773 alpha=[0.0323, 0.0586, 0.0984, 0.1298, 0.1829, 0.2001] (791s)\n", " Epoch 56/100 train_loss=0.0219 val_loss=0.1730 alpha=[0.0324, 0.0587, 0.0984, 0.1299, 0.1829, 0.2015] (806s)\n", " Epoch 57/100 train_loss=0.0168 val_loss=0.1591 alpha=[0.0326, 0.0587, 0.0985, 0.1302, 0.1841, 0.2026] (820s)\n", " Epoch 58/100 train_loss=0.0137 val_loss=0.1748 alpha=[0.0328, 0.0590, 0.0991, 0.1309, 0.1847, 0.2034] (835s)\n", " Epoch 59/100 train_loss=0.0131 val_loss=0.1748 alpha=[0.0328, 0.0591, 0.0991, 0.1311, 0.1851, 0.2040] (849s)\n", " Epoch 60/100 train_loss=0.0131 val_loss=0.1717 alpha=[0.0330, 0.0592, 0.0993, 0.1317, 0.1857, 0.2052] (863s)\n", " Epoch 61/100 train_loss=0.0122 val_loss=0.1658 alpha=[0.0331, 0.0595, 0.0998, 0.1322, 0.1865, 0.2060] (878s)\n", " Epoch 62/100 train_loss=0.0112 val_loss=0.1551 alpha=[0.0331, 0.0594, 0.0996, 0.1322, 0.1869, 0.2067] (892s)\n", " Epoch 63/100 train_loss=0.0110 val_loss=0.1654 alpha=[0.0333, 0.0595, 0.0999, 0.1330, 0.1879, 0.2078] (907s)\n", " Epoch 64/100 train_loss=0.0108 val_loss=0.1657 alpha=[0.0334, 0.0598, 0.1002, 0.1333, 0.1882, 0.2084] (921s)\n", " Epoch 65/100 train_loss=0.0101 val_loss=0.1670 alpha=[0.0334, 0.0599, 0.1003, 0.1334, 0.1887, 0.2089] (935s)\n", " Epoch 66/100 train_loss=0.0095 val_loss=0.1580 alpha=[0.0335, 0.0598, 0.1001, 0.1332, 0.1895, 0.2098] (950s)\n", " Epoch 67/100 train_loss=0.0090 val_loss=0.1642 alpha=[0.0336, 0.0599, 0.1002, 0.1336, 0.1904, 0.2105] (964s)\n", " Epoch 68/100 train_loss=0.0087 val_loss=0.1613 alpha=[0.0337, 0.0600, 0.1005, 0.1339, 0.1909, 0.2111] (979s)\n", " Epoch 69/100 train_loss=0.0082 val_loss=0.1607 alpha=[0.0339, 0.0602, 0.1007, 0.1342, 0.1916, 0.2121] (993s)\n", " Epoch 70/100 train_loss=0.0083 val_loss=0.1614 alpha=[0.0339, 0.0602, 0.1007, 0.1342, 0.1917, 0.2123] (1008s)\n", " Epoch 71/100 train_loss=0.0072 val_loss=0.1642 alpha=[0.0339, 0.0603, 0.1007, 0.1345, 0.1923, 0.2131] (1022s)\n", " Epoch 72/100 train_loss=0.0070 val_loss=0.1604 alpha=[0.0340, 0.0604, 0.1008, 0.1346, 0.1927, 0.2135] (1036s)\n", " Epoch 73/100 train_loss=0.0069 val_loss=0.1633 alpha=[0.0341, 0.0605, 0.1011, 0.1348, 0.1929, 0.2138] (1051s)\n", " Epoch 74/100 train_loss=0.0063 val_loss=0.1604 alpha=[0.0342, 0.0607, 0.1012, 0.1351, 0.1935, 0.2143] (1065s)\n", " Epoch 75/100 train_loss=0.0061 val_loss=0.1600 alpha=[0.0342, 0.0607, 0.1013, 0.1352, 0.1937, 0.2147] (1080s)\n", " Epoch 76/100 train_loss=0.0061 val_loss=0.1601 alpha=[0.0342, 0.0608, 0.1013, 0.1353, 0.1940, 0.2151] (1094s)\n", " Epoch 77/100 train_loss=0.0054 val_loss=0.1602 alpha=[0.0343, 0.0608, 0.1013, 0.1355, 0.1945, 0.2155] (1108s)\n", " Epoch 78/100 train_loss=0.0052 val_loss=0.1601 alpha=[0.0343, 0.0609, 0.1015, 0.1357, 0.1948, 0.2159] (1123s)\n", " Epoch 79/100 train_loss=0.0049 val_loss=0.1602 alpha=[0.0343, 0.0610, 0.1015, 0.1358, 0.1951, 0.2162] (1137s)\n", " Epoch 80/100 train_loss=0.0097 val_loss=0.1607 alpha=[0.0344, 0.0610, 0.1016, 0.1360, 0.1954, 0.2165] (1152s)\n", " Epoch 81/100 train_loss=0.0044 val_loss=0.1601 alpha=[0.0344, 0.0611, 0.1017, 0.1361, 0.1955, 0.2166] (1166s)\n", " Epoch 82/100 train_loss=0.0043 val_loss=0.1599 alpha=[0.0344, 0.0611, 0.1017, 0.1361, 0.1957, 0.2168] (1180s)\n", " Epoch 83/100 train_loss=0.0041 val_loss=0.1599 alpha=[0.0345, 0.0612, 0.1018, 0.1363, 0.1959, 0.2170] (1195s)\n", " Epoch 84/100 train_loss=0.0039 val_loss=0.1602 alpha=[0.0345, 0.0611, 0.1017, 0.1363, 0.1960, 0.2171] (1209s)\n", " Epoch 85/100 train_loss=0.0038 val_loss=0.1596 alpha=[0.0345, 0.0612, 0.1018, 0.1364, 0.1961, 0.2173] (1224s)\n", " Epoch 86/100 train_loss=0.0037 val_loss=0.1597 alpha=[0.0345, 0.0612, 0.1019, 0.1365, 0.1963, 0.2173] (1238s)\n", " Epoch 87/100 train_loss=0.0036 val_loss=0.1595 alpha=[0.0345, 0.0612, 0.1019, 0.1366, 0.1964, 0.2174] (1253s)\n", " Epoch 88/100 train_loss=0.0036 val_loss=0.1593 alpha=[0.0345, 0.0613, 0.1019, 0.1366, 0.1964, 0.2175] (1267s)\n", " Epoch 89/100 train_loss=0.0035 val_loss=0.1593 alpha=[0.0346, 0.0613, 0.1020, 0.1367, 0.1965, 0.2175] (1281s)\n", " Epoch 90/100 train_loss=0.0035 val_loss=0.1592 alpha=[0.0346, 0.0613, 0.1019, 0.1367, 0.1966, 0.2176] (1296s)\n", " Epoch 91/100 train_loss=0.0034 val_loss=0.1590 alpha=[0.0346, 0.0613, 0.1020, 0.1367, 0.1966, 0.2176] (1310s)\n", " Epoch 92/100 train_loss=0.0034 val_loss=0.1590 alpha=[0.0346, 0.0613, 0.1020, 0.1367, 0.1967, 0.2177] (1325s)\n", " Epoch 93/100 train_loss=0.0034 val_loss=0.1589 alpha=[0.0346, 0.0613, 0.1020, 0.1367, 0.1967, 0.2177] (1339s)\n", " Epoch 94/100 train_loss=0.0033 val_loss=0.1589 alpha=[0.0346, 0.0613, 0.1020, 0.1368, 0.1967, 0.2177] (1353s)\n", " Epoch 95/100 train_loss=0.0033 val_loss=0.1588 alpha=[0.0346, 0.0613, 0.1020, 0.1368, 0.1968, 0.2177] (1368s)\n", " Epoch 96/100 train_loss=0.0033 val_loss=0.1588 alpha=[0.0346, 0.0613, 0.1020, 0.1368, 0.1968, 0.2178] (1382s)\n", " Epoch 97/100 train_loss=0.0033 val_loss=0.1588 alpha=[0.0346, 0.0613, 0.1020, 0.1368, 0.1968, 0.2178] (1397s)\n", " Epoch 98/100 train_loss=0.0033 val_loss=0.1588 alpha=[0.0346, 0.0613, 0.1020, 0.1368, 0.1968, 0.2178] (1411s)\n", " Epoch 99/100 train_loss=0.0033 val_loss=0.1588 alpha=[0.0346, 0.0613, 0.1020, 0.1368, 0.1968, 0.2178] (1425s)\n", " Epoch 100/100 train_loss=0.0033 val_loss=0.1588 alpha=[0.0346, 0.0613, 0.1020, 0.1368, 0.1968, 0.2178] (1440s)\n", "\n", "Training complete in 1439.7s\n", "\n", "======================================================================\n", "ALPHA CONVERGENCE ANALYSIS\n", "======================================================================\n", "Alpha checkpoints: 2700\n", "\n", "Final alpha per layer:\n", " Layer 0: 0.034602\n", " Layer 1: 0.061329\n", " Layer 2: 0.102019\n", " Layer 3: 0.136796\n", " Layer 4: 0.196789\n", " Layer 5: 0.217782\n", "\n", "Mean final alpha: 0.124886\n", "Std final alpha: 0.066652\n", "\n", "Distance from known constants:\n", " |α - 0.29154| = 0.166654\n", " |α - 0.50000| = 0.375114\n", " |α - 0.70846| = 0.583574\n", "\n", "======================================================================\n", "POST-TRAINING RELATIONAL MEASUREMENT\n", "======================================================================\n", "Per-token cos(orig, trained): mean=0.379379\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "WN pairs: 100%|██████████| 49981/49981 [00:04<00:00, 11629.59it/s]\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "Method Pearson Spearman\n", " Original 0.099288 0.084549\n", " Trained 0.173473 0.183802\n", " Δ +0.074185 +0.099252\n", "\n", " Gradient: orig=0.022475 trained=0.028928 Δ=+0.006453\n", " Original : CV=0.2025 mean=1.0364e-01\n", " Trained : CV=0.3225 mean=3.0686e-02\n", "\n", "======================================================================\n", "POST-TRAINING COHERENCE\n", "======================================================================\n", "\n", " ORIG: the cat is a small domesticated carnivorous mammal with soft fur.\n", " TRAINED: s cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat cat\n", "\n", " ORIG: Die geometrische Struktur der Sprache ist ein universeller Attraktor.\n", " TRAINED: Die geometrische Struktur der Sprache ist ein universeller Attraktor.\n", "\n", " ORIG: triangle is a polygon with three edges and three vertices.\n", " TRAINED: a twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist twist\n", "\n", " ORIG: seven is a prime number that comes after six and before eight.\n", " TRAINED: a two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two two\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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KCoqyu4xz4oxY8YYkow333zTZl5CQoJRqVIlo0aNGsbVq1cNw7j+9xIVFWUTv3fvXiMgIMBwcXExnnnmGWPgwIFGjx49DB8fHyM0NNTqWBuGYQQEBBhOTk52P+dWrVoZkox27dple58AAABwf6LoBwAAgCx58MEHDUnG3r17beatW7fO5kJv+ovO48ePtynUpffwww8bvr6+lukRI0YYkowxY8bYxG7atMmQZPzvf/+ztKVdYC9durRhNput4mfOnGlIMho0aGCzrrTtrF271tL22muv2RSz0qSkpBh+fn5G9erVrfY9K0W/jz/+2O58e0W/uXPnGpKMLl262F0mq9IX/bZv325IMkaPHm0YhmFs3rzZkGR89NFHhmHYL/r16NHDkGTMnTvXZt2zZ882JBk9evSwtKUVy77//nub+JEjR97Rol9G+vbta0iyKjZn9pklJiYa7u7uRpEiRWyKZYZhGE899ZTN9+Nmn3FWZVb0CwgIsCqiZcW4ceMMSUZkZKRVe2ZFv6lTp9qsJ23erl27LG03K/rZK8KWKFHCKFy4sGU6ISHBcHNzM4oWLWokJCRYxZrNZqN8+fK5tuiX0ev11183DOPmRb/0vzk3zouPj79pDmaz2fDy8jLq169v1Z6dv4+VK1cakoxWrVpZtV++fNlwd3c3JBmlSpWyWS7t+5DV143HIF++fEZQUJDdnP7++29DktGiRYub5n+jWy367dixw/Dw8DCKFi1qREdH28x/6623DFdXV2P37t2WtsyKfoZhGEeOHDEeeeQRq+NQpEgR4+OPP7YUDtOk/W7279/fqn3z5s2Gi4uLIclo2LBhtvYJAAAA9y+G9wQAAMBti4yMtHkekSTL0ImbN2+WJP3222/6559/bOISEhIUExOjmJgY+fr6aseOHVbLp1e7dm25u7tr586dNvOqVq1qM+RnsWLFJKU+L+pGafNOnTplaUvLdeXKlVqzZo3NMvny5bM87yo7atasmeXYLVu2SLI//N2teuihhxQaGqpp06ZpwIABmjp1qlxdXdWpU6cMl8nsc0gbai795/DHH39IkurWrWsTb68tJx06dEgRERFau3atTp48qcTERKv5p06dUokSJW66nn379ikhIUENGjSQh4eHzfwGDRro559/1s6dO232KTufcXZVq1bNMpznjc6dO6fRo0dr+fLlOnr0qK5cuWI1P/33+2aqV69u0xYcHCxJio2NzdI6fHx8LMMS3rieqKgoy/T+/fuVmJioGjVqyM3NzSrWZDKpTp062r9/f5a2OX36dKtnMt4KHx8fvfHGG1mKLV++/C39DqS52XEuWLCgpX3hwoX68ssvtX37dp0/f14pKSmWedn5bG/0119/SZLq1Klj1Z72/NTffvtNbdq0sVlu+vTp2X6uaG516NAhNW3aVCkpKZozZ458fX2t5kdFRenDDz/UsGHDVLly5Sytc8uWLWrVqpWqVKmibdu2qUKFCjpz5ow+++wzvf7669q4caPmzZtniR8xYoRWrFihDz/8UFFRUXr00Ud1+vRpLViwQBUrVtSuXbvk5OSUo/sNAACAexdFPwAAAGSJv7+/9u7dq1OnTqlChQpW84YNG6Zhw4ZJkubMmaOOHTtazf/vv/8kSZ9//nmm27h06ZJ8fX0VHx9v2eaNTCaT/P39dfLkSZt5Xl5eNm1pz2jKbF5ycrJNrll9fllW2duXjMTFxUmSgoKCcjSHHj166LXXXtPq1as1Z84cNW/e3OYid3rx8fFycnKy+wxHf39/mUwmy2eVlreTk5PddWZn/7Pr4MGDqlmzpuLj49WgQQM1b95cXl5ecnJyUmRkpNavX29TBMxIZt896XqhOP1+p7mT+5jRuv/77z898sgjOnbsmB577DGFhYXJx8dHzs7O2rlzp3744Ycs77uU+d9J+mJTZjJ6xpyLi4vMZrNlOu0YZvTsw+wcz7TnwN2OEiVKZLnod7uyepzHjRun/v37y8/PTw0bNlRwcLDy588vSZowYUK2PtsbXbx4UdL173R6Dz30UIZFv9vl7e1t+Y27Udp34naeU5hVhw8fVoMGDRQTE6Pvv//e5pl5V69eVdeuXVW1alUNHDgwS+tMTk5Whw4d5OTkpEWLFlluHChVqpTGjx+vw4cPa/78+dq0aZMee+wxSanF3q1bt2ro0KFavny5tmzZouLFi2vEiBEKCQlRhw4dcvT5oAAAALi3UfQDAABAltSpU0eRkZFat26d/ve//2Vr2bQL3Lt3785Sb4m0+LNnz9r0zjIMQ2fPnrV70TwnpK03Pj7eqrfN7bqxB2JmfHx8JMluYfN2PP/883rzzTfVrVs3xcfHq2fPnpnGe3l5yWw2Kzo62uai87lz52QYhtXn4O3tLbPZrJiYGJtC4dmzZ+1uw2Qy6erVq3bnxcXFZeni/0cffaTz58/rm2++sem5+NJLL2WrGJT+u2fPmTNnrOLSy85nnF0Zrfvrr7/WsWPHNHLkSA0ePNhq3ujRo/XDDz/csZxuV9oxPHfunN35GX0G9kRGRuZESrnK1atXNXLkSBUrVkw7d+60+hs0DEMffPDBba2/QIECklJvtrhRWg9LezceLF682G5P64yEhoaqVatWlumyZcsqKipKZ86cUUBAgFXsgQMHLDF30qFDh9SgQQOdPn1a8+fPV7NmzWxiLl68aMkno162tWvXliQtWrRIrVq10r59+3T48GE988wzGfYUXrx4sXbs2GEp+kmpx3nKlCk28Wk309SoUSPb+wgAAID7E0U/AAAAZEnXrl01evRoffXVV3r99dcz7SF2o1q1amnhwoWKiorKUtHvoYce0qJFixQZGWkzZOJvv/2mhIQEmyHpckqtWrW0fft2bd68WU899dRN452dnSVlvRdUVqTt86pVq/T888/n2HoLFy6sVq1aae7cuQoKClKjRo0yjX/ooYe0Y8cORUZGql27dlbz0oos6YdNrVatmrZv365ffvlFzzzzjFX8L7/8YncbhQoVslvcPHLkiGJjY7NU9EsbMrZly5ZW7YZhaNOmTTbxmX1mFSpUkLu7u7Zu3arLly/bXLi3t9+OlNG+Sxkf89yifPnycnNz07Zt25SYmGg1xKdhGFZDgd6PYmJiFBcXpyeffNKm6P7777/bDOOaXWk9trdt22bVfuLECUuh/I8//rAMO5pm8eLFmjFjRpa307VrV6uiX7169RQVFaVVq1apS5cuVrErV660xNwp6Qt+c+fOtfu3I0lubm4Z3hixYcMGHThwQC1atJCfn59CQkIkSUlJSZKk6Ohou8ultd84nK09aUOOuri43JEelwAAALg3MTA8AAAAsqRcuXJ66623dO7cOTVp0kQHDx60G2fvuV/du3dXwYIF9c477+jPP/+0mX/58mXLs/Qk6bnnnpOLi4vGjx9v9cyqpKQkDRgwQJLUrVu329uhDLzyyitycXFR3759dezYMZv5sbGxlmfdSamFNEk6fvx4juXQokULBQcHa9asWZaL4OndTg/A0aNHa9GiRVq8ePFNnxPVtWtXSdLw4cNthvFMe4ZjWowkde7cWVLqM6rS9x46efKkPv74Y7vbeOSRR3TkyBGr3nhJSUkKDw/P8j6l9QbduHGjVfvo0aO1Z88em/jMPjNXV1d17NhRMTExioiIsJq3YsUKrVy5UmXKlLHqpeNIGe37t99+q59++skRKWWZm5ub2rZtq7Nnz2rChAlW82bOnHlbz8y7FxQtWlT58+fX9u3bdfnyZUv7+fPn1bdv39tef/369eXj46Nvv/3W6u8kIiLCMgzrunXrbJabPn26DMPI8uvG5/91795dLi4uGjVqlNUwnzt37tR3332nBx98UI8//rjVMv/884/27dtnNRTzrUgb0vPUqVOaM2eOWrdunWFs/vz5NWXKFLuvtJtOBg0apClTplhuAqhcubK8vLy0adMmrVq1ymp9x48f15dffimTyWRV1ExOTrYp4JrNZvXv31/79+9X3759FRgYeFv7DQAAgPsHPf0AAACQZaNGjVJSUpLGjx+vChUq6IknnlC1atXk4eGhc+fOadeuXdqyZYs8PT2tekL5+fnpu+++07PPPqtq1aqpcePGqlChghITEy0Fnzp16mjFihWSpNKlS2vMmDHq16+fqlatqnbt2qlAgQL68ccftX//frVs2dJmGMecUrlyZX3xxRd6+eWXVb58eT399NMqXbq0Lly4oEOHDmn9+vXq1q2bJk2aJCm1t0xgYKDmzJkjNzc3BQcHy2QyqW/fvrf8XCo3NzfNmzdPjRs3VpMmTdS4cWNVq1ZN8fHx2rlzpy5fvmxVeMyOkJAQS6+Um3niiSfUt29fffrpp6pcubLatGkjwzD0/fff68SJE3rttdf0xBNPWOIbNGig7t27a9q0aapSpYpat26txMREzZ07V48++qiWLl1qs43w8HCtWrVKTz/9tDp27CgPDw/9/PPP8vHxsfusMXteeuklTZs2TW3atFG7du1UpEgRbd68Wdu3b1fTpk21bNkyq/ibfWZjxozR+vXr9d577+nXX39VrVq1dOTIEc2fP18eHh6aNm3aTQumd0vnzp01ZswY9e3bV+vWrVOJEiX0xx9/aM2aNXrmmWe0cOFCR6eYqYiICK1evVoDBw7U+vXr9dBDD2n//v1aunSpGjdurBUrVuSaY323OTk56ZVXXtG4ceNUrVo1NW/eXPHx8Vq+fLlKlChx24Wg/Pnza/To0XrppZdUt25dPfvss4qNjdX8+fPVqFEjJScn65NPPlFKSoq6du2aY71by5Urp2HDhmnw4MGqVq2a2rRpowsXLmjOnDmSpMmTJ9t85k8++aSOHj2qw4cPW/1+bdy40TIsZlovuo0bN1puCvH19dWHH35oiW/QoIGOHTumRx99VLt27dKuXbts8ksbUvNWuLm5aezYserdu7eaNGmiZs2aqUKFCjpz5owWLlyoixcvql+/fipXrpxlmbNnz6pSpUpq2LChSpYsqaSkJK1cuVL79u1T06ZNbW4+AAAAADJD0Q8AAABZ5uTkpHHjxqlTp06aNGmSNmzYoK1btyoxMVGFCxdWpUqVNHbsWHXp0sVmOLqmTZtqx44dGjt2rFavXq2ff/5ZBQoUUHBwsLp3725TxAsPD1eZMmU0fvx4zZo1S0lJSSpXrpzGjRun11577Y4+P+3FF19UaGioxo8frw0bNujHH3+Ut7e3HnjgAf3f//2fVe82Z2dnLVy4UAMGDNB3332nCxcuSJI6dep0y0U/KfVZUdu3b1dERIRWrlyp1atXq1ChQqpYsaJeeuml297HrPrkk0/00EMPaeLEifrqq68kSZUqVdKIESPUvXt3m/jJkyerXLlymjx5sj777DMFBwcrPDxc7dq1s1v0a9iwoebNm6cRI0bom2++UeHChfXss8/q/fffz9JQsFLqMKSrVq3S4MGDtXDhQjk7O6tOnTratGmTlixZYlP0u9ln5ufnp99++00jR47UDz/8oF9++UXe3t5q1aqVhg4dmuW87obg4GCtX79eb731llavXq2rV6/q4Ycf1qpVq3T8+PFcX/QrXry4oqKiNGDAAK1atUrr169X9erVtWrVKs2fP1+S/ecn3i8iIiJUuHBhTZ8+XV988YX8/f3VsWNHDRs2LEe+h71795aXl5fld9ZkMqlJkyaaPXu2zp8/r+7du+vTTz9VtWrVcnRI23feeUchISGaMGGCJk6cKFdXV9WtW1cjR47Uww8/nOX1HDx40Gao0X/++ccy7G2JEiWsin5Hjx6VJG3evNmqd3l6t1P0k6RevXqpZMmS+vjjj/Xrr79q2bJl8vT01MMPP6xevXrZDNns7e2tli1batOmTVq6dKny5cunypUra/LkyerRo8d9W/QGAADArTEZhmE4OgkAAAAAANJ7/PHHFRUVpbi4OHl6ejo6HQAAAADI9bhlDAAAAADgMKdPn7ZpmzVrljZt2qSwsDAKfgAAAACQRfT0AwAAAAA4TJEiRfTQQw+pYsWKcnZ21s6dOxUZGamCBQtq06ZNqlKliqNTBAAAAIA8gaIfAAAAAMBh3nnnHf344486duyYLl26JD8/PzVo0EDvvvuuKlSo4Oj0AAAAACDPoOgHAAAAAAAAAAAA5HE80w8AAAAAAAAAAADI4yj6AQAAAAAAAAAAAHkcRT8AAAAAAAAAAAAgj6PoBwAAAAAAAAAAAORxFP0AAAAAAAAAAACAPI6iHwAAAAAAAAAAAJDHUfQDAAAAAAAAAAAA8jiKfgAAAAAAAAAAAEAeR9EPAAAAAAAAAAAAyOMo+gEAAAAAAAAAAAB5HEU/AAAAAAAAAAAAII+j6AcAAAAAAAAAAADkcRT9AAAAAAAAAAAAgDyOoh8AAAAAAAAAAACQx1H0AwAAAAAAAAAAAPI4in4AAAAAAAAAAABAHkfRDwAAAAAAAAAAAMjjKPoBAAAAAAAAAAAAeRxFPwAAAAAAAAAAACCPo+gH3EEmk0nDhg275WX79OmTswkBd0D9+vVVv359R6cBAABuolu3bgoJCbmlZYcNGyaTyZSzCWXR7eQNAADuTyEhIerWrZuj07glV69e1VtvvaXixYvLyclJrVq1knR71xmzKqev8dzO+urXr6/KlSvnWC7A/YKiH3CLvvjiC5lMJtWqVcvRqQAAACAPM5lMWXpFRkY6OlUAAIAsmT59utV5jLu7u8qVK6c+ffro7Nmzjk4vV5s6darGjh2rtm3basaMGfq///s/R6cEIA9xcXQCQF41e/ZshYSEaMuWLTp48KDKlCnj6JQAAACQB33zzTdW0zNnztTPP/9s0/7ggw/e1nYmT54ss9l8S8sOHjxYAwcOvK3tAwCA+8+IESNUsmRJJSQkaOPGjZo4caJ++ukn7dmzRx4eHo5OL1dau3atgoKC9NFHH1m1X7lyRS4uXM4HkDl+JYBbcPjwYf36669auHChevfurdmzZ2vo0KGOTgvpJCQkyNXVVU5OdGi+XWazWUlJSXJ3d3d0KtmWl3MHANw/OnXqZDW9efNm/fzzzzbtN7p8+XK2Lpbly5fvlvKTJBcXFy4yAQCAbGvSpIlq1KghSXrhhRdUpEgRjR8/Xj/88IM6dux4W+vO7rlQbnH16lWZzWa5urranX/u3Dn5+PjYtHNtA0BWcDUcuAWzZ89WoUKF1LRpU7Vt21azZ8/O0nJpz0LZt2+f2rVrJy8vLxUpUkSvv/66EhIS7C6zePFiVa5cWW5ubqpUqZJWrFhhNf/o0aN65ZVXVL58eeXPn19FihTRs88+qyNHjmQpJ7PZrI8//lhVqlSRu7u7/Pz81LhxY/3++++WmKtXr2rkyJEqXbq03NzcFBISorfffluJiYlW6woJCVGzZs20ceNG1axZU+7u7ipVqpRmzpxpifn9999lMpk0Y8YMm1xWrlwpk8mkpUuXWtpOnjypHj16yN/f33IMpk6darVcZGSkTCaT5syZo8GDBysoKEgeHh6Kj4+XJM2fP18VK1aUu7u7KleurEWLFtl9NozZbNaECRNUqVIlubu7y9/fX71799b58+ezvZ9pYmNj9X//938KCQmRm5ubgoOD1aVLF8XExFhiEhMTNXToUJUpU0Zubm4qXry43nrrLZvja0/a+Obbtm1TnTp1lD9/fpUsWVKTJk2yic3qdtKeJzl79mxVqlRJbm5uNt+7zCQlJWnIkCGqXr26vL29VaBAAdWtW1fr1q2zxBiGoZCQELVs2dJm+YSEBHl7e6t37953PXcAAHKr9P/mP/HEE/Lw8NDbb78tSfrhhx/UtGlTBQYGys3NTaVLl9bIkSOVkpJitY4bz3+OHDkik8mkDz/8UF999ZXlXO+RRx7R1q1brZa190y/tH93b3a+KqWer9WoUUPu7u4qXbq0vvzyy9t6TuClS5fUr18/FS9eXG5ubipfvrw+/PBDGYZhFffzzz/r8ccfl4+Pjzw9PVW+fHnLcUvz6aefqlKlSvLw8FChQoVUo0YNffvtt7eUFwAAyNz//vc/Sak31KeZNWuWqlevrvz586tw4cLq0KGDjh8/brVcZudCWfHff/+pf//+qlKlijw9PeXl5aUmTZrojz/+sMRcvHhRBQoU0Ouvv26z/IkTJ+Ts7KyIiAhLW2xsrN544w3L+UiZMmU0ZswYq5EV0p9vTZgwwXK+9ddff9lsIy123bp1+vPPP22GeL/xmX5p51IHDx5Ut27d5OPjI29vb3Xv3l2XL1+2Wve0adP0v//9T0WLFpWbm5sqVqyoiRMnZvn43ehW15d2DW/u3Ll6++23FRAQoAIFCqhFixY2n3mav/76Sw0aNJCHh4eCgoL0wQcfWM3PynUo4H7CrZrALZg9e7aeeeYZubq6qmPHjpo4caK2bt2qRx55JEvLt2vXTiEhIYqIiNDmzZv1ySef6Pz58zZFo40bN2rhwoV65ZVXVLBgQX3yySdq06aNjh07piJFikiStm7dql9//VUdOnRQcHCwjhw5ookTJ6p+/fr666+/bnrHU8+ePTV9+nQ1adJEL7zwgq5evapffvlFmzdvtroTa8aMGWrbtq369eun3377TREREdq7d68WLVpktb6DBw+qbdu26tmzp7p27aqpU6eqW7duql69uipVqqQaNWqoVKlSmjdvnrp27Wq17Ny5c1WoUCE1atRIknT27Fk9+uijlgtKfn5+Wr58uXr27Kn4+Hi98cYbVsuPHDlSrq6u6t+/vxITE+Xq6qply5apffv2qlKliiIiInT+/Hn17NlTQUFBNseid+/emj59urp3767XXntNhw8f1meffaYdO3Zo06ZNVnfH32w/pdSTxbp162rv3r3q0aOHHn74YcXExGjJkiU6ceKEfH19ZTab1aJFC23cuFG9evXSgw8+qN27d+ujjz7S33//rcWLF2f6+UnS+fPn9fTTT6tdu3bq2LGj5s2bp5dfflmurq7q0aOHJGV7O2vXrtW8efPUp08f+fr62hRIMxMfH68pU6aoY8eOevHFF3XhwgV9/fXXatSokbZs2aLQ0FCZTCZ16tRJH3zwgf777z8VLlzYsvyPP/6o+Ph4S++Gu5k7AAC52b///qsmTZqoQ4cO6tSpk/z9/SWlPjPH09NT4eHh8vT01Nq1azVkyBDFx8dr7NixN13vt99+qwsXLqh3794ymUz64IMP9Mwzz+jQoUM37R2YlfPVHTt2qHHjxipWrJiGDx+ulJQUjRgxQn5+frd0HAzDUIsWLbRu3Tr17NlToaGhWrlypd58802dPHnSMhTWn3/+qWbNmqlq1aoaMWKE3NzcdPDgQW3atMmyrsmTJ+u1115T27ZtLTfi7dq1S7/99puee+65W8oPAABk7J9//pEky3nCqFGj9O6776pdu3Z64YUXFB0drU8//VRPPPGEduzYYdXjLaNzoaw4dOiQFi9erGeffVYlS5bU2bNn9eWXX6pevXr666+/FBgYKE9PT7Vu3Vpz587V+PHj5ezsbFn+u+++k2EYev755yWl9jKsV6+eTp48qd69e+uBBx7Qr7/+qkGDBun06dOaMGGC1fanTZumhIQE9erVS25ublbXQdL4+fnpm2++0ahRo3Tx4kVLgfFmQ7y3a9dOJUuWVEREhLZv364pU6aoaNGiGjNmjCVm4sSJqlSpklq0aCEXFxf9+OOPeuWVV2Q2m/Xqq69m+Tjm1PpGjRolk8mkAQMG6Ny5c5owYYLCwsK0c+dO5c+f3xJ3/vx5NW7cWM8884zatWunBQsWaMCAAapSpYqaNGkiKWvXoYD7igEgW37//XdDkvHzzz8bhmEYZrPZCA4ONl5//XWbWEnG0KFDLdNDhw41JBktWrSwinvllVcMScYff/xhtayrq6tx8OBBS9sff/xhSDI+/fRTS9vly5dtthsVFWVIMmbOnJnpvqxdu9aQZLz22ms288xms2EYhrFz505DkvHCCy9Yze/fv78hyVi7dq2lrUSJEoYkY8OGDZa2c+fOGW5ubka/fv0sbYMGDTLy5ctn/Pfff5a2xMREw8fHx+jRo4elrWfPnkaxYsWMmJgYq2136NDB8Pb2tuz7unXrDElGqVKlbI5HlSpVjODgYOPChQuWtsjISEOSUaJECUvbL7/8YkgyZs+ebbX8ihUrbNqzup9DhgwxJBkLFy40bpR2fL/55hvDycnJ+OWXX6zmT5o0yZBkbNq0yWbZ9OrVq2dIMsaNG2dpS0xMNEJDQ42iRYsaSUlJ2d6OJMPJycn4888/M912+hzq1atnmb569aqRmJhoFXP+/HnD39/f6vPdv3+/IcmYOHGiVWyLFi2MkJCQWzpG2c0dAIDc6NVXXzVu/F+1tH/zJ02aZBNv73ywd+/ehoeHh5GQkGBp69q1q9X5z+HDhw1JRpEiRazOy3744QdDkvHjjz9a2tLOY9PL6vlq8+bNDQ8PD+PkyZOWtgMHDhguLi4267TnxrwXL15sSDLee+89q7i2bdsaJpPJks9HH31kSDKio6MzXHfLli2NSpUq3TQHAACQPdOmTTMkGatXrzaio6ON48ePG3PmzDGKFCli5M+f3zhx4oRx5MgRw9nZ2Rg1apTVsrt37zZcXFys2jM7F7KnRIkSRteuXS3TCQkJRkpKilXM4cOHDTc3N2PEiBGWtpUrVxqSjOXLl1vFVq1a1erax8iRI40CBQoYf//9t1XcwIEDDWdnZ+PYsWOWbUgyvLy8jHPnzmUp93r16tk9P8noOmP6ay2GYRitW7c2ihQpYtVm73yxUaNGRqlSpWy2nX4/M3Kr60u7hhcUFGTEx8db2ufNm2dIMj7++GOrZW+8vpmYmGgEBAQYbdq0sbRl9ToUcL9geE8gm2bPni1/f381aNBAUmrX+vbt22vOnDk2Qyhl5MY7Xvr27StJ+umnn6zaw8LCVLp0act01apV5eXlpUOHDlna0t/9kpycrH///VdlypSRj4+Ptm/fnmke33//vUwmk93nEaYNtZSWU3h4uNX8fv36SZKWLVtm1V6xYkXVrVvXMu3n56fy5ctb5dy+fXslJydr4cKFlrZVq1YpNjZW7du3l5R6B/f333+v5s2byzAMxcTEWF6NGjVSXFyczf517drV6nicOnVKu3fvVpcuXeTp6Wlpr1evnqpUqWK17Pz58+Xt7a2nnnrKalvVq1eXp6enzZAAWdnP77//XtWqVVPr1q11o7TjO3/+fD344IOqUKGC1XbThrvIylAELi4uVkNhurq6qnfv3jp37py2bdt2S9upV6+eKlaseNNt2+Ps7GwZl95sNuu///7T1atXVaNGDavPrFy5cqpVq5bV8Lj//fefli9frueff/6Wj9Ht5A4AQG7m5uam7t2727SnP/+5cOGCYmJiVLduXV2+fFn79u276Xrbt2+vQoUKWabTznHSn9dk5GbnqykpKVq9erVatWqlwMBAS1yZMmUsd2dn108//SRnZ2e99tprVu39+vWTYRhavny5JFl6Bvzwww9Ww2yl5+PjoxMnTtgMZwoAAHJGWFiY/Pz8VLx4cXXo0EGenp5atGiRgoKCtHDhQpnNZrVr187q//cDAgJUtmxZm//fz+hcKCvc3Nzk5JR6KTwlJUX//vuvZejv9NcqwsLCFBgYaHWtYs+ePdq1a5fV85bnz5+vunXrqlChQla5h4WFKSUlRRs2bLDafps2bW55lIObeemll6ym69atq3///dfy2BvJ+nwxLi5OMTExqlevng4dOqS4uLhsb/N219elSxcVLFjQMt22bVsVK1bM5tqop6en1XF3dXVVzZo1rc5Ts3odCrhfMLwnkA0pKSmaM2eOGjRoYDX2eK1atTRu3DitWbNGDRs2vOl6ypYtazVdunRpOTk52TyH74EHHrBZtlChQlbPmLty5YoiIiI0bdo0nTx50uo5Jjf7R/aff/5RYGCg3SEF0hw9elROTk4qU6aMVXtAQIB8fHx09OjRbOdcrVo1VahQQXPnzlXPnj0lpQ7t6evraynkREdHKzY2Vl99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EjVr1kzdunVT9erVdenSJe3evVsLFizQkSNHbHoQOkrDhg3l6uqq5s2bq3fv3rp48aImT56sokWL6vTp0w5ZX+HChfX444+re/fuOnv2rCZMmKAyZcroxRdfzHY+2b0OBdzrKPoBWZT20N6nnnrK7nwnJyfLMIX//vtvpkW3uXPnasiQIRo4cKBcXFzUp08fjR079pby+vjjj+Xs7KzZs2crISFBjz32mFavXq1GjRplaflp06apatWq+vrrr/Xmm2/K29tbNWrUUJ06dSwxU6ZMUalSpTR9+nQtWrRIAQEBGjRo0G13k2/fvr0GDx6sy5cv2y2U+vv7a8uWLRoxYoQWLlyoL774QkWKFFGlSpU0ZsyYLG2jefPm+u677zRs2DANHDhQZcuW1fTp0zVjxgz9+eefVrGTJk1S9erV9eWXX+rtt9+Wi4uLQkJC1KlTJz322GPZ3j9PT0/98ssvGjp0qBYtWqQZM2aoaNGievLJJxUcHCwp9XuzePFiffTRR5o5c6YWLVokDw8PlSpVSq+//nqWhrcoVKiQZsyYob59+2ry5Mny9/fXZ599ZnWilBPbyapu3brpzJkz+vLLL7Vy5UpVrFhRs2bN0vz58+2Ore/q6qr27dvriy++UOfOnW3m383cAQDIa4oUKaKlS5eqX79+Gjx4sAoVKqROnTrpySefzPL54J1WvXp1LV++XP3799e7776r4sWLa8SIEdq7d69lSM7scHJy0pIlSzRkyBDNnTtX06ZNU0hIiMaOHat+/fpZ4lq0aKEjR45o6tSpiomJka+vr+rVq6fhw4dbnsnTu3dvzZ49W+PHj9fFixcVHBys1157TYMHD86x/QcAABkbOHCgypUrp48++sgyElXx4sXVsGHDDG+8vxVvv/22Ll26pG+//VZz587Vww8/rGXLlmngwIF24/39/dWwYUP99NNPdq9VeHh4aP369Xr//fc1f/58zZw5U15eXipXrpzVuUZuUL58eS1YsECDBw9W//79FRAQoJdffll+fn7q0aOHQ9b39ttva9euXYqIiNCFCxf05JNP6osvvpCHh0e288nudSjgXmcyctMtoMA9btiwYRo+fLiio6Nzzd0+96vQ0FD5+fnp559/dnQqt6V+/fqKiYm56bMDc7v/+7//09dff60zZ87c0gkeAADIe1q1aqU///zT5pkuAAAAuUHr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l1tvvZV169bR1NSE67qDzr/55ptjVpyIiIjIsSidThMKhQB4/PHH+dCHPgTAggULqK+vz2VpE0dfpx+dnYNCPxEREZkcivp+wEf20wpbE59+jUREJNcOOfT79Kc/zVNPPcXll1/OlClT9C8zERERkTF24oknsnbtWi6++GIee+wxbrnlFgDq6uq0pFO//m8E9oV+oNBPRERkMvnhD3+Y6xJEREREjjqHHPo9/PDDPPTQQ5x99tnjUY+IiIjIMe+2227jwx/+MN/5zne48sorOeWUUwD43e9+l13285jX3+nX0UFFhf+yuTln1YiIiIiIiIiI5Jx5qBeUlJRoDz8RERGRcfSOd7yDlpYWWlpauO+++7LHP/OZz7B27docVjaBqNNPRETkmPJf//Vf/P3f/z1nnHEGp59++qCHTGx33nknM2fOJBwOs2zZMp5//vkRx95zzz2ce+65lJSUUFJSwoUXXjhkfGNjI1dddRU1NTVEo1He+973snXr1kFj7r77bt7xjndQWFiIYRh0dHQMudfMmTMxDGPQ49Zbbx22rm3btlFQUEBx/w+eiYiITFCHHPrdcsstrFq1ilgsNh71iIiIiBzz4vE4yWSSkpISAHbt2sWaNWvYsmULlZWVOa5ughjQ6afQT0REZHL793//d66++mqqqqp46aWXWLp0KWVlZbz55pu8733vy3V5cgAPPPAAK1as4MYbb+TFF1/klFNO4aKLLqKpqWnY8U8++SSXXXYZTzzxBOvXr2f69Om85z3vYd++fQB4nsfy5ct58803+e1vf8tLL71EbW0tF154Ib29vdl5YrEY733ve/nyl798wPq+/vWvU19fn318/vOfHzImnU5z2WWXce65576Nr4SIiMiRMarlPU877bRBe/dt27aNqqoqZs6cSSAQGDT2xRdfHNsKRURERI4xf/d3f8dHPvIRPvvZz9LR0cGyZcsIBAK0tLRwxx138E//9E+5LjH31OknIiJyzPi///f/cvfdd3PZZZfxox/9iH/9139l9uzZrFq1ira2tlyXJwdwxx13cM0113D11VcDsHbtWh566CHuu+8+brjhhiHjf/rTnw56/4Mf/IBf/epXrFu3jiuuuIKtW7fy3HPPsXHjRk488UQA7rrrLqqrq/n5z3/Opz/9aQC++MUvAn6IeCAFBQVUV1cfcMxXv/pVFixYwAUXXMCzzz47mo8tIiKSM6MK/ZYvXz7OZYiIiIhIvxdffJHvfve7gL+UVf9Ptf/qV79i1apVCv1AnX4iIiLHkN27d3PWWWcBEIlE6O7uBuDyyy/njDPO4Pvf/34uy8utAd1tQ1gWhMOjG2uaEIkceGxe3iGVlkql2LBhAytXrhxwG5MLL7yQ9evXj2qOWCxGOp3ObjWUTCYBCA/4XKZpEgqFeOaZZ7Kh32jdeuut3HLLLcyYMYNPfOITXH/99dj2/m+X/ulPf+KXv/wlL7/8Mr/+9a8PaW4REZFcGFXod+ONN453HSIiIiLSJxaLUVBQAMAf//hHPvKRj2CaJmeccQa7du3KcXUTxDCdfs3NuStHRERExk91dTVtbW3U1tYyY8YMnnvuOU455RR27NiB53m5Li+38vNHPvf+98NDD+1/X1kJI23Xc/75MLArbubMoT9RdYhf65aWFhzHoaqqatDxqqoqNm/ePKo5vvSlL1FTU8OFF14IwIIFC5gxYwYrV67kP/7jP8jLy+O73/0ue/fupb6+/pDqu+666zj99NMpLS3l2WefZeXKldTX13PHHXcA0NraylVXXcX/+3//j8LCwkOaW0REJFcOeU+/fi+88AI/+clP+MlPfsKGDRvGsiYRERGRY9rcuXN58MEH2bNnD48++ijvec97AGhqatI3HPoN6PSrqPBfqtNPRERkcnrXu97F7373OwCuvvpqrr/+et797ndz6aWX8uEPf/iw5rzzzjuZOXMm4XCYZcuW8fzzz4849rXXXuOjH/0oM2fOxDAM1qxZM2TMTTfdhGEYgx4LFiw4rNrEd+utt3L//ffzm9/8JtvZFwgE+PWvf80bb7xBaWkp0WiUJ554gve9732Y5qF9m3PFihW84x3v4OSTT+azn/0s//Zv/8b3vve9bDfhNddcwyc+8QnOO++8Mf9sIiIi42VUnX4D7d27l8suu4w///nPFPd9s6Wjo4OzzjqL+++/n2nTpo11jSIiIiLHlFWrVmWXF3rXu97FmWeeCfhdf6eddlqOq5sgBnb6lXmAQUuL/wPoA7aiFhERkUng7rvvxnVdAD73uc9RVlbGs88+y4c+9CH+1//6X4c83wMPPMCKFStYu3Yty5YtY82aNVx00UVs2bKFysrKIeNjsRizZ8/mkksu4frrrx9x3hNPPJHHH388+37gMpHjpqdn5HOWNfh9U9PIY98amO3cedgl9SsvL8eyLBobGwcdb2xsPOg+erfffju33norjz/+OCeffPKgc4sWLeLll1+ms7OTVCpFRUUFy5YtY/HixW+r3mXLlpHJZNi5cyfz58/nT3/6E7/73e+4/fbbAfA8D9d1sW2bu+++m0996lNv634iIiLj4ZD/9vHpT3+adDrN66+/zvz58wHYsmULV199NZ/+9Kd55JFHxrxIERERkWPJxz72Mc455xzq6+s55ZRTsscvuOCCw/5p9kmnv9PPcSiP9AL5pFL+9736VkYVERGRScI0zUFdXB//+Mf5+Mc/ftjz3XHHHVxzzTVcffXVAKxdu5aHHnqI++67jxtuuGHI+CVLlrBkyRKAYc/3s237oGHWmDuUffbGa+wIgsEgixYtYt26dSxfvhwA13VZt24d11577YjXffvb3+ab3/wmjz766AGDvKK+HwLbunUrL7zwArfccsvbqvfll1/GNM1s8Lt+/Xocx8me/+1vf8ttt93Gs88+y9SpU9/WvURERMbLIYd+Tz31FM8++2w28AOYP38+3/ve9zj33HPHtDgRERGRY1V1dTXV1dXs3bsXgGnTprF06dIcVzWBRKP+T687DtF0J5FIPvG4v8SnQj8REREZSSqVYsOGDaxcuTJ7zDRNLrzwQtavX/+25t66dSs1NTWEw2HOPPNMVq9ezYwZM4Ydm0wms8tIAnR1db2te09UK1as4Morr2Tx4sUsXbqUNWvW0Nvbmw1cr7jiCqZOncrq1asBuO2221i1ahU/+9nPmDlzJg0NDQDk5+eT37d/4S9/+UsqKiqYMWMGr776Kl/4whdYvnx5dkl8gIaGBhoaGti2bRsAr776KgUFBcyYMYPS0lLWr1/PX/7yF975zndSUFDA+vXruf766/mHf/gHSkpKADj++OMHfZYXXngB0zRZuHDh+H7RRERE3oZD3tNv+vTppNPpIccdx6GmpmZMihIRERE5lrmuy9e//nWKioqora2ltraW4uJibrnlluzSVsc8w9i/xGdHB+Xl/svm5tyVJCIiIhNfS0sLjuNQVVU16HhVVVU2YDocy5Yt40c/+hGPPPIId911Fzt27ODcc8+lu7t72PGrV6+mqKgo+5g+ffph33siu/TSS7n99ttZtWoVp556Ki+//DKPPPJI9uu/e/du6uvrs+PvuusuUqkUH/vYx5gyZUr20b/EJkB9fT2XX345CxYs4LrrruPyyy/n5z//+aD7rl27ltNOO41rrrkGgPPOO4/TTjstuzdkKBTi/vvv5/zzz+fEE0/km9/8Jtdffz133333eH9JRERExtUhd/p95zvf4fOf/zx33nlntsX+hRde4Atf+MKgfwGLiIiIyOH5yle+wr333sutt97K2WefDcAzzzzDTTfdRCKR4Jvf/GaOK5wgiouhrc3f168c9uzxO/1EREREjrT3ve992dcnn3wyy5Yto7a2ll/84hf84z/+45DxK1euZMWKFdn3XV1dkzb4u/baa0dczvPJJ58c9H7nKPYSvO6667juuusOOOamm27ipptuGvH86aefznPPPXfQew101VVXcdVVVx3SNSIiIkfaIYd+V111FbFYjGXLlmU3JM5kMti2zac+9alBm9i2tbWNXaUiIiIix4gf//jH/OAHP+BDH/pQ9tjJJ5/M1KlT+ed//meFfv0GdPpVVPgvFfqJiIjIgZSXl2NZFo2NjYOONzY2jul+fMXFxRx33HHZ5SXfKhQKEQqFxux+IiIiInAYod+aNWvGoQwRERER6dfW1saCBQuGHF+wYIF+qGqg4mL/ua/TDxT6iYiIyIEFg0EWLVrEunXrWL58OeAvrb5u3boRu9EOR09PD9u3b+fyyy8fszlFREREDuaQQ78rr7xyPOoQERERkT6nnHIK3//+9/n3f//3Qce///3vc/LJJ+eoqglomD39FPqJiIhMDqeddhqGYYxq7IsvvnhIc69YsYIrr7ySxYsXs3TpUtasWUNvby9XX301AFdccQVTp05l9erVAKRSKTZt2pR9vW/fPl5++WXy8/OZO3cuAP/yL//CBz/4QWpra6mrq+PGG2/Esiwuu+yyQ6pNRERE5O0YVejX1dU16gkLCwsPuxgRERERgW9/+9tcfPHFPP7445x55pkArF+/nj179vCHP/xhTO+1b98+vvSlL/Hwww8Ti8WYO3cuP/zhD7N7N09o6vQTERGZtPq78MbDpZdeSnNzM6tWraKhoYFTTz2VRx55hKqqKgB2796NaZrZ8XV1dZx22mnZ97fffju33347559/fnZPur1793LZZZfR2tpKRUUF55xzDs899xwV/WuQi4iIiBwBowr9iouLD/rTVZ7nYRgGjuOMSWEiIiIix6rzzz+fN954gzvvvJPNmzcD8JGPfITPfOYzfOMb3+Dcc88dk/u0t7dz9tln8853vpOHH36YiooKtm7dSklJyZjMP+4GdvrV+i+bm3NXjoiIiIydG2+8cVznv/baa0dczrM/yOs3c+ZMPM874Hz333//WJU2ooPVILmnXyMREcm1UYV+TzzxxKgme/XVV99WMSIiIiLiq6mp4Zvf/OagY6+88gr33nsvd99995jc47bbbmP69On88Ic/zB6bNWvWmMx9RAzo9Ov/IXp1+omIiMhkEwgEAIjFYkQikRxXIwcSi8WA/b9mIiIiR9qoQr/zzz9/xHPd3d38/Oc/5wc/+AEbNmwY002PRURERGT8/O53v+Oiiy7ikksu4amnnmLq1Kn88z//M9dcc82w45PJJMlkMvv+UJaAHxf9nX5a3lNERGRScxyH7373u/ziF79g9+7dpFKpQefb2tpyVNmRYVkWxcXFNDU1ARCNRke936EcGZ7nEYvFaGpqori4GMuycl2SiIgco0YV+g3n6aef5t577+VXv/oVNTU1fOQjH+HOO+8cy9pEREREZBy9+eab3HXXXaxYsYIvf/nL/PWvf+W6664jGAxy5ZVXDhm/evVqbr755hxUOoL+Tr+ODoV+IiIik9jNN9/MD37wA/6//+//46tf/Spf+cpX2LlzJw8++CCrVq3KdXlHRHV1NUA2+JOJqbi4OPtrJSIikguHFPo1NDTwox/9iHvvvZeuri7+/u//nmQyyYMPPsgJJ5wwXjWKiIiIyDhwXZfFixfzrW99C4DTTjuNjRs3snbt2mFDv5UrV7JixYrs+66uLqZPn37E6h1imE6/tjZwHNAPV4uIiEweP/3pT7nnnnu4+OKLuemmm7jsssuYM2cOJ598Ms899xzXXXddrkscd4ZhMGXKFCorK0mn07kuR4YRCATU4SciIjk36tDvgx/8IE8//TQXX3wxa9as4b3vfS+WZbF27drxrE9ERETkmPGRj3zkgOc7OjrG9H5TpkwZ8oNbxx9/PL/61a+GHR8KhQiFQmNaw9syoNOvrMx/6brQ3k42BBQREZGjX0NDAyeddBIA+fn5dHZ2AvCBD3yAr33ta7ks7YizLEvBkoiIiIxo1KHfww8/zHXXXcc//dM/MW/evPGsSUREROSYVNTfuXaA81dcccWY3e/ss89my5Ytg4698cYb1NbWjtk9xtWATr9AwH/b2ekv8anQT0REZPKYNm0a9fX1zJgxgzlz5vDHP/6R008/nb/+9a8T6weSRERERHJs1KHfM888w7333suiRYs4/vjjufzyy/n4xz8+nrWJiIiIHFN++MMfHtH7XX/99Zx11ll861vf4u///u95/vnnufvuu7n77ruPaB2HbUCnH0BFxf7QT0RERCaPD3/4w6xbt45ly5bx+c9/nn/4h3/g3nvvZffu3Vx//fW5Lk9ERERkwhh16HfGGWdwxhlnsGbNGh544AHuu+8+VqxYgeu6PPbYY0yfPp2CgoLxrFVERERExtCSJUv4zW9+w8qVK/n617/OrFmzWLNmDZ/85CdzXdro9Hf69fZCJkN5uc22bQr9REREJptbb701+/rSSy9lxowZrF+/nnnz5vHBD34wh5WJiIiITCyjDv365eXl8alPfYpPfepTbNmyhXvvvZdbb72VG264gXe/+9387ne/G486RURERGQcfOADH+ADH/hArss4PAOXQ+3spLzc39hPoZ+IiMjkduaZZ3LmmWfmugwRERGRCeeQQ7+B5s+fz7e//W1Wr17N73//e+67776xqktERERE5MACAYhGIRZT6CciIjLJbd26lSeeeIKmpiZc1x10btWqVTmqSkQkt4ybb851CTnn3XhjrksQmVDeVujXz7Isli9fzvLly8diOhERERGR0Sku9kO/jg7Ky/1Dzc05rUhERETG2D333MM//dM/UV5eTnV1NYZhZM8ZhqHQT0RERKTPmIR+IiIiIiI5UVQEdXXQ2UlFhX9InX4iIiKTyze+8Q2++c1v8qUvfSnXpYiIiIhMaGauCxAREREROWzFxf7zgE4/hX4iIiKTS3t7O5dcckmuyxARERGZ8BT6iYiIiMjRq6jIf+7sVOgnIiIySV1yySX88Y9/zHUZIiIiIhOelvcUERE5DJ7r+s94ZJJJHMfBcxwcJ4PnuHiemx3rOg6eB+lEHM918fDAA8/z/Bk8wPP6jved63vteX13ectxfzz+fQ5rLv963vLan4cBYwbXeqB79c9/oHv1z39IX+sRrqldeArVc4875PlkkukP/To6KO/77aDQT0REZHKZO3cuX/va13juuec46aSTCAQCg85fd911OapMREREZGJR6CciIscE13FIJ5N4novrOGSSSVLxGKlEAsMwMAwD13VIJ5KkkwlcJ4OTTpPJpHHS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1lLupQ8Vb31JRERERA0Tk34W5KhUYui0N+DfpgMcOWImIiKies7b2xv29vbIycmRLc/JyYGvr69J/ZkzZ2LKlCnS8/z8fLRq1crq/SSi6ikU5Ze1vJfkpOGymJ6eVusaERERERER1REzd1SoeytWrEBgYCCcnJwQEhKCgwcPVll/8+bN6NSpE5ycnBAcHIyffvqpjnpavYCOXZnwIyIiogZBqVSid+/eSEpKkpbpdDokJSUhNDTUpL5KpYK7u7usEBERERERERFR/WDzpN+mTZswZcoUzJs3D0eOHEH37t0RHh6O69evm63/66+/YtSoURg9ejSOHj2KESNGYMSIETh58mQd95yIiIio4ZsyZQrWrFmD9evX48yZMxg3bhwKCwsRExNj664REREREREREdE9sHnSb+nSpRgzZgxiYmLw0EMPYdWqVXB2dsYXX3xhtv6yZcsQERGBqVOnonPnznj//ffRq1cvfPLJJ3XccyIiIqKGLzIyEv/4xz8wd+5c9OjRA+np6UhISICPj4+tu0ZERERERERERPfApkm/kpISpKWlISwsTFpmZ2eHsLAwpKSkmN0mJSVFVh8AwsPDK61PRERERFWbMGECLl26BI1Gg9TUVISEhNi6S0REREREREREdI8cbLnzGzduQKvVmvyS3MfHB2fPnjW7TXZ2ttn62dnZZutrNBpoNBrpeX5+/n32moiIiIiIiIiIiIiIiKh+sfnlPa0tNjYWHh4eUmnVqpWtu0RERERERERERERERERkUTZN+nl7e8Pe3h45OTmy5Tk5OfD19TW7ja+v7z3VnzlzJm7fvi2VK1euWKbzRERERERERERERERERPWETZN+SqUSvXv3RlJSkrRMp9MhKSkJoaGhZrcJDQ2V1QeAxMTESuurVCq4u7vLChEREREREREREREREdGDxKb39AOAKVOmIDo6Gn369EHfvn3x8ccfo7CwEDExMQCAl156CS1atEBsbCwAYNKkSRg4cCCWLFmCYcOGIT4+HocPH8bq1atteRhERERERERERERERERENmPzpF9kZCT+/PNPzJ07F9nZ2ejRowcSEhLg4+MDALh8+TLs7MonJD7yyCPYuHEjZs+ejVmzZiEoKAhbt25F165dbXUIRERERERERERERERERDZl08t7GkyYMAGXLl2CRqNBamoqQkJCpHXJyclYt26d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MelHRERERERERERERERE1MAx6UdERERERERERERERETUwDHpR0RERERERERERERERNTAMelHRERERERERERERERE1MAx6UdERERERERERERERETUwDHpR0RERERERERERERERNTAMelHRERERERERERERERE1MAx6UdERERERERERERERETUwP1/0NOLYy5d4E0AAAAASUVORK5CYII=\n" }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "Saved: /content/modulator_training.png\n", "\n", "======================================================================\n", "FINAL SUMMARY\n", "======================================================================\n", "Model: google-t5/t5-small\n", "Trainable params: 2,088,966 (3.452% of T5)\n", "Epochs: 100, Time: 1440s\n", "\n", "Final alpha per layer: [0.03460158 0.0613286 0.10201854 0.13679637 0.19678868 0.21778211]\n", "Mean alpha: 0.124886\n", "|α - 0.29154| = 0.166654\n", "\n", "Pearson: orig=0.0993 trained=0.1735 Δ=+0.0742\n", "Per-token preservation: 0.3794\n" ] } ] }, { "cell_type": "markdown", "source": [ "# day 2 geometric modulation" ], "metadata": { "id": "fqn1txN_SAr2" } }, { "cell_type": "code", "source": [ "\"\"\"\n", "GeometricFieldModulator\n", "=======================\n", "\n", "Multi-expert geometric field constraints on transformer residual dynamics.\n", "\n", "Architecture:\n", " Multiple KSimplexChannel experts (different k) measure different scales\n", " of geometric coherence. Each produces a validity gate. The residual stream\n", " is multiplicatively modulated — valid regions pass, invalid regions are\n", " suppressed. The model naturally migrates toward the valid manifold.\n", "\n", "Principle:\n", " The geometry doesn't add a delta. It constrains the delta.\n", " Features × Π(sigmoid(expert_gates)) = constrained features.\n", "\n", "Safeguards:\n", " - Validity monitoring via CM determinants at every layer\n", " - Null space preservation (configurable fraction of dims untouched)\n", " - Per-layer per-expert learned alpha with sigmoid clamping\n", " - Gradient scaling on geometric params to prevent runaway\n", " - Health metrics computed without inference for diagnostics\n", " - Early stopping criteria based on CV drift from universal band\n", "\n", "Grounded in measurements from 2026-03-05:\n", " - Pentachoron CV universal band: 0.20–0.23\n", " - Participation ratio / dim: ~0.53–0.56\n", " - Q sparsity: 93–99% (the null space the model carved for us)\n", " - Depth gradient: monotonically increasing alpha (low early, high late)\n", " - Phase boundary at 0.29154 (binding/separation constant)\n", " - Best result: Pearson +152%, CV stayed in band, coherence preserved\n", "\n", "Authors: AbstractPhil + Claude\n", "License: Apache 2.0\n", "\"\"\"\n", "\n", "import math\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "from itertools import combinations\n", "from typing import Tuple, Dict, Optional, List, NamedTuple\n", "from dataclasses import dataclass\n", "\n", "\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "# CONFIGURATION\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "\n", "@dataclass\n", "class FieldModulatorConfig:\n", " \"\"\"Configuration for GeometricFieldModulator.\"\"\"\n", " d_model: int = 512\n", " vocab_size: int = 32128\n", " n_layers: int = 6\n", "\n", " # Expert configuration — each expert is a KSimplexChannel at different k\n", " expert_ks: Tuple[int, ...] = (1, 2, 4) # edge, triangle, pentachoron\n", " expert_edim: int = 8 # simplex embedding dimension\n", "\n", " # Alpha configuration\n", " initial_alpha: float = 0.01 # start quiet\n", " alpha_max: float = 0.35 # hard ceiling — never exceed binding/separation boundary\n", " alpha_min: float = 0.001 # floor — always some geometric signal\n", " per_layer_per_expert: bool = True # full granularity\n", "\n", " # Null space preservation\n", " null_space_fraction: float = 0.25 # 25% of dims untouched by modulator\n", " null_space_position: str = \"tail\" # \"tail\" = last 25%, \"random\" = scattered\n", "\n", " # Safeguards\n", " gradient_scale: float = 0.1 # scale gradients on geometric params\n", " cv_target: float = 0.21 # universal pentachoron CV target\n", " cv_tolerance: float = 0.05 # alert if CV drifts outside [0.16, 0.26]\n", " deform_scale: float = 0.05 # simplex deformation magnitude\n", "\n", " # Monitoring\n", " track_validity: bool = True # track CM volumes per expert per layer\n", " track_cv: bool = True # periodic CV measurement\n", "\n", "\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "# CAYLEY-MENGER VALIDATOR — batch-friendly, differentiable\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "\n", "class CMValidator(nn.Module):\n", " \"\"\"\n", " Cayley-Menger determinant for k-simplex volume computation.\n", "\n", " Input: (..., n_vertices, embed_dim)\n", " Output: d2_pairs (..., n_pairs), vol2 (...,)\n", "\n", " For k=4: 5 vertices → 10 pairwise d² + 1 vol² = 11 geometric features.\n", " \"\"\"\n", "\n", " def __init__(self, k: int):\n", " super().__init__()\n", " self._k = k\n", " self._nv = k + 1\n", "\n", " pairs = list(combinations(range(self._nv), 2))\n", " self._npairs = len(pairs)\n", " self.register_buffer(\"_pi\", torch.tensor([p[0] for p in pairs], dtype=torch.long))\n", " self.register_buffer(\"_pj\", torch.tensor([p[1] for p in pairs], dtype=torch.long))\n", "\n", " sign = (-1.0) ** (k + 1)\n", " fact = math.factorial(k)\n", " self._prefactor = sign / ((2.0 ** k) * (fact ** 2))\n", "\n", " @property\n", " def n_pairs(self):\n", " return self._npairs\n", "\n", " @property\n", " def out_dim(self):\n", " return self._npairs + 1 # d² pairs + vol²\n", "\n", " def forward(self, verts: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]:\n", " \"\"\"\n", " Args:\n", " verts: (..., n_vertices, embed_dim)\n", " Returns:\n", " d2_pairs: (..., n_pairs)\n", " vol2: (...,)\n", " \"\"\"\n", " # Gram matrix → pairwise squared distances\n", " gram = torch.einsum(\"...ve,...we->...vw\", verts, verts)\n", " norms = torch.diagonal(gram, dim1=-2, dim2=-1)\n", " d2_mat = norms.unsqueeze(-1) + norms.unsqueeze(-2) - 2 * gram\n", " d2_mat = F.relu(d2_mat) # numerical safety\n", "\n", " d2_pairs = d2_mat[..., self._pi, self._pj]\n", "\n", " # Bordered distance matrix → determinant → volume\n", " shape = d2_mat.shape[:-2]\n", " V = d2_mat.shape[-1]\n", " cm = torch.zeros(*shape, V + 1, V + 1, device=d2_mat.device, dtype=d2_mat.dtype)\n", " cm[..., 0, 1:] = 1.0\n", " cm[..., 1:, 0] = 1.0\n", " cm[..., 1:, 1:] = d2_mat\n", "\n", " vol2 = self._prefactor * torch.linalg.det(cm)\n", "\n", " return d2_pairs, vol2\n", "\n", "\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "# SIMPLEX TEMPLATE FACTORY — deterministic, frozen\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "\n", "def build_regular_simplex(k: int, edim: int) -> torch.Tensor:\n", " \"\"\"\n", " Build a regular k-simplex with k+1 vertices in edim dimensions.\n", " All edges have equal length. Centered at origin.\n", "\n", " Returns: (k+1, edim) tensor\n", " \"\"\"\n", " nv = k + 1\n", " if edim < k:\n", " raise ValueError(f\"edim ({edim}) must be >= k ({k})\")\n", "\n", " # Regular simplex construction via diagonal formula\n", " verts = torch.zeros(nv, edim)\n", " for i in range(nv):\n", " for j in range(min(i, edim)):\n", " if j < i:\n", " verts[i, j] = 0.0\n", " if i < edim:\n", " # Diagonal element\n", " verts[i, i] = math.sqrt((k + 1) / k) if i == 0 else math.sqrt(\n", " (k + 1) / (k * (1 + 1 / (i + 1)))\n", " )\n", " # Off-diagonal correction\n", " for prev in range(i):\n", " verts[i, prev] = -1.0 / (k * verts[prev, prev]) if verts[prev, prev] != 0 else 0\n", "\n", " # Center at origin\n", " centroid = verts.mean(dim=0)\n", " verts = verts - centroid\n", "\n", " # Normalize edge lengths to 1\n", " if nv >= 2:\n", " edge_len = (verts[0] - verts[1]).norm()\n", " if edge_len > 1e-8:\n", " verts = verts / edge_len\n", "\n", " return verts\n", "\n", "\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "# K-SIMPLEX CHANNEL EXPERT — geometric features per position\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "\n", "class KSimplexChannelExpert(nn.Module):\n", " \"\"\"\n", " Single geometric expert. Transforms input features into simplex deformations,\n", " applies CM validation, outputs geometric features + validity signal.\n", "\n", " Input: (..., in_dim)\n", " Output: geo_features (..., out_dim), vol2 (...,), validity (..., 1)\n", "\n", " The geometric features are the d² pairs + vol² from the Cayley-Menger\n", " determinant. The validity signal is sigmoid(vol2) — 1.0 when the simplex\n", " is well-formed, 0.0 when degenerate.\n", " \"\"\"\n", "\n", " def __init__(self, k: int, in_dim: int, edim: int, deform_scale: float = 0.05):\n", " super().__init__()\n", " self._k = k\n", " self._nv = k + 1\n", " self._edim = edim\n", " self._deform_scale = deform_scale\n", "\n", " self._cm = CMValidator(k)\n", "\n", " # Frozen regular simplex template\n", " template = build_regular_simplex(k, edim)\n", " self.register_buffer(\"_template\", template)\n", "\n", " # Learned deformation from input features\n", " self._to_deform = nn.Linear(in_dim, self._nv * edim)\n", "\n", " # LayerNorm on geometric output for stable gradients\n", " self._norm = nn.LayerNorm(self._cm.out_dim)\n", "\n", " # Validity projection — vol² → scalar gate\n", " self._validity_proj = nn.Sequential(\n", " nn.Linear(self._cm.out_dim, 1),\n", " nn.Sigmoid(),\n", " )\n", "\n", " @property\n", " def out_dim(self):\n", " return self._cm.out_dim\n", "\n", " @property\n", " def k(self):\n", " return self._k\n", "\n", " def forward(self, x: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:\n", " \"\"\"\n", " Args:\n", " x: (..., in_dim)\n", " Returns:\n", " geo: (..., out_dim) — geometric features [d², vol²]\n", " vol2: (...,) — raw simplex volume squared (for monitoring)\n", " validity: (..., 1) — sigmoid validity gate\n", " \"\"\"\n", " # Input → deformation vectors for each vertex\n", " deform = self._to_deform(x).unflatten(-1, (self._nv, self._edim))\n", "\n", " # Template + scaled deformation = actual vertices\n", " verts = self._template + self._deform_scale * deform\n", "\n", " # CM computation → geometric features\n", " d2, vol2 = self._cm(verts)\n", " geo = torch.cat([d2, vol2.unsqueeze(-1)], dim=-1)\n", " geo = self._norm(geo)\n", "\n", " # Validity gate from geometric features\n", " validity = self._validity_proj(geo)\n", "\n", " return geo, vol2, validity\n", "\n", "\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "# GEOMETRIC FIELD MODULATOR — the full system\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "\n", "class FieldModulatorOutput(NamedTuple):\n", " \"\"\"Output from the field modulator.\"\"\"\n", " residual: torch.Tensor # modulated residual stream\n", " validity_map: torch.Tensor # per-position combined validity\n", " expert_volumes: Dict[int, torch.Tensor] # per-expert vol² for monitoring\n", "\n", "\n", "class GeometricFieldModulator(nn.Module):\n", " \"\"\"\n", " Multi-expert geometric field constraints on transformer residual dynamics.\n", "\n", " Multiple KSimplexChannel experts at different k (edge, triangle, pentachoron)\n", " each measure a different scale of geometric coherence. Their validity gates\n", " are combined multiplicatively to constrain the residual stream.\n", "\n", " The model's features pass through where geometry is valid.\n", " They're suppressed where geometry is violated.\n", " The model naturally migrates toward the valid manifold.\n", " \"\"\"\n", "\n", " def __init__(self, config: FieldModulatorConfig):\n", " super().__init__()\n", " self.config = config\n", " d = config.d_model\n", "\n", " # Compute active dimensions (excluding null space)\n", " n_null = int(d * config.null_space_fraction)\n", " self.n_active = d - n_null\n", " self.n_null = n_null\n", "\n", " # Build null space mask\n", " if config.null_space_position == \"tail\":\n", " # Last n_null dims are untouched\n", " mask = torch.ones(d)\n", " mask[self.n_active:] = 0.0\n", " else:\n", " # Random scattered null space (deterministic seed)\n", " rng = torch.Generator().manual_seed(42)\n", " perm = torch.randperm(d, generator=rng)\n", " mask = torch.ones(d)\n", " mask[perm[:n_null]] = 0.0\n", " self.register_buffer(\"_active_mask\", mask.unsqueeze(0).unsqueeze(0)) # (1, 1, d)\n", "\n", " # Build experts\n", " self.experts = nn.ModuleDict()\n", " for k in config.expert_ks:\n", " self.experts[f\"k{k}\"] = KSimplexChannelExpert(\n", " k=k,\n", " in_dim=self.n_active,\n", " edim=config.expert_edim,\n", " deform_scale=config.deform_scale,\n", " )\n", "\n", " # Per-expert gate projection: geo_features → d_model gate\n", " self.gate_projs = nn.ModuleDict()\n", " for k in config.expert_ks:\n", " expert = self.experts[f\"k{k}\"]\n", " self.gate_projs[f\"k{k}\"] = nn.Sequential(\n", " nn.Linear(expert.out_dim, self.n_active),\n", " nn.Sigmoid(),\n", " )\n", "\n", " # Per-layer per-expert alpha (in logit space)\n", " n_experts = len(config.expert_ks)\n", " logit_init = math.log(config.initial_alpha / (1 - config.initial_alpha))\n", " self.alpha_logits = nn.Parameter(\n", " torch.full((config.n_layers, n_experts), logit_init)\n", " )\n", "\n", " # Monitoring buffers\n", " if config.track_validity:\n", " self.register_buffer(\"_validity_history\", torch.zeros(config.n_layers, n_experts))\n", " self.register_buffer(\"_step_count\", torch.tensor(0, dtype=torch.long))\n", "\n", " @property\n", " def alphas(self) -> torch.Tensor:\n", " \"\"\"Current alpha values after sigmoid + clamping.\"\"\"\n", " raw = torch.sigmoid(self.alpha_logits)\n", " return torch.clamp(raw, min=self.config.alpha_min, max=self.config.alpha_max)\n", "\n", " def _extract_active(self, x: torch.Tensor) -> torch.Tensor:\n", " \"\"\"Extract active dimensions from residual stream.\"\"\"\n", " if self.config.null_space_position == \"tail\":\n", " return x[..., :self.n_active]\n", " else:\n", " return x * self._active_mask\n", "\n", " def forward(\n", " self,\n", " residual: torch.Tensor,\n", " layer_idx: int,\n", " ) -> FieldModulatorOutput:\n", " \"\"\"\n", " Apply geometric field modulation to residual stream.\n", "\n", " Args:\n", " residual: (batch, seq_len, d_model) current residual state\n", " layer_idx: which transformer layer (for per-layer alpha)\n", "\n", " Returns:\n", " FieldModulatorOutput with modulated residual, validity map, expert volumes\n", " \"\"\"\n", " B, S, D = residual.shape\n", " alphas = self.alphas[layer_idx] # (n_experts,)\n", "\n", " # Extract active dimensions for geometric computation\n", " active = self._extract_active(residual) # (B, S, n_active)\n", "\n", " # Compute combined validity gate from all experts\n", " combined_gate = torch.ones(B, S, self.n_active, device=residual.device, dtype=residual.dtype)\n", " expert_volumes = {}\n", "\n", " for i, k in enumerate(self.config.expert_ks):\n", " key = f\"k{k}\"\n", " expert = self.experts[key]\n", " gate_proj = self.gate_projs[key]\n", "\n", " # Expert computes geometric features\n", " geo, vol2, validity = expert(active)\n", " expert_volumes[k] = vol2.detach()\n", "\n", " # Project geometric features to gate dimensions\n", " expert_gate = gate_proj(geo) # (B, S, n_active)\n", "\n", " # Blend: combined = combined × (1 - α + α × expert_gate)\n", " # At α=0: no effect. At α=max: full gating.\n", " # This is softer than pure multiplication — allows gradual engagement\n", " alpha_k = alphas[i]\n", " blended_gate = (1 - alpha_k) + alpha_k * expert_gate\n", " combined_gate = combined_gate * blended_gate\n", "\n", " # Monitoring\n", " if self.config.track_validity and self.training:\n", " with torch.no_grad():\n", " valid_frac = (vol2 > 0).float().mean()\n", " self._validity_history[layer_idx, i] = (\n", " 0.99 * self._validity_history[layer_idx, i] + 0.01 * valid_frac\n", " )\n", "\n", " # Apply gate to active dimensions only (null space untouched)\n", " if self.config.null_space_position == \"tail\":\n", " modulated = residual.clone()\n", " modulated[..., :self.n_active] = active * combined_gate\n", " else:\n", " modulated = residual * (1 - self._active_mask) + (active * combined_gate) * self._active_mask\n", "\n", " # Update step count\n", " if self.training:\n", " self._step_count += 1\n", "\n", " return FieldModulatorOutput(\n", " residual=modulated,\n", " validity_map=combined_gate.mean(dim=-1), # (B, S)\n", " expert_volumes=expert_volumes,\n", " )\n", "\n", " # ──────────────────────────────────────────────────────────────────────\n", " # HEALTH METRICS — no inference required\n", " # ──────────────────────────────────────────────────────────────────────\n", "\n", " def health_report(self) -> Dict[str, float]:\n", " \"\"\"\n", " Compute health metrics from current parameters.\n", " No inference needed — reads directly from weights.\n", " \"\"\"\n", " report = {}\n", "\n", " # Alpha statistics\n", " alphas = self.alphas.detach()\n", " report[\"alpha_mean\"] = alphas.mean().item()\n", " report[\"alpha_std\"] = alphas.std().item()\n", " report[\"alpha_min\"] = alphas.min().item()\n", " report[\"alpha_max\"] = alphas.max().item()\n", "\n", " # Per-layer alpha means\n", " for layer in range(self.config.n_layers):\n", " report[f\"alpha_layer_{layer}\"] = alphas[layer].mean().item()\n", "\n", " # Validity history (if tracking)\n", " if self.config.track_validity:\n", " report[\"validity_mean\"] = self._validity_history.mean().item()\n", " for i, k in enumerate(self.config.expert_ks):\n", " report[f\"validity_k{k}\"] = self._validity_history[:, i].mean().item()\n", "\n", " # Expert template volumes (frozen — sanity check)\n", " for k in self.config.expert_ks:\n", " expert = self.experts[f\"k{k}\"]\n", " _, vol2 = expert._cm(expert._template.unsqueeze(0))\n", " report[f\"template_vol2_k{k}\"] = vol2.item()\n", "\n", " # Parameter norms by component\n", " total_params = 0\n", " for name, p in self.named_parameters():\n", " total_params += p.numel()\n", " if \"deform\" in name:\n", " report[f\"deform_norm_{name.split('.')[1]}\"] = p.data.norm().item()\n", " report[\"total_params\"] = total_params\n", "\n", " return report\n", "\n", " def cv_check(self, embeddings: torch.Tensor, n_simplices: int = 500) -> Dict[str, float]:\n", " \"\"\"\n", " Measure pentachoron CV on a set of embeddings.\n", " Uses the k=4 expert's CM validator if available, else builds one.\n", "\n", " Args:\n", " embeddings: (N, d_model) tensor of representations\n", " n_simplices: number of random 5-point simplices to measure\n", "\n", " Returns:\n", " dict with cv, mean_vol, valid_fraction\n", " \"\"\"\n", " if 4 in self.config.expert_ks:\n", " cm = self.experts[\"k4\"]._cm\n", " else:\n", " cm = CMValidator(4).to(embeddings.device)\n", "\n", " N = embeddings.shape[0]\n", " active = embeddings[..., :self.n_active]\n", "\n", " vols = []\n", " rng = torch.Generator().manual_seed(42)\n", "\n", " for _ in range(n_simplices):\n", " idx = torch.randint(N, (5,), generator=rng)\n", " pts = active[idx].unsqueeze(0) # (1, 5, n_active)\n", "\n", " # Pad to edim if needed\n", " edim = self.config.expert_edim\n", " if pts.shape[-1] > edim:\n", " # Project to edim dimensions (use first edim for simplicity)\n", " pts_proj = pts[..., :edim]\n", " else:\n", " pts_proj = pts\n", "\n", " _, vol2 = cm(pts_proj)\n", " if vol2.item() > 0:\n", " vols.append(math.sqrt(vol2.item()))\n", "\n", " if len(vols) == 0:\n", " return {\"cv\": float(\"nan\"), \"mean_vol\": 0.0, \"valid_fraction\": 0.0}\n", "\n", " vols_arr = torch.tensor(vols)\n", " cv = (vols_arr.std() / vols_arr.mean()).item()\n", " return {\n", " \"cv\": cv,\n", " \"mean_vol\": vols_arr.mean().item(),\n", " \"valid_fraction\": len(vols) / n_simplices,\n", " \"in_band\": abs(cv - self.config.cv_target) < self.config.cv_tolerance,\n", " }\n", "\n", "\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "# MODULATED ENCODER WRAPPER — plugs into any encoder-decoder transformer\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "\n", "class FieldModulatedEncoder(nn.Module):\n", " \"\"\"\n", " Wraps a transformer encoder with geometric field modulation.\n", " Steps through blocks manually, applying the field modulator between blocks.\n", "\n", " The modulator constrains the residual stream multiplicatively.\n", " Null space dimensions are never touched.\n", " \"\"\"\n", "\n", " def __init__(\n", " self,\n", " encoder: nn.Module,\n", " modulator: GeometricFieldModulator,\n", " modulate_layers: Optional[List[int]] = None,\n", " ):\n", " super().__init__()\n", " self.encoder = encoder\n", " self.modulator = modulator\n", "\n", " n_layers = len(encoder.block)\n", " if modulate_layers is None:\n", " modulate_layers = list(range(n_layers))\n", " self.modulate_layers = set(modulate_layers)\n", "\n", " # Track per-forward validity for diagnostics\n", " self._last_validity = None\n", " self._last_expert_volumes = None\n", "\n", " def forward(\n", " self,\n", " input_ids: torch.Tensor,\n", " attention_mask: Optional[torch.Tensor] = None,\n", " output_hidden_states: bool = False,\n", " **kwargs,\n", " ):\n", " # Embed\n", " hidden_states = self.encoder.embed_tokens(input_ids)\n", " hidden_states = self.encoder.dropout(hidden_states)\n", "\n", " # Prepare attention mask\n", " if attention_mask is not None:\n", " extended_mask = attention_mask[:, None, None, :].to(dtype=hidden_states.dtype)\n", " extended_mask = (1.0 - extended_mask) * torch.finfo(hidden_states.dtype).min\n", " else:\n", " extended_mask = None\n", "\n", " all_hidden = [hidden_states] if output_hidden_states else None\n", " position_bias = None\n", " cache_position = torch.arange(input_ids.shape[1], device=input_ids.device)\n", "\n", " validity_maps = []\n", " expert_vol_maps = []\n", "\n", " for i, block in enumerate(self.encoder.block):\n", " # GEOMETRIC FIELD MODULATION — constrain before block processes\n", " if i in self.modulate_layers:\n", " mod_output = self.modulator(hidden_states, layer_idx=i)\n", " hidden_states = mod_output.residual\n", " validity_maps.append(mod_output.validity_map.detach())\n", " expert_vol_maps.append(mod_output.expert_volumes)\n", "\n", " # Standard transformer block\n", " block_output = block(\n", " hidden_states,\n", " attention_mask=extended_mask,\n", " position_bias=position_bias,\n", " cache_position=cache_position,\n", " )\n", " hidden_states = block_output[0]\n", "\n", " # Extract position bias from first block\n", " if position_bias is None:\n", " for out in block_output[1:]:\n", " if isinstance(out, torch.Tensor) and out.dim() == 4:\n", " position_bias = out\n", " break\n", "\n", " if output_hidden_states:\n", " all_hidden.append(hidden_states)\n", "\n", " # Final layer norm\n", " hidden_states = self.encoder.final_layer_norm(hidden_states)\n", " hidden_states = self.encoder.dropout(hidden_states)\n", "\n", " # Store diagnostics\n", " self._last_validity = validity_maps\n", " self._last_expert_volumes = expert_vol_maps\n", "\n", " if output_hidden_states:\n", " all_hidden.append(hidden_states)\n", "\n", " return type(\"Output\", (), {\n", " \"last_hidden_state\": hidden_states,\n", " \"hidden_states\": tuple(all_hidden) if all_hidden else None,\n", " })()\n", "\n", "\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "# TRAINING UTILITIES\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "\n", "class FieldModulatorTrainer:\n", " \"\"\"\n", " Training utilities for the GeometricFieldModulator.\n", " Handles gradient scaling, alpha monitoring, CV checks, early stopping.\n", " \"\"\"\n", "\n", " def __init__(\n", " self,\n", " modulator: GeometricFieldModulator,\n", " lr: float = 1e-3,\n", " weight_decay: float = 0.01,\n", " gradient_clip: float = 1.0,\n", " ):\n", " self.modulator = modulator\n", " self.gradient_clip = gradient_clip\n", "\n", " # Separate param groups: geometric params get scaled gradients\n", " geo_params = []\n", " alpha_params = []\n", " gate_params = []\n", "\n", " for name, param in modulator.named_parameters():\n", " if \"alpha\" in name:\n", " alpha_params.append(param)\n", " elif \"expert\" in name or \"deform\" in name:\n", " geo_params.append(param)\n", " else:\n", " gate_params.append(param)\n", "\n", " self.optimizer = torch.optim.AdamW([\n", " {\"params\": geo_params, \"lr\": lr * modulator.config.gradient_scale},\n", " {\"params\": alpha_params, \"lr\": lr * 0.5}, # alpha learns slower\n", " {\"params\": gate_params, \"lr\": lr},\n", " ], weight_decay=weight_decay)\n", "\n", " # Tracking\n", " self.alpha_history = []\n", " self.cv_history = []\n", " self.loss_history = []\n", "\n", " def step(self, loss: torch.Tensor):\n", " \"\"\"Single training step with safeguards.\"\"\"\n", " loss.backward()\n", " torch.nn.utils.clip_grad_norm_(self.modulator.parameters(), self.gradient_clip)\n", " self.optimizer.step()\n", " self.optimizer.zero_grad()\n", "\n", " # Record alpha\n", " alphas = self.modulator.alphas.detach().cpu().numpy()\n", " self.alpha_history.append(alphas.copy())\n", " self.loss_history.append(loss.item())\n", "\n", " def check_cv(self, embeddings: torch.Tensor) -> bool:\n", " \"\"\"\n", " Check if pentachoron CV is in the universal band.\n", " Returns True if healthy, False if drifting.\n", " \"\"\"\n", " result = self.modulator.cv_check(embeddings)\n", " self.cv_history.append(result)\n", " return result.get(\"in_band\", True)\n", "\n", " def should_stop(self, patience: int = 5) -> bool:\n", " \"\"\"\n", " Early stopping if CV has been outside the universal band\n", " for `patience` consecutive checks.\n", " \"\"\"\n", " if len(self.cv_history) < patience:\n", " return False\n", " recent = self.cv_history[-patience:]\n", " return all(not r.get(\"in_band\", True) for r in recent)\n", "\n", "\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "# QUICK TEST\n", "# ══════════════════════════════════════════════════════════════════════════════\n", "\n", "if __name__ == \"__main__\":\n", " print(\"=\" * 70)\n", " print(\"GeometricFieldModulator — Self Test\")\n", " print(\"=\" * 70)\n", "\n", " config = FieldModulatorConfig(\n", " d_model=512,\n", " vocab_size=32128,\n", " n_layers=6,\n", " expert_ks=(1, 2, 4),\n", " expert_edim=8,\n", " initial_alpha=0.01,\n", " null_space_fraction=0.25,\n", " )\n", "\n", " modulator = GeometricFieldModulator(config)\n", "\n", " # Count params\n", " total = sum(p.numel() for p in modulator.parameters())\n", " trainable = sum(p.numel() for p in modulator.parameters() if p.requires_grad)\n", " print(f\"\\nTotal params: {total:,}\")\n", " print(f\"Trainable: {trainable:,}\")\n", "\n", " # Architecture summary\n", " print(f\"\\nExperts:\")\n", " for k in config.expert_ks:\n", " expert = modulator.experts[f\"k{k}\"]\n", " n = sum(p.numel() for p in expert.parameters())\n", " print(f\" k={k}: {expert._nv} vertices, {expert._cm.n_pairs} pairs, \"\n", " f\"out_dim={expert.out_dim}, params={n:,}\")\n", "\n", " print(f\"\\nActive dims: {modulator.n_active} / {config.d_model}\")\n", " print(f\"Null space: {modulator.n_null} / {config.d_model}\")\n", " print(f\"Alpha range: [{config.alpha_min}, {config.alpha_max}]\")\n", "\n", " # Forward pass test\n", " B, S, D = 2, 16, config.d_model\n", " x = torch.randn(B, S, D)\n", "\n", " print(f\"\\nForward pass test: ({B}, {S}, {D})\")\n", " for layer in range(config.n_layers):\n", " output = modulator(x, layer_idx=layer)\n", " alpha = modulator.alphas[layer]\n", " print(f\" Layer {layer}: validity={output.validity_map.mean():.4f}, \"\n", " f\"alpha=[{', '.join(f'{a:.4f}' for a in alpha.tolist())}]\")\n", "\n", " # Null space preservation check\n", " null_start = modulator.n_active\n", " original_null = x[..., null_start:]\n", " modulated_null = output.residual[..., null_start:]\n", " null_preserved = torch.allclose(original_null, modulated_null, atol=1e-6)\n", " print(f\"\\nNull space preserved: {null_preserved}\")\n", "\n", " # Health report\n", " print(f\"\\nHealth report:\")\n", " health = modulator.health_report()\n", " for k, v in health.items():\n", " if isinstance(v, float):\n", " print(f\" {k}: {v:.6f}\")\n", " else:\n", " print(f\" {k}: {v}\")\n", "\n", " # CV check with random embeddings\n", " test_embeds = torch.randn(1000, D)\n", " cv_result = modulator.cv_check(test_embeds)\n", " print(f\"\\nCV check (random embeddings):\")\n", " for k, v in cv_result.items():\n", " print(f\" {k}: {v}\")\n", "\n", " print(f\"\\n{'=' * 70}\")\n", " print(\"All tests passed.\")\n", " print(f\"{'=' * 70}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "NHc66PlpSDA6", "outputId": "2e249661-f904-461b-c4bf-c123eb9d69ac" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "======================================================================\n", "GeometricFieldModulator — Self Test\n", "======================================================================\n", "\n", "Total params: 38,552\n", "Trainable: 38,552\n", "\n", "Experts:\n", " k=1: 2 vertices, 1 pairs, out_dim=2, params=6,167\n", " k=2: 3 vertices, 3 pairs, out_dim=4, params=9,253\n", " k=4: 5 vertices, 10 pairs, out_dim=11, params=15,434\n", "\n", "Active dims: 384 / 512\n", "Null space: 128 / 512\n", "Alpha range: [0.001, 0.35]\n", "\n", "Forward pass test: (2, 16, 512)\n", " Layer 0: validity=0.9852, alpha=[0.0100, 0.0100, 0.0100]\n", " Layer 1: validity=0.9852, alpha=[0.0100, 0.0100, 0.0100]\n", " Layer 2: validity=0.9852, alpha=[0.0100, 0.0100, 0.0100]\n", " Layer 3: validity=0.9852, alpha=[0.0100, 0.0100, 0.0100]\n", " Layer 4: validity=0.9852, alpha=[0.0100, 0.0100, 0.0100]\n", " Layer 5: validity=0.9852, alpha=[0.0100, 0.0100, 0.0100]\n", "\n", "Null space preserved: True\n", "\n", "Health report:\n", " alpha_mean: 0.010000\n", " alpha_std: 0.000000\n", " alpha_min: 0.010000\n", " alpha_max: 0.010000\n", " alpha_layer_0: 0.010000\n", " alpha_layer_1: 0.010000\n", " alpha_layer_2: 0.010000\n", " alpha_layer_3: 0.010000\n", " alpha_layer_4: 0.010000\n", " alpha_layer_5: 0.010000\n", " validity_mean: 0.010000\n", " validity_k1: 0.010000\n", " validity_k2: 0.010000\n", " validity_k4: 0.010000\n", " template_vol2_k1: 1.000000\n", " template_vol2_k2: 0.188275\n", " template_vol2_k4: 0.000547\n", " deform_norm_k1: 0.109477\n", " deform_norm_k2: 0.162772\n", " deform_norm_k4: 0.172465\n", " total_params: 38552\n", "\n", "CV check (random embeddings):\n", " cv: 0.6050009727478027\n", " mean_vol: 3.249622106552124\n", " valid_fraction: 0.99\n", " in_band: False\n", "\n", "======================================================================\n", "All tests passed.\n", "======================================================================\n" ] } ] }, { "cell_type": "code", "source": [ "!pip install open_clip_torch" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rywhLak_UeU4", "outputId": "dd98444c-d28a-4320-a85c-608c8f44ef0b" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Collecting open_clip_torch\n", " Downloading open_clip_torch-3.3.0-py3-none-any.whl.metadata (32 kB)\n", "Requirement already satisfied: torch>=2.0 in /usr/local/lib/python3.12/dist-packages (from open_clip_torch) (2.10.0+cu128)\n", "Requirement already satisfied: torchvision in /usr/local/lib/python3.12/dist-packages (from open_clip_torch) (0.25.0+cu128)\n", "Requirement already satisfied: regex in /usr/local/lib/python3.12/dist-packages (from open_clip_torch) (2025.11.3)\n", "Collecting ftfy (from open_clip_torch)\n", " Downloading ftfy-6.3.1-py3-none-any.whl.metadata (7.3 kB)\n", "Requirement already satisfied: tqdm in /usr/local/lib/python3.12/dist-packages (from open_clip_torch) (4.67.3)\n", "Requirement already satisfied: huggingface-hub in /usr/local/lib/python3.12/dist-packages (from open_clip_torch) (1.5.0)\n", "Requirement already satisfied: safetensors in /usr/local/lib/python3.12/dist-packages (from open_clip_torch) (0.7.0)\n", "Requirement already satisfied: timm>=1.0.17 in /usr/local/lib/python3.12/dist-packages (from open_clip_torch) (1.0.25)\n", "Requirement already satisfied: pyyaml in /usr/local/lib/python3.12/dist-packages (from timm>=1.0.17->open_clip_torch) (6.0.3)\n", "Requirement already satisfied: filelock in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (3.24.3)\n", "Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (4.15.0)\n", "Requirement already satisfied: setuptools in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (75.2.0)\n", "Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (1.14.0)\n", "Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (3.6.1)\n", "Requirement already satisfied: jinja2 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (3.1.6)\n", "Requirement already satisfied: fsspec>=0.8.5 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (2025.3.0)\n", "Requirement already satisfied: cuda-bindings==12.9.4 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (12.9.4)\n", "Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.8.93 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (12.8.93)\n", "Requirement already satisfied: nvidia-cuda-runtime-cu12==12.8.90 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (12.8.90)\n", "Requirement already satisfied: nvidia-cuda-cupti-cu12==12.8.90 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (12.8.90)\n", "Requirement already satisfied: nvidia-cudnn-cu12==9.10.2.21 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (9.10.2.21)\n", "Requirement already satisfied: nvidia-cublas-cu12==12.8.4.1 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (12.8.4.1)\n", "Requirement already satisfied: nvidia-cufft-cu12==11.3.3.83 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (11.3.3.83)\n", "Requirement already satisfied: nvidia-curand-cu12==10.3.9.90 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (10.3.9.90)\n", "Requirement already satisfied: nvidia-cusolver-cu12==11.7.3.90 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (11.7.3.90)\n", "Requirement already satisfied: nvidia-cusparse-cu12==12.5.8.93 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (12.5.8.93)\n", "Requirement already satisfied: nvidia-cusparselt-cu12==0.7.1 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (0.7.1)\n", "Requirement already satisfied: nvidia-nccl-cu12==2.27.5 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (2.27.5)\n", "Requirement already satisfied: nvidia-nvshmem-cu12==3.4.5 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (3.4.5)\n", "Requirement already satisfied: nvidia-nvtx-cu12==12.8.90 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (12.8.90)\n", "Requirement already satisfied: nvidia-nvjitlink-cu12==12.8.93 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (12.8.93)\n", "Requirement already satisfied: nvidia-cufile-cu12==1.13.1.3 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (1.13.1.3)\n", "Requirement already satisfied: triton==3.6.0 in /usr/local/lib/python3.12/dist-packages (from torch>=2.0->open_clip_torch) (3.6.0)\n", "Requirement already satisfied: cuda-pathfinder~=1.1 in /usr/local/lib/python3.12/dist-packages (from cuda-bindings==12.9.4->torch>=2.0->open_clip_torch) (1.4.0)\n", "Requirement already satisfied: wcwidth in /usr/local/lib/python3.12/dist-packages (from ftfy->open_clip_torch) (0.6.0)\n", "Requirement already satisfied: hf-xet<2.0.0,>=1.2.0 in /usr/local/lib/python3.12/dist-packages (from huggingface-hub->open_clip_torch) (1.3.1)\n", "Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.12/dist-packages (from huggingface-hub->open_clip_torch) (0.28.1)\n", "Requirement already satisfied: packaging>=20.9 in /usr/local/lib/python3.12/dist-packages (from huggingface-hub->open_clip_torch) (26.0)\n", "Requirement already satisfied: typer in /usr/local/lib/python3.12/dist-packages (from huggingface-hub->open_clip_torch) (0.24.1)\n", "Requirement already satisfied: numpy in /usr/local/lib/python3.12/dist-packages (from torchvision->open_clip_torch) (2.0.2)\n", "Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.12/dist-packages (from torchvision->open_clip_torch) (11.3.0)\n", "Requirement already satisfied: anyio in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->huggingface-hub->open_clip_torch) (4.12.1)\n", "Requirement already satisfied: certifi in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->huggingface-hub->open_clip_torch) (2026.2.25)\n", "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->huggingface-hub->open_clip_torch) (1.0.9)\n", "Requirement already satisfied: idna in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->huggingface-hub->open_clip_torch) (3.11)\n", "Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.12/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->huggingface-hub->open_clip_torch) (0.16.0)\n", "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.12/dist-packages (from sympy>=1.13.3->torch>=2.0->open_clip_torch) (1.3.0)\n", "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.12/dist-packages (from jinja2->torch>=2.0->open_clip_torch) (3.0.3)\n", "Requirement already satisfied: click>=8.2.1 in /usr/local/lib/python3.12/dist-packages (from typer->huggingface-hub->open_clip_torch) (8.3.1)\n", "Requirement already satisfied: shellingham>=1.3.0 in /usr/local/lib/python3.12/dist-packages (from typer->huggingface-hub->open_clip_torch) (1.5.4)\n", "Requirement already satisfied: rich>=12.3.0 in /usr/local/lib/python3.12/dist-packages (from typer->huggingface-hub->open_clip_torch) (13.9.4)\n", "Requirement already satisfied: annotated-doc>=0.0.2 in /usr/local/lib/python3.12/dist-packages (from typer->huggingface-hub->open_clip_torch) (0.0.4)\n", "Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.12/dist-packages (from rich>=12.3.0->typer->huggingface-hub->open_clip_torch) (4.0.0)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.12/dist-packages (from rich>=12.3.0->typer->huggingface-hub->open_clip_torch) (2.19.2)\n", "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.12/dist-packages (from markdown-it-py>=2.2.0->rich>=12.3.0->typer->huggingface-hub->open_clip_torch) (0.1.2)\n", "Downloading open_clip_torch-3.3.0-py3-none-any.whl (1.5 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.5/1.5 MB\u001b[0m \u001b[31m72.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading ftfy-6.3.1-py3-none-any.whl (44 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.8/44.8 kB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hInstalling collected packages: ftfy, open_clip_torch\n", "Successfully installed ftfy-6.3.1 open_clip_torch-3.3.0\n" ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# CROSS-ARCHITECTURE INACTIVE WEIGHT GEOMETRY BATTERY\n", "# BERT-large | CLIP-ViT-B/16 | DINOv2-large | CLIP-ViT-bigG\n", "# Question: Is Q sparsity universal? Is the pentachoron CV constant?\n", "# No inference. Just the frozen weights.\n", "# ============================================================================\n", "\n", "# %% Cell 1: Unified weight extraction framework\n", "import torch\n", "import numpy as np\n", "import math\n", "import time\n", "from collections import defaultdict\n", "\n", "device = torch.device(\"cpu\") # Weight analysis only — no GPU needed\n", "\n", "def classify_weights_bert(model):\n", " \"\"\"Classify BERT-large weight matrices.\"\"\"\n", " catalog = defaultdict(list)\n", " for name, param in model.named_parameters():\n", " p = param.detach().float().cpu()\n", " parts = name.split('.')\n", "\n", " layer_num = -1\n", " for i, part in enumerate(parts):\n", " if part == 'layer' and i + 1 < len(parts):\n", " try: layer_num = int(parts[i + 1])\n", " except: pass\n", "\n", " if 'embeddings' in name:\n", " wtype = 'embedding'\n", " elif 'LayerNorm' in name or 'layernorm' in name:\n", " wtype = 'layernorm'\n", " elif 'attention' in name and 'self' in name:\n", " for sub in ['query', 'key', 'value']:\n", " if sub in name:\n", " wtype = f'self_attn_{sub[0]}'\n", " break\n", " else:\n", " wtype = 'self_attn_other'\n", " elif 'attention' in name and 'output' in name and 'dense' in name:\n", " wtype = 'self_attn_o'\n", " elif 'intermediate' in name:\n", " wtype = 'mlp_up'\n", " elif 'output' in name and 'dense' in name and 'attention' not in name:\n", " wtype = 'mlp_down'\n", " elif 'pooler' in name:\n", " wtype = 'pooler'\n", " else:\n", " wtype = 'other'\n", "\n", " if p.dim() == 2:\n", " catalog[wtype].append({\n", " 'name': name, 'shape': tuple(p.shape), 'param': p,\n", " 'layer': layer_num, 'numel': p.numel(),\n", " })\n", " return catalog\n", "\n", "\n", "def classify_weights_vit_transformers(model):\n", " \"\"\"Classify ViT weights from transformers library (DINOv2).\"\"\"\n", " catalog = defaultdict(list)\n", " for name, param in model.named_parameters():\n", " p = param.detach().float().cpu()\n", " parts = name.split('.')\n", "\n", " layer_num = -1\n", " for i, part in enumerate(parts):\n", " if part == 'layer' and i + 1 < len(parts):\n", " try: layer_num = int(parts[i + 1])\n", " except: pass\n", "\n", " if 'embeddings' in name:\n", " wtype = 'embedding'\n", " elif 'layernorm' in name.lower() or 'layer_norm' in name.lower() or 'norm' in name:\n", " wtype = 'layernorm'\n", " elif 'attention' in name:\n", " if 'query' in name or '.q.' in name or name.endswith('.q.weight'):\n", " wtype = 'self_attn_q'\n", " elif 'key' in name or '.k.' in name or name.endswith('.k.weight'):\n", " wtype = 'self_attn_k'\n", " elif 'value' in name or '.v.' in name or name.endswith('.v.weight'):\n", " wtype = 'self_attn_v'\n", " elif 'output' in name or 'proj' in name:\n", " wtype = 'self_attn_o'\n", " else:\n", " # DINOv2 uses qkv fused\n", " if 'qkv' in name:\n", " wtype = 'self_attn_qkv'\n", " else:\n", " wtype = 'self_attn_other'\n", " elif 'mlp' in name or 'intermediate' in name:\n", " if 'fc1' in name or 'dense' in name.split('.')[-2:-1]:\n", " wtype = 'mlp_up'\n", " elif 'fc2' in name:\n", " wtype = 'mlp_down'\n", " else:\n", " wtype = 'mlp_other'\n", " else:\n", " wtype = 'other'\n", "\n", " if p.dim() == 2:\n", " catalog[wtype].append({\n", " 'name': name, 'shape': tuple(p.shape), 'param': p,\n", " 'layer': layer_num, 'numel': p.numel(),\n", " })\n", " return catalog\n", "\n", "\n", "def classify_weights_open_clip(model_visual):\n", " \"\"\"Classify open_clip ViT visual encoder weights.\"\"\"\n", " catalog = defaultdict(list)\n", " for name, param in model_visual.named_parameters():\n", " p = param.detach().float().cpu()\n", " parts = name.split('.')\n", "\n", " layer_num = -1\n", " for i, part in enumerate(parts):\n", " if part == 'resblocks' and i + 1 < len(parts):\n", " try: layer_num = int(parts[i + 1])\n", " except: pass\n", "\n", " if 'token_embedding' in name or 'class_embedding' in name or 'positional_embedding' in name:\n", " wtype = 'embedding'\n", " elif 'ln_' in name or 'norm' in name:\n", " wtype = 'layernorm'\n", " elif 'attn' in name:\n", " if 'in_proj_weight' in name:\n", " wtype = 'self_attn_qkv' # fused QKV\n", " elif 'out_proj' in name:\n", " wtype = 'self_attn_o'\n", " elif 'q_proj' in name:\n", " wtype = 'self_attn_q'\n", " elif 'k_proj' in name:\n", " wtype = 'self_attn_k'\n", " elif 'v_proj' in name:\n", " wtype = 'self_attn_v'\n", " else:\n", " wtype = 'self_attn_other'\n", " elif 'mlp' in name or 'c_fc' in name or 'c_proj' in name:\n", " if 'c_fc' in name or ('mlp' in name and ('0' in parts[-2] or 'fc1' in name)):\n", " wtype = 'mlp_up'\n", " elif 'c_proj' in name or ('mlp' in name and ('2' in parts[-2] or 'fc2' in name)):\n", " wtype = 'mlp_down'\n", " else:\n", " wtype = 'mlp_other'\n", " elif 'proj' in name and 'attn' not in name:\n", " wtype = 'projection'\n", " else:\n", " wtype = 'other'\n", "\n", " if p.dim() == 2:\n", " catalog[wtype].append({\n", " 'name': name, 'shape': tuple(p.shape), 'param': p,\n", " 'layer': layer_num, 'numel': p.numel(),\n", " })\n", " return catalog\n", "\n", "\n", "# %% Cell 2: Unified analysis functions\n", "\n", "def analyze_sparsity(catalog, thresholds=[1e-4, 1e-3, 1e-2, 1e-1]):\n", " \"\"\"Compute sparsity at multiple thresholds per weight type.\"\"\"\n", " results = {}\n", " for wtype, entries in catalog.items():\n", " if not entries:\n", " continue\n", " all_vals = torch.cat([e['param'].abs().flatten() for e in entries])\n", " total = len(all_vals)\n", " results[wtype] = {\n", " 'n_matrices': len(entries),\n", " 'total_params': total,\n", " }\n", " for t in thresholds:\n", " results[wtype][f'<{t}'] = (all_vals < t).sum().item() / total\n", " return results\n", "\n", "\n", "def analyze_svd(catalog, types_to_analyze=None):\n", " \"\"\"SVD analysis on 2D weight matrices.\"\"\"\n", " if types_to_analyze is None:\n", " types_to_analyze = [k for k in catalog.keys()\n", " if k not in ['embedding', 'layernorm', 'other', 'pooler', 'projection']]\n", "\n", " results = []\n", " for wtype in types_to_analyze:\n", " if wtype not in catalog:\n", " continue\n", " for entry in catalog[wtype]:\n", " W = entry['param']\n", " if W.dim() != 2:\n", " continue\n", " S = torch.linalg.svdvals(W).numpy()\n", " stable_rank = (S ** 2).sum() / (S[0] ** 2) if S[0] > 0 else 0\n", " pr = (S.sum()) ** 2 / ((S ** 2).sum()) if (S ** 2).sum() > 0 else 0\n", " active_frac = (S > 0.01 * S[0]).sum() / len(S)\n", " rank_90 = np.searchsorted(np.cumsum(S) / S.sum(), 0.90) + 1\n", " condition = S[0] / (S[-1] + 1e-10)\n", "\n", " results.append({\n", " 'name': entry['name'], 'wtype': wtype, 'layer': entry['layer'],\n", " 'shape': entry['shape'], 'stable_rank': stable_rank,\n", " 'pr': pr, 'active_frac': active_frac, 'rank_90': rank_90,\n", " 'condition': condition, 'max_sv': S[0], 'min_sv': S[-1],\n", " })\n", " return results\n", "\n", "\n", "def analyze_qk_manifold(catalog, d_model):\n", " \"\"\"\n", " QK similarity manifold analysis.\n", " Handles both separate Q/K matrices and fused QKV.\n", " \"\"\"\n", " results = []\n", "\n", " # Try separate Q, K first\n", " q_entries = sorted([e for e in catalog.get('self_attn_q', [])], key=lambda x: x['layer'])\n", " k_entries = sorted([e for e in catalog.get('self_attn_k', [])], key=lambda x: x['layer'])\n", "\n", " if q_entries and k_entries and len(q_entries) == len(k_entries):\n", " for q_e, k_e in zip(q_entries, k_entries):\n", " W_q = q_e['param']\n", " W_k = k_e['param']\n", " QK = W_q @ W_k.T\n", " _analyze_qk_matrix(QK, q_e['layer'], results)\n", " elif 'self_attn_qkv' in catalog:\n", " # Fused QKV: split into thirds\n", " for entry in sorted(catalog['self_attn_qkv'], key=lambda x: x['layer']):\n", " W = entry['param']\n", " # QKV fused: [3*d_model, d_model] or [d_model*3, d_model]\n", " total_out = W.shape[0]\n", " third = total_out // 3\n", " W_q = W[:third]\n", " W_k = W[third:2*third]\n", " QK = W_q @ W_k.T\n", " _analyze_qk_matrix(QK, entry['layer'], results)\n", "\n", " return results\n", "\n", "\n", "def _analyze_qk_matrix(QK, layer, results):\n", " \"\"\"Analyze a single QK^T matrix.\"\"\"\n", " S_qk = torch.linalg.svdvals(QK).numpy()\n", " stable_rank = (S_qk ** 2).sum() / (S_qk[0] ** 2) if S_qk[0] > 0 else 0\n", " pr = (S_qk.sum()) ** 2 / ((S_qk ** 2).sum()) if (S_qk ** 2).sum() > 0 else 0\n", "\n", " sym_diff = torch.norm(QK - QK.T).item() / (torch.norm(QK).item() + 1e-10)\n", "\n", " QK_sym = (QK + QK.T) / 2\n", " eigvals = torch.linalg.eigvalsh(QK_sym).numpy()[::-1]\n", " n_pos = (eigvals > 0).sum()\n", " n_neg = (eigvals < 0).sum()\n", "\n", " results.append({\n", " 'layer': layer, 'stable_rank': stable_rank, 'pr': pr,\n", " 'sym_dev': sym_diff, 'n_positive': n_pos, 'n_negative': n_neg,\n", " 'top3_eig': eigvals[:3].tolist(), 'dim': QK.shape[0],\n", " })\n", "\n", "\n", "def analyze_dead_neurons(catalog):\n", " \"\"\"MLP dead neuron analysis.\"\"\"\n", " results = []\n", " up_entries = sorted(catalog.get('mlp_up', []), key=lambda x: x['layer'])\n", " down_entries = sorted(catalog.get('mlp_down', []), key=lambda x: x['layer'])\n", "\n", " if not up_entries or not down_entries:\n", " return results\n", "\n", " for up_e, down_e in zip(up_entries, down_entries):\n", " W_up = up_e['param']\n", " W_down = down_e['param']\n", "\n", " # up: [d_ff, d_model], down: [d_model, d_ff]\n", " up_norms = torch.norm(W_up, dim=1) # [d_ff]\n", " down_norms = torch.norm(W_down, dim=0) # [d_ff]\n", " combined = up_norms * down_norms\n", "\n", " d_ff = W_up.shape[0]\n", " mean_c = combined.mean().item()\n", " dead_01 = (combined < 0.01 * mean_c).sum().item()\n", " dead_10 = (combined < 0.10 * mean_c).sum().item()\n", "\n", " results.append({\n", " 'layer': up_e['layer'], 'd_ff': d_ff,\n", " 'dead_1pct': dead_01, 'dead_10pct': dead_10,\n", " 'dead_1pct_frac': dead_01 / d_ff, 'dead_10pct_frac': dead_10 / d_ff,\n", " })\n", " return results\n", "\n", "\n", "def cross_layer_correlation(catalog, wtype):\n", " \"\"\"Compute cross-layer weight cosine for a given weight type.\"\"\"\n", " entries = sorted([e for e in catalog.get(wtype, []) if e['param'].dim() == 2],\n", " key=lambda x: x['layer'])\n", " if len(entries) < 2:\n", " return None\n", "\n", " n = len(entries)\n", " corr = np.zeros((n, n))\n", " for i in range(n):\n", " for j in range(n):\n", " Wi = entries[i]['param'].flatten()\n", " Wj = entries[j]['param'].flatten()\n", " if len(Wi) == len(Wj):\n", " cos = torch.dot(Wi, Wj) / (torch.norm(Wi) * torch.norm(Wj) + 1e-8)\n", " corr[i, j] = cos.item()\n", " return corr, [e['layer'] for e in entries]\n", "\n", "\n", "# %% Cell 3: Run the battery on each model\n", "\n", "def run_full_battery(model_name, catalog, d_model):\n", " \"\"\"Run complete inactive weight geometry battery.\"\"\"\n", " print(f\"\\n{'='*70}\")\n", " print(f\"MODEL: {model_name}\")\n", " print(f\"{'='*70}\")\n", "\n", " # Catalog summary\n", " print(f\"\\n--- WEIGHT CATALOG ---\")\n", " total_params = 0\n", " for wtype, entries in sorted(catalog.items()):\n", " n_params = sum(e['numel'] for e in entries)\n", " total_params += n_params\n", " shapes = set(str(e['shape']) for e in entries)\n", " print(f\" {wtype:25s}: {len(entries):3d} matrices, {n_params:>12,} params, shapes={shapes}\")\n", " print(f\" {'TOTAL':25s}: {total_params:>12,} params (2D only)\")\n", "\n", " # SVD\n", " print(f\"\\n--- SVD EFFECTIVE RANK ---\")\n", " svd_results = analyze_svd(catalog)\n", " svd_by_type = defaultdict(list)\n", " for r in svd_results:\n", " svd_by_type[r['wtype']].append(r)\n", "\n", " print(f\"{'Type':25s} {'StableRank':>10s} {'PR':>8s} {'Active%':>8s} {'Rank90':>7s} {'Condition':>10s}\")\n", " for wtype in sorted(svd_by_type.keys()):\n", " subset = svd_by_type[wtype]\n", " sr = np.mean([r['stable_rank'] for r in subset])\n", " pr = np.mean([r['pr'] for r in subset])\n", " af = np.mean([r['active_frac'] for r in subset])\n", " r90 = np.mean([r['rank_90'] for r in subset])\n", " cond = np.mean([r['condition'] for r in subset])\n", " print(f\" {wtype:23s} {sr:10.2f} {pr:8.2f} {af:8.3f} {r90:7.1f} {cond:10.1f}\")\n", "\n", " # Sparsity\n", " print(f\"\\n--- SPARSITY TOPOLOGY ---\")\n", " sparsity = analyze_sparsity(catalog)\n", " thresholds = [1e-4, 1e-3, 1e-2, 1e-1]\n", " print(f\"{'Type':25s}\", end=\"\")\n", " for t in thresholds:\n", " print(f\" {'<'+str(t):>8s}\", end=\"\")\n", " print()\n", " for wtype in sorted(sparsity.keys()):\n", " print(f\" {wtype:23s}\", end=\"\")\n", " for t in thresholds:\n", " print(f\" {sparsity[wtype].get(f'<{t}', 0):8.4f}\", end=\"\")\n", " print()\n", "\n", " # Full model sparsity\n", " all_params = torch.cat([e['param'].abs().flatten()\n", " for entries in catalog.values()\n", " for e in entries])\n", " print(f\" {'FULL MODEL':23s}\", end=\"\")\n", " for t in thresholds:\n", " frac = (all_params < t).sum().item() / len(all_params)\n", " print(f\" {frac:8.4f}\", end=\"\")\n", " print()\n", "\n", " # Q vs K vs V sparsity highlight\n", " print(f\"\\n--- Q/K/V SPARSITY COMPARISON (<0.1 threshold) ---\")\n", " for wtype in ['self_attn_q', 'self_attn_k', 'self_attn_v', 'self_attn_qkv']:\n", " if wtype in sparsity:\n", " print(f\" {wtype:25s}: {sparsity[wtype].get('<0.1', 0)*100:.1f}%\")\n", "\n", " # QK manifold\n", " print(f\"\\n--- QK SIMILARITY MANIFOLD ---\")\n", " qk_results = analyze_qk_manifold(catalog, d_model)\n", " if qk_results:\n", " print(f\"{'Layer':>6s} {'StableRk':>8s} {'PR':>8s} {'Pos':>5s} {'Neg':>5s} {'SymDev':>8s} {'TopEig':>10s}\")\n", " for r in qk_results[:6]: # first 6 layers\n", " print(f\" {r['layer']:4d} {r['stable_rank']:8.2f} {r['pr']:8.2f} \"\n", " f\"{r['n_positive']:5d} {r['n_negative']:5d} {r['sym_dev']:8.4f} \"\n", " f\"{r['top3_eig'][0]:10.2f}\")\n", " if len(qk_results) > 6:\n", " print(f\" ... ({len(qk_results)} layers total)\")\n", " # Last layer\n", " r = qk_results[-1]\n", " print(f\" {r['layer']:4d} {r['stable_rank']:8.2f} {r['pr']:8.2f} \"\n", " f\"{r['n_positive']:5d} {r['n_negative']:5d} {r['sym_dev']:8.4f} \"\n", " f\"{r['top3_eig'][0]:10.2f}\")\n", "\n", " # Trend: positive eigenvalue fraction by depth\n", " first = qk_results[0]\n", " last = qk_results[-1]\n", " first_pos_frac = first['n_positive'] / first['dim']\n", " last_pos_frac = last['n_positive'] / last['dim']\n", " print(f\"\\n Positive eig fraction: layer 0 = {first_pos_frac:.3f}, last = {last_pos_frac:.3f}\")\n", " else:\n", " print(\" (Could not extract QK manifold)\")\n", "\n", " # Dead neurons\n", " print(f\"\\n--- MLP DEAD NEURONS ---\")\n", " dead = analyze_dead_neurons(catalog)\n", " if dead:\n", " total_dead_1 = sum(d['dead_1pct'] for d in dead)\n", " total_neurons = sum(d['d_ff'] for d in dead)\n", " total_dead_10 = sum(d['dead_10pct'] for d in dead)\n", " print(f\" Dead (<1% mean): {total_dead_1}/{total_neurons} ({total_dead_1/total_neurons*100:.2f}%)\")\n", " print(f\" Weak (<10% mean): {total_dead_10}/{total_neurons} ({total_dead_10/total_neurons*100:.2f}%)\")\n", " else:\n", " print(\" (Could not analyze — check weight naming)\")\n", "\n", " # Cross-layer Q correlation\n", " print(f\"\\n--- CROSS-LAYER CORRELATION (adjacent pairs) ---\")\n", " for wtype in ['self_attn_q', 'self_attn_k', 'self_attn_qkv', 'mlp_up']:\n", " result = cross_layer_correlation(catalog, wtype)\n", " if result is not None:\n", " corr, layers = result\n", " adj_corrs = [corr[i, i+1] for i in range(len(layers)-1)]\n", " print(f\" {wtype:25s}: adj_mean={np.mean(adj_corrs):.4f}, \"\n", " f\"adj_range=[{min(adj_corrs):.4f}, {max(adj_corrs):.4f}]\")\n", "\n", " return {\n", " 'svd': svd_results,\n", " 'sparsity': sparsity,\n", " 'qk': qk_results,\n", " 'dead': dead,\n", " 'model_name': model_name,\n", " }\n", "\n", "\n", "# %% Cell 4: Load and analyze BERT-large\n", "print(\"Loading BERT-large...\")\n", "from transformers import BertModel\n", "bert = BertModel.from_pretrained(\"google-bert/bert-large-uncased\", torch_dtype=torch.float32)\n", "bert.eval()\n", "bert_catalog = classify_weights_bert(bert)\n", "bert_results = run_full_battery(\"BERT-large (1024d, 24L, 16H)\", bert_catalog, d_model=1024)\n", "del bert\n", "torch.cuda.empty_cache()\n", "\n", "# %% Cell 5: Load and analyze CLIP-ViT-B/16 (LAION)\n", "print(\"\\n\\nLoading CLIP-ViT-B/16 (LAION)...\")\n", "import open_clip\n", "clip_b_model, _, _ = open_clip.create_model_and_transforms(\n", " 'ViT-B-16', pretrained='laion2b_s34b_b88k'\n", ")\n", "clip_b_model.eval()\n", "clip_b_catalog = classify_weights_open_clip(clip_b_model.visual)\n", "clip_b_results = run_full_battery(\"CLIP-ViT-B/16 LAION (768d, 12L, 12H)\", clip_b_catalog, d_model=768)\n", "del clip_b_model\n", "torch.cuda.empty_cache()\n", "\n", "# %% Cell 6: Load and analyze DINOv2-large\n", "print(\"\\n\\nLoading DINOv2-large...\")\n", "from transformers import Dinov2Model\n", "dino = Dinov2Model.from_pretrained(\"facebook/dinov2-large\", torch_dtype=torch.float32)\n", "dino.eval()\n", "dino_catalog = classify_weights_vit_transformers(dino)\n", "dino_results = run_full_battery(\"DINOv2-large (1024d, 24L, 16H)\", dino_catalog, d_model=1024)\n", "del dino\n", "torch.cuda.empty_cache()\n", "\n", "# %% Cell 7: Load and analyze CLIP-ViT-bigG/14 (LAION)\n", "print(\"\\n\\nLoading CLIP-ViT-bigG/14 (LAION)...\")\n", "clip_g_model, _, _ = open_clip.create_model_and_transforms(\n", " 'ViT-bigG-14', pretrained='laion2b_s39b_b160k'\n", ")\n", "clip_g_model.eval()\n", "clip_g_catalog = classify_weights_open_clip(clip_g_model.visual)\n", "clip_g_results = run_full_battery(\"CLIP-ViT-bigG/14 LAION (1664d, 48L, 16H)\", clip_g_catalog, d_model=1664)\n", "del clip_g_model\n", "torch.cuda.empty_cache()\n", "\n", "# %% Cell 8: Cross-model comparison table\n", "print(f\"\\n\\n{'='*70}\")\n", "print(\"CROSS-MODEL COMPARISON\")\n", "print(f\"{'='*70}\")\n", "\n", "all_results = [bert_results, clip_b_results, dino_results, clip_g_results]\n", "\n", "# Q sparsity comparison\n", "print(f\"\\n--- Q SPARSITY (<0.1 threshold) ---\")\n", "print(f\"{'Model':45s} {'Q':>8s} {'K':>8s} {'V':>8s} {'QKV':>8s}\")\n", "for res in all_results:\n", " sp = res['sparsity']\n", " q = sp.get('self_attn_q', {}).get('<0.1', None)\n", " k = sp.get('self_attn_k', {}).get('<0.1', None)\n", " v = sp.get('self_attn_v', {}).get('<0.1', None)\n", " qkv = sp.get('self_attn_qkv', {}).get('<0.1', None)\n", " print(f\" {res['model_name']:43s}\", end=\"\")\n", " print(f\" {q*100:7.1f}%\" if q else \" -\", end=\"\")\n", " print(f\" {k*100:7.1f}%\" if k else \" -\", end=\"\")\n", " print(f\" {v*100:7.1f}%\" if v else \" -\", end=\"\")\n", " print(f\" {qkv*100:7.1f}%\" if qkv else \" -\")\n", "\n", "# Reference: T5 numbers\n", "print(f\" {'T5-Small (512d, 6L, 8H) [reference]':43s} 93.7% 19.2% 12.1% -\")\n", "print(f\" {'T5-Base (768d, 12L, 12H) [reference]':43s} 99.4% 30.0% 16.2% -\")\n", "\n", "# SVD stable rank comparison\n", "print(f\"\\n--- SVD STABLE RANK (mean across layers) ---\")\n", "print(f\"{'Model':45s} {'Q':>8s} {'K':>8s} {'V':>8s} {'MLP_up':>8s}\")\n", "for res in all_results:\n", " svd_by_type = defaultdict(list)\n", " for r in res['svd']:\n", " svd_by_type[r['wtype']].append(r['stable_rank'])\n", "\n", " print(f\" {res['model_name']:43s}\", end=\"\")\n", " for wtype in ['self_attn_q', 'self_attn_k', 'self_attn_v', 'mlp_up']:\n", " vals = svd_by_type.get(wtype, [])\n", " if vals:\n", " print(f\" {np.mean(vals):8.1f}\", end=\"\")\n", " else:\n", " print(f\" -\", end=\"\")\n", " print()\n", "\n", "# QK manifold comparison\n", "print(f\"\\n--- QK MANIFOLD: POSITIVE EIGENVALUE FRACTION ---\")\n", "print(f\"{'Model':45s} {'First':>8s} {'Last':>8s} {'Trend':>8s}\")\n", "for res in all_results:\n", " qk = res['qk']\n", " if qk:\n", " first = qk[0]\n", " last = qk[-1]\n", " f_frac = first['n_positive'] / first['dim']\n", " l_frac = last['n_positive'] / last['dim']\n", " trend = l_frac - f_frac\n", " print(f\" {res['model_name']:43s} {f_frac:8.3f} {l_frac:8.3f} {trend:+8.3f}\")\n", " else:\n", " print(f\" {res['model_name']:43s} - - -\")\n", "\n", "# Dead neurons comparison\n", "print(f\"\\n--- MLP DEAD NEURONS (<1% of mean) ---\")\n", "for res in all_results:\n", " dead = res['dead']\n", " if dead:\n", " total_dead = sum(d['dead_1pct'] for d in dead)\n", " total_neurons = sum(d['d_ff'] for d in dead)\n", " print(f\" {res['model_name']:43s}: {total_dead}/{total_neurons} ({total_dead/total_neurons*100:.2f}%)\")\n", " else:\n", " print(f\" {res['model_name']:43s}: N/A\")\n", "\n", "print(f\"\\n{'='*70}\")\n", "print(\"BATTERY COMPLETE\")\n", "print(f\"{'='*70}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "21f72da5e7784bbb88a006c9ac9e7d59", "bd62887ec21b49a3884f0a8912682b9b", "9873b22da36e472aa28a40fd355b3312", "5172e208110d4b7eb96b761bde052a12", "e60a590182754b178a2b0a3f6be8d819", "4819ee45c94c44d8bfd54b733ffaf72b", "4fcb47311c22449ebd81af42f454f419", "18cf5de3b5574e10b7c3083414eef98e", "f49b82320ac148009386ef63c83d19ba", "a8a41c818f954b6e90a900a222d2e35a", "38d4f7d99b3d4e1cb44519bd25d42aab", "3969b6bbf4164476880ac867e7534b21", "29599cf8dcce40648874392ac5a1f7a9", "1c1200649114490b841c62384a1096f8", "d16e612542db43a8a4b1c352918e5655", "f1fc5e40ef2f42f7b01d1664882b4b82", "8e1462e7e1914679bbb9b53798fef624", "2303b678e7e94100b54c2459925001d2", "ccebecc5330e42bdb5be22ab243c164b", "4787f6114eac499e95df139cc5f0df07", "b6a86a30c4cc4e9d85fa93527640d935", "b5155a6ff3fe444d8b80594e99394e79", "12b8652032e14b549cdadde7d9f8762b", "986a9e37c31f492a84a53bb1a7423d1a", "5558b2ed1f284084a648b3136714e676", "7977bad659db49559d514047bcc4f2af", "312b199f2996489b80998f2e32be5019", "b17a15e40e7f454384053817f1921744", "73946fddacb94a14ad29f01ced0a475c", "5650cfce4ea342f8902bc4af41d535d3", "2820b707e3814a669ebdb7f7625b9baf", "17edc2fc53c247478b61259095f7ecbe", "ccc42e2949914ec0a12a231f5e52d69c", "58c49b827c3e420ea6e70a9aac8c136d", "db4b0ae7b48748ac9ed709320bbc28a3", "7bd7ec085862456dba876a9dab666dc0", "f5847676a2a54ba8bd33a81462f15541", "00af46557c614a05b88e8471f08d4b8c", "dce145531632486a94eaf8fc3a3a5551", "ce0bbb0d01334b5fa034e977df141c1d", "45d0f2f96aab45339e83a19f82a53113", "33863efe7d214d9aa93375367392b28c", "8dd26447c4814b82a212b880dbd23835", "ca0f4721d0f8469cb57135f76be62c43", "9824fef6511f4f5ba3e7c8db946d31d5", "457fc818876b40ec97551a8f15be10d7", "dbc2f111ad334e4b871db42a6b602ba7", "fb5bce31917e454c8788284bbc334d7b", "f1447f76396b4d9797c794bd1d06dee0", "2193f34379fc47819b1c70fe8ab3d76f", "33fb16c2fb8747f7ab73b89a9bc37fa2", "8edc5c87ee9844b298707f0a69fecbd4", "427fd4bd8e8748988de382ea5bfe458a", "96551532323b4156b26a4f71f3da2600", "80243779c4fc440cbf095728dbfe747b", "bcc86a727fc2495ab355254b7336bf25", "76b1b0d5557740509f889faae57889a7", "4c63aef635824155bf96f27c883d2902", "0ade052cf026451b8ff3d4c6ff6d8a16", "48f2d113e58c4d82b6916b4e56985a58", "ebd5d31c8ddd4c1cbf3e067eab921023", "80dafc9c61f74dfeb3821ee3784e363a", "3b11083c11894b05b3d17d9feedcd225", "3639ca1df7c44fd0a56f2c36e67fcd1a", "6c899e066b374426b7f79f5905d0119f", "332d5c5def934a9fb570b18a78e08f6f", "b79eeed0558545ba8418be813d4a926f", "72583fa94c6c415f9160ccbf93d41c05", "57608d59847b45378ed620904049f4e2", "adc1477df6bb41fc9df229c42b5e4d26", "6e375d6328ad495b861fd1bd37f40ea3", "06901b9886e841e98518e66ead5e57ce", "82bcb7da4deb4e7c94c17a91555d0c56", "cfbb1fe97755477abd016cd36664a840", "44dc1a44b893462a854f8f77ffc51e98", "d21ad0aef45e464a8c623b73dfc5bbc8", "4f66b06b16374b568ff0a7bd2c5a7ff8", "86ffc306b3f04722b0c8bf48b4d4a091", "400e0f11dcdc492d84aac1f7760606b9", "3d0c3a73b8a543169e9542daac163428", "e102999a70644a29add1a48ff9f13332", "49a9c6ce24a24cab87966df74fa73a16", "63ab7a7ef4ca4610abe88c7ade214c5c", "3db862a86be24fd8af1adbf23cd298c0", "e4c0341be0b144c3b50c03512717e63b", "333342ac75234697bd483df980517dcb", "a607f3ed61f24b40b1da6d98931726b5", "3c9e99ff0d7742b2af37a1e53430ef6c" ] }, "id": "brWv3JyRUc2A", "outputId": "14a28f2a-cf53-4c21-848d-4ca85d6e0ace" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Loading BERT-large...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "config.json: 0%| | 0.00/571 [00:00 CUDA > CPU ──\n", "try:\n", " import torch_xla\n", " import torch_xla.core.xla_model as xm\n", " device = xm.xla_device()\n", " DEVICE_TYPE = \"TPU\"\n", " print(f\"Using TPU: {device}\")\n", "except ImportError:\n", " if torch.cuda.is_available():\n", " device = torch.device(\"cuda\")\n", " DEVICE_TYPE = \"CUDA\"\n", " print(f\"Using CUDA: {torch.cuda.get_device_name()}\")\n", " else:\n", " device = torch.device(\"cpu\")\n", " DEVICE_TYPE = \"CPU\"\n", " print(\"Using CPU (will be slow for large matrices)\")\n", "\n", "def to_compute(tensor):\n", " \"\"\"Move tensor to compute device as float32.\"\"\"\n", " return tensor.detach().float().to(device)\n", "\n", "def to_numpy(tensor):\n", " \"\"\"Move tensor to CPU numpy.\"\"\"\n", " if DEVICE_TYPE == \"TPU\":\n", " return tensor.cpu().numpy()\n", " else:\n", " return tensor.cpu().numpy()\n", "\n", "print(\"=\" * 70)\n", "print(\"T5-v1.1-XXL FULL MODEL — FLUX TEXT ENCODER + DECODER\")\n", "print(\"Inactive Weight Geometry Analysis\")\n", "print(\"=\" * 70)\n", "\n", "# %% Cell 1: Sectioned loading — process encoder and decoder separately\n", "# The full model + fp32 analysis buffers exceed RAM.\n", "# Strategy: load full model, extract encoder weights into a dict, delete model,\n", "# analyze encoder, then reload for decoder.\n", "\n", "from transformers import T5ForConditionalGeneration, AutoConfig\n", "from huggingface_hub import hf_hub_download, list_repo_files\n", "try:\n", " import safetensors.torch as st\n", " HAS_SAFETENSORS = True\n", "except ImportError:\n", " HAS_SAFETENSORS = False\n", "\n", "MODEL_ID = \"google/t5-v1_1-xxl\"\n", "\n", "print(f\"\\nLoading config for {MODEL_ID}...\")\n", "config = AutoConfig.from_pretrained(MODEL_ID)\n", "print(f\"Config:\")\n", "print(f\" d_model = {config.d_model}\")\n", "print(f\" d_kv = {config.d_kv}\")\n", "print(f\" d_ff = {config.d_ff}\")\n", "print(f\" num_heads = {config.num_heads}\")\n", "print(f\" num_layers = {config.num_layers}\")\n", "print(f\" num_decoder_layers = {config.num_decoder_layers}\")\n", "print(f\" feed_forward_proj = {config.feed_forward_proj}\")\n", "\n", "D_MODEL = config.d_model\n", "\n", "# Download and load weights shard by shard using safetensors or pytorch\n", "print(f\"\\nDiscovering weight files...\")\n", "repo_files = list_repo_files(MODEL_ID)\n", "weight_files = [f for f in repo_files if f.endswith('.safetensors')] if HAS_SAFETENSORS else []\n", "if not weight_files:\n", " # Fallback to pytorch bin format\n", " weight_files = [f for f in repo_files if f.endswith('.bin') and 'optimizer' not in f and 'training' not in f]\n", " USE_SAFETENSORS = False\n", "else:\n", " USE_SAFETENSORS = True\n", "\n", "print(f\"Found {len(weight_files)} weight files ({'safetensors' if USE_SAFETENSORS else 'pytorch bin'})\")\n", "for f in weight_files[:10]:\n", " print(f\" {f}\")\n", "if len(weight_files) > 10:\n", " print(f\" ... and {len(weight_files) - 10} more\")\n", "\n", "# We'll build the catalog by scanning all shards without holding them all in memory\n", "# Process: download shard → catalog its keys → store metadata → release shard\n", "\n", "all_weight_meta = {} # name → {shape, location, wtype, layer, shard_file}\n", "\n", "for shard_file in weight_files:\n", " print(f\" Scanning {shard_file}...\", end=\" \")\n", " local_path = hf_hub_download(MODEL_ID, shard_file)\n", "\n", " # Load shard\n", " if USE_SAFETENSORS:\n", " shard = st.load_file(local_path, device=\"cpu\")\n", " else:\n", " shard = torch.load(local_path, map_location=\"cpu\", weights_only=True)\n", " for name, tensor in shard.items():\n", " if tensor.dim() == 2:\n", " parts = name.split('.')\n", "\n", " # Location\n", " if 'encoder' in name:\n", " location = 'encoder'\n", " elif 'decoder' in name:\n", " location = 'decoder'\n", " else:\n", " location = 'shared'\n", "\n", " # Layer\n", " layer_num = -1\n", " for i, part in enumerate(parts):\n", " if part == 'block' and i + 1 < len(parts):\n", " try: layer_num = int(parts[i + 1])\n", " except: pass\n", "\n", " # Type classification\n", " if 'embed' in name or 'shared' in name:\n", " wtype = 'embedding'\n", " elif 'relative_attention_bias' in name:\n", " wtype = 'position_bias'\n", " elif 'layer_norm' in name or 'final_layer_norm' in name:\n", " wtype = 'layernorm'\n", " elif 'SelfAttention' in name:\n", " for subpart in parts:\n", " if subpart in ('q', 'k', 'v', 'o'):\n", " wtype = f'self_attn_{subpart}'\n", " break\n", " else:\n", " wtype = 'self_attn_other'\n", " elif 'EncDecAttention' in name:\n", " for subpart in parts:\n", " if subpart in ('q', 'k', 'v', 'o'):\n", " wtype = f'cross_attn_{subpart}'\n", " break\n", " else:\n", " wtype = 'cross_attn_other'\n", " elif 'DenseReluDense' in name:\n", " for subpart in parts:\n", " if subpart == 'wi_0':\n", " wtype = 'mlp_gate'; break\n", " elif subpart == 'wi_1':\n", " wtype = 'mlp_up'; break\n", " elif subpart == 'wi':\n", " wtype = 'mlp_wi'; break\n", " elif subpart == 'wo':\n", " wtype = 'mlp_down'; break\n", " else:\n", " wtype = 'mlp_other'\n", " else:\n", " wtype = 'other'\n", "\n", " all_weight_meta[name] = {\n", " 'shape': tuple(tensor.shape),\n", " 'location': location,\n", " 'wtype': wtype,\n", " 'layer': layer_num,\n", " 'numel': tensor.numel(),\n", " 'shard_file': shard_file,\n", " }\n", "\n", " n_2d = sum(1 for k, v in shard.items() if len(v.shape) == 2)\n", " print(f\"{len(shard)} tensors ({n_2d} 2D)\")\n", " del shard\n", " gc.collect()\n", "\n", "total_params = sum(m['numel'] for m in all_weight_meta.values())\n", "print(f\"\\nTotal 2D params cataloged: {total_params:,}\")\n", "\n", "# Build catalog structure matching rest of the script\n", "catalog = defaultdict(list)\n", "for name, meta in all_weight_meta.items():\n", " catalog[meta['wtype']].append({\n", " 'name': name,\n", " 'shape': meta['shape'],\n", " 'location': meta['location'],\n", " 'layer': meta['layer'],\n", " 'numel': meta['numel'],\n", " '_name_ref': name,\n", " '_shard_file': meta['shard_file'],\n", " })\n", "\n", "# %% Cell 2: Print catalog (already built during shard scanning)\n", "print(f\"\\n{'='*70}\")\n", "print(\"WEIGHT CATALOG\")\n", "print(f\"{'='*70}\")\n", "\n", "for wtype, entries in sorted(catalog.items()):\n", " total = sum(e['numel'] for e in entries)\n", " shapes = set(str(e['shape']) for e in entries)\n", " print(f\" {wtype:25s}: {len(entries):3d} matrices, {total:>15,} params, shapes={shapes}\")\n", "\n", "# %% Cell 3: Helper to load individual tensors from shards\n", "_shard_cache = {} # cache one shard at a time\n", "\n", "def get_weight(name):\n", " \"\"\"Load a single weight tensor from its safetensors/bin shard, move to compute device as fp32.\"\"\"\n", " global _shard_cache\n", "\n", " meta = all_weight_meta[name]\n", " shard_file = meta['shard_file']\n", "\n", " # Cache the current shard to avoid reloading for consecutive reads\n", " if shard_file not in _shard_cache:\n", " _shard_cache.clear() # only keep one shard in memory\n", " gc.collect()\n", " local_path = hf_hub_download(MODEL_ID, shard_file)\n", " if USE_SAFETENSORS:\n", " _shard_cache[shard_file] = st.load_file(local_path, device=\"cpu\")\n", " else:\n", " _shard_cache[shard_file] = torch.load(local_path, map_location=\"cpu\", weights_only=True)\n", "\n", " tensor = _shard_cache[shard_file][name]\n", " return tensor.float().to(device)\n", "\n", "def release_shard_cache():\n", " \"\"\"Explicitly release cached shard.\"\"\"\n", " global _shard_cache\n", " _shard_cache.clear()\n", " gc.collect()\n", " if DEVICE_TYPE != \"CPU\":\n", " try:\n", " torch.cuda.empty_cache()\n", " except:\n", " pass\n", "\n", "release_shard_cache()\n", "\n", "# %% Cell 4: SVD — on compute device\n", "print(f\"\\n{'='*70}\")\n", "print(f\"SINGULAR VALUE DECOMPOSITION — EFFECTIVE RANK ({DEVICE_TYPE})\")\n", "print(f\"{'='*70}\")\n", "\n", "svd_results = []\n", "types_to_svd = [k for k in catalog.keys()\n", " if k not in ['embedding', 'layernorm', 'position_bias', 'other']]\n", "\n", "for wtype in types_to_svd:\n", " entries = catalog[wtype]\n", " # Sample: first 3, middle 3, last 3\n", " if len(entries) <= 9:\n", " sample_entries = entries\n", " else:\n", " n = len(entries)\n", " sample_idx = sorted(set([0, 1, 2, n//2-1, n//2, n//2+1, n-3, n-2, n-1]))\n", " sample_idx = [i for i in sample_idx if 0 <= i < n]\n", " sample_entries = [entries[i] for i in sample_idx]\n", "\n", " t0 = time.time()\n", " for entry in sample_entries:\n", " try:\n", " W = get_weight(entry['_name_ref'])\n", " S = to_numpy(torch.linalg.svdvals(W))\n", "\n", " stable_rank = (S ** 2).sum() / (S[0] ** 2) if S[0] > 0 else 0\n", " pr = (S.sum()) ** 2 / ((S ** 2).sum()) if (S ** 2).sum() > 0 else 0\n", " active_frac = (S > 0.01 * S[0]).sum() / len(S)\n", " cumsum = np.cumsum(S) / S.sum()\n", " rank_90 = np.searchsorted(cumsum, 0.90) + 1\n", " condition = S[0] / (S[-1] + 1e-10)\n", "\n", " svd_results.append({\n", " 'name': entry['name'], 'wtype': wtype,\n", " 'layer': entry['layer'], 'shape': entry['shape'],\n", " 'stable_rank': stable_rank, 'pr': pr,\n", " 'active_frac': active_frac, 'rank_90': rank_90,\n", " 'condition': condition,\n", " })\n", " del W\n", " except Exception as e:\n", " print(f\" SVD failed for {entry['name']}: {e}\")\n", "\n", " elapsed = time.time() - t0\n", " print(f\" {wtype}: {len(sample_entries)} matrices in {elapsed:.1f}s\")\n", " gc.collect()\n", "\n", "# Summary\n", "svd_by_type = defaultdict(list)\n", "for r in svd_results:\n", " svd_by_type[r['wtype']].append(r)\n", "\n", "print(f\"\\n{'Type':25s} {'StableRank':>10s} {'PR':>8s} {'Active%':>8s} {'Rank90':>7s} {'Condition':>12s}\")\n", "for wtype in sorted(svd_by_type.keys()):\n", " subset = svd_by_type[wtype]\n", " sr = np.mean([r['stable_rank'] for r in subset])\n", " pr = np.mean([r['pr'] for r in subset])\n", " af = np.mean([r['active_frac'] for r in subset])\n", " r90 = np.mean([r['rank_90'] for r in subset])\n", " cond = np.mean([r['condition'] for r in subset])\n", " print(f\" {wtype:23s} {sr:10.2f} {pr:8.2f} {af:8.3f} {r90:7.1f} {cond:12.1f}\")\n", "\n", "release_shard_cache()\n", "\n", "# %% Cell 5: Sparsity\n", "print(f\"\\n{'='*70}\")\n", "print(\"SPARSITY TOPOLOGY\")\n", "print(f\"{'='*70}\")\n", "\n", "thresholds = [1e-4, 1e-3, 1e-2, 1e-1]\n", "print(f\"\\n{'Type':25s}\", end=\"\")\n", "for t in thresholds:\n", " print(f\" {'<'+str(t):>8s}\", end=\"\")\n", "print()\n", "\n", "sparsity_results = {}\n", "for wtype in sorted(catalog.keys()):\n", " if wtype in ['embedding', 'layernorm', 'position_bias']:\n", " continue\n", "\n", " entries = catalog[wtype]\n", " total_count = 0\n", " threshold_counts = {t: 0 for t in thresholds}\n", "\n", " for entry in entries:\n", " try:\n", " W = get_weight(entry['_name_ref'])\n", " abs_w = W.abs()\n", " n = abs_w.numel()\n", " total_count += n\n", " for t in thresholds:\n", " threshold_counts[t] += (abs_w < t).sum().item()\n", " del W, abs_w\n", " except Exception as e:\n", " print(f\" Failed for {entry['name']}: {e}\")\n", "\n", " if total_count > 0:\n", " fracs = {t: threshold_counts[t] / total_count for t in thresholds}\n", " sparsity_results[wtype] = fracs\n", " print(f\" {wtype:23s}\", end=\"\")\n", " for t in thresholds:\n", " print(f\" {fracs[t]:8.4f}\", end=\"\")\n", " print()\n", "\n", " gc.collect()\n", "\n", "# Q vs K vs V highlight — self and cross attention\n", "print(f\"\\n--- SELF-ATTENTION SPARSITY (<0.1) ---\")\n", "for wtype in ['self_attn_q', 'self_attn_k', 'self_attn_v', 'self_attn_o']:\n", " if wtype in sparsity_results:\n", " print(f\" {wtype:25s}: {sparsity_results[wtype][0.1]*100:.1f}%\")\n", "\n", "print(f\"\\n--- CROSS-ATTENTION SPARSITY (<0.1) ---\")\n", "for wtype in ['cross_attn_q', 'cross_attn_k', 'cross_attn_v', 'cross_attn_o']:\n", " if wtype in sparsity_results:\n", " print(f\" {wtype:25s}: {sparsity_results[wtype][0.1]*100:.1f}%\")\n", "\n", "# GeGLU MLP comparison\n", "print(f\"\\n--- GeGLU MLP SPARSITY (<0.1) ---\")\n", "for wtype in ['mlp_gate', 'mlp_up', 'mlp_down']:\n", " if wtype in sparsity_results:\n", " print(f\" {wtype:25s}: {sparsity_results[wtype][0.1]*100:.1f}%\")\n", "\n", "# Encoder vs Decoder sparsity comparison\n", "print(f\"\\n--- ENCODER vs DECODER Q SPARSITY (<0.1) ---\")\n", "for wtype in ['self_attn_q', 'self_attn_k', 'self_attn_v']:\n", " for location in ['encoder', 'decoder']:\n", " entries = [e for e in catalog.get(wtype, []) if e['location'] == location]\n", " if not entries:\n", " continue\n", " total_count = 0\n", " below_01 = 0\n", " for entry in entries:\n", " try:\n", " W = get_weight(entry['_name_ref'])\n", " abs_w = W.abs()\n", " total_count += abs_w.numel()\n", " below_01 += (abs_w < 0.1).sum().item()\n", " del W, abs_w\n", " except:\n", " pass\n", " if total_count > 0:\n", " frac = below_01 / total_count\n", " print(f\" {location:8s} {wtype:15s}: {frac*100:.1f}%\")\n", " gc.collect()\n", "\n", "release_shard_cache()\n", "\n", "# %% Cell 6: QK similarity manifold — encoder AND decoder\n", "print(f\"\\n{'='*70}\")\n", "print(\"QK SIMILARITY MANIFOLD\")\n", "print(f\"{'='*70}\")\n", "\n", "n_enc_layers = config.num_layers\n", "n_dec_layers = config.num_decoder_layers\n", "enc_sample = sorted(set([0, 1, 2, n_enc_layers//4, n_enc_layers//2,\n", " 3*n_enc_layers//4, n_enc_layers-3, n_enc_layers-2, n_enc_layers-1]))\n", "dec_sample = sorted(set([0, 1, 2, n_dec_layers//4, n_dec_layers//2,\n", " 3*n_dec_layers//4, n_dec_layers-3, n_dec_layers-2, n_dec_layers-1]))\n", "enc_sample = [l for l in enc_sample if 0 <= l < n_enc_layers]\n", "dec_sample = [l for l in dec_sample if 0 <= l < n_dec_layers]\n", "\n", "qk_results = {'encoder': [], 'decoder': [], 'cross_attn': []}\n", "\n", "for location, sample_layers_loc, attn_prefix in [\n", " ('encoder', enc_sample, 'self_attn'),\n", " ('decoder', dec_sample, 'self_attn'),\n", " ('decoder', dec_sample, 'cross_attn'),\n", "]:\n", " label = f\"{location} {attn_prefix}\"\n", " print(f\"\\n--- {label.upper()} ---\")\n", "\n", " q_entries_loc = {e['layer']: e for e in catalog.get(f'{attn_prefix}_q', [])\n", " if e['location'] == location}\n", " k_entries_loc = {e['layer']: e for e in catalog.get(f'{attn_prefix}_k', [])\n", " if e['location'] == location}\n", "\n", " result_key = 'cross_attn' if attn_prefix == 'cross_attn' else location\n", "\n", " for layer in sample_layers_loc:\n", " if layer not in q_entries_loc or layer not in k_entries_loc:\n", " continue\n", " try:\n", " t0 = time.time()\n", " W_q = get_weight(q_entries_loc[layer]['_name_ref'])\n", " W_k = get_weight(k_entries_loc[layer]['_name_ref'])\n", "\n", " QK = W_q @ W_k.T\n", " S_qk = to_numpy(torch.linalg.svdvals(QK))\n", " stable_rank = (S_qk ** 2).sum() / (S_qk[0] ** 2) if S_qk[0] > 0 else 0\n", " pr = (S_qk.sum()) ** 2 / ((S_qk ** 2).sum()) if (S_qk ** 2).sum() > 0 else 0\n", "\n", " sym_diff = torch.norm(QK - QK.T).item() / (torch.norm(QK).item() + 1e-10)\n", "\n", " QK_sym = (QK + QK.T) / 2\n", " eigvals = to_numpy(torch.linalg.eigvalsh(QK_sym))[::-1]\n", " n_pos = (eigvals > 0).sum()\n", " n_neg = (eigvals < 0).sum()\n", " dim = QK.shape[0]\n", " elapsed = time.time() - t0\n", "\n", " print(f\" Layer {layer:2d}: SR={stable_rank:.2f}, PR={pr:.2f}, \"\n", " f\"pos={n_pos}, neg={n_neg} ({n_pos/dim:.3f}/{n_neg/dim:.3f}), \"\n", " f\"sym={sym_diff:.4f}, top_eig={eigvals[0]:.2f} ({elapsed:.1f}s)\")\n", "\n", " qk_results[result_key].append({\n", " 'layer': layer, 'stable_rank': stable_rank, 'pr': pr,\n", " 'n_positive': n_pos, 'n_negative': n_neg, 'dim': dim,\n", " 'sym_dev': sym_diff, 'top_eig': eigvals[0],\n", " })\n", "\n", " del W_q, W_k, QK, QK_sym, eigvals\n", " gc.collect()\n", " except Exception as e:\n", " print(f\" Layer {layer}: FAILED — {e}\")\n", "\n", "# Trends\n", "for key in ['encoder', 'decoder', 'cross_attn']:\n", " results = qk_results[key]\n", " if len(results) >= 2:\n", " first = results[0]\n", " last = results[-1]\n", " print(f\"\\n {key} pos fraction: L{first['layer']}={first['n_positive']/first['dim']:.3f} → \"\n", " f\"L{last['layer']}={last['n_positive']/last['dim']:.3f}\")\n", "\n", "release_shard_cache()\n", "\n", "# %% Cell 7: MLP dead neurons — handles GeGLU (wi_0 × wi_1), encoder + decoder\n", "print(f\"\\n{'='*70}\")\n", "print(\"MLP DEAD NEURONS (GeGLU: gate × value)\")\n", "print(f\"{'='*70}\")\n", "\n", "for location in ['encoder', 'decoder']:\n", " print(f\"\\n--- {location.upper()} ---\")\n", " gate_entries_loc = {e['layer']: e for e in catalog.get('mlp_gate', []) if e['location'] == location}\n", " up_entries_loc = {e['layer']: e for e in catalog.get('mlp_up', []) if e['location'] == location}\n", " down_entries_loc = {e['layer']: e for e in catalog.get('mlp_down', []) if e['location'] == location}\n", "\n", " loc_sample = enc_sample if location == 'encoder' else dec_sample\n", "\n", " for layer in loc_sample:\n", " has_gate = layer in gate_entries_loc\n", " has_up = layer in up_entries_loc\n", " has_down = layer in down_entries_loc\n", "\n", " if not has_down:\n", " continue\n", "\n", " try:\n", " W_down = get_weight(down_entries_loc[layer]['_name_ref'])\n", " down_norms = to_numpy(torch.norm(W_down, dim=0))\n", "\n", " if has_gate and has_up:\n", " W_gate = get_weight(gate_entries_loc[layer]['_name_ref'])\n", " W_up = get_weight(up_entries_loc[layer]['_name_ref'])\n", " gate_norms = to_numpy(torch.norm(W_gate, dim=1))\n", " up_norms = to_numpy(torch.norm(W_up, dim=1))\n", " combined = gate_norms * up_norms * down_norms\n", " d_ff = len(gate_norms)\n", " del W_gate, W_up\n", " elif has_up:\n", " W_up = get_weight(up_entries_loc[layer]['_name_ref'])\n", " up_norms = to_numpy(torch.norm(W_up, dim=1))\n", " combined = up_norms * down_norms\n", " d_ff = len(up_norms)\n", " del W_up\n", " else:\n", " continue\n", "\n", " mean_c = combined.mean()\n", " dead_01 = (combined < 0.01 * mean_c).sum()\n", " dead_10 = (combined < 0.10 * mean_c).sum()\n", "\n", " print(f\" Layer {layer:2d}: d_ff={d_ff}, \"\n", " f\"dead(<1%)={dead_01}/{d_ff} ({dead_01/d_ff*100:.1f}%), \"\n", " f\"weak(<10%)={dead_10}/{d_ff} ({dead_10/d_ff*100:.1f}%)\")\n", "\n", " del W_down, combined\n", " gc.collect()\n", " except Exception as e:\n", " print(f\" Layer {layer}: FAILED — {e}\")\n", "\n", "release_shard_cache()\n", "\n", "# %% Cell 8: Cross-layer Q correlation — encoder AND decoder\n", "print(f\"\\n{'='*70}\")\n", "print(\"CROSS-LAYER Q WEIGHT CORRELATION\")\n", "print(f\"{'='*70}\")\n", "\n", "for location in ['encoder', 'decoder']:\n", " print(f\"\\n--- {location.upper()} self_attn_q ---\")\n", " q_entries_loc = {e['layer']: e for e in catalog.get('self_attn_q', [])\n", " if e['location'] == location}\n", " loc_sample = enc_sample if location == 'encoder' else dec_sample\n", "\n", " q_flat = {}\n", " for layer in loc_sample:\n", " if layer in q_entries_loc:\n", " try:\n", " W = get_weight(q_entries_loc[layer]['_name_ref']).flatten()\n", " q_flat[layer] = W\n", " except:\n", " pass\n", "\n", " if len(q_flat) >= 2:\n", " layers = sorted(q_flat.keys())\n", " print(f\" \", end=\"\")\n", " for l in layers:\n", " print(f\" L{l:2d}\", end=\"\")\n", " print()\n", " for i, li in enumerate(layers):\n", " print(f\" L{li:2d}\", end=\"\")\n", " for j, lj in enumerate(layers):\n", " if j < i:\n", " print(f\" \", end=\"\")\n", " elif j == i:\n", " print(f\" -- \", end=\"\")\n", " else:\n", " if q_flat[li].shape == q_flat[lj].shape:\n", " cos = torch.dot(q_flat[li], q_flat[lj]) / (\n", " torch.norm(q_flat[li]) * torch.norm(q_flat[lj]) + 1e-8\n", " )\n", " print(f\" {cos.item():.3f}\", end=\"\")\n", " else:\n", " print(f\" N/A\", end=\"\")\n", " print()\n", "\n", " del q_flat\n", " gc.collect()\n", "\n", "# Cross-attention Q correlation (decoder only)\n", "print(f\"\\n--- DECODER cross_attn_q ---\")\n", "xq_entries = {e['layer']: e for e in catalog.get('cross_attn_q', [])\n", " if e['location'] == 'decoder'}\n", "xq_flat = {}\n", "for layer in dec_sample:\n", " if layer in xq_entries:\n", " try:\n", " W = get_weight(xq_entries[layer]['_name_ref']).flatten()\n", " xq_flat[layer] = W\n", " except:\n", " pass\n", "\n", "if len(xq_flat) >= 2:\n", " layers = sorted(xq_flat.keys())\n", " adj_corrs = []\n", " for i in range(len(layers) - 1):\n", " if xq_flat[layers[i]].shape == xq_flat[layers[i+1]].shape:\n", " cos = torch.dot(xq_flat[layers[i]], xq_flat[layers[i+1]]) / (\n", " torch.norm(xq_flat[layers[i]]) * torch.norm(xq_flat[layers[i+1]]) + 1e-8\n", " )\n", " adj_corrs.append(cos.item())\n", " if adj_corrs:\n", " print(f\" adj_mean={np.mean(adj_corrs):.4f}, range=[{min(adj_corrs):.4f}, {max(adj_corrs):.4f}]\")\n", "\n", "del xq_flat\n", "gc.collect()\n", "\n", "release_shard_cache()\n", "\n", "# %% Cell 9: Position bias\n", "print(f\"\\n{'='*70}\")\n", "print(\"RELATIVE POSITION BIAS\")\n", "print(f\"{'='*70}\")\n", "\n", "for entry in catalog.get('position_bias', []):\n", " try:\n", " rpb = to_numpy(get_weight(entry['_name_ref']))\n", " n_buckets, n_heads = rpb.shape\n", " print(f\"\\n {entry['name']}: [{n_buckets} buckets, {n_heads} heads]\")\n", "\n", " local_heads = sum(1 for h in range(n_heads) if np.argmax(rpb[:, h]) <= 2)\n", " global_heads = sum(1 for h in range(n_heads) if np.argmax(rpb[:, h]) >= n_buckets - 3)\n", " mixed = n_heads - local_heads - global_heads\n", "\n", " print(f\" Local heads (peak 0-2): {local_heads}/{n_heads}\")\n", " print(f\" Global heads (peak {n_buckets-3}+): {global_heads}/{n_heads}\")\n", " print(f\" Mixed: {mixed}/{n_heads}\")\n", " print(f\" Value range: [{rpb.min():.1f}, {rpb.max():.1f}]\")\n", " del rpb\n", " except Exception as e:\n", " print(f\" FAILED: {e}\")\n", "\n", "# %% Cell 10: LayerNorm scales (sampled)\n", "print(f\"\\n{'='*70}\")\n", "print(\"LAYER NORM SCALES (sampled)\")\n", "print(f\"{'='*70}\")\n", "\n", "for entry in catalog.get('layernorm', []):\n", " if 'weight' not in entry['name']:\n", " continue\n", " if entry['layer'] not in [-1, 0, 1, 5, 6, 11, 12, 17, 18, 22, 23]:\n", " continue\n", " try:\n", " w = to_numpy(get_weight(entry['_name_ref']))\n", " high = (w > 1.5).sum()\n", " low = (w < 0.5).sum()\n", " near_one = ((w > 0.8) & (w < 1.2)).sum()\n", " print(f\" {entry['name'][:65]:65s} mean={w.mean():.4f} std={w.std():.4f} \"\n", " f\"hi={high} lo={low} ~1={near_one}/{len(w)}\")\n", " del w\n", " except:\n", " pass\n", "\n", "# %% Cell 11: Summary\n", "print(f\"\\n{'='*70}\")\n", "print(\"T5-v1.1-XXL FULL MODEL (FLUX TEXT ENCODER + DECODER) — SUMMARY\")\n", "print(f\"{'='*70}\")\n", "\n", "print(f\"\\nModel: google/t5-v1_1-xxl (encoder + decoder)\")\n", "print(f\"Encoder used by: Flux.1 Schnell, Flux.1 Dev, Flux.2\")\n", "print(f\"Params: {total_params:,}\")\n", "print(f\"d_model: {config.d_model}\")\n", "print(f\"d_ff: {config.d_ff}\")\n", "print(f\"n_heads: {config.num_heads}\")\n", "print(f\"n_layers: {config.num_layers} enc + {config.num_decoder_layers} dec\")\n", "print(f\"feed_forward: {config.feed_forward_proj} (GeGLU)\")\n", "print(f\"Compute device: {DEVICE_TYPE}\")\n", "\n", "# Key Q sparsity — by location\n", "print(f\"\\n*** ATTENTION SPARSITY (<0.1) ***\")\n", "for wtype in ['self_attn_q', 'self_attn_k', 'self_attn_v', 'self_attn_o',\n", " 'cross_attn_q', 'cross_attn_k', 'cross_attn_v', 'cross_attn_o']:\n", " if wtype in sparsity_results:\n", " print(f\" {wtype:25s}: {sparsity_results[wtype][0.1]*100:.1f}%\")\n", "print(f\" {'Reference T5-Small Q':25s}: 93.7%\")\n", "print(f\" {'Reference T5-Base Q':25s}: 99.4%\")\n", "print(f\" {'Reference BERT-large Q':25s}: 99.1%\")\n", "print(f\" {'Reference DINOv2-L Q':25s}: 100.0%\")\n", "\n", "# GeGLU MLP sparsity\n", "if 'mlp_gate' in sparsity_results:\n", " print(f\"\\n*** GeGLU MLP SPARSITY (<0.1) ***\")\n", " for wtype in ['mlp_gate', 'mlp_up', 'mlp_down']:\n", " if wtype in sparsity_results:\n", " print(f\" {wtype:25s}: {sparsity_results[wtype][0.1]*100:.1f}%\")\n", "\n", "# QK manifold trends\n", "print(f\"\\n*** QK MANIFOLD TRENDS ***\")\n", "for key in ['encoder', 'decoder', 'cross_attn']:\n", " results = qk_results.get(key, [])\n", " if len(results) >= 2:\n", " first = results[0]\n", " last = results[-1]\n", " trend = last['n_positive']/last['dim'] - first['n_positive']/first['dim']\n", " print(f\" {key:15s}: L{first['layer']}={first['n_positive']/first['dim']:.3f} → \"\n", " f\"L{last['layer']}={last['n_positive']/last['dim']:.3f} (Δ={trend:+.3f})\")\n", "print(f\" {'Ref T5-Small enc':15s}: L0=0.615 → L5=0.535 (Δ=-0.080)\")\n", "print(f\" {'Ref BERT-large':15s}: L0=0.446 → L23=0.513 (Δ=+0.066)\")\n", "print(f\" {'Ref CLIP-bigG':15s}: L0=0.498 → L47=0.582 (Δ=+0.084)\")\n", "\n", "print(f\"\\nDone.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KYgphpblV-Tu", "outputId": "b76b9d1c-7151-462a-bdb5-088cfdfe7af4" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/tmp/ipykernel_11595/2242234066.py:19: DeprecationWarning: Use torch_xla.device instead\n", " device = xm.xla_device()\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Using TPU: xla:0\n", "======================================================================\n", "T5-v1.1-XXL FULL MODEL — FLUX TEXT ENCODER + DECODER\n", "Inactive Weight Geometry Analysis\n", "======================================================================\n", "\n", "Loading config for google/t5-v1_1-xxl...\n", "Config:\n", " d_model = 4096\n", " d_kv = 64\n", " d_ff = 10240\n", " num_heads = 64\n", " num_layers = 24\n", " num_decoder_layers = 24\n", " feed_forward_proj = gated-gelu\n", "\n", "Discovering weight files...\n", "Found 1 weight files (pytorch bin)\n", " pytorch_model.bin\n", " Scanning pytorch_model.bin... " ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# T5-v1.1-XXL (FLUX TEXT ENCODER) — G4 94GB\n", "# Load full model on GPU. SVD on GPU. Eigendecompositions on CPU.\n", "# ============================================================================\n", "\n", "import torch\n", "import numpy as np\n", "import time\n", "import gc\n", "from collections import defaultdict\n", "\n", "device = torch.device(\"cuda\")\n", "print(f\"GPU: {torch.cuda.get_device_name()}\")\n", "print(f\"VRAM: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB\")\n", "\n", "# Load\n", "print(\"\\nLoading google/t5-v1_1-xxl (fp16 → GPU)...\")\n", "t0 = time.time()\n", "from transformers import T5ForConditionalGeneration\n", "model = T5ForConditionalGeneration.from_pretrained(\n", " \"google/t5-v1_1-xxl\", torch_dtype=torch.float16, device_map=\"auto\",\n", ")\n", "model.eval()\n", "total_params = sum(p.numel() for p in model.parameters())\n", "print(f\"Loaded in {time.time()-t0:.0f}s, {total_params:,} params\")\n", "print(f\"VRAM used: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "\n", "config = model.config\n", "print(f\"d_model={config.d_model}, d_kv={config.d_kv}, d_ff={config.d_ff}, \"\n", " f\"heads={config.num_heads}, layers={config.num_layers}+{config.num_decoder_layers}, \"\n", " f\"ff={config.feed_forward_proj}\")\n", "\n", "# Classify\n", "def classify(name):\n", " parts = name.split('.')\n", " loc = 'encoder' if 'encoder' in name else ('decoder' if 'decoder' in name else 'shared')\n", " layer = -1\n", " for i, p in enumerate(parts):\n", " if p == 'block' and i+1 < len(parts):\n", " try: layer = int(parts[i+1])\n", " except: pass\n", " if 'embed' in name or 'shared' in name: wt = 'embedding'\n", " elif 'relative_attention_bias' in name: wt = 'position_bias'\n", " elif 'layer_norm' in name: wt = 'layernorm'\n", " elif 'SelfAttention' in name:\n", " wt = 'self_attn_other'\n", " for s in parts:\n", " if s in ('q','k','v','o'): wt = f'self_attn_{s}'; break\n", " elif 'EncDecAttention' in name:\n", " wt = 'cross_attn_other'\n", " for s in parts:\n", " if s in ('q','k','v','o'): wt = f'cross_attn_{s}'; break\n", " elif 'DenseReluDense' in name:\n", " wt = 'mlp_other'\n", " for s in parts:\n", " if s == 'wi_0': wt = 'mlp_gate'; break\n", " elif s == 'wi_1': wt = 'mlp_up'; break\n", " elif s == 'wo': wt = 'mlp_down'; break\n", " else: wt = 'other'\n", " return wt, loc, layer\n", "\n", "# Catalog\n", "print(f\"\\n{'='*70}\\nCATALOG\\n{'='*70}\")\n", "catalog = defaultdict(list)\n", "for name, param in model.named_parameters():\n", " if param.dim() != 2: continue\n", " wt, loc, layer = classify(name)\n", " catalog[wt].append({'name': name, 'shape': tuple(param.shape), 'loc': loc,\n", " 'layer': layer, 'numel': param.numel()})\n", "\n", "for wt, entries in sorted(catalog.items()):\n", " t = sum(e['numel'] for e in entries)\n", " enc = sum(1 for e in entries if e['loc']=='encoder')\n", " dec = sum(1 for e in entries if e['loc']=='decoder')\n", " shapes = set(str(e['shape']) for e in entries)\n", " print(f\" {wt:25s}: {len(entries):4d} (E:{enc} D:{dec}) {t:>15,} {shapes}\")\n", "\n", "# Helper — get param as fp32 on GPU\n", "def get_w(name):\n", " parts = name.split('.')\n", " obj = model\n", " for p in parts:\n", " obj = obj[int(p)] if p.isdigit() else getattr(obj, p)\n", " return obj.detach().float() # stays on whatever device it's on\n", "\n", "# ALL layers — no sampling\n", "enc_sample = list(range(config.num_layers)) # 0..23\n", "dec_sample = list(range(config.num_decoder_layers)) # 0..23\n", "print(f\"\\nEncoder layers: ALL {len(enc_sample)}\")\n", "print(f\"Decoder layers: ALL {len(dec_sample)}\")\n", "\n", "# ── SVD ──\n", "print(f\"\\n{'='*70}\\nSVD EFFECTIVE RANK\\n{'='*70}\")\n", "svd_results = []\n", "skip = {'embedding','layernorm','position_bias','other','self_attn_other',\n", " 'cross_attn_other','mlp_other'}\n", "all_entries = [(wt,e) for wt,entries in catalog.items() if wt not in skip for e in entries]\n", "total = len(all_entries)\n", "done = 0\n", "t0 = time.time()\n", "\n", "for wt, entry in all_entries:\n", " layer, loc = entry['layer'], entry['loc']\n", " done += 1\n", "\n", " if done % 10 == 0:\n", " print(f\" [{done}/{total}] {wt} {loc} L{layer} \", end=\"\\r\")\n", "\n", " try:\n", " W = get_w(entry['name'])\n", " S = torch.linalg.svdvals(W).cpu().numpy()\n", " svd_results.append({\n", " 'wt': wt, 'loc': loc, 'layer': layer, 'shape': entry['shape'],\n", " 'sr': (S**2).sum()/(S[0]**2) if S[0]>0 else 0,\n", " 'pr': (S.sum())**2/((S**2).sum()) if (S**2).sum()>0 else 0,\n", " 'af': (S>0.01*S[0]).sum()/len(S),\n", " 'r90': np.searchsorted(np.cumsum(S)/S.sum(),0.90)+1,\n", " 'cond': S[0]/(S[-1]+1e-10),\n", " })\n", " except Exception as e:\n", " print(f\"\\n SVD fail {entry['name']}: {e}\")\n", " done += 1\n", "\n", "print(f\" SVD done: {len(svd_results)} matrices in {time.time()-t0:.0f}s \")\n", "\n", "by_type = defaultdict(list)\n", "for r in svd_results: by_type[r['wt']].append(r)\n", "print(f\"\\n{'Type':25s} {'SR':>8s} {'PR':>8s} {'Act%':>6s} {'R90':>5s} {'Cond':>12s}\")\n", "for w in sorted(by_type):\n", " s = by_type[w]\n", " print(f\" {w:23s} {np.mean([r['sr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['pr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['af'] for r in s]):6.3f} \"\n", " f\"{np.mean([r['r90'] for r in s]):5.0f} \"\n", " f\"{np.mean([r['cond'] for r in s]):12.1f}\")\n", "\n", "# ── SPARSITY ──\n", "print(f\"\\n{'='*70}\\nSPARSITY\\n{'='*70}\")\n", "thresholds = [1e-4,1e-3,1e-2,1e-1]\n", "sparsity = defaultdict(lambda: {'total':0, **{t:0 for t in thresholds}})\n", "done = 0\n", "t0 = time.time()\n", "\n", "for wt, entries in catalog.items():\n", " if wt in skip: continue\n", " for entry in entries:\n", " done += 1\n", " if done % 20 == 0:\n", " print(f\" [{done}] {wt} {entry['loc']} L{entry['layer']} \", end=\"\\r\")\n", " W = get_w(entry['name'])\n", " a = W.abs(); n = a.numel()\n", " sparsity[wt]['total'] += n\n", " for t in thresholds:\n", " sparsity[wt][t] += (a8s} {'<1e-3':>8s} {'<0.01':>8s} {'<0.1':>8s}\")\n", "for wt in sorted(sparsity):\n", " sc = sparsity[wt]\n", " if sc['total']==0: continue\n", " print(f\" {wt:23s} {sc[1e-4]/sc['total']:8.4f} {sc[1e-3]/sc['total']:8.4f} \"\n", " f\"{sc[1e-2]/sc['total']:8.4f} {sc[1e-1]/sc['total']:8.4f}\")\n", "\n", "# Encoder vs decoder Q/K/V\n", "print(f\"\\n--- ENCODER vs DECODER SPARSITY (<0.1) ---\")\n", "for wt in ['self_attn_q','self_attn_k','self_attn_v','cross_attn_q','cross_attn_k','cross_attn_v']:\n", " for loc in ['encoder','decoder']:\n", " entries = [e for e in catalog.get(wt,[]) if e['loc']==loc]\n", " if not entries: continue\n", " total_n = 0; below = 0\n", " for e in entries:\n", " W = get_w(e['name']); a = W.abs()\n", " total_n += a.numel(); below += (a<0.1).sum().item()\n", " if total_n > 0:\n", " print(f\" {loc:8s} {wt:20s}: {below/total_n*100:.1f}%\")\n", "\n", "# ── QK MANIFOLD — eigendecomposition on CPU ──\n", "print(f\"\\n{'='*70}\\nQK MANIFOLD (eigvalsh on CPU)\\n{'='*70}\")\n", "\n", "for loc, samples in [('encoder', enc_sample), ('decoder', dec_sample)]:\n", " print(f\"\\n--- {loc.upper()} self-attention ---\")\n", " q_map = {e['layer']:e['name'] for e in catalog.get('self_attn_q',[]) if e['loc']==loc}\n", " k_map = {e['layer']:e['name'] for e in catalog.get('self_attn_k',[]) if e['loc']==loc}\n", "\n", " qk_results = []\n", " for layer in samples:\n", " if layer not in q_map or layer not in k_map: continue\n", " try:\n", " t0 = time.time()\n", " # Get Q,K on GPU, compute QK on GPU, move result to CPU for eigvalsh\n", " Wq = get_w(q_map[layer])\n", " Wk = get_w(k_map[layer])\n", " QK = Wq @ Wk.T\n", " del Wq, Wk\n", "\n", " # SVD on GPU (fast, small result)\n", " S = torch.linalg.svdvals(QK).cpu().numpy()\n", " sr = (S**2).sum()/(S[0]**2) if S[0]>0 else 0\n", "\n", " sym = torch.norm(QK-QK.T).item()/(torch.norm(QK).item()+1e-10)\n", "\n", " # Move to CPU for eigvalsh (avoids GPU memory spike)\n", " QK_cpu = ((QK+QK.T)/2).cpu()\n", " del QK\n", " torch.cuda.empty_cache()\n", "\n", " eig = torch.linalg.eigvalsh(QK_cpu).numpy()[::-1]\n", " del QK_cpu\n", "\n", " n_pos=(eig>0).sum(); n_neg=(eig<0).sum(); dim=len(eig)\n", " print(f\" L{layer:2d}: SR={sr:.2f}, pos={n_pos}({n_pos/dim:.3f}), \"\n", " f\"neg={n_neg}({n_neg/dim:.3f}), sym={sym:.4f}, \"\n", " f\"top={eig[0]:.2f} ({time.time()-t0:.1f}s)\")\n", " qk_results.append({'layer':layer,'n_pos':n_pos,'n_neg':n_neg,'dim':dim,'sr':sr})\n", " del eig; gc.collect()\n", " except Exception as e:\n", " print(f\" L{layer}: FAIL — {e}\")\n", "\n", " if len(qk_results)>=2:\n", " f,l=qk_results[0],qk_results[-1]\n", " print(f\" Trend: L{f['layer']}={f['n_pos']/f['dim']:.3f} → L{l['layer']}={l['n_pos']/l['dim']:.3f}\")\n", "\n", "# Cross-attention QK\n", "print(f\"\\n--- DECODER cross-attention ---\")\n", "xq_map = {e['layer']:e['name'] for e in catalog.get('cross_attn_q',[]) if e['loc']=='decoder'}\n", "xk_map = {e['layer']:e['name'] for e in catalog.get('cross_attn_k',[]) if e['loc']=='decoder'}\n", "for layer in dec_sample:\n", " if layer not in xq_map or layer not in xk_map: continue\n", " try:\n", " t0 = time.time()\n", " Wq = get_w(xq_map[layer]); Wk = get_w(xk_map[layer])\n", " QK = Wq @ Wk.T; del Wq, Wk\n", " sym = torch.norm(QK-QK.T).item()/(torch.norm(QK).item()+1e-10)\n", " QK_cpu = ((QK+QK.T)/2).cpu(); del QK; torch.cuda.empty_cache()\n", " eig = torch.linalg.eigvalsh(QK_cpu).numpy()[::-1]; del QK_cpu\n", " n_pos=(eig>0).sum(); n_neg=(eig<0).sum(); dim=len(eig)\n", " print(f\" L{layer:2d}: pos={n_pos}({n_pos/dim:.3f}), neg={n_neg}({n_neg/dim:.3f}), \"\n", " f\"sym={sym:.4f}, top={eig[0]:.2f} ({time.time()-t0:.1f}s)\")\n", " del eig; gc.collect()\n", " except Exception as e:\n", " print(f\" L{layer}: FAIL — {e}\")\n", "\n", "# ── DEAD NEURONS ──\n", "print(f\"\\n{'='*70}\\nMLP DEAD NEURONS (GeGLU)\\n{'='*70}\")\n", "for loc, samples in [('encoder', enc_sample), ('decoder', dec_sample)]:\n", " print(f\"\\n--- {loc.upper()} ---\")\n", " g_map = {e['layer']:e['name'] for e in catalog.get('mlp_gate',[]) if e['loc']==loc}\n", " u_map = {e['layer']:e['name'] for e in catalog.get('mlp_up',[]) if e['loc']==loc}\n", " d_map = {e['layer']:e['name'] for e in catalog.get('mlp_down',[]) if e['loc']==loc}\n", " td=tn=0\n", " for layer in samples:\n", " if layer not in g_map or layer not in u_map or layer not in d_map: continue\n", " Wg = get_w(g_map[layer]); gn = torch.norm(Wg,dim=1).cpu().numpy(); del Wg\n", " Wu = get_w(u_map[layer]); un = torch.norm(Wu,dim=1).cpu().numpy(); del Wu\n", " Wd = get_w(d_map[layer]); dn = torch.norm(Wd,dim=0).cpu().numpy(); del Wd\n", " c = gn*un*dn; d_ff=len(c); mc=c.mean()\n", " dead=(c<0.01*mc).sum(); weak=(c<0.10*mc).sum()\n", " td+=dead; tn+=d_ff\n", " print(f\" L{layer:2d}: d_ff={d_ff}, dead={dead}({dead/d_ff*100:.1f}%), weak={weak}({weak/d_ff*100:.1f}%)\")\n", " if tn: print(f\" Total: {td}/{tn} ({td/tn*100:.2f}%)\")\n", "\n", "# ── CROSS-LAYER Q ──\n", "print(f\"\\n{'='*70}\\nCROSS-LAYER Q CORRELATION\\n{'='*70}\")\n", "for loc, samples in [('encoder', enc_sample), ('decoder', dec_sample)]:\n", " q_map = {e['layer']:e['name'] for e in catalog.get('self_attn_q',[]) if e['loc']==loc}\n", " qf = {}\n", " for l in samples:\n", " if l in q_map:\n", " try: qf[l] = get_w(q_map[l]).cpu().flatten()\n", " except: pass\n", " if len(qf)>=2:\n", " ls = sorted(qf)\n", " adj = []\n", " for i in range(len(ls)-1):\n", " a,b = qf[ls[i]],qf[ls[i+1]]\n", " if a.shape==b.shape:\n", " adj.append((torch.dot(a,b)/(torch.norm(a)*torch.norm(b)+1e-8)).item())\n", " if adj:\n", " print(f\" {loc} adj Q cos: mean={np.mean(adj):.4f}, range=[{min(adj):.4f},{max(adj):.4f}]\")\n", " del qf; gc.collect()\n", "\n", "# ── POSITION BIAS ──\n", "print(f\"\\n{'='*70}\\nPOSITION BIAS\\n{'='*70}\")\n", "for entry in catalog.get('position_bias',[]):\n", " rpb = get_w(entry['name']).cpu().numpy()\n", " nb,nh = rpb.shape\n", " loc_h = sum(1 for h in range(nh) if np.argmax(rpb[:,h])<=2)\n", " glb_h = sum(1 for h in range(nh) if np.argmax(rpb[:,h])>=nb-3)\n", " print(f\" {entry['loc']:8s}: [{nb}×{nh}] Local:{loc_h} Global:{glb_h} \"\n", " f\"Mixed:{nh-loc_h-glb_h} Range:[{rpb.min():.1f},{rpb.max():.1f}]\")\n", "\n", "# ── SUMMARY ──\n", "print(f\"\\n{'='*70}\\nSUMMARY — T5-v1.1-XXL (FLUX)\\n{'='*70}\")\n", "print(f\"Params: {total_params:,}\")\n", "print(f\"d_model={config.d_model}, d_ff={config.d_ff}, heads={config.num_heads}\")\n", "print(f\"Layers: {config.num_layers} enc + {config.num_decoder_layers} dec\")\n", "print(f\"MLP: {config.feed_forward_proj} (GeGLU)\")\n", "for w in ['self_attn_q','self_attn_k','self_attn_v','cross_attn_q']:\n", " sc = sparsity.get(w,{})\n", " if sc.get('total',0) > 0:\n", " print(f\" {w} (<0.1): {sc[1e-1]/sc['total']*100:.1f}%\")\n", "print(f\"\\nRef: T5-Small Q=93.7% | T5-Base Q=99.4% | BERT=99.1% | DINOv2=100%\")\n", "print(f\"VRAM at end: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "print(\"Done.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "3100db19490d4b3b8e34e3822423c51c", "2026821d0e12465b99848851502be9ad", "90f9a7c6054744149db841bc07515ae3", "fa48a378c226442b91bd01f418a85605", "949876c1624d45d7831e2708a799efd0", "08156992aaf54dab843ccfaa3e11d7d6", "6395f20452484331af36014844d3ae9c", "f2071b55975b484592394f60ee48a6c6", "143a8e77aa444a1a8b3a8bff0a7a3d98", "2fcf9f28add14696871fe8ea8082acaa", "4f7cf9d68a04466a9256ff07c0879357" ] }, "id": "WauEvzs2h7iq", "outputId": "39e4ed9c-2ea3-4a3f-db9a-a912e5fab1f0" }, "execution_count": 2, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition\n", "VRAM: 102.0 GB\n", "\n", "Loading google/t5-v1_1-xxl (fp16 → GPU)...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "Loading weights: 0%| | 0/560 [00:0015,} {shapes}\")\n", "\n", "# Helper\n", "def get_w(name):\n", " parts = name.split('.')\n", " obj = model\n", " for p in parts:\n", " obj = obj[int(p)] if p.isdigit() else getattr(obj, p)\n", " return obj.detach().float()\n", "\n", "# All layers — no sampling\n", "enc_layers = list(range(n_enc_layers)) if n_enc_layers else []\n", "dec_layers = list(range(n_dec_layers)) if n_dec_layers else []\n", "print(f\"\\nEncoder layers: {len(enc_layers)}\")\n", "print(f\"Decoder layers: {len(dec_layers)}\")\n", "\n", "# ── SVD ──\n", "print(f\"\\n{'='*70}\\nSVD EFFECTIVE RANK\\n{'='*70}\")\n", "svd_results = []\n", "skip = {'embedding','layernorm','other','self_attn_other','cross_attn_other','mlp_other','lm_head'}\n", "all_entries = [(wt,e) for wt,entries in catalog.items() if wt not in skip for e in entries]\n", "total = len(all_entries)\n", "t0 = time.time()\n", "\n", "for idx, (wt, entry) in enumerate(all_entries):\n", " if (idx+1) % 10 == 0 or idx == 0:\n", " print(f\" [{idx+1}/{total}] {wt} {entry['loc']} L{entry['layer']} \", end=\"\\r\")\n", " try:\n", " W = get_w(entry['name'])\n", " S = torch.linalg.svdvals(W).cpu().numpy()\n", " svd_results.append({\n", " 'wt': wt, 'loc': entry['loc'], 'layer': entry['layer'], 'shape': entry['shape'],\n", " 'sr': (S**2).sum()/(S[0]**2) if S[0]>0 else 0,\n", " 'pr': (S.sum())**2/((S**2).sum()) if (S**2).sum()>0 else 0,\n", " 'af': (S>0.01*S[0]).sum()/len(S),\n", " 'r90': np.searchsorted(np.cumsum(S)/S.sum(),0.90)+1,\n", " 'cond': S[0]/(S[-1]+1e-10),\n", " })\n", " except Exception as e:\n", " print(f\"\\n SVD fail {entry['name']}: {e}\")\n", "\n", "print(f\" Done: {len(svd_results)} matrices in {time.time()-t0:.0f}s \")\n", "\n", "by_type = defaultdict(list)\n", "for r in svd_results: by_type[r['wt']].append(r)\n", "print(f\"\\n{'Type':25s} {'SR':>8s} {'PR':>8s} {'Act%':>6s} {'R90':>5s} {'Cond':>12s}\")\n", "for w in sorted(by_type):\n", " s = by_type[w]\n", " print(f\" {w:23s} {np.mean([r['sr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['pr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['af'] for r in s]):6.3f} \"\n", " f\"{np.mean([r['r90'] for r in s]):5.0f} \"\n", " f\"{np.mean([r['cond'] for r in s]):12.1f}\")\n", "\n", "# ── SPARSITY ──\n", "print(f\"\\n{'='*70}\\nSPARSITY\\n{'='*70}\")\n", "thresholds = [1e-4,1e-3,1e-2,1e-1]\n", "sparsity = defaultdict(lambda: {'total':0, **{t:0 for t in thresholds}})\n", "t0 = time.time()\n", "for wt, entries in catalog.items():\n", " if wt in skip: continue\n", " for entry in entries:\n", " W = get_w(entry['name']); a = W.abs(); n = a.numel()\n", " sparsity[wt]['total'] += n\n", " for t in thresholds:\n", " sparsity[wt][t] += (a8s} {'<1e-3':>8s} {'<0.01':>8s} {'<0.1':>8s}\")\n", "for wt in sorted(sparsity):\n", " sc = sparsity[wt]\n", " if sc['total']==0: continue\n", " print(f\" {wt:23s} {sc[1e-4]/sc['total']:8.4f} {sc[1e-3]/sc['total']:8.4f} \"\n", " f\"{sc[1e-2]/sc['total']:8.4f} {sc[1e-1]/sc['total']:8.4f}\")\n", "\n", "# Encoder vs decoder\n", "print(f\"\\n--- ENCODER vs DECODER SPARSITY (<0.1) ---\")\n", "for wt in ['self_attn_q','self_attn_k','self_attn_v','cross_attn_q','cross_attn_k','cross_attn_v']:\n", " for loc in ['encoder','decoder']:\n", " entries = [e for e in catalog.get(wt,[]) if e['loc']==loc]\n", " if not entries: continue\n", " total_n = 0; below = 0\n", " for e in entries:\n", " W = get_w(e['name']); a = W.abs()\n", " total_n += a.numel(); below += (a<0.1).sum().item()\n", " if total_n > 0:\n", " print(f\" {loc:8s} {wt:20s}: {below/total_n*100:.1f}%\")\n", "\n", "# GQA Q/K shape comparison\n", "print(f\"\\n--- GQA SHAPE ANALYSIS ---\")\n", "for wt in ['self_attn_q','self_attn_k','self_attn_v','self_attn_o']:\n", " entries = catalog.get(wt, [])\n", " if entries:\n", " shapes = set(str(e['shape']) for e in entries)\n", " print(f\" {wt:20s}: {shapes}\")\n", "\n", "# ── QK MANIFOLD — eigvalsh on CPU ──\n", "print(f\"\\n{'='*70}\\nQK MANIFOLD (eigvalsh on CPU)\\n{'='*70}\")\n", "\n", "for loc, layers in [('encoder', enc_layers), ('decoder', dec_layers)]:\n", " print(f\"\\n--- {loc.upper()} self-attention ---\")\n", " q_map = {e['layer']:e['name'] for e in catalog.get('self_attn_q',[]) if e['loc']==loc}\n", " k_map = {e['layer']:e['name'] for e in catalog.get('self_attn_k',[]) if e['loc']==loc}\n", "\n", " qk_results = []\n", " for layer in layers:\n", " if layer not in q_map or layer not in k_map: continue\n", " try:\n", " t0 = time.time()\n", " Wq = get_w(q_map[layer])\n", " Wk = get_w(k_map[layer])\n", "\n", " # GQA: Q is [q_dim, d_model], K is [kv_dim, d_model]\n", " # q_dim = n_heads * head_dim, kv_dim = n_kv_heads * head_dim\n", " # To compute QK^T we need matching output dims\n", " # Repeat K rows to match Q's output dimension\n", " if Wq.shape[0] != Wk.shape[0]:\n", " repeat_factor = Wq.shape[0] // Wk.shape[0]\n", " # Reshape K to [n_kv_heads, head_dim, d_model], repeat, reshape back\n", " Wk_expanded = Wk.repeat_interleave(repeat_factor, dim=0)\n", " QK = Wq @ Wk_expanded.T\n", " del Wk_expanded\n", " print(f\" L{layer:2d} (GQA {repeat_factor}:1): \", end=\"\")\n", " elif Wq.shape[1] != Wk.shape[1]:\n", " # Different input dims — shouldn't happen but handle gracefully\n", " min_dim = min(Wq.shape[1], Wk.shape[1])\n", " QK = Wq[:, :min_dim] @ Wk[:, :min_dim].T\n", " print(f\" L{layer:2d} (truncated): \", end=\"\")\n", " else:\n", " QK = Wq @ Wk.T\n", " print(f\" L{layer:2d}: \", end=\"\")\n", " del Wq, Wk\n", "\n", " sym = torch.norm(QK-QK.T).item()/(torch.norm(QK).item()+1e-10)\n", "\n", " # CPU for eigvalsh\n", " QK_cpu = ((QK+QK.T)/2).cpu()\n", " del QK\n", " if torch.cuda.is_available(): torch.cuda.empty_cache()\n", "\n", " eig = torch.linalg.eigvalsh(QK_cpu).numpy()[::-1]\n", " del QK_cpu\n", " n_pos=(eig>0).sum(); n_neg=(eig<0).sum(); dim=len(eig)\n", "\n", " print(f\"pos={n_pos}({n_pos/dim:.3f}), neg={n_neg}({n_neg/dim:.3f}), \"\n", " f\"sym={sym:.4f}, top={eig[0]:.2f} ({time.time()-t0:.1f}s)\")\n", " qk_results.append({'layer':layer,'n_pos':n_pos,'n_neg':n_neg,'dim':dim})\n", " del eig; gc.collect()\n", " except Exception as e:\n", " print(f\"FAIL — {e}\")\n", "\n", " if len(qk_results)>=2:\n", " f,l=qk_results[0],qk_results[-1]\n", " print(f\" Trend: L{f['layer']}={f['n_pos']/f['dim']:.3f} → L{l['layer']}={l['n_pos']/l['dim']:.3f}\")\n", "\n", "# Cross-attention QK\n", "if catalog.get('cross_attn_q') and catalog.get('cross_attn_k'):\n", " print(f\"\\n--- DECODER cross-attention ---\")\n", " xq_map = {e['layer']:e['name'] for e in catalog.get('cross_attn_q',[]) if e['loc']=='decoder'}\n", " xk_map = {e['layer']:e['name'] for e in catalog.get('cross_attn_k',[]) if e['loc']=='decoder'}\n", " for layer in dec_layers:\n", " if layer not in xq_map or layer not in xk_map: continue\n", " try:\n", " t0 = time.time()\n", " Wq = get_w(xq_map[layer]); Wk = get_w(xk_map[layer])\n", " if Wq.shape[0] != Wk.shape[0]:\n", " repeat = Wq.shape[0] // Wk.shape[0]\n", " Wk = Wk.repeat_interleave(repeat, dim=0)\n", " QK = Wq @ Wk.T; del Wq, Wk\n", " sym = torch.norm(QK-QK.T).item()/(torch.norm(QK).item()+1e-10)\n", " QK_cpu = ((QK+QK.T)/2).cpu(); del QK\n", " if torch.cuda.is_available(): torch.cuda.empty_cache()\n", " eig = torch.linalg.eigvalsh(QK_cpu).numpy()[::-1]; del QK_cpu\n", " n_pos=(eig>0).sum(); n_neg=(eig<0).sum(); dim=len(eig)\n", " print(f\" L{layer:2d}: pos={n_pos}({n_pos/dim:.3f}), neg={n_neg}({n_neg/dim:.3f}), \"\n", " f\"sym={sym:.4f}, top={eig[0]:.2f} ({time.time()-t0:.1f}s)\")\n", " del eig; gc.collect()\n", " except Exception as e:\n", " print(f\" L{layer}: FAIL — {e}\")\n", "\n", "# ── DEAD NEURONS ──\n", "print(f\"\\n{'='*70}\\nMLP DEAD NEURONS (GeGLU)\\n{'='*70}\")\n", "for loc, layers in [('encoder', enc_layers), ('decoder', dec_layers)]:\n", " print(f\"\\n--- {loc.upper()} ---\")\n", " g_map = {e['layer']:e['name'] for e in catalog.get('mlp_gate',[]) if e['loc']==loc}\n", " u_map = {e['layer']:e['name'] for e in catalog.get('mlp_up',[]) if e['loc']==loc}\n", " d_map = {e['layer']:e['name'] for e in catalog.get('mlp_down',[]) if e['loc']==loc}\n", " td=tn=0\n", " for layer in layers:\n", " if layer not in g_map or layer not in u_map or layer not in d_map: continue\n", " Wg = get_w(g_map[layer]); gn = torch.norm(Wg,dim=1).cpu().numpy(); del Wg\n", " Wu = get_w(u_map[layer]); un = torch.norm(Wu,dim=1).cpu().numpy(); del Wu\n", " Wd = get_w(d_map[layer]); dn = torch.norm(Wd,dim=0).cpu().numpy(); del Wd\n", " c = gn*un*dn; d_ff=len(c); mc=c.mean()\n", " dead=(c<0.01*mc).sum(); weak=(c<0.10*mc).sum()\n", " td+=dead; tn+=d_ff\n", " print(f\" L{layer:2d}: d_ff={d_ff}, dead={dead}({dead/d_ff*100:.1f}%), weak={weak}({weak/d_ff*100:.1f}%)\")\n", " if tn: print(f\" Total: {td}/{tn} ({td/tn*100:.2f}%)\")\n", "\n", "# ── CROSS-LAYER Q ──\n", "print(f\"\\n{'='*70}\\nCROSS-LAYER Q CORRELATION\\n{'='*70}\")\n", "for loc, layers in [('encoder', enc_layers), ('decoder', dec_layers)]:\n", " q_map = {e['layer']:e['name'] for e in catalog.get('self_attn_q',[]) if e['loc']==loc}\n", " qf = {}\n", " for l in layers:\n", " if l in q_map:\n", " try: qf[l] = get_w(q_map[l]).cpu().flatten()\n", " except: pass\n", " if len(qf)>=2:\n", " ls = sorted(qf)\n", " adj = []\n", " for i in range(len(ls)-1):\n", " a,b = qf[ls[i]],qf[ls[i+1]]\n", " if a.shape==b.shape:\n", " adj.append((torch.dot(a,b)/(torch.norm(a)*torch.norm(b)+1e-8)).item())\n", " if adj:\n", " print(f\" {loc} adj Q cos: mean={np.mean(adj):.4f}, range=[{min(adj):.4f},{max(adj):.4f}]\")\n", " del qf; gc.collect()\n", "\n", "# ── SUMMARY ──\n", "print(f\"\\n{'='*70}\\nSUMMARY — {MODEL_ID}\\n{'='*70}\")\n", "print(f\"Params: {total_params:,}\")\n", "print(f\"d_model={d_model}, heads={n_heads}, kv_heads={n_kv_heads}\"\n", " + (f\" (GQA {n_heads//n_kv_heads}:1)\" if n_kv_heads and n_heads and n_kv_heads != n_heads else \"\"))\n", "print(f\"Layers: {n_enc_layers} enc + {n_dec_layers} dec\")\n", "print(f\"Architecture: t5gemma2 (Gemma 2 adapted to encoder-decoder)\")\n", "for w in ['self_attn_q','self_attn_k','self_attn_v','cross_attn_q']:\n", " sc = sparsity.get(w,{})\n", " if sc.get('total',0) > 0:\n", " print(f\" {w} (<0.1): {sc[1e-1]/sc['total']*100:.1f}%\")\n", "\n", "print(f\"\\nReference (T5 family):\")\n", "print(f\" T5-Small Q: 93.7% | T5-Base Q: 99.4% | T5-v1.1-XXL Q: 100.0%\")\n", "print(f\" BERT-large Q: 99.1% (all uniform) | DINOv2: 100% (all uniform)\")\n", "if torch.cuda.is_available():\n", " print(f\"\\nVRAM at end: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "print(\"Done.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "1e0d6c1a44d546c686fd4b05f8e573eb", "f61596509e8b4074ac0b46ae8d92dc44", "b119d00b37e1491783b2c3e0b57e4ba5", "6deae586b6fd4910a3de1ff1c804152e", "15ce98d22c4c4d1ab73a8f76e1c0fc74", "311a20f1c8f5480db563e33ca2414ee9", "92b4777468da403b9f10a452d3834f6f", "ef7c981bf3ee41d4af263685d3c0d99c", "f815be7ec97d439dbba154f850102af0", "3e80b7aa36694d73a8fb033537348a69", "1cf0b688025f4fe89b1d802409a9fdab" ] }, "id": "_ra2h1Ex43Hs", "outputId": "0b233b39-78be-4986-ffd6-cf017e7b7ebd" }, "execution_count": 4, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition\n", "VRAM: 102.0 GB\n", "======================================================================\n", "T5GEMMA2: google/t5gemma-2-4b-4b\n", "======================================================================\n", "\n", "Loading google/t5gemma-2-4b-4b (fp16)...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "Loading weights: 0%| | 0/1327 [00:0015,} {shapes}\")\n", "\n", "# Helper\n", "def get_w(name):\n", " parts = name.split('.')\n", " obj = model\n", " for p in parts:\n", " obj = obj[int(p)] if p.isdigit() else getattr(obj, p)\n", " return obj.detach().float()\n", "\n", "# All layers — no sampling\n", "enc_layers = list(range(n_enc_layers)) if n_enc_layers else []\n", "dec_layers = list(range(n_dec_layers)) if n_dec_layers else []\n", "print(f\"\\nEncoder layers: {len(enc_layers)}\")\n", "print(f\"Decoder layers: {len(dec_layers)}\")\n", "\n", "# ── SVD ──\n", "print(f\"\\n{'='*70}\\nSVD EFFECTIVE RANK\\n{'='*70}\")\n", "svd_results = []\n", "skip = {'embedding','layernorm','other','self_attn_other','cross_attn_other','mlp_other','lm_head'}\n", "all_entries = [(wt,e) for wt,entries in catalog.items() if wt not in skip for e in entries]\n", "total = len(all_entries)\n", "t0 = time.time()\n", "\n", "for idx, (wt, entry) in enumerate(all_entries):\n", " if (idx+1) % 10 == 0 or idx == 0:\n", " print(f\" [{idx+1}/{total}] {wt} {entry['loc']} L{entry['layer']} \", end=\"\\r\")\n", " try:\n", " W = get_w(entry['name'])\n", " S = torch.linalg.svdvals(W).cpu().numpy()\n", " svd_results.append({\n", " 'wt': wt, 'loc': entry['loc'], 'layer': entry['layer'], 'shape': entry['shape'],\n", " 'sr': (S**2).sum()/(S[0]**2) if S[0]>0 else 0,\n", " 'pr': (S.sum())**2/((S**2).sum()) if (S**2).sum()>0 else 0,\n", " 'af': (S>0.01*S[0]).sum()/len(S),\n", " 'r90': np.searchsorted(np.cumsum(S)/S.sum(),0.90)+1,\n", " 'cond': S[0]/(S[-1]+1e-10),\n", " })\n", " except Exception as e:\n", " print(f\"\\n SVD fail {entry['name']}: {e}\")\n", "\n", "print(f\" Done: {len(svd_results)} matrices in {time.time()-t0:.0f}s \")\n", "\n", "by_type = defaultdict(list)\n", "for r in svd_results: by_type[r['wt']].append(r)\n", "print(f\"\\n{'Type':25s} {'SR':>8s} {'PR':>8s} {'Act%':>6s} {'R90':>5s} {'Cond':>12s}\")\n", "for w in sorted(by_type):\n", " s = by_type[w]\n", " print(f\" {w:23s} {np.mean([r['sr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['pr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['af'] for r in s]):6.3f} \"\n", " f\"{np.mean([r['r90'] for r in s]):5.0f} \"\n", " f\"{np.mean([r['cond'] for r in s]):12.1f}\")\n", "\n", "# ── SPARSITY ──\n", "print(f\"\\n{'='*70}\\nSPARSITY\\n{'='*70}\")\n", "thresholds = [1e-4,1e-3,1e-2,1e-1]\n", "sparsity = defaultdict(lambda: {'total':0, **{t:0 for t in thresholds}})\n", "t0 = time.time()\n", "for wt, entries in catalog.items():\n", " if wt in skip: continue\n", " for entry in entries:\n", " W = get_w(entry['name']); a = W.abs(); n = a.numel()\n", " sparsity[wt]['total'] += n\n", " for t in thresholds:\n", " sparsity[wt][t] += (a8s} {'<1e-3':>8s} {'<0.01':>8s} {'<0.1':>8s}\")\n", "for wt in sorted(sparsity):\n", " sc = sparsity[wt]\n", " if sc['total']==0: continue\n", " print(f\" {wt:23s} {sc[1e-4]/sc['total']:8.4f} {sc[1e-3]/sc['total']:8.4f} \"\n", " f\"{sc[1e-2]/sc['total']:8.4f} {sc[1e-1]/sc['total']:8.4f}\")\n", "\n", "# Encoder vs decoder\n", "print(f\"\\n--- ENCODER vs DECODER SPARSITY (<0.1) ---\")\n", "for wt in ['self_attn_q','self_attn_k','self_attn_v','cross_attn_q','cross_attn_k','cross_attn_v']:\n", " for loc in ['encoder','decoder']:\n", " entries = [e for e in catalog.get(wt,[]) if e['loc']==loc]\n", " if not entries: continue\n", " total_n = 0; below = 0\n", " for e in entries:\n", " W = get_w(e['name']); a = W.abs()\n", " total_n += a.numel(); below += (a<0.1).sum().item()\n", " if total_n > 0:\n", " print(f\" {loc:8s} {wt:20s}: {below/total_n*100:.1f}%\")\n", "\n", "# GQA Q/K shape comparison\n", "print(f\"\\n--- GQA SHAPE ANALYSIS ---\")\n", "for wt in ['self_attn_q','self_attn_k','self_attn_v','self_attn_o']:\n", " entries = catalog.get(wt, [])\n", " if entries:\n", " shapes = set(str(e['shape']) for e in entries)\n", " print(f\" {wt:20s}: {shapes}\")\n", "\n", "# ── QK MANIFOLD — eigvalsh on CPU ──\n", "print(f\"\\n{'='*70}\\nQK MANIFOLD (eigvalsh on CPU)\\n{'='*70}\")\n", "\n", "for loc, layers in [('encoder', enc_layers), ('decoder', dec_layers)]:\n", " print(f\"\\n--- {loc.upper()} self-attention ---\")\n", " q_map = {e['layer']:e['name'] for e in catalog.get('self_attn_q',[]) if e['loc']==loc}\n", " k_map = {e['layer']:e['name'] for e in catalog.get('self_attn_k',[]) if e['loc']==loc}\n", "\n", " qk_results = []\n", " for layer in layers:\n", " if layer not in q_map or layer not in k_map: continue\n", " try:\n", " t0 = time.time()\n", " Wq = get_w(q_map[layer])\n", " Wk = get_w(k_map[layer])\n", "\n", " # GQA: Q is [q_dim, d_model], K is [kv_dim, d_model]\n", " # q_dim = n_heads * head_dim, kv_dim = n_kv_heads * head_dim\n", " # To compute QK^T we need matching output dims\n", " # Repeat K rows to match Q's output dimension\n", " if Wq.shape[0] != Wk.shape[0]:\n", " repeat_factor = Wq.shape[0] // Wk.shape[0]\n", " # Reshape K to [n_kv_heads, head_dim, d_model], repeat, reshape back\n", " Wk_expanded = Wk.repeat_interleave(repeat_factor, dim=0)\n", " QK = Wq @ Wk_expanded.T\n", " del Wk_expanded\n", " print(f\" L{layer:2d} (GQA {repeat_factor}:1): \", end=\"\")\n", " elif Wq.shape[1] != Wk.shape[1]:\n", " # Different input dims — shouldn't happen but handle gracefully\n", " min_dim = min(Wq.shape[1], Wk.shape[1])\n", " QK = Wq[:, :min_dim] @ Wk[:, :min_dim].T\n", " print(f\" L{layer:2d} (truncated): \", end=\"\")\n", " else:\n", " QK = Wq @ Wk.T\n", " print(f\" L{layer:2d}: \", end=\"\")\n", " del Wq, Wk\n", "\n", " sym = torch.norm(QK-QK.T).item()/(torch.norm(QK).item()+1e-10)\n", "\n", " # CPU for eigvalsh\n", " QK_cpu = ((QK+QK.T)/2).cpu()\n", " del QK\n", " if torch.cuda.is_available(): torch.cuda.empty_cache()\n", "\n", " eig = torch.linalg.eigvalsh(QK_cpu).numpy()[::-1]\n", " del QK_cpu\n", " n_pos=(eig>0).sum(); n_neg=(eig<0).sum(); dim=len(eig)\n", "\n", " print(f\"pos={n_pos}({n_pos/dim:.3f}), neg={n_neg}({n_neg/dim:.3f}), \"\n", " f\"sym={sym:.4f}, top={eig[0]:.2f} ({time.time()-t0:.1f}s)\")\n", " qk_results.append({'layer':layer,'n_pos':n_pos,'n_neg':n_neg,'dim':dim})\n", " del eig; gc.collect()\n", " except Exception as e:\n", " print(f\"FAIL — {e}\")\n", "\n", " if len(qk_results)>=2:\n", " f,l=qk_results[0],qk_results[-1]\n", " print(f\" Trend: L{f['layer']}={f['n_pos']/f['dim']:.3f} → L{l['layer']}={l['n_pos']/l['dim']:.3f}\")\n", "\n", "# Cross-attention QK\n", "if catalog.get('cross_attn_q') and catalog.get('cross_attn_k'):\n", " print(f\"\\n--- DECODER cross-attention ---\")\n", " xq_map = {e['layer']:e['name'] for e in catalog.get('cross_attn_q',[]) if e['loc']=='decoder'}\n", " xk_map = {e['layer']:e['name'] for e in catalog.get('cross_attn_k',[]) if e['loc']=='decoder'}\n", " for layer in dec_layers:\n", " if layer not in xq_map or layer not in xk_map: continue\n", " try:\n", " t0 = time.time()\n", " Wq = get_w(xq_map[layer]); Wk = get_w(xk_map[layer])\n", " if Wq.shape[0] != Wk.shape[0]:\n", " repeat = Wq.shape[0] // Wk.shape[0]\n", " Wk = Wk.repeat_interleave(repeat, dim=0)\n", " QK = Wq @ Wk.T; del Wq, Wk\n", " sym = torch.norm(QK-QK.T).item()/(torch.norm(QK).item()+1e-10)\n", " QK_cpu = ((QK+QK.T)/2).cpu(); del QK\n", " if torch.cuda.is_available(): torch.cuda.empty_cache()\n", " eig = torch.linalg.eigvalsh(QK_cpu).numpy()[::-1]; del QK_cpu\n", " n_pos=(eig>0).sum(); n_neg=(eig<0).sum(); dim=len(eig)\n", " print(f\" L{layer:2d}: pos={n_pos}({n_pos/dim:.3f}), neg={n_neg}({n_neg/dim:.3f}), \"\n", " f\"sym={sym:.4f}, top={eig[0]:.2f} ({time.time()-t0:.1f}s)\")\n", " del eig; gc.collect()\n", " except Exception as e:\n", " print(f\" L{layer}: FAIL — {e}\")\n", "\n", "# ── DEAD NEURONS ──\n", "print(f\"\\n{'='*70}\\nMLP DEAD NEURONS (GeGLU)\\n{'='*70}\")\n", "for loc, layers in [('encoder', enc_layers), ('decoder', dec_layers)]:\n", " print(f\"\\n--- {loc.upper()} ---\")\n", " g_map = {e['layer']:e['name'] for e in catalog.get('mlp_gate',[]) if e['loc']==loc}\n", " u_map = {e['layer']:e['name'] for e in catalog.get('mlp_up',[]) if e['loc']==loc}\n", " d_map = {e['layer']:e['name'] for e in catalog.get('mlp_down',[]) if e['loc']==loc}\n", " td=tn=0\n", " for layer in layers:\n", " if layer not in g_map or layer not in u_map or layer not in d_map: continue\n", " Wg = get_w(g_map[layer]); gn = torch.norm(Wg,dim=1).cpu().numpy(); del Wg\n", " Wu = get_w(u_map[layer]); un = torch.norm(Wu,dim=1).cpu().numpy(); del Wu\n", " Wd = get_w(d_map[layer]); dn = torch.norm(Wd,dim=0).cpu().numpy(); del Wd\n", " c = gn*un*dn; d_ff=len(c); mc=c.mean()\n", " dead=(c<0.01*mc).sum(); weak=(c<0.10*mc).sum()\n", " td+=dead; tn+=d_ff\n", " print(f\" L{layer:2d}: d_ff={d_ff}, dead={dead}({dead/d_ff*100:.1f}%), weak={weak}({weak/d_ff*100:.1f}%)\")\n", " if tn: print(f\" Total: {td}/{tn} ({td/tn*100:.2f}%)\")\n", "\n", "# ── CROSS-LAYER Q ──\n", "print(f\"\\n{'='*70}\\nCROSS-LAYER Q CORRELATION\\n{'='*70}\")\n", "for loc, layers in [('encoder', enc_layers), ('decoder', dec_layers)]:\n", " q_map = {e['layer']:e['name'] for e in catalog.get('self_attn_q',[]) if e['loc']==loc}\n", " qf = {}\n", " for l in layers:\n", " if l in q_map:\n", " try: qf[l] = get_w(q_map[l]).cpu().flatten()\n", " except: pass\n", " if len(qf)>=2:\n", " ls = sorted(qf)\n", " adj = []\n", " for i in range(len(ls)-1):\n", " a,b = qf[ls[i]],qf[ls[i+1]]\n", " if a.shape==b.shape:\n", " adj.append((torch.dot(a,b)/(torch.norm(a)*torch.norm(b)+1e-8)).item())\n", " if adj:\n", " print(f\" {loc} adj Q cos: mean={np.mean(adj):.4f}, range=[{min(adj):.4f},{max(adj):.4f}]\")\n", " del qf; gc.collect()\n", "\n", "# ── SUMMARY ──\n", "print(f\"\\n{'='*70}\\nSUMMARY — {MODEL_ID}\\n{'='*70}\")\n", "print(f\"Params: {total_params:,}\")\n", "print(f\"d_model={d_model}, heads={n_heads}, kv_heads={n_kv_heads}\"\n", " + (f\" (GQA {n_heads//n_kv_heads}:1)\" if n_kv_heads and n_heads and n_kv_heads != n_heads else \"\"))\n", "print(f\"Layers: {n_enc_layers} enc + {n_dec_layers} dec\")\n", "print(f\"Architecture: t5gemma2 (Gemma 2 adapted to encoder-decoder)\")\n", "for w in ['self_attn_q','self_attn_k','self_attn_v','cross_attn_q']:\n", " sc = sparsity.get(w,{})\n", " if sc.get('total',0) > 0:\n", " print(f\" {w} (<0.1): {sc[1e-1]/sc['total']*100:.1f}%\")\n", "\n", "print(f\"\\nReference (T5 family):\")\n", "print(f\" T5-Small Q: 93.7% | T5-Base Q: 99.4% | T5-v1.1-XXL Q: 100.0%\")\n", "print(f\" BERT-large Q: 99.1% (all uniform) | DINOv2: 100% (all uniform)\")\n", "if torch.cuda.is_available():\n", " print(f\"\\nVRAM at end: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "print(\"Done.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "d85fd01be1104792a5752abbeb66ecca", "e4da91f150c94a708899e91893b8260f", "9551a30a3c8543509f5de86febf1d929", "5bc3bf999ade470a92a9bd146a0bac97", "0c7c63bc70034f9c8ced466c60b2b539", "12eb9c7596234a5b830fa0263a1e86b2", "30daa58cc584499292e5d549637ce94d", "de62054611ba4c11abc43b3ae613bb0f", "6ca812adb0574e77a126ef406b3cb254", "6b3452b56084434a9ced077a233771b3", "650e6c4711184502a388d7cfbd83a538", "9ea80d99aeb14208a0ec394587fdcecb", "bf71071cb72141508c84dc0585a01b54", "ba07e94f6efb40a9bbadf7b4a179cd7c", "6258c5d1569344dab45e9166c0486d38", "5b5518940551468c99c02c08bc982906", "67e0cf995ca347c38ad62c6b46ebcee4", "9a793691172d46f58fcad450d4e58122", "be1ef0ccbecd4f09bcc23226e2c3952d", "188f580a7d1c4dc6b98007c9a99f08a4", "92de8b4a34174f63bf1f1531096dc957", "0273e6c4e28e404fafcb921ec45fabbf", "f49a3e3e2f3e4cb6bbd4cd8ad4fad015", "dc5601f115a24f8c849f95cfe1365eae", "ac96ef7f382a433bbd190d248c0d0261", "ac727c1d9f4d4ed39854d6339d59bb14", "4e6a6da0c9164b4197476261b2861740", "452113be1e9346c5abb8e6d85c5b9bdc", "4f79ee7bfa8a4b6597c73da4da376087", "09c44e193da4468eb84e66d656d35e06", "383de59d766f426599e650090ccd3b8f", "a6746069e195420587ed216823bbec09", "7c1bfa66aae947d8bcdacdbf8b098219", "916177378e6248689f905db0e3faac1b", "250f3937d8b84268928ef116a9d7c914", "22d0b9556eb44ec0bedb0044a004e3f6", "44b7a55af8f347b68fc350866cc9e677", "5ecbde48e29b4e4197944af3e745c742", "1f44765572a1401aacfd774ec71cd81c", "e784804673654d95a7a3a87ea9d2a6ea", "1a0ec778e9fd46e792f25b6cbe8ce103", "55a2886229ee43ac98c8eaef94b6d024", "363329452b39461da30a3e299819c35d", "cde4a7221b264e42942931b4983366c5" ] }, "id": "hewHMwMD9Z66", "outputId": "0e331a79-b976-4999-fadf-7f93af419ec9" }, "execution_count": 5, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition\n", "VRAM: 102.0 GB\n", "======================================================================\n", "T5GEMMA2: google/t5gemma-2-1b-1b\n", "======================================================================\n", "\n", "Loading google/t5gemma-2-1b-1b (fp16)...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "config.json: 0.00B [00:00, ?B/s]" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "d85fd01be1104792a5752abbeb66ecca" } }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "model.safetensors: 0%| | 0.00/4.23G [00:0012,} shapes={len(shapes)}\")\n", "\n", "# Helper\n", "def get_w(name):\n", " parts = name.split('.')\n", " obj = unet\n", " for p in parts:\n", " obj = obj[int(p)] if p.isdigit() else getattr(obj, p)\n", " return obj.detach().float()\n", "\n", "# ── SVD ──\n", "print(f\"\\n{'='*70}\\nSVD EFFECTIVE RANK\\n{'='*70}\")\n", "svd_results = []\n", "skip = {'other', 'norm', 'resnet_linear', 'time_embed'}\n", "all_entries = [(wt,e) for wt,entries in catalog.items() if wt not in skip for e in entries]\n", "total = len(all_entries)\n", "t0 = time.time()\n", "\n", "for idx, (wt, entry) in enumerate(all_entries):\n", " if (idx+1) % 10 == 0 or idx == 0:\n", " print(f\" [{idx+1}/{total}] {wt} {entry['loc']} \", end=\"\\r\")\n", " try:\n", " W = get_w(entry['name'])\n", " S = torch.linalg.svdvals(W).cpu().numpy()\n", " svd_results.append({\n", " 'wt': wt, 'loc': entry['loc'], 'block': entry['block'],\n", " 'shape': entry['shape'],\n", " 'sr': (S**2).sum()/(S[0]**2) if S[0]>0 else 0,\n", " 'pr': (S.sum())**2/((S**2).sum()) if (S**2).sum()>0 else 0,\n", " 'af': (S>0.01*S[0]).sum()/len(S),\n", " 'r90': np.searchsorted(np.cumsum(S)/S.sum(),0.90)+1,\n", " 'cond': S[0]/(S[-1]+1e-10),\n", " })\n", " except Exception as e:\n", " print(f\"\\n SVD fail {entry['name']}: {e}\")\n", "\n", "print(f\" Done: {len(svd_results)} matrices in {time.time()-t0:.0f}s \")\n", "\n", "by_type = defaultdict(list)\n", "for r in svd_results: by_type[r['wt']].append(r)\n", "print(f\"\\n{'Type':25s} {'SR':>8s} {'PR':>8s} {'Act%':>6s} {'R90':>5s} {'Cond':>12s}\")\n", "for w in sorted(by_type):\n", " s = by_type[w]\n", " print(f\" {w:23s} {np.mean([r['sr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['pr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['af'] for r in s]):6.3f} \"\n", " f\"{np.mean([r['r90'] for r in s]):5.0f} \"\n", " f\"{np.mean([r['cond'] for r in s]):12.1f}\")\n", "\n", "# SVD by U-net position (down/mid/up)\n", "print(f\"\\n--- SVD BY POSITION ---\")\n", "for loc in ['down', 'mid', 'up']:\n", " for wt in ['self_attn_q', 'self_attn_k', 'cross_attn_q', 'cross_attn_k']:\n", " subset = [r for r in svd_results if r['wt']==wt and r['loc']==loc]\n", " if subset:\n", " sr = np.mean([r['sr'] for r in subset])\n", " print(f\" {loc:4s} {wt:20s}: SR={sr:.2f} (n={len(subset)})\")\n", "\n", "# ── SPARSITY ──\n", "print(f\"\\n{'='*70}\\nSPARSITY\\n{'='*70}\")\n", "thresholds = [1e-4,1e-3,1e-2,1e-1]\n", "sparsity = defaultdict(lambda: {'total':0, **{t:0 for t in thresholds}})\n", "t0 = time.time()\n", "for wt, entries in catalog.items():\n", " if wt in skip: continue\n", " for entry in entries:\n", " W = get_w(entry['name']); a = W.abs(); n = a.numel()\n", " sparsity[wt]['total'] += n\n", " for t in thresholds:\n", " sparsity[wt][t] += (a8s} {'<1e-3':>8s} {'<0.01':>8s} {'<0.1':>8s}\")\n", "for wt in sorted(sparsity):\n", " sc = sparsity[wt]\n", " if sc['total']==0: continue\n", " print(f\" {wt:23s} {sc[1e-4]/sc['total']:8.4f} {sc[1e-3]/sc['total']:8.4f} \"\n", " f\"{sc[1e-2]/sc['total']:8.4f} {sc[1e-1]/sc['total']:8.4f}\")\n", "\n", "# Q vs K comparison\n", "print(f\"\\n--- Q/K SPARSITY (<0.1) ---\")\n", "for wt in ['self_attn_q','self_attn_k','self_attn_v','self_attn_o',\n", " 'cross_attn_q','cross_attn_k','cross_attn_v','cross_attn_o']:\n", " sc = sparsity.get(wt,{})\n", " if sc.get('total',0) > 0:\n", " print(f\" {wt:25s}: {sc[1e-1]/sc['total']*100:.1f}%\")\n", "\n", "# Sparsity by position\n", "print(f\"\\n--- SPARSITY BY POSITION (<0.1) ---\")\n", "for loc in ['down', 'mid', 'up']:\n", " for wt in ['self_attn_q', 'self_attn_k', 'cross_attn_q', 'cross_attn_k']:\n", " entries = [e for e in catalog.get(wt,[]) if e['loc']==loc]\n", " if not entries: continue\n", " total_n = 0; below = 0\n", " for e in entries:\n", " W = get_w(e['name']); a = W.abs()\n", " total_n += a.numel(); below += (a<0.1).sum().item()\n", " if total_n > 0:\n", " print(f\" {loc:4s} {wt:20s}: {below/total_n*100:.1f}%\")\n", "\n", "# ── QK MANIFOLD — eigvalsh on CPU ──\n", "print(f\"\\n{'='*70}\\nQK MANIFOLD (eigvalsh on CPU)\\n{'='*70}\")\n", "\n", "# Group Q/K by their attention block\n", "q_map = {} # (loc, block, layer, attn_type) → name\n", "k_map = {}\n", "for wt in ['self_attn_q', 'self_attn_k', 'cross_attn_q', 'cross_attn_k']:\n", " for entry in catalog.get(wt, []):\n", " attn_type = 'self' if 'self' in wt else 'cross'\n", " proj = 'q' if '_q' in wt else 'k'\n", " key = (entry['loc'], entry['block'], entry['layer'], attn_type)\n", " name_parts = entry['name'].split('.')\n", " # Find transformer_blocks index for more precise matching\n", " tb_idx = -1\n", " for i, p in enumerate(name_parts):\n", " if p == 'transformer_blocks' and i+1 < len(name_parts):\n", " try: tb_idx = int(name_parts[i+1])\n", " except: pass\n", " full_key = (entry['loc'], entry['block'], entry['layer'], tb_idx, attn_type)\n", " if proj == 'q':\n", " q_map[full_key] = entry['name']\n", " else:\n", " k_map[full_key] = entry['name']\n", "\n", "for attn_type in ['self', 'cross']:\n", " print(f\"\\n--- {attn_type.upper()}-ATTENTION ---\")\n", " qk_results = []\n", " keys = sorted([k for k in q_map if k[4]==attn_type and k in k_map])\n", "\n", " for key in keys:\n", " try:\n", " t0 = time.time()\n", " Wq = get_w(q_map[key])\n", " Wk = get_w(k_map[key])\n", "\n", " # Handle different Q/K dims (cross-attn: Q from spatial, K from text)\n", " if Wq.shape[0] != Wk.shape[0]:\n", " # GQA or cross-modal: repeat K to match Q\n", " if Wq.shape[0] > Wk.shape[0] and Wq.shape[0] % Wk.shape[0] == 0:\n", " repeat = Wq.shape[0] // Wk.shape[0]\n", " Wk = Wk.repeat_interleave(repeat, dim=0)\n", " else:\n", " # Different dims entirely — use min\n", " min_out = min(Wq.shape[0], Wk.shape[0])\n", " Wq = Wq[:min_out]; Wk = Wk[:min_out]\n", "\n", " if Wq.shape[1] != Wk.shape[1]:\n", " # Cross-attention: Q input is spatial, K input is text\n", " # QK^T doesn't make sense as weight-space product\n", " # Instead compute Q^T Q and K^T K separately\n", " min_in = min(Wq.shape[1], Wk.shape[1])\n", " Wq = Wq[:, :min_in]; Wk = Wk[:, :min_in]\n", "\n", " QK = Wq @ Wk.T\n", " del Wq, Wk\n", "\n", " sym = torch.norm(QK-QK.T).item()/(torch.norm(QK).item()+1e-10)\n", " QK_cpu = ((QK+QK.T)/2).cpu()\n", " del QK\n", " if torch.cuda.is_available(): torch.cuda.empty_cache()\n", "\n", " eig = torch.linalg.eigvalsh(QK_cpu).numpy()[::-1]\n", " del QK_cpu\n", " n_pos=(eig>0).sum(); n_neg=(eig<0).sum(); dim=len(eig)\n", "\n", " loc, block, layer, tb, _ = key\n", " print(f\" {loc} B{block} L{layer} T{tb}: pos={n_pos}({n_pos/dim:.3f}), \"\n", " f\"neg={n_neg}({n_neg/dim:.3f}), sym={sym:.4f}, \"\n", " f\"top={eig[0]:.2f} ({time.time()-t0:.1f}s)\")\n", " qk_results.append({'key':key, 'n_pos':n_pos, 'n_neg':n_neg, 'dim':dim})\n", " del eig; gc.collect()\n", " except Exception as e:\n", " print(f\" {key}: FAIL — {e}\")\n", "\n", " if len(qk_results) >= 2:\n", " fracs = [r['n_pos']/r['dim'] for r in qk_results]\n", " print(f\"\\n Pos fraction: mean={np.mean(fracs):.3f}, std={np.std(fracs):.3f}, \"\n", " f\"range=[{min(fracs):.3f}, {max(fracs):.3f}]\")\n", "\n", "# ── DEAD NEURONS (FF blocks in transformer layers) ──\n", "print(f\"\\n{'='*70}\\nFF DEAD NEURONS (GEGLU)\\n{'='*70}\")\n", "gate_map = {(e['loc'],e['block'],e['layer']):e['name'] for e in catalog.get('ff_gate',[])}\n", "down_map = {(e['loc'],e['block'],e['layer']):e['name'] for e in catalog.get('ff_down',[])}\n", "td=tn=0\n", "for key in sorted(gate_map):\n", " if key not in down_map: continue\n", " try:\n", " Wg = get_w(gate_map[key])\n", " Wd = get_w(down_map[key])\n", " # GEGLU: gate is [2*d_ff, d_model] (first half is gate, second is value)\n", " # Or it might be [d_ff*2, d_model] → split\n", " if Wg.shape[0] > Wd.shape[1]:\n", " half = Wg.shape[0] // 2\n", " gn = torch.norm(Wg[:half], dim=1).cpu().numpy()\n", " un = torch.norm(Wg[half:], dim=1).cpu().numpy()\n", " else:\n", " gn = torch.norm(Wg, dim=1).cpu().numpy()\n", " un = gn # non-gated fallback\n", " dn = torch.norm(Wd, dim=0).cpu().numpy()\n", "\n", " # Align dimensions\n", " d_ff = min(len(gn), len(un), len(dn))\n", " gn = gn[:d_ff]; un = un[:d_ff]; dn = dn[:d_ff]\n", "\n", " c = gn*un*dn; mc = c.mean()\n", " dead=(c<0.01*mc).sum(); weak=(c<0.10*mc).sum()\n", " td+=dead; tn+=d_ff\n", " if dead > 0 or weak > 5:\n", " loc, block, layer = key\n", " print(f\" {loc} B{block} L{layer}: d_ff={d_ff}, dead={dead}({dead/d_ff*100:.1f}%), \"\n", " f\"weak={weak}({weak/d_ff*100:.1f}%)\")\n", " except Exception as e:\n", " pass\n", "if tn > 0:\n", " print(f\"\\n Total: {td}/{tn} ({td/tn*100:.2f}%)\")\n", " if td == 0:\n", " print(f\" All {tn} neurons alive\")\n", "\n", "# ── CROSS-LAYER Q CORRELATION ──\n", "print(f\"\\n{'='*70}\\nCROSS-BLOCK Q CORRELATION\\n{'='*70}\")\n", "for attn_type in ['self_attn_q', 'cross_attn_q']:\n", " entries = catalog.get(attn_type, [])\n", " if len(entries) < 2: continue\n", " qf = []\n", " for e in sorted(entries, key=lambda x: (x['loc'], x['block'], x['layer'])):\n", " try:\n", " W = get_w(e['name']).cpu().flatten()\n", " qf.append((f\"{e['loc']} B{e['block']}\", W))\n", " except: pass\n", " if len(qf) >= 2:\n", " adj = []\n", " for i in range(len(qf)-1):\n", " a, b = qf[i][1], qf[i+1][1]\n", " if a.shape == b.shape:\n", " adj.append((torch.dot(a,b)/(torch.norm(a)*torch.norm(b)+1e-8)).item())\n", " if adj:\n", " print(f\" {attn_type}: adj cos mean={np.mean(adj):.4f}, range=[{min(adj):.4f},{max(adj):.4f}]\")\n", " del qf; gc.collect()\n", "\n", "# ── SUMMARY ──\n", "print(f\"\\n{'='*70}\\nSUMMARY — {MODEL_ID} (UNet)\\n{'='*70}\")\n", "print(f\"Params: {total_params:,}\")\n", "print(f\"Architecture: UNet2DConditionModel\")\n", "if hasattr(config, 'block_out_channels'):\n", " print(f\"Channels: {config.block_out_channels}\")\n", "if hasattr(config, 'cross_attention_dim'):\n", " print(f\"Cross-attn dim: {config.cross_attention_dim}\")\n", "for w in ['self_attn_q','self_attn_k','self_attn_v',\n", " 'cross_attn_q','cross_attn_k','cross_attn_v']:\n", " sc = sparsity.get(w,{})\n", " if sc.get('total',0) > 0:\n", " print(f\" {w} (<0.1): {sc[1e-1]/sc['total']*100:.1f}%\")\n", "print(f\"\\nRef (transformers):\")\n", "print(f\" T5-v1.1-XXL Q: 100.0% | BERT: 99.1% | DINOv2: 100% | T5Gemma2: 100%\")\n", "if torch.cuda.is_available():\n", " print(f\"\\nVRAM at end: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "print(\"Done.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "b4236c52eb8d485b85488bfb5d1945c6", "a66991ef36ac43e98ada4f9e30815733", "7b624343eb5041068552d4cabf8fb3d4", "4ea6554face64181b5298b8aa8b5ac4f", "f1197c0cbabe4dee88837b922174bf39", "1714dd827f9440f7ae6dfbeaa1d249b3", "03006cbd2ac34b7aa55832f2a4e52a97", "6fed6051dedc453faaa1e1c3efcb788d", "69c6c8726d7b408197dcf4b8a96db564", "6125000cffd14e34aa5ea355bf1b670b", "aed3f81cc46b4db683b92cfd64dd61ed", "9e6aa66d0f734dbbb1866216c4955908", "d7f57aba9b804c4385433b3a40f11145", "6f8d311272fd4de293610522592f4619", "788e21f77ca548018c014e4cd4adbadc", "d3bc767bec4e4ae784d663eb24ab9192", "bcc80bce807a4e209a488f469dbd571c", "2eadb94231f54d559c965e11b7628244", "7d17b763c79c483a9809527e9a62e1ed", "6fce26e7e5d54183acc3e25157fdcb8b", "dc712451810e44e5bc21092cc53a26d6", "ada4cc990391438c8a6ea71017e6aab3" ] }, "id": "Z4FW4XoIAd1l", "outputId": "3e7b972c-5bc9-4486-c76c-b2f20bcd1eff" }, "execution_count": 7, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition\n", "VRAM: 102.0 GB\n", "======================================================================\n", "UNET GEOMETRY: stable-diffusion-v1-5/stable-diffusion-v1-5\n", "======================================================================\n", "\n", "Loading UNet (fp16)...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "config.json: 0%| | 0.00/743 [00:0012,}\")\n", "\n", " # Helper — get param as fp32 on GPU, reshape Conv2d to 2D\n", " def get_w_2d(entry):\n", " parts = entry['name'].split('.')\n", " obj = vae\n", " for p in parts:\n", " obj = obj[int(p)] if p.isdigit() else getattr(obj, p)\n", " W = obj.detach().float()\n", " if entry['dim'] == 4:\n", " # Reshape Conv2d [out, in, kh, kw] → [out, in*kh*kw]\n", " W = W.reshape(W.shape[0], -1)\n", " return W\n", "\n", " # ── SVD ──\n", " print(f\"\\n--- SVD ---\")\n", " svd_results = []\n", " skip = {'conv_other', 'linear_other', 'attn_conv_other'}\n", " all_entries = [(wt,e) for wt,entries in catalog.items() if wt not in skip for e in entries]\n", " t0 = time.time()\n", "\n", " for idx, (wt, entry) in enumerate(all_entries):\n", " if (idx+1) % 10 == 0:\n", " print(f\" [{idx+1}/{len(all_entries)}] \", end=\"\\r\")\n", " try:\n", " W = get_w_2d(entry)\n", " S = torch.linalg.svdvals(W).cpu().numpy()\n", " svd_results.append({\n", " 'wt': wt, 'loc': entry['loc'], 'shape': entry['shape'],\n", " 'sr': (S**2).sum()/(S[0]**2) if S[0]>0 else 0,\n", " 'pr': (S.sum())**2/((S**2).sum()) if (S**2).sum()>0 else 0,\n", " 'af': (S>0.01*S[0]).sum()/len(S),\n", " 'cond': S[0]/(S[-1]+1e-10),\n", " })\n", " except Exception as e:\n", " pass\n", "\n", " print(f\" Done: {len(svd_results)} in {time.time()-t0:.0f}s \")\n", "\n", " by_type = defaultdict(list)\n", " for r in svd_results: by_type[r['wt']].append(r)\n", " print(f\" {'Type':25s} {'SR':>8s} {'PR':>8s} {'Act%':>6s} {'Cond':>12s}\")\n", " for w in sorted(by_type):\n", " s = by_type[w]\n", " print(f\" {w:23s} {np.mean([r['sr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['pr'] for r in s]):8.2f} \"\n", " f\"{np.mean([r['af'] for r in s]):6.3f} \"\n", " f\"{np.mean([r['cond'] for r in s]):12.1f}\")\n", "\n", " # ── SPARSITY ──\n", " print(f\"\\n--- SPARSITY ---\")\n", " thresholds = [1e-4, 1e-3, 1e-2, 1e-1]\n", " sparsity = defaultdict(lambda: {'total':0, **{t:0 for t in thresholds}})\n", " for wt, entries in catalog.items():\n", " if wt in skip: continue\n", " for entry in entries:\n", " W = get_w_2d(entry); a = W.abs(); n = a.numel()\n", " sparsity[wt]['total'] += n\n", " for t in thresholds:\n", " sparsity[wt][t] += (a8s} {'<1e-3':>8s} {'<0.01':>8s} {'<0.1':>8s}\")\n", " for wt in sorted(sparsity):\n", " sc = sparsity[wt]\n", " if sc['total']==0: continue\n", " print(f\" {wt:23s} {sc[1e-4]/sc['total']:8.4f} {sc[1e-3]/sc['total']:8.4f} \"\n", " f\"{sc[1e-2]/sc['total']:8.4f} {sc[1e-1]/sc['total']:8.4f}\")\n", "\n", " # Encoder vs decoder sparsity\n", " print(f\"\\n --- ENC vs DEC (<0.1) ---\")\n", " for loc in ['encoder', 'decoder']:\n", " total_n = 0; below = 0\n", " for wt, entries in catalog.items():\n", " if wt in skip: continue\n", " for e in entries:\n", " if e['loc'] != loc: continue\n", " W = get_w_2d(e); a = W.abs()\n", " total_n += a.numel(); below += (a<0.1).sum().item()\n", " if total_n > 0:\n", " print(f\" {loc:10s}: {below/total_n*100:.1f}%\")\n", "\n", " # ── QK MANIFOLD (mid-block attention if present) ──\n", " attn_q = [e for e in catalog.get('attn_q', []) + catalog.get('attn_q_conv', [])]\n", " attn_k = [e for e in catalog.get('attn_k', []) + catalog.get('attn_k_conv', [])]\n", " if attn_q and attn_k:\n", " print(f\"\\n--- QK MANIFOLD (mid-block attention) ---\")\n", " for q_entry, k_entry in zip(attn_q, attn_k):\n", " try:\n", " Wq = get_w_2d(q_entry)\n", " Wk = get_w_2d(k_entry)\n", " if Wq.shape != Wk.shape:\n", " min_d = min(Wq.shape[0], Wk.shape[0])\n", " Wq = Wq[:min_d]; Wk = Wk[:min_d]\n", " if Wq.shape[1] != Wk.shape[1]:\n", " min_d2 = min(Wq.shape[1], Wk.shape[1])\n", " Wq = Wq[:,:min_d2]; Wk = Wk[:,:min_d2]\n", " QK = Wq @ Wk.T; del Wq, Wk\n", " sym = torch.norm(QK-QK.T).item()/(torch.norm(QK).item()+1e-10)\n", " QK_cpu = ((QK+QK.T)/2).cpu(); del QK\n", " eig = torch.linalg.eigvalsh(QK_cpu).numpy()[::-1]; del QK_cpu\n", " n_pos=(eig>0).sum(); n_neg=(eig<0).sum(); dim=len(eig)\n", " print(f\" {q_entry['loc']}: pos={n_pos}({n_pos/dim:.3f}), \"\n", " f\"neg={n_neg}({n_neg/dim:.3f}), sym={sym:.4f}, top={eig[0]:.2f}\")\n", " del eig\n", " except Exception as e:\n", " print(f\" FAIL: {e}\")\n", " else:\n", " print(f\"\\n No attention Q/K found (pure conv VAE)\")\n", "\n", " # ── CROSS-LAYER CONV CORRELATION ──\n", " print(f\"\\n--- CROSS-LAYER CONV CORRELATION ---\")\n", " for loc in ['encoder', 'decoder']:\n", " for wt in ['down_conv', 'up_conv', 'mid_conv']:\n", " entries = sorted([e for e in catalog.get(wt, []) if e['loc']==loc],\n", " key=lambda x: x['name'])\n", " if len(entries) < 2: continue\n", " # Group by same shape only\n", " shape_groups = defaultdict(list)\n", " for e in entries:\n", " shape_groups[e['shape']].append(e)\n", " for shape, group in shape_groups.items():\n", " if len(group) < 2: continue\n", " adj = []\n", " for i in range(len(group)-1):\n", " try:\n", " a = get_w_2d(group[i]).cpu().flatten()\n", " b = get_w_2d(group[i+1]).cpu().flatten()\n", " if a.shape == b.shape:\n", " c = torch.dot(a,b)/(torch.norm(a)*torch.norm(b)+1e-8)\n", " adj.append(c.item())\n", " except: pass\n", " if adj:\n", " print(f\" {loc} {wt} {shape}: adj cos mean={np.mean(adj):.4f} \"\n", " f\"range=[{min(adj):.4f},{max(adj):.4f}] (n={len(adj)})\")\n", "\n", " # Store results\n", " result = {\n", " 'params': total_params,\n", " 'latent_ch': getattr(config, 'latent_channels', '?'),\n", " 'block_ch': getattr(config, 'block_out_channels', '?'),\n", " 'svd': {w: np.mean([r['sr'] for r in s]) for w,s in by_type.items()},\n", " 'sparsity': {wt: sc[1e-1]/sc['total']*100 if sc['total']>0 else 0\n", " for wt, sc in sparsity.items()},\n", " }\n", " all_results[vae_key] = result\n", "\n", " # Cleanup\n", " del vae\n", " gc.collect()\n", " if torch.cuda.is_available():\n", " torch.cuda.empty_cache()\n", "\n", "# ── CROSS-VAE COMPARISON ──\n", "print(f\"\\n\\n{'='*70}\")\n", "print(\"CROSS-VAE COMPARISON\")\n", "print(f\"{'='*70}\")\n", "\n", "print(f\"\\n{'VAE':10s} {'Params':>12s} {'Latent Ch':>10s} {'Block Ch':>20s}\")\n", "for key, label in [('sd15','SD 1.5'),('sdxl','SDXL'),('flux1','Flux.1'),('flux2','Flux.2')]:\n", " r = all_results.get(key, {})\n", " if 'error' in r:\n", " print(f\" {label:8s} FAILED: {r['error'][:50]}\")\n", " continue\n", " print(f\" {label:8s} {r.get('params',0):>12,} {str(r.get('latent_ch','?')):>10s} \"\n", " f\"{str(r.get('block_ch','?')):>20s}\")\n", "\n", "print(f\"\\nDone.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "b5caeec369424d35aa17a5237d3eb28c", "d57d1ccaab1d40dda7550d110d580490", "742227f9ba924fdf8081c41eaf909ac0", "d3c1bf13f7924c6e98942c71ee31aff4", "16353ef7ea3e4d78a8926d57bb92d33c", "32780ab4114f4ceb97b2254d6333c857", "24ea0fe7b9ed4efca4f51603c8456baf", "d5e85248db8841158d0cca1c5752a464", "578aa8e859ee4ba3a6aaf10d88ce7f01", "0a26a7f86e134cf7ae16b1d8abca92db", "72e48f4b64fa4a5a912ec3c57368cca6", "dae4c500e3a84430b4c2efbad7c0a50b", "b6ace246d3a849b98403b88a1c900490", "18ac88db5a6e47b5981bf7352717928f", "fc3f65f18b6248aca0c3c6468939dfe6", "518ad32953004624ab2573a069466bd5", "d21669c0ee5a4264b6461d08cadbf9cb", "1d517cd2a7eb4eb8a545e62201d2674f", "ed49f1ebf22c4efc91fdae8a2a332cfe", "4d2f7cf051434ba58a167d34151c7988", "caee4fda28e94914bc02ed648e99ffd1", "64ff4965f3374ceeb5c23dd21f311b75", "92cb29bfdcb14d2fbae60d0db2e599dc", "2d665d47a69847ca98e7b65b72848dbb", "dde9665f409144299772aa31439a10d1", "a4f6cbff45744a88b2e3a7486ec0bab3", "c39a0167dec44df7a6324fe53d25d775", "e0074055d75d44f78211055d23dbe25e", "d43ae04b31444430b615a92d90af0c67", "582423dc8eac4cb684783cbf4dcbf81c", "b044581223c7497f891d6a8ed8ae5cec", "99e3553f34c245f3b09f053069b0313f", "d511b6b0f00e4e97a36c2032aaeea5aa", "9e790e9ba2e84d57801f8a76cee50b84", "19b7ebd6880a4154b79d7164dcd8e747", "366c35f7189844e292547a80acb11d52", "69ecdc6cb0c74cd18bbafbbfc4b0832c", "b18517a15f5c45988ab0b121b87240de", "2b073a30b5754b2c9e9eedf5ac81fd2b", "5c5be9a4d77347b29f579dbd63a9a5ec", "6f80ddbf954e4229afe33cf0211bcba5", "6fd966d36a4e40ce8a8aa51729f2c39e", "2bd8cae7d3f24754adbad9fd5ffb31e7", "6da9565f73d24ec7a7197a2ddf89b8c2", "0806f4444f5e401ea7ecb46e3944ec72", "3ac97c23f9e2404e91a5f3ba8e8aaf24", "493771cebbb645feaf6430cb49faeb6c", "fcbe6150f95748b4856b6cafd4dac0c6", "6f7c0e8e94db48369589079d2a347ba7", "34e1d8cb87354233a7bbb7f4227facbf", "0931bf6c80fa4083a4919de8956d1bf0", "072a0d150da944dbad7ac8e6ed55d3b1", "6e4cba282d65419485f260396cec0168", "f8dac8023a3a4211b816eed1e5606146", "48ff7ff846f04fcdba23f9d8d61f1909", "83db624dd269481fba00470a5f4578d9", "699d10139f80446ca0bcd58935093d4c", "e7d24d2ef19c4de2a2fd3aac6624f740", "e08e6e15be0f4c95a314ab83017b1d44", "cdae997f3fcc40989873e28501280b23", "8476e5c86aff47f7af7a5f93fa89fa5b", "894348c7e56246bcaa6ec76c9eb3ea79", "068e703ecd254132b5444a96a88e6efb", "f41f400abc9d4452a50d3dd723863a21", "c4a0133c64a543e59f3b2f6f72ceb601", "f3806664d5124955bf63c0de4b3997c7", "82ad735baafb4f52969caef576f362aa", "cbfb04add288420498781e08f0e4c2b3", "b420cdde3c9049b1b3c7c5fba9e43d6c", "e3b0364d012d45e89e75efdf853b5d33", "14fc3819e4fa4e99a90d573d866f1190", "a74ab33f74e74ff4a3922c198bbfb230", "829b1592775f4785b98459d2d8faa6c8", "4e3d7219993643d5b58e3810ede15c45", "8d72417ad4ed4ebbb56a464b504f47d9", "d99ae784e2e24d5a9a213f5e23ac6a10", "33372ef9e83b445e870e986da56150fb", "387e1f9a6dd344ec835cb165d58e5be3", "6a456f71ab534745ac2cfbf819ca0a2a", "373644dd7303411090c796c2b19fb9b1", "435cf4bd56204862a94eb3a1928a082c", "efb60f3970074cf79633ec28b5b0a4ab", "281e39dcaf4843348f825b42cd959571", "6bb0ac2c7a334c13b808ddf8348cd9a9", "867e2f52dd3d4392ab9b88f67fe39bb7", "0f8164635aa54511aeed2ebe3023e8af", "207850da183346e9908a534b77db313c", "3bc50b21811d42c2a5cd3a6a5c5d1a41" ] }, "id": "eyl0bRHAAdsp", "outputId": "ec7e8abb-c1e9-4a69-c196-babbecb735d9" }, "execution_count": 8, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition\n", "VRAM: 102.0 GB\n", "\n", "======================================================================\n", "VAE: SD 1.5 (stable-diffusion-v1-5/stable-diffusion-v1-5)\n", "======================================================================\n", "Loading vae from stable-diffusion-v1-5/stable-diffusion-v1-5...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "config.json: 0%| | 0.00/547 [00:003s} {'Residual':>10s} {'Cosine':>10s}\")\n", " for depth in ['conv_in', 'enc_d0', 'enc_d1', 'enc_d2', 'enc_d3', 'enc_mid',\n", " 'dec_mid', 'dec_u0', 'dec_u1', 'dec_u2', 'dec_u3', 'conv_out', 'quant']:\n", " if depth in depth_results:\n", " r = depth_results[depth]\n", " print(f\" {depth:12s} {len(r):3d} {np.mean([x['residual'] for x in r]):10.4f} \"\n", " f\"{np.mean([x['cosine'] for x in r]):10.4f}\")\n", "\n", "# ── PHASE 5: Spectral Distance Matrix ──\n", "print(f\"\\n{'='*70}\")\n", "print(\"PHASE 5: SPECTRAL DISTANCE MATRIX\")\n", "print(f\"{'='*70}\")\n", "\n", "# For each pair, compute mean spectral correlation across all weights\n", "# This gives us a distance matrix for the four VAEs\n", "print(f\"\\n Spectral correlation (singular value distribution alignment):\")\n", "labels = [VAES[k][2] for k in model_keys]\n", "n = len(model_keys)\n", "spec_matrix = np.eye(n)\n", "for i in range(n):\n", " for j in range(i+1, n):\n", " key = (model_keys[i], model_keys[j])\n", " if key in pair_results:\n", " spec_matrix[i, j] = pair_results[key]['spectral_mean']\n", " spec_matrix[j, i] = pair_results[key]['spectral_mean']\n", " else:\n", " key_rev = (model_keys[j], model_keys[i])\n", " if key_rev in pair_results:\n", " spec_matrix[i, j] = pair_results[key_rev]['spectral_mean']\n", " spec_matrix[j, i] = pair_results[key_rev]['spectral_mean']\n", "\n", "print(f\"\\n {'':12s}\", end=\"\")\n", "for l in labels: print(f\" {l:>8s}\", end=\"\")\n", "print()\n", "for i, l in enumerate(labels):\n", " print(f\" {l:12s}\", end=\"\")\n", " for j in range(n):\n", " print(f\" {spec_matrix[i,j]:8.4f}\", end=\"\")\n", " print()\n", "\n", "# Procrustes distance matrix\n", "print(f\"\\n Procrustes residual (weight-space alignment distance):\")\n", "proc_matrix = np.zeros((n, n))\n", "for i in range(n):\n", " for j in range(i+1, n):\n", " key = (model_keys[i], model_keys[j])\n", " if key in pair_results:\n", " proc_matrix[i, j] = pair_results[key]['residual_mean']\n", " proc_matrix[j, i] = pair_results[key]['residual_mean']\n", " else:\n", " key_rev = (model_keys[j], model_keys[i])\n", " if key_rev in pair_results:\n", " proc_matrix[i, j] = pair_results[key_rev]['residual_mean']\n", " proc_matrix[j, i] = pair_results[key_rev]['residual_mean']\n", "\n", "print(f\"\\n {'':12s}\", end=\"\")\n", "for l in labels: print(f\" {l:>8s}\", end=\"\")\n", "print()\n", "for i, l in enumerate(labels):\n", " print(f\" {l:12s}\", end=\"\")\n", " for j in range(n):\n", " print(f\" {proc_matrix[i,j]:8.4f}\", end=\"\")\n", " print()\n", "\n", "# ── PHASE 6: Attention-specific Procrustes ──\n", "print(f\"\\n{'='*70}\")\n", "print(\"PHASE 6: ATTENTION WEIGHT PROCRUSTES\")\n", "print(f\"{'='*70}\")\n", "\n", "attn_names = [n for n in common_names if 'attn' in n]\n", "print(f\"Attention matrices: {len(attn_names)}\")\n", "\n", "for name in sorted(attn_names):\n", " # Pairwise alignment for this specific weight\n", " row = f\" {name.split('.')[-2]+'.'+name.split('.')[-1]:25s}\"\n", " cos_vals = {}\n", " for key_a, key_b in pairs:\n", " A = all_weights[key_a][name].to(device)\n", " B = all_weights[key_b][name].to(device)\n", " try:\n", " _, res, cos = orthogonal_procrustes(A, B)\n", " cos_vals[(key_a, key_b)] = cos\n", " except:\n", " cos_vals[(key_a, key_b)] = float('nan')\n", "\n", " print(f\"{row}\", end=\"\")\n", " for key_a, key_b in pairs:\n", " la, lb = VAES[key_a][2][:4], VAES[key_b][2][:4]\n", " print(f\" {la}-{lb}={cos_vals.get((key_a,key_b),0):.3f}\", end=\"\")\n", " print()\n", "\n", "# ── SUMMARY ──\n", "print(f\"\\n{'='*70}\")\n", "print(\"SUMMARY — PROCRUSTES ANALYSIS\")\n", "print(f\"{'='*70}\")\n", "\n", "print(f\"\\nPairwise Procrustes (lower residual = more alignable):\")\n", "print(f\"{'Pair':20s} {'Residual':>10s} {'Cosine':>10s} {'Spectral':>10s} {'Attn':>10s} {'Conv':>10s}\")\n", "for (ka, kb), r in sorted(pair_results.items()):\n", " la, lb = VAES[ka][2], VAES[kb][2]\n", " print(f\" {la+' vs '+lb:18s} {r['residual_mean']:10.4f} {r['cosine_mean']:10.4f} \"\n", " f\"{r['spectral_mean']:10.4f} \"\n", " f\"{r.get('attn_residual', 0):10.4f} {r.get('conv_residual', 0):10.4f}\")\n", "\n", "# Which pair is most similar? Most different?\n", "best = min(pair_results.items(), key=lambda x: x[1]['residual_mean'])\n", "worst = max(pair_results.items(), key=lambda x: x[1]['residual_mean'])\n", "print(f\"\\nMost alignable: {VAES[best[0][0]][2]} vs {VAES[best[0][1]][2]} (residual={best[1]['residual_mean']:.4f})\")\n", "print(f\"Least alignable: {VAES[worst[0][0]][2]} vs {VAES[worst[0][1]][2]} (residual={worst[1]['residual_mean']:.4f})\")\n", "\n", "print(f\"\\nRef: Procrustes residual of 0 = identical (up to rotation). Residual of 1 = orthogonal.\")\n", "print(f\" Spectral corr of 1 = identical singular value distribution.\")\n", "print(\"Done.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "BN-BrMCXKyc8", "outputId": "7906f394-dfc7-4a21-bb5f-2ad430ebe2a3" }, "execution_count": 9, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition\n", "VRAM: 102.0 GB\n", "======================================================================\n", "PROCRUSTES ANALYSIS — DIFFUSION VAEs\n", "======================================================================\n", "\n", "Extracting weights from all VAEs...\n", " SD 1.5... 72 matrices in 1s\n", " SDXL... 72 matrices in 0s\n", " Flux.1... 70 matrices in 1s\n", " Flux.2... " ] }, { "output_type": "stream", "name": "stderr", "text": [ "Some weights of the model checkpoint at black-forest-labs/FLUX.2-dev were not used when initializing AutoencoderKL: \n", " ['bn.num_batches_tracked, bn.running_mean, bn.running_var']\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "72 matrices in 0s\n", "\n", "Common weight matrices (identical name + shape): 68\n", " conv: 60\n", " other: 8\n", "\n", "======================================================================\n", "PHASE 2: ORTHOGONAL PROCRUSTES — PAIRWISE\n", "======================================================================\n", "Model pairs: 6\n", "\n", "--- SD 1.5 vs SDXL ---\n", " Procrustes: 68 matrices in 213s \n", " Residual: mean=7.6580, std=4.6563, range=[0.7647, 35.5183]\n", " Cosine: mean=0.6966, std=0.1676, range=[0.1608, 0.9730]\n", " Spectral: mean=nan, std=nan\n", " Conv only: residual=7.5943 (n=60)\n", "\n", "--- SD 1.5 vs Flux.1 ---\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.12/dist-packages/numpy/_core/fromnumeric.py:3596: RuntimeWarning: Mean of empty slice.\n", " return _methods._mean(a, axis=axis, dtype=dtype,\n", "/usr/local/lib/python3.12/dist-packages/numpy/_core/_methods.py:138: RuntimeWarning: invalid value encountered in scalar divide\n", " ret = ret.dtype.type(ret / rcount)\n", "/usr/local/lib/python3.12/dist-packages/numpy/_core/_methods.py:218: RuntimeWarning: Degrees of freedom <= 0 for slice\n", " ret = _var(a, axis=axis, dtype=dtype, out=out, ddof=ddof,\n", "/usr/local/lib/python3.12/dist-packages/numpy/_core/_methods.py:175: RuntimeWarning: invalid value encountered in divide\n", " arrmean = um.true_divide(arrmean, div, out=arrmean,\n", "/usr/local/lib/python3.12/dist-packages/numpy/_core/_methods.py:210: RuntimeWarning: invalid value encountered in scalar divide\n", " ret = ret.dtype.type(ret / rcount)\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ " Procrustes: 68 matrices in 214s \n", " Residual: mean=1.2546, std=3.0251, range=[0.1557, 24.1424]\n", " Cosine: mean=0.7302, std=0.1517, range=[0.0876, 0.9999]\n", " Spectral: mean=nan, std=nan\n", " Conv only: residual=0.7432 (n=60)\n", "\n", "--- SD 1.5 vs Flux.2 ---\n", " Procrustes: 68 matrices in 213s \n", " Residual: mean=0.9001, std=0.2098, range=[0.1800, 1.4162]\n", " Cosine: mean=0.7568, std=0.1081, range=[0.3726, 0.9988]\n", " Spectral: mean=nan, std=nan\n", " Conv only: residual=0.8680 (n=60)\n", "\n", "--- SDXL vs Flux.1 ---\n" ] }, { "output_type": "error", "ename": "KeyboardInterrupt", "evalue": "", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_27500/1044051262.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 171\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 172\u001b[0m \u001b[0;31m# Orthogonal Procrustes\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 173\u001b[0;31m \u001b[0mR\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresidual\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcos\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0morthogonal_procrustes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA_gpu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mB_gpu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 174\u001b[0m \u001b[0mresiduals\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresidual\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 175\u001b[0m \u001b[0mcosines\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcos\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/tmp/ipykernel_27500/1044051262.py\u001b[0m in \u001b[0;36morthogonal_procrustes\u001b[0;34m(A, B)\u001b[0m\n\u001b[1;32m 104\u001b[0m \u001b[0;31m# SVD of B^T A\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0mM\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mB\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0mA\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 106\u001b[0;31m \u001b[0mU\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mS\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mVt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msvd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 107\u001b[0m \u001b[0mR\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mU\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0mVt\u001b[0m \u001b[0;31m# optimal rotation\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 108\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# PROCRUSTES ANALYSIS — DIFFUSION VAEs (v2 — ALL GPU)\n", "# SD 1.5, SDXL, Flux.1, Flux.2\n", "# Everything on GPU. Proper normalization. Fixed spectral.\n", "# ============================================================================\n", "\n", "import torch\n", "import numpy as np\n", "import time\n", "import gc\n", "from collections import defaultdict\n", "from itertools import combinations\n", "from diffusers import AutoencoderKL\n", "\n", "device = torch.device(\"cuda\")\n", "print(f\"GPU: {torch.cuda.get_device_name()}\")\n", "\n", "VAES = {\n", " 'sd15': (\"stable-diffusion-v1-5/stable-diffusion-v1-5\", \"vae\", \"SD 1.5\"),\n", " 'sdxl': (\"stabilityai/stable-diffusion-xl-base-1.0\", \"vae\", \"SDXL\"),\n", " 'flux1': (\"black-forest-labs/FLUX.1-dev\", \"vae\", \"Flux.1\"),\n", " 'flux2': (\"black-forest-labs/FLUX.2-dev\", \"vae\", \"Flux.2\"),\n", "}\n", "\n", "print(\"=\" * 70)\n", "print(\"PROCRUSTES ANALYSIS — DIFFUSION VAEs\")\n", "print(\"=\" * 70)\n", "\n", "# ── Extract weights — store on GPU as fp32 ──\n", "def extract_weights(repo_id, subfolder):\n", " vae = AutoencoderKL.from_pretrained(repo_id, subfolder=subfolder, torch_dtype=torch.float32)\n", " vae.eval()\n", " weights = {}\n", " for name, param in vae.named_parameters():\n", " if param.dim() == 4:\n", " weights[name] = param.detach().reshape(param.shape[0], -1).to(device)\n", " elif param.dim() == 2:\n", " weights[name] = param.detach().to(device)\n", " del vae; gc.collect(); torch.cuda.empty_cache()\n", " return weights\n", "\n", "print(\"\\nExtracting weights (all on GPU)...\")\n", "all_weights = {}\n", "for key, (repo_id, subfolder, label) in VAES.items():\n", " print(f\" {label}...\", end=\" \")\n", " t0 = time.time()\n", " try:\n", " all_weights[key] = extract_weights(repo_id, subfolder)\n", " print(f\"{len(all_weights[key])} matrices in {time.time()-t0:.0f}s\")\n", " except Exception as e:\n", " print(f\"FAILED: {e}\")\n", " all_weights[key] = {}\n", "\n", "print(f\"VRAM: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "\n", "# Common matrices\n", "model_keys = [k for k in all_weights if all_weights[k]]\n", "common_names = None\n", "for key in model_keys:\n", " ns = {n: tuple(w.shape) for n, w in all_weights[key].items()}\n", " common_names = ns if common_names is None else {n: s for n, s in common_names.items() if n in ns and ns[n] == s}\n", "print(f\"\\nCommon matrices: {len(common_names)}\")\n", "\n", "# ── GPU Procrustes ──\n", "def procrustes_gpu(A, B):\n", " \"\"\"Orthogonal Procrustes on GPU. Normalizes to unit Frobenius norm.\"\"\"\n", " A_n = A / (torch.norm(A) + 1e-10)\n", " B_n = B / (torch.norm(B) + 1e-10)\n", " U, S, Vt = torch.linalg.svd(B_n.T @ A_n)\n", " R = U @ Vt\n", " B_aligned = B_n @ R\n", " residual = torch.norm(A_n - B_aligned).item()\n", " cosine = torch.dot(A_n.flatten(), B_aligned.flatten()).item()\n", " return residual, cosine\n", "\n", "def spectral_corr_gpu(A, B):\n", " \"\"\"Spectral correlation on GPU.\"\"\"\n", " Sa = torch.linalg.svdvals(A)\n", " Sb = torch.linalg.svdvals(B)\n", " n = min(len(Sa), len(Sb))\n", " if n < 3: return 0.0\n", " Sa = Sa[:n] / (Sa[0] + 1e-10)\n", " Sb = Sb[:n] / (Sb[0] + 1e-10)\n", " Sa_c = Sa - Sa.mean(); Sb_c = Sb - Sb.mean()\n", " return (torch.dot(Sa_c, Sb_c) / (torch.norm(Sa_c) * torch.norm(Sb_c) + 1e-10)).item()\n", "\n", "def raw_cosine_gpu(A, B):\n", " \"\"\"Raw weight cosine (no rotation).\"\"\"\n", " return (torch.dot(A.flatten(), B.flatten()) / (torch.norm(A) * torch.norm(B) + 1e-10)).item()\n", "\n", "# ── Pairwise analysis ──\n", "all_pairs = list(combinations(model_keys, 2))\n", "print(f\"\\n{'='*70}\\nPAIRWISE PROCRUSTES ({len(all_pairs)} pairs × {len(common_names)} matrices)\\n{'='*70}\")\n", "\n", "pair_results = {}\n", "for key_a, key_b in all_pairs:\n", " la, lb = VAES[key_a][2], VAES[key_b][2]\n", " print(f\"\\n--- {la} vs {lb} ---\")\n", " t0 = time.time()\n", "\n", " residuals = []; cosines = []; raw_cos = []; spec_corrs = []\n", " attn_res = []; conv_res = []\n", "\n", " for idx, name in enumerate(common_names):\n", " if (idx+1) % 20 == 0:\n", " print(f\" [{idx+1}/{len(common_names)}] \", end=\"\\r\")\n", " A = all_weights[key_a][name]\n", " B = all_weights[key_b][name]\n", " res, cos = procrustes_gpu(A, B)\n", " residuals.append(res); cosines.append(cos)\n", " raw_cos.append(raw_cosine_gpu(A, B))\n", " spec_corrs.append(spectral_corr_gpu(A, B))\n", " if 'attn' in name: attn_res.append(res)\n", " else: conv_res.append(res)\n", "\n", " elapsed = time.time() - t0\n", " gain = np.mean(cosines) - np.mean(raw_cos)\n", " print(f\" {len(residuals)} matrices in {elapsed:.0f}s \")\n", " print(f\" Procrustes residual: {np.mean(residuals):.4f} ±{np.std(residuals):.4f}\")\n", " print(f\" Procrustes cosine: {np.mean(cosines):.4f} ±{np.std(cosines):.4f}\")\n", " print(f\" Raw cosine (no rot): {np.mean(raw_cos):.4f} ±{np.std(raw_cos):.4f}\")\n", " print(f\" Spectral corr: {np.mean(spec_corrs):.4f} ±{np.std(spec_corrs):.4f}\")\n", " if attn_res: print(f\" Attn residual: {np.mean(attn_res):.4f} (n={len(attn_res)})\")\n", " if conv_res: print(f\" Conv residual: {np.mean(conv_res):.4f} (n={len(conv_res)})\")\n", " print(f\" Rotation gain: {gain:+.4f}\")\n", "\n", " pair_results[(key_a, key_b)] = {\n", " 'res': np.mean(residuals), 'cos': np.mean(cosines),\n", " 'raw': np.mean(raw_cos), 'spec': np.mean(spec_corrs),\n", " 'attn': np.mean(attn_res) if attn_res else None,\n", " 'conv': np.mean(conv_res) if conv_res else None, 'gain': gain,\n", " }\n", "\n", "# ── Distance matrices ──\n", "print(f\"\\n{'='*70}\\nDISTANCE MATRICES\\n{'='*70}\")\n", "labels = [VAES[k][2] for k in model_keys]\n", "n = len(model_keys)\n", "\n", "def gpv(i, j, f):\n", " if i == j: return 0.0 if 'res' in f else 1.0\n", " k = (model_keys[i], model_keys[j])\n", " if k in pair_results: return pair_results[k][f]\n", " k = (model_keys[j], model_keys[i])\n", " if k in pair_results: return pair_results[k][f]\n", " return float('nan')\n", "\n", "for f, t in [('res','PROCRUSTES RESIDUAL'), ('cos','PROCRUSTES COSINE'),\n", " ('raw','RAW COSINE'), ('spec','SPECTRAL CORRELATION')]:\n", " print(f\"\\n {t}\")\n", " print(f\" {'':10s}\", end=\"\")\n", " for l in labels: print(f\" {l:>8s}\", end=\"\")\n", " print()\n", " for i, l in enumerate(labels):\n", " print(f\" {l:10s}\", end=\"\")\n", " for j in range(n): print(f\" {gpv(i,j,f):8.4f}\", end=\"\")\n", " print()\n", "\n", "# ── Depth profile ──\n", "print(f\"\\n{'='*70}\\nDEPTH PROFILE: SD 1.5 vs Flux.2\\n{'='*70}\")\n", "if 'sd15' in all_weights and 'flux2' in all_weights:\n", " dr = defaultdict(list)\n", " for name in common_names:\n", " res, cos = procrustes_gpu(all_weights['sd15'][name], all_weights['flux2'][name])\n", " if 'encoder.down_blocks.0' in name: d='enc_d0'\n", " elif 'encoder.down_blocks.1' in name: d='enc_d1'\n", " elif 'encoder.down_blocks.2' in name: d='enc_d2'\n", " elif 'encoder.down_blocks.3' in name: d='enc_d3'\n", " elif 'encoder.mid_block' in name: d='enc_mid'\n", " elif 'decoder.up_blocks.0' in name: d='dec_u0'\n", " elif 'decoder.up_blocks.1' in name: d='dec_u1'\n", " elif 'decoder.up_blocks.2' in name: d='dec_u2'\n", " elif 'decoder.up_blocks.3' in name: d='dec_u3'\n", " elif 'decoder.mid_block' in name: d='dec_mid'\n", " elif 'quant' in name: d='quant'\n", " else: d='other'\n", " dr[d].append({'res':res,'cos':cos})\n", "\n", " print(f\" {'Depth':12s} {'N':>3s} {'Residual':>10s} {'Cosine':>10s}\")\n", " for d in ['enc_d0','enc_d1','enc_d2','enc_d3','enc_mid','dec_mid','dec_u0','dec_u1','dec_u2','dec_u3','quant','other']:\n", " if d in dr:\n", " r = dr[d]\n", " print(f\" {d:12s} {len(r):3d} {np.mean([x['res'] for x in r]):10.4f} \"\n", " f\"{np.mean([x['cos'] for x in r]):10.4f}\")\n", "\n", "# ── Encoder vs decoder within each VAE ──\n", "print(f\"\\n{'='*70}\\nENCODER vs DECODER (within each VAE)\\n{'='*70}\")\n", "for key in model_keys:\n", " label = VAES[key][2]; weights = all_weights[key]\n", " pairs_ed = []\n", " for name in weights:\n", " if 'encoder.mid_block' in name:\n", " dn = name.replace('encoder','decoder')\n", " if dn in weights and weights[name].shape == weights[dn].shape:\n", " pairs_ed.append((name, dn))\n", " if pairs_ed:\n", " rl=[]; cl=[]\n", " for en,dn in pairs_ed:\n", " r,c = procrustes_gpu(weights[en],weights[dn])\n", " rl.append(r); cl.append(c)\n", " print(f\" {label:8s}: {len(pairs_ed)} mid-block pairs, res={np.mean(rl):.4f}, cos={np.mean(cl):.4f}\")\n", "\n", "# ── Attention detail ──\n", "print(f\"\\n{'='*70}\\nATTENTION DETAIL\\n{'='*70}\")\n", "attn_names = sorted([n for n in common_names if 'attn' in n])\n", "if attn_names:\n", " for name in attn_names:\n", " short = '.'.join(name.split('.')[-3:])\n", " print(f\" {short:30s}\", end=\"\")\n", " for ka, kb in all_pairs:\n", " r,c = procrustes_gpu(all_weights[ka][name], all_weights[kb][name])\n", " la,lb = VAES[ka][2][:2], VAES[kb][2][:2]\n", " print(f\" {la}{lb}={c:.3f}\", end=\"\")\n", " print()\n", "\n", "# ── Summary ──\n", "print(f\"\\n{'='*70}\\nSUMMARY\\n{'='*70}\")\n", "print(f\"\\n{'Pair':20s} {'Residual':>10s} {'ProcrCos':>10s} {'RawCos':>10s} {'Spectral':>10s} {'Gain':>8s}\")\n", "for (ka,kb),r in sorted(pair_results.items()):\n", " la,lb = VAES[ka][2],VAES[kb][2]\n", " print(f\" {la+' vs '+lb:18s} {r['res']:10.4f} {r['cos']:10.4f} \"\n", " f\"{r['raw']:10.4f} {r['spec']:10.4f} {r['gain']:+8.4f}\")\n", "\n", "best = min(pair_results.items(), key=lambda x: x[1]['res'])\n", "worst = max(pair_results.items(), key=lambda x: x[1]['res'])\n", "print(f\"\\nClosest: {VAES[best[0][0]][2]} vs {VAES[best[0][1]][2]} (res={best[1]['res']:.4f})\")\n", "print(f\"Furthest: {VAES[worst[0][0]][2]} vs {VAES[worst[0][1]][2]} (res={worst[1]['res']:.4f})\")\n", "print(f\"\\nVRAM: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "print(\"Done.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "DFBcce9xNZAB", "outputId": "3cce40a3-d642-4037-baaa-1f7ecd622fd9" }, "execution_count": 1, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "Flax classes are deprecated and will be removed in Diffusers v1.0.0. We recommend migrating to PyTorch classes or pinning your version of Diffusers.\n", "Flax classes are deprecated and will be removed in Diffusers v1.0.0. We recommend migrating to PyTorch classes or pinning your version of Diffusers.\n", "/usr/local/lib/python3.12/dist-packages/huggingface_hub/utils/_validators.py:202: UserWarning: The `local_dir_use_symlinks` argument is deprecated and ignored in `hf_hub_download`. Downloading to a local directory does not use symlinks anymore.\n", " warnings.warn(\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition\n", "======================================================================\n", "PROCRUSTES ANALYSIS — DIFFUSION VAEs\n", "======================================================================\n", "\n", "Extracting weights (all on GPU)...\n", " SD 1.5... 72 matrices in 1s\n", " SDXL... 72 matrices in 0s\n", " Flux.1... 70 matrices in 1s\n", " Flux.2... " ] }, { "output_type": "stream", "name": "stderr", "text": [ "Some weights of the model checkpoint at black-forest-labs/FLUX.2-dev were not used when initializing AutoencoderKL: \n", " ['bn.num_batches_tracked, bn.running_var, bn.running_mean']\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "72 matrices in 1s\n", "VRAM: 1.3 GB\n", "\n", "Common matrices: 68\n", "\n", "======================================================================\n", "PAIRWISE PROCRUSTES (6 pairs × 68 matrices)\n", "======================================================================\n", "\n", "--- SD 1.5 vs SDXL ---\n", " 68 matrices in 213s \n", " Procrustes residual: 0.7519 ±0.2039\n", " Procrustes cosine: 0.6966 ±0.1676\n", " Raw cosine (no rot): 0.0530 ±0.1142\n", " Spectral corr: 0.9581 ±0.0843\n", " Conv residual: 0.7519 (n=68)\n", " Rotation gain: +0.6436\n", "\n", "--- SD 1.5 vs Flux.1 ---\n", " 68 matrices in 214s \n", " Procrustes residual: 0.7073 ±0.1985\n", " Procrustes cosine: 0.7303 ±0.1517\n", " Raw cosine (no rot): 0.0905 ±0.1894\n", " Spectral corr: 0.9641 ±0.1190\n", " Conv residual: 0.7073 (n=68)\n", " Rotation gain: +0.6397\n", "\n", "--- SD 1.5 vs Flux.2 ---\n", " 68 matrices in 214s \n", " Procrustes residual: 0.6794 ±0.1578\n", " Procrustes cosine: 0.7569 ±0.1081\n", " Raw cosine (no rot): -0.0003 ±0.0033\n", " Spectral corr: 0.9790 ±0.0214\n", " Conv residual: 0.6794 (n=68)\n", " Rotation gain: +0.7572\n", "\n", "--- SDXL vs Flux.1 ---\n", " 68 matrices in 215s \n", " Procrustes residual: 0.7736 ±0.2299\n", " Procrustes cosine: 0.6745 ±0.2006\n", " Raw cosine (no rot): 0.0244 ±0.1006\n", " Spectral corr: 0.9388 ±0.1369\n", " Conv residual: 0.7736 (n=68)\n", " Rotation gain: +0.6501\n", "\n", "--- SDXL vs Flux.2 ---\n", " 68 matrices in 214s \n", " Procrustes residual: 0.7385 ±0.2140\n", " Procrustes cosine: 0.7046 ±0.1769\n", " Raw cosine (no rot): -0.0007 ±0.0060\n", " Spectral corr: 0.9365 ±0.1213\n", " Conv residual: 0.7385 (n=68)\n", " Rotation gain: +0.7053\n", "\n", "--- Flux.1 vs Flux.2 ---\n", " 68 matrices in 215s \n", " Procrustes residual: 0.6987 ±0.1997\n", " Procrustes cosine: 0.7361 ±0.1603\n", " Raw cosine (no rot): 0.0002 ±0.0049\n", " Spectral corr: 0.9569 ±0.1305\n", " Conv residual: 0.6987 (n=68)\n", " Rotation gain: +0.7359\n", "\n", "======================================================================\n", "DISTANCE MATRICES\n", "======================================================================\n", "\n", " PROCRUSTES RESIDUAL\n", " SD 1.5 SDXL Flux.1 Flux.2\n", " SD 1.5 0.0000 0.7519 0.7073 0.6794\n", " SDXL 0.7519 0.0000 0.7736 0.7385\n", " Flux.1 0.7073 0.7736 0.0000 0.6987\n", " Flux.2 0.6794 0.7385 0.6987 0.0000\n", "\n", " PROCRUSTES COSINE\n", " SD 1.5 SDXL Flux.1 Flux.2\n", " SD 1.5 1.0000 0.6966 0.7303 0.7569\n", " SDXL 0.6966 1.0000 0.6745 0.7046\n", " Flux.1 0.7303 0.6745 1.0000 0.7361\n", " Flux.2 0.7569 0.7046 0.7361 1.0000\n", "\n", " RAW COSINE\n", " SD 1.5 SDXL Flux.1 Flux.2\n", " SD 1.5 1.0000 0.0530 0.0905 -0.0003\n", " SDXL 0.0530 1.0000 0.0244 -0.0007\n", " Flux.1 0.0905 0.0244 1.0000 0.0002\n", " Flux.2 -0.0003 -0.0007 0.0002 1.0000\n", "\n", " SPECTRAL CORRELATION\n", " SD 1.5 SDXL Flux.1 Flux.2\n", " SD 1.5 1.0000 0.9581 0.9641 0.9790\n", " SDXL 0.9581 1.0000 0.9388 0.9365\n", " Flux.1 0.9641 0.9388 1.0000 0.9569\n", " Flux.2 0.9790 0.9365 0.9569 1.0000\n", "\n", "======================================================================\n", "DEPTH PROFILE: SD 1.5 vs Flux.2\n", "======================================================================\n", " Depth N Residual Cosine\n", " enc_d0 5 0.5606 0.8408\n", " enc_d1 6 0.6752 0.7629\n", " enc_d2 6 0.7471 0.7157\n", " enc_d3 4 0.7104 0.7449\n", " enc_mid 8 0.8547 0.6290\n", " dec_mid 8 0.7919 0.6818\n", " dec_u0 7 0.6395 0.7952\n", " dec_u1 7 0.5790 0.8319\n", " dec_u2 8 0.5953 0.8204\n", " dec_u3 7 0.6265 0.8004\n", " other 2 0.5843 0.6857\n", "\n", "======================================================================\n", "ENCODER vs DECODER (within each VAE)\n", "======================================================================\n", " SD 1.5 : 8 mid-block pairs, res=0.8919, cos=0.6017\n", " SDXL : 8 mid-block pairs, res=1.0657, cos=0.4099\n", " Flux.1 : 8 mid-block pairs, res=0.9767, cos=0.4937\n", " Flux.2 : 8 mid-block pairs, res=0.7555, cos=0.7065\n", "\n", "======================================================================\n", "ATTENTION DETAIL\n", "======================================================================\n", "\n", "======================================================================\n", "SUMMARY\n", "======================================================================\n", "\n", "Pair Residual ProcrCos RawCos Spectral Gain\n", " Flux.1 vs Flux.2 0.6987 0.7361 0.0002 0.9569 +0.7359\n", " SD 1.5 vs Flux.1 0.7073 0.7303 0.0905 0.9641 +0.6397\n", " SD 1.5 vs Flux.2 0.6794 0.7569 -0.0003 0.9790 +0.7572\n", " SD 1.5 vs SDXL 0.7519 0.6966 0.0530 0.9581 +0.6436\n", " SDXL vs Flux.1 0.7736 0.6745 0.0244 0.9388 +0.6501\n", " SDXL vs Flux.2 0.7385 0.7046 -0.0007 0.9365 +0.7053\n", "\n", "Closest: SD 1.5 vs Flux.2 (res=0.6794)\n", "Furthest: SDXL vs Flux.1 (res=0.7736)\n", "\n", "VRAM: 1.4 GB\n", "Done.\n" ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# PROCRUSTES ANALYSIS — BERT-large vs DINOv2-large\n", "# Same architecture: 1024-d, 24 layers, 16 heads\n", "# Different modality: language (MLM) vs vision (self-supervised)\n", "# The cross-modal alignment test\n", "# ============================================================================\n", "\n", "import torch\n", "import numpy as np\n", "import time\n", "import gc\n", "from collections import defaultdict\n", "from transformers import BertModel, Dinov2Model\n", "\n", "device = torch.device(\"cuda\")\n", "print(f\"GPU: {torch.cuda.get_device_name()}\")\n", "\n", "print(\"=\" * 70)\n", "print(\"PROCRUSTES: BERT-large vs DINOv2-large\")\n", "print(\"Both 1024-d, 24 layers, 16 heads\")\n", "print(\"Language (MLM) vs Vision (self-supervised)\")\n", "print(\"=\" * 70)\n", "\n", "# ── Load both models, extract 2D weights ──\n", "def extract_bert(model):\n", " weights = {}\n", " for name, param in model.named_parameters():\n", " if param.dim() != 2: continue\n", " # Normalize naming to generic format\n", " generic = name\n", " # Map BERT naming to generic\n", " generic = generic.replace('bert.encoder.layer.', 'layer.')\n", " generic = generic.replace('.attention.self.query.', '.attn.q.')\n", " generic = generic.replace('.attention.self.key.', '.attn.k.')\n", " generic = generic.replace('.attention.self.value.', '.attn.v.')\n", " generic = generic.replace('.attention.output.dense.', '.attn.o.')\n", " generic = generic.replace('.intermediate.dense.', '.mlp.up.')\n", " generic = generic.replace('.output.dense.', '.mlp.down.')\n", " weights[generic] = param.detach().float().to(device)\n", " return weights\n", "\n", "def extract_dino(model):\n", " weights = {}\n", " for name, param in model.named_parameters():\n", " if param.dim() != 2: continue\n", " generic = name\n", " generic = generic.replace('dinov2.encoder.layer.', 'layer.')\n", " generic = generic.replace('.attention.attention.query.', '.attn.q.')\n", " generic = generic.replace('.attention.attention.key.', '.attn.k.')\n", " generic = generic.replace('.attention.attention.value.', '.attn.v.')\n", " generic = generic.replace('.attention.output.dense.', '.attn.o.')\n", " generic = generic.replace('.intermediate.dense.', '.mlp.up.')\n", " generic = generic.replace('.output.dense.', '.mlp.down.')\n", " weights[generic] = param.detach().float().to(device)\n", " return weights\n", "\n", "print(\"\\nLoading BERT-large...\")\n", "bert = BertModel.from_pretrained(\"google-bert/bert-large-uncased\", torch_dtype=torch.float32)\n", "bert.eval()\n", "bert_w = extract_bert(bert)\n", "del bert; gc.collect(); torch.cuda.empty_cache()\n", "print(f\" {len(bert_w)} 2D matrices\")\n", "\n", "print(\"Loading DINOv2-large...\")\n", "dino = Dinov2Model.from_pretrained(\"facebook/dinov2-large\", torch_dtype=torch.float32)\n", "dino.eval()\n", "dino_w = extract_dino(dino)\n", "del dino; gc.collect(); torch.cuda.empty_cache()\n", "print(f\" {len(dino_w)} 2D matrices\")\n", "\n", "print(f\"VRAM: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "\n", "# Find matching names with same shapes\n", "common = {}\n", "for name in bert_w:\n", " if name in dino_w and bert_w[name].shape == dino_w[name].shape:\n", " common[name] = bert_w[name].shape\n", "\n", "print(f\"\\nCommon matrices (same name + shape): {len(common)}\")\n", "# Group by type\n", "type_counts = defaultdict(int)\n", "type_shapes = defaultdict(set)\n", "for name, shape in common.items():\n", " if '.attn.q.' in name: t = 'attn_q'\n", " elif '.attn.k.' in name: t = 'attn_k'\n", " elif '.attn.v.' in name: t = 'attn_v'\n", " elif '.attn.o.' in name: t = 'attn_o'\n", " elif '.mlp.up.' in name: t = 'mlp_up'\n", " elif '.mlp.down.' in name: t = 'mlp_down'\n", " else: t = 'other'\n", " type_counts[t] += 1\n", " type_shapes[t].add(str(shape))\n", "\n", "for t in sorted(type_counts):\n", " print(f\" {t:15s}: {type_counts[t]:3d} shapes={type_shapes[t]}\")\n", "\n", "# If no common names, try by layer structure matching\n", "if len(common) == 0:\n", " print(\"\\n No name-matched matrices. Trying structural matching...\")\n", " # Match by layer number + weight type + shape\n", " bert_by_struct = {}\n", " for name, W in bert_w.items():\n", " # Extract layer num and type\n", " for l in range(24):\n", " if f'layer.{l}.' in name:\n", " for wt in ['attn.q', 'attn.k', 'attn.v', 'attn.o', 'mlp.up', 'mlp.down']:\n", " if wt in name:\n", " bert_by_struct[(l, wt)] = (name, W)\n", " break\n", "\n", " dino_by_struct = {}\n", " for name, W in dino_w.items():\n", " for l in range(24):\n", " if f'layer.{l}.' in name:\n", " for wt in ['attn.q', 'attn.k', 'attn.v', 'attn.o', 'mlp.up', 'mlp.down']:\n", " if wt in name:\n", " dino_by_struct[(l, wt)] = (name, W)\n", " break\n", "\n", " # Find matching structures\n", " common_struct = {}\n", " for key in bert_by_struct:\n", " if key in dino_by_struct:\n", " bn, bw = bert_by_struct[key]\n", " dn, dw = dino_by_struct[key]\n", " if bw.shape == dw.shape:\n", " common_struct[key] = (bn, dn, bw.shape)\n", "\n", " print(f\" Structurally matched: {len(common_struct)}\")\n", " for t in ['attn.q', 'attn.k', 'attn.v', 'attn.o', 'mlp.up', 'mlp.down']:\n", " n = sum(1 for k in common_struct if k[1] == t)\n", " if n > 0:\n", " shapes = set(str(common_struct[k][2]) for k in common_struct if k[1] == t)\n", " print(f\" {t:15s}: {n:3d} shapes={shapes}\")\n", "\n", "# ── GPU Procrustes functions ──\n", "def procrustes_gpu(A, B):\n", " A_n = A / (torch.norm(A) + 1e-10)\n", " B_n = B / (torch.norm(B) + 1e-10)\n", " U, S, Vt = torch.linalg.svd(B_n.T @ A_n)\n", " R = U @ Vt\n", " B_aligned = B_n @ R\n", " residual = torch.norm(A_n - B_aligned).item()\n", " cosine = torch.dot(A_n.flatten(), B_aligned.flatten()).item()\n", " return residual, cosine\n", "\n", "def spectral_corr_gpu(A, B):\n", " Sa = torch.linalg.svdvals(A)\n", " Sb = torch.linalg.svdvals(B)\n", " n = min(len(Sa), len(Sb))\n", " if n < 3: return 0.0\n", " Sa = Sa[:n] / (Sa[0] + 1e-10); Sb = Sb[:n] / (Sb[0] + 1e-10)\n", " Sa_c = Sa - Sa.mean(); Sb_c = Sb - Sb.mean()\n", " return (torch.dot(Sa_c, Sb_c) / (torch.norm(Sa_c) * torch.norm(Sb_c) + 1e-10)).item()\n", "\n", "def raw_cosine_gpu(A, B):\n", " return (torch.dot(A.flatten(), B.flatten()) / (torch.norm(A) * torch.norm(B) + 1e-10)).item()\n", "\n", "# ── Run Procrustes ──\n", "print(f\"\\n{'='*70}\")\n", "print(\"PAIRWISE PROCRUSTES — BERT vs DINOv2\")\n", "print(f\"{'='*70}\")\n", "\n", "# Use whichever matching method worked\n", "if len(common) > 0:\n", " # Name-matched\n", " items = [(name, bert_w[name], dino_w[name]) for name in common]\n", "elif len(common_struct) > 0:\n", " items = [(f\"L{k[0]}.{k[1]}\", bert_by_struct[k][1], dino_by_struct[k][1])\n", " for k in sorted(common_struct)]\n", "else:\n", " print(\"No matching matrices found!\")\n", " items = []\n", "\n", "if items:\n", " t0 = time.time()\n", " all_res = []; all_cos = []; all_raw = []; all_spec = []\n", " type_results = defaultdict(lambda: {'res':[], 'cos':[], 'raw':[], 'spec':[]})\n", "\n", " for idx, (name, A, B) in enumerate(items):\n", " if (idx+1) % 10 == 0:\n", " print(f\" [{idx+1}/{len(items)}] \", end=\"\\r\")\n", "\n", " res, cos = procrustes_gpu(A, B)\n", " raw = raw_cosine_gpu(A, B)\n", " spec = spectral_corr_gpu(A, B)\n", "\n", " all_res.append(res); all_cos.append(cos)\n", " all_raw.append(raw); all_spec.append(spec)\n", "\n", " # Categorize\n", " if 'attn.q' in name or '.q.' in name: t = 'attn_q'\n", " elif 'attn.k' in name or '.k.' in name: t = 'attn_k'\n", " elif 'attn.v' in name or '.v.' in name: t = 'attn_v'\n", " elif 'attn.o' in name or '.o.' in name: t = 'attn_o'\n", " elif 'mlp.up' in name: t = 'mlp_up'\n", " elif 'mlp.down' in name: t = 'mlp_down'\n", " else: t = 'other'\n", " type_results[t]['res'].append(res)\n", " type_results[t]['cos'].append(cos)\n", " type_results[t]['raw'].append(raw)\n", " type_results[t]['spec'].append(spec)\n", "\n", " elapsed = time.time() - t0\n", " gain = np.mean(all_cos) - np.mean(all_raw)\n", "\n", " print(f\" {len(items)} matrices in {elapsed:.0f}s \")\n", " print(f\"\\n OVERALL:\")\n", " print(f\" Procrustes residual: {np.mean(all_res):.4f} ±{np.std(all_res):.4f}\")\n", " print(f\" Procrustes cosine: {np.mean(all_cos):.4f} ±{np.std(all_cos):.4f}\")\n", " print(f\" Raw cosine (no rot): {np.mean(all_raw):.4f} ±{np.std(all_raw):.4f}\")\n", " print(f\" Spectral corr: {np.mean(all_spec):.4f} ±{np.std(all_spec):.4f}\")\n", " print(f\" Rotation gain: {gain:+.4f}\")\n", "\n", " print(f\"\\n BY WEIGHT TYPE:\")\n", " print(f\" {'Type':15s} {'N':>3s} {'Residual':>10s} {'ProcrCos':>10s} {'RawCos':>10s} {'Spectral':>10s}\")\n", " for t in ['attn_q', 'attn_k', 'attn_v', 'attn_o', 'mlp_up', 'mlp_down', 'other']:\n", " r = type_results[t]\n", " if r['res']:\n", " print(f\" {t:15s} {len(r['res']):3d} {np.mean(r['res']):10.4f} \"\n", " f\"{np.mean(r['cos']):10.4f} {np.mean(r['raw']):10.4f} \"\n", " f\"{np.mean(r['spec']):10.4f}\")\n", "\n", " # ── Per-layer depth profile ──\n", " print(f\"\\n{'='*70}\")\n", " print(\"DEPTH PROFILE — BERT vs DINOv2\")\n", " print(f\"{'='*70}\")\n", "\n", " layer_results = defaultdict(lambda: {'res':[], 'cos':[], 'raw':[], 'spec':[]})\n", " for name, A, B in items:\n", " for l in range(24):\n", " if f'L{l}.' in name or f'layer.{l}.' in name or f'.{l}.' in name:\n", " res, cos = procrustes_gpu(A, B)\n", " raw = raw_cosine_gpu(A, B)\n", " spec = spectral_corr_gpu(A, B)\n", " layer_results[l]['res'].append(res)\n", " layer_results[l]['cos'].append(cos)\n", " layer_results[l]['raw'].append(raw)\n", " layer_results[l]['spec'].append(spec)\n", " break\n", "\n", " print(f\" {'Layer':>6s} {'N':>3s} {'Residual':>10s} {'ProcrCos':>10s} {'RawCos':>10s} {'Spectral':>10s}\")\n", " for l in range(24):\n", " r = layer_results[l]\n", " if r['res']:\n", " print(f\" L{l:2d} {len(r['res']):3d} {np.mean(r['res']):10.4f} \"\n", " f\"{np.mean(r['cos']):10.4f} {np.mean(r['raw']):10.4f} \"\n", " f\"{np.mean(r['spec']):10.4f}\")\n", "\n", " if layer_results:\n", " early = [np.mean(layer_results[l]['cos']) for l in range(6) if layer_results[l]['cos']]\n", " late = [np.mean(layer_results[l]['cos']) for l in range(18,24) if layer_results[l]['cos']]\n", " if early and late:\n", " print(f\"\\n Early layers (0-5): mean Procrustes cos = {np.mean(early):.4f}\")\n", " print(f\" Late layers (18-23): mean Procrustes cos = {np.mean(late):.4f}\")\n", " if np.mean(early) > np.mean(late):\n", " print(f\" → Early layers more aligned (shared low-level structure)\")\n", " else:\n", " print(f\" → Late layers more aligned (shared high-level structure)\")\n", "\n", " # ── QK Procrustes per layer ──\n", " print(f\"\\n{'='*70}\")\n", " print(\"Q vs K ALIGNMENT — per layer\")\n", " print(f\"{'='*70}\")\n", "\n", " print(f\" {'Layer':>6s} {'Q cos':>8s} {'K cos':>8s} {'V cos':>8s} {'O cos':>8s} {'MLP_up':>8s} {'MLP_dn':>8s}\")\n", " for l in range(24):\n", " row = f\" L{l:2d} \"\n", " for wt in ['attn.q', 'attn.k', 'attn.v', 'attn.o', 'mlp.up', 'mlp.down']:\n", " key = (l, wt)\n", " if len(common_struct) > 0 and key in common_struct:\n", " A = bert_by_struct[key][1]\n", " B = dino_by_struct[key][1]\n", " _, cos = procrustes_gpu(A, B)\n", " row += f\" {cos:8.4f}\"\n", " elif len(common) > 0:\n", " # Find by name\n", " found = False\n", " for name in common:\n", " if f'layer.{l}.' in name and wt.replace('.', '') in name.replace('.',''):\n", " _, cos = procrustes_gpu(bert_w[name], dino_w[name])\n", " row += f\" {cos:8.4f}\"\n", " found = True\n", " break\n", " if not found:\n", " row += f\" -\"\n", " else:\n", " row += f\" -\"\n", " print(row)\n", "\n", "# ── Summary ──\n", "print(f\"\\n{'='*70}\")\n", "print(\"SUMMARY — BERT-large vs DINOv2-large\")\n", "print(f\"{'='*70}\")\n", "print(f\"Architecture: identical (1024-d, 24L, 16H)\")\n", "print(f\"Training: BERT=Masked LM (text), DINOv2=Self-supervised (vision)\")\n", "print(f\"Matrices compared: {len(items)}\")\n", "if items:\n", " print(f\"\\nProcrustes cosine: {np.mean(all_cos):.4f} (after optimal rotation)\")\n", " print(f\"Raw cosine: {np.mean(all_raw):.4f} (no rotation)\")\n", " print(f\"Rotation gain: {gain:+.4f}\")\n", " print(f\"Spectral corr: {np.mean(all_spec):.4f}\")\n", "\n", "print(f\"\\nReference (same-architecture, same-task — VAEs):\")\n", "print(f\" SD1.5 vs Flux.2: Procrustes cos=0.757, raw=0.000, spectral=0.979\")\n", "print(f\" SDXL vs Flux.1: Procrustes cos=0.675, raw=0.024, spectral=0.939\")\n", "print(f\"\\nVRAM: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "print(\"Done.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "098afab6dd8f4301a55c42ffbc4bc1a6", "48ff67818d5b468f96fb2bf1d628d7f8", "87de597760df4a4f93988a021406d077", "9c480b6d74364bdba40a594409a00c8f", "50f0ac1ba9a742fbb6f49dcaf1b5c230", "2c4dcadfcee8406097fe9295e64677d6", "224c8598eb93404e9727639353fe8740", "7a7ff8243f004514897cdaa90e88fd8b", "e37994c130cb412ead694fb9e9b76f28", "7952ed37d0fd4e209eb88c6e32351cb1", "d5a18032f6fe48dc904424f172bae8b8", "9690aae8fbe14f46b024bf58b174e688", "ebf3964bf3724d169023707339ff243d", "73fd929c196a489cb0d79ca55138e233", "28a80ed75b094e8d8e32544c25dfba4d", "8203853547da417e81da48cdc19b99cc", "a6523561b3b741dabc72a6866df1e578", "458a810532f842bda6b02fab34299466", "b9a5612b65664d0daed4554c3bf8fc42", "537c6117ca9d41e4b4033fa6f0fd3ec9", "20bf5aa295c44b0f8041386cc006d40f", "586af48d963b4087af67fce0d4593887", "489733c963fd423f9915f5631d9c28b6", "06f7d780a05f4852b7e4f0ec48cbac71", "9f50c50893c7483383ed52016320ba27", "03f2019752bf497195eca1035a4821c7", "962b56ecfe3d4f87b1c6efd15bb50ee5", "d45ee4135df4420ca0acc19b2e954f82", "874b235bbc1d41b2a0eb284a5f614617", "24ae5a04629c45bd9294e5dfc6c1a6cf", "505c3be1d3594f29b686d07efa9b3b75", "a9bd35331365468bb8841381113c2cfd", "eee15a2c3a094c4e8f87619c823aa3f7", "fb80f36faec3480bb2e7d0a5e91f94d7", "d542a3f200f04b478ffb75806f1597ff", "588515c685634f0f9d728ff09f1dd819", "4993cef3d0ff4ca18ab177eb22a35058", "2d72d54b6dde43aa922138ba23d53543", "628e6322b4ab48968dffe18eedc5616a", "8d2431b91666433a8cc38a12d107b280", "4dbf5b3326ab445b9169bf4020e87b1b", "eb495e746f8e4fcdb8e32fbd949a0157", "ae5ea3464fd74e219fc2a3f5aa63de91", "87eee5514a06449296978c04323dcbd9", "87e38060db254cc3a77418fe9e057ccc", "489acb9ab5f3410890c92876b892e8ad", "c30d2c66da8747cd8786d72546a4112d", "e2eeb8627ced4e4db193e7fa684cfc6b", "257e86dc1c544829a69e3066863a1102", "45658c95562343e5811f5cbd6a7bdc00", "df5d5fdc818444df8d2f6630f4ed9cc8", "63d1fecd984c406087de32fe9d0ac75f", "806689a6877f4dc3bb65337607b59937", "b58732dab95240f8a4de07e1c65f3ffd", "25e68f1ce6334839bf341bc17355af50", "022e853b7dac4363b99c60a4c3198aa3", "a9143eb9f5b34d188cff6274a2738d99", "b390c24f5724407cbbe01b8d12e59649", "4c10d044538747e786511795706aa009", "bcc038ed65634100b5561ce17ad6ddc3", "45d9b7c777c44a9d81c3f23dd403a2f1", "802ccaa92fb14fa580d37a3f7c2291e9", "078d5e5d458d479aa774a4ba696ee9b8", "dd8efbd295b649da9115409f6f0eabe3", "9eaa6f6fd73b430e87ee3260aa49e035", "74880df8539a4eb48a443cbec90fd9a6" ] }, "id": "pHPz91orYaLn", "outputId": "57f98bf2-9ea5-40c1-ddd3-f71f98acfe65" }, "execution_count": 2, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition\n", "======================================================================\n", "PROCRUSTES: BERT-large vs DINOv2-large\n", "Both 1024-d, 24 layers, 16 heads\n", "Language (MLM) vs Vision (self-supervised)\n", "======================================================================\n", "\n", "Loading BERT-large...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "config.json: 0%| | 0.00/571 [00:00\u001b[0;34m()\u001b[0m\n\u001b[1;32m 269\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mwt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'attn.q'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'attn.k'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'attn.v'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'attn.o'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'mlp.up'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'mlp.down'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 270\u001b[0m \u001b[0mkey\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0ml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 271\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcommon_struct\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mkey\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcommon_struct\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 272\u001b[0m \u001b[0mA\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbert_by_struct\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 273\u001b[0m \u001b[0mB\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdino_by_struct\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'common_struct' is not defined" ] } ] }, { "cell_type": "code", "source": [ "# ============================================================================\n", "# PROCRUSTES ANALYSIS — BERT-large vs DINOv2-large\n", "# Same architecture: 1024-d, 24 layers, 16 heads\n", "# Different modality: language (MLM) vs vision (self-supervised)\n", "# The cross-modal alignment test\n", "# ============================================================================\n", "\n", "import torch\n", "import numpy as np\n", "import time\n", "import gc\n", "from collections import defaultdict\n", "from transformers import BertModel, Dinov2Model\n", "\n", "device = torch.device(\"cuda\")\n", "print(f\"GPU: {torch.cuda.get_device_name()}\")\n", "\n", "print(\"=\" * 70)\n", "print(\"PROCRUSTES: BERT-large vs DINOv2-large\")\n", "print(\"Both 1024-d, 24 layers, 16 heads\")\n", "print(\"Language (MLM) vs Vision (self-supervised)\")\n", "print(\"=\" * 70)\n", "\n", "# ── Load both models, extract 2D weights ──\n", "def extract_bert(model):\n", " weights = {}\n", " for name, param in model.named_parameters():\n", " if param.dim() != 2: continue\n", " # Normalize naming to generic format\n", " generic = name\n", " # Map BERT naming to generic\n", " generic = generic.replace('bert.encoder.layer.', 'layer.')\n", " generic = generic.replace('.attention.self.query.', '.attn.q.')\n", " generic = generic.replace('.attention.self.key.', '.attn.k.')\n", " generic = generic.replace('.attention.self.value.', '.attn.v.')\n", " generic = generic.replace('.attention.output.dense.', '.attn.o.')\n", " generic = generic.replace('.intermediate.dense.', '.mlp.up.')\n", " generic = generic.replace('.output.dense.', '.mlp.down.')\n", " weights[generic] = param.detach().float().to(device)\n", " return weights\n", "\n", "def extract_dino(model):\n", " weights = {}\n", " for name, param in model.named_parameters():\n", " if param.dim() != 2: continue\n", " generic = name\n", " generic = generic.replace('dinov2.encoder.layer.', 'layer.')\n", " generic = generic.replace('.attention.attention.query.', '.attn.q.')\n", " generic = generic.replace('.attention.attention.key.', '.attn.k.')\n", " generic = generic.replace('.attention.attention.value.', '.attn.v.')\n", " generic = generic.replace('.attention.output.dense.', '.attn.o.')\n", " generic = generic.replace('.intermediate.dense.', '.mlp.up.')\n", " generic = generic.replace('.output.dense.', '.mlp.down.')\n", " weights[generic] = param.detach().float().to(device)\n", " return weights\n", "\n", "print(\"\\nLoading BERT-large...\")\n", "bert = BertModel.from_pretrained(\"google-bert/bert-large-uncased\", torch_dtype=torch.float32)\n", "bert.eval()\n", "bert_w = extract_bert(bert)\n", "del bert; gc.collect(); torch.cuda.empty_cache()\n", "print(f\" {len(bert_w)} 2D matrices\")\n", "\n", "print(\"Loading DINOv2-large...\")\n", "dino = Dinov2Model.from_pretrained(\"facebook/dinov2-large\", torch_dtype=torch.float32)\n", "dino.eval()\n", "dino_w = extract_dino(dino)\n", "del dino; gc.collect(); torch.cuda.empty_cache()\n", "print(f\" {len(dino_w)} 2D matrices\")\n", "\n", "print(f\"VRAM: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "\n", "# Find matching names with same shapes\n", "common = {}\n", "for name in bert_w:\n", " if name in dino_w and bert_w[name].shape == dino_w[name].shape:\n", " common[name] = bert_w[name].shape\n", "\n", "print(f\"\\nCommon matrices (same name + shape): {len(common)}\")\n", "# Group by type\n", "type_counts = defaultdict(int)\n", "type_shapes = defaultdict(set)\n", "for name, shape in common.items():\n", " if '.attn.q.' in name: t = 'attn_q'\n", " elif '.attn.k.' in name: t = 'attn_k'\n", " elif '.attn.v.' in name: t = 'attn_v'\n", " elif '.attn.o.' in name: t = 'attn_o'\n", " elif '.mlp.up.' in name: t = 'mlp_up'\n", " elif '.mlp.down.' in name: t = 'mlp_down'\n", " else: t = 'other'\n", " type_counts[t] += 1\n", " type_shapes[t].add(str(shape))\n", "\n", "for t in sorted(type_counts):\n", " print(f\" {t:15s}: {type_counts[t]:3d} shapes={type_shapes[t]}\")\n", "\n", "# If no common names, try by layer structure matching\n", "if len(common) == 0:\n", " print(\"\\n No name-matched matrices. Trying structural matching...\")\n", " # Match by layer number + weight type + shape\n", " bert_by_struct = {}\n", " for name, W in bert_w.items():\n", " # Extract layer num and type\n", " for l in range(24):\n", " if f'layer.{l}.' in name:\n", " for wt in ['attn.q', 'attn.k', 'attn.v', 'attn.o', 'mlp.up', 'mlp.down']:\n", " if wt in name:\n", " bert_by_struct[(l, wt)] = (name, W)\n", " break\n", "\n", " dino_by_struct = {}\n", " for name, W in dino_w.items():\n", " for l in range(24):\n", " if f'layer.{l}.' in name:\n", " for wt in ['attn.q', 'attn.k', 'attn.v', 'attn.o', 'mlp.up', 'mlp.down']:\n", " if wt in name:\n", " dino_by_struct[(l, wt)] = (name, W)\n", " break\n", "\n", " # Find matching structures\n", " common_struct = {}\n", " for key in bert_by_struct:\n", " if key in dino_by_struct:\n", " bn, bw = bert_by_struct[key]\n", " dn, dw = dino_by_struct[key]\n", " if bw.shape == dw.shape:\n", " common_struct[key] = (bn, dn, bw.shape)\n", "\n", " print(f\" Structurally matched: {len(common_struct)}\")\n", " for t in ['attn.q', 'attn.k', 'attn.v', 'attn.o', 'mlp.up', 'mlp.down']:\n", " n = sum(1 for k in common_struct if k[1] == t)\n", " if n > 0:\n", " shapes = set(str(common_struct[k][2]) for k in common_struct if k[1] == t)\n", " print(f\" {t:15s}: {n:3d} shapes={shapes}\")\n", "\n", "# ── GPU Procrustes functions ──\n", "def procrustes_gpu(A, B):\n", " A_n = A / (torch.norm(A) + 1e-10)\n", " B_n = B / (torch.norm(B) + 1e-10)\n", " U, S, Vt = torch.linalg.svd(B_n.T @ A_n)\n", " R = U @ Vt\n", " B_aligned = B_n @ R\n", " residual = torch.norm(A_n - B_aligned).item()\n", " cosine = torch.dot(A_n.flatten(), B_aligned.flatten()).item()\n", " return residual, cosine\n", "\n", "def spectral_corr_gpu(A, B):\n", " Sa = torch.linalg.svdvals(A)\n", " Sb = torch.linalg.svdvals(B)\n", " n = min(len(Sa), len(Sb))\n", " if n < 3: return 0.0\n", " Sa = Sa[:n] / (Sa[0] + 1e-10); Sb = Sb[:n] / (Sb[0] + 1e-10)\n", " Sa_c = Sa - Sa.mean(); Sb_c = Sb - Sb.mean()\n", " return (torch.dot(Sa_c, Sb_c) / (torch.norm(Sa_c) * torch.norm(Sb_c) + 1e-10)).item()\n", "\n", "def raw_cosine_gpu(A, B):\n", " return (torch.dot(A.flatten(), B.flatten()) / (torch.norm(A) * torch.norm(B) + 1e-10)).item()\n", "\n", "# ── Run Procrustes ──\n", "print(f\"\\n{'='*70}\")\n", "print(\"PAIRWISE PROCRUSTES — BERT vs DINOv2\")\n", "print(f\"{'='*70}\")\n", "\n", "# Use whichever matching method worked\n", "if len(common) > 0:\n", " # Name-matched\n", " items = [(name, bert_w[name], dino_w[name]) for name in common]\n", "elif len(common_struct) > 0:\n", " items = [(f\"L{k[0]}.{k[1]}\", bert_by_struct[k][1], dino_by_struct[k][1])\n", " for k in sorted(common_struct)]\n", "else:\n", " print(\"No matching matrices found!\")\n", " items = []\n", "\n", "if items:\n", " t0 = time.time()\n", " all_res = []; all_cos = []; all_raw = []; all_spec = []\n", " type_results = defaultdict(lambda: {'res':[], 'cos':[], 'raw':[], 'spec':[]})\n", "\n", " for idx, (name, A, B) in enumerate(items):\n", " if (idx+1) % 10 == 0:\n", " print(f\" [{idx+1}/{len(items)}] \", end=\"\\r\")\n", "\n", " res, cos = procrustes_gpu(A, B)\n", " raw = raw_cosine_gpu(A, B)\n", " spec = spectral_corr_gpu(A, B)\n", "\n", " all_res.append(res); all_cos.append(cos)\n", " all_raw.append(raw); all_spec.append(spec)\n", "\n", " # Categorize\n", " if 'attn.q' in name or '.q.' in name: t = 'attn_q'\n", " elif 'attn.k' in name or '.k.' in name: t = 'attn_k'\n", " elif 'attn.v' in name or '.v.' in name: t = 'attn_v'\n", " elif 'attn.o' in name or '.o.' in name: t = 'attn_o'\n", " elif 'mlp.up' in name: t = 'mlp_up'\n", " elif 'mlp.down' in name: t = 'mlp_down'\n", " else: t = 'other'\n", " type_results[t]['res'].append(res)\n", " type_results[t]['cos'].append(cos)\n", " type_results[t]['raw'].append(raw)\n", " type_results[t]['spec'].append(spec)\n", "\n", " elapsed = time.time() - t0\n", " gain = np.mean(all_cos) - np.mean(all_raw)\n", "\n", " print(f\" {len(items)} matrices in {elapsed:.0f}s \")\n", " print(f\"\\n OVERALL:\")\n", " print(f\" Procrustes residual: {np.mean(all_res):.4f} ±{np.std(all_res):.4f}\")\n", " print(f\" Procrustes cosine: {np.mean(all_cos):.4f} ±{np.std(all_cos):.4f}\")\n", " print(f\" Raw cosine (no rot): {np.mean(all_raw):.4f} ±{np.std(all_raw):.4f}\")\n", " print(f\" Spectral corr: {np.mean(all_spec):.4f} ±{np.std(all_spec):.4f}\")\n", " print(f\" Rotation gain: {gain:+.4f}\")\n", "\n", " print(f\"\\n BY WEIGHT TYPE:\")\n", " print(f\" {'Type':15s} {'N':>3s} {'Residual':>10s} {'ProcrCos':>10s} {'RawCos':>10s} {'Spectral':>10s}\")\n", " for t in ['attn_q', 'attn_k', 'attn_v', 'attn_o', 'mlp_up', 'mlp_down', 'other']:\n", " r = type_results[t]\n", " if r['res']:\n", " print(f\" {t:15s} {len(r['res']):3d} {np.mean(r['res']):10.4f} \"\n", " f\"{np.mean(r['cos']):10.4f} {np.mean(r['raw']):10.4f} \"\n", " f\"{np.mean(r['spec']):10.4f}\")\n", "\n", " # ── Per-layer depth profile ──\n", " print(f\"\\n{'='*70}\")\n", " print(\"DEPTH PROFILE — BERT vs DINOv2\")\n", " print(f\"{'='*70}\")\n", "\n", " layer_results = defaultdict(lambda: {'res':[], 'cos':[], 'raw':[], 'spec':[]})\n", " for name, A, B in items:\n", " for l in range(24):\n", " if f'L{l}.' in name or f'layer.{l}.' in name or f'.{l}.' in name:\n", " res, cos = procrustes_gpu(A, B)\n", " raw = raw_cosine_gpu(A, B)\n", " spec = spectral_corr_gpu(A, B)\n", " layer_results[l]['res'].append(res)\n", " layer_results[l]['cos'].append(cos)\n", " layer_results[l]['raw'].append(raw)\n", " layer_results[l]['spec'].append(spec)\n", " break\n", "\n", " print(f\" {'Layer':>6s} {'N':>3s} {'Residual':>10s} {'ProcrCos':>10s} {'RawCos':>10s} {'Spectral':>10s}\")\n", " for l in range(24):\n", " r = layer_results[l]\n", " if r['res']:\n", " print(f\" L{l:2d} {len(r['res']):3d} {np.mean(r['res']):10.4f} \"\n", " f\"{np.mean(r['cos']):10.4f} {np.mean(r['raw']):10.4f} \"\n", " f\"{np.mean(r['spec']):10.4f}\")\n", "\n", " if layer_results:\n", " early = [np.mean(layer_results[l]['cos']) for l in range(6) if layer_results[l]['cos']]\n", " late = [np.mean(layer_results[l]['cos']) for l in range(18,24) if layer_results[l]['cos']]\n", " if early and late:\n", " print(f\"\\n Early layers (0-5): mean Procrustes cos = {np.mean(early):.4f}\")\n", " print(f\" Late layers (18-23): mean Procrustes cos = {np.mean(late):.4f}\")\n", " if np.mean(early) > np.mean(late):\n", " print(f\" → Early layers more aligned (shared low-level structure)\")\n", " else:\n", " print(f\" → Late layers more aligned (shared high-level structure)\")\n", "\n", " # ── QK Procrustes per layer ──\n", " print(f\"\\n{'='*70}\")\n", " print(\"Q vs K ALIGNMENT — per layer\")\n", " print(f\"{'='*70}\")\n", "\n", " print(f\" {'Layer':>6s} {'Q cos':>8s} {'K cos':>8s} {'V cos':>8s} {'O cos':>8s}\")\n", " for l in range(24):\n", " row = f\" L{l:2d} \"\n", " for wt in ['attn.q', 'attn.k', 'attn.v', 'attn.o']:\n", " found = False\n", " for name, A, B in items:\n", " if f'layer.{l}.' in name and f'.{wt}.' in name:\n", " _, cos = procrustes_gpu(A, B)\n", " row += f\" {cos:8.4f}\"\n", " found = True\n", " break\n", " if not found:\n", " row += f\" -\"\n", " print(row)\n", "\n", "# ── Summary ──\n", "print(f\"\\n{'='*70}\")\n", "print(\"SUMMARY — BERT-large vs DINOv2-large\")\n", "print(f\"{'='*70}\")\n", "print(f\"Architecture: identical (1024-d, 24L, 16H)\")\n", "print(f\"Training: BERT=Masked LM (text), DINOv2=Self-supervised (vision)\")\n", "print(f\"Matrices compared: {len(items)}\")\n", "if items:\n", " print(f\"\\nProcrustes cosine: {np.mean(all_cos):.4f} (after optimal rotation)\")\n", " print(f\"Raw cosine: {np.mean(all_raw):.4f} (no rotation)\")\n", " print(f\"Rotation gain: {gain:+.4f}\")\n", " print(f\"Spectral corr: {np.mean(all_spec):.4f}\")\n", "\n", "print(f\"\\nReference (same-architecture, same-task — VAEs):\")\n", "print(f\" SD1.5 vs Flux.2: Procrustes cos=0.757, raw=0.000, spectral=0.979\")\n", "print(f\" SDXL vs Flux.1: Procrustes cos=0.675, raw=0.024, spectral=0.939\")\n", "print(f\"\\nVRAM: {torch.cuda.memory_allocated()/1e9:.1f} GB\")\n", "print(\"Done.\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "b8f9d71f997e41258a857299413d538a", "ce1f79e7ef0f4008a7504d8ab1eb1b5b", "670f65049d474883b18e6426403746ff", "bb50237eaeb04e14852e55ce7b2c1ba9", "310c2582a6224a9e914ae05560f4be0c", "2853ff9172464668b72fa9b2c4eb62d1", "3c7225dfc4c444109df8bd0336a85067", "8617e98aeff640838110086463f91589", "69d8afebb4ea41dd88814cc8875bbe7d", "029b05e91ef0491cbeecfe5c3cee206a", "3c0e225ac5e844129e24029c004399d4", "6a282d199d864902a2446c20216d46a1", "8c49ce6b4d6440939c0b7531ecabaff4", "c19b07524b8c45b8a45f28e6db11dafb", "52e972926ebf47c38cebea0fdae12ec7", "cb82f80fc79a4f8dbd51dd17a43ba6a5", "c4592cd2edfc4d78ad34ea7dc935e2d0", "be47f7b779354d7ab149658ee516526d", "8f231f0e2ee54264a3b9c7533edd6a59", "3e7c97c4e88a40308d94a6efe1139bf7", "742ba09db85d4bb78e669244984697ae", "7d851fb7bf7a4e1db584e12c5e53fda3" ] }, "id": "3xhfXao4brtv", "outputId": "1fad9903-944a-4865-da6a-06dd74f31912" }, "execution_count": 3, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "GPU: NVIDIA RTX PRO 6000 Blackwell Server Edition\n", "======================================================================\n", "PROCRUSTES: BERT-large vs DINOv2-large\n", "Both 1024-d, 24 layers, 16 heads\n", "Language (MLM) vs Vision (self-supervised)\n", "======================================================================\n", "\n", "Loading BERT-large...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "Loading weights: 0%| | 0/391 [00:00