{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "gpuType": "T4"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU",
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "df0fb89c4f9848d8b6bfbef3d4813321": {
          "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_0f3ca3da94d84803855d6cc8ef39777a",
              "IPY_MODEL_df9dee1f6d7b40c086abc5888217d9f3",
              "IPY_MODEL_089c967f36554b7ebb163e2b5cdb49e2"
            ],
            "layout": "IPY_MODEL_dad999ec7ef1496d9a53ec309ba5216f"
          }
        },
        "0f3ca3da94d84803855d6cc8ef39777a": {
          "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_93f0cf53f013412c9fb1468b995328c7",
            "placeholder": "​",
            "style": "IPY_MODEL_c203164619ba4cfbb388366975de1cec",
            "value": "preprocessor_config.json: 100%"
          }
        },
        "df9dee1f6d7b40c086abc5888217d9f3": {
          "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_436f79f5ef7a4c4cb1b20975aa341b0d",
            "max": 325,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_f7b456da1e2e424b8d686d4894637132",
            "value": 325
          }
        },
        "089c967f36554b7ebb163e2b5cdb49e2": {
          "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_124616b71c764c7d9f8479b4ffacaf1b",
            "placeholder": "​",
            "style": "IPY_MODEL_746bc737ac414d57a3fab94aa22a5b7c",
            "value": " 325/325 [00:00&lt;00:00, 10.2kB/s]"
          }
        },
        "dad999ec7ef1496d9a53ec309ba5216f": {
          "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
          }
        },
        "93f0cf53f013412c9fb1468b995328c7": {
          "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
          }
        },
        "c203164619ba4cfbb388366975de1cec": {
          "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": ""
          }
        },
        "436f79f5ef7a4c4cb1b20975aa341b0d": {
          "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
          }
        },
        "f7b456da1e2e424b8d686d4894637132": {
          "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": ""
          }
        },
        "124616b71c764c7d9f8479b4ffacaf1b": {
          "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
          }
        },
        "746bc737ac414d57a3fab94aa22a5b7c": {
          "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": ""
          }
        },
        "4807772c13d04407bf51c8726f98066b": {
          "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_56b10496d8e842d586e6a1906700396a",
              "IPY_MODEL_c73d9d94b7d541138a081e5feeec5dcc",
              "IPY_MODEL_1eab539b2ada48ce978081479f0942be"
            ],
            "layout": "IPY_MODEL_e5b6f393202b4dae823a6073c829f680"
          }
        },
        "56b10496d8e842d586e6a1906700396a": {
          "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_52e087b36f2e40e09a30af9b8b4924a1",
            "placeholder": "​",
            "style": "IPY_MODEL_84e6ea4460cc45d191a68a80a31f8ba6",
            "value": "config.json: "
          }
        },
        "c73d9d94b7d541138a081e5feeec5dcc": {
          "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_e7bf444d03614d4c9b26f11aee448532",
            "max": 1,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_53f7fae0cbab45e5b79e3c29a5ba2804",
            "value": 1
          }
        },
        "1eab539b2ada48ce978081479f0942be": {
          "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_2a1b56ef915749efa445eb8489f1e404",
            "placeholder": "​",
            "style": "IPY_MODEL_cd571a6bfb8345479d4a9ab02707e76a",
            "value": " 6.75k/? [00:00&lt;00:00, 170kB/s]"
          }
        },
        "e5b6f393202b4dae823a6073c829f680": {
          "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
          }
        },
        "52e087b36f2e40e09a30af9b8b4924a1": {
          "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
          }
        },
        "84e6ea4460cc45d191a68a80a31f8ba6": {
          "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": ""
          }
        },
        "e7bf444d03614d4c9b26f11aee448532": {
          "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"
          }
        },
        "53f7fae0cbab45e5b79e3c29a5ba2804": {
          "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": ""
          }
        },
        "2a1b56ef915749efa445eb8489f1e404": {
          "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
          }
        },
        "cd571a6bfb8345479d4a9ab02707e76a": {
          "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": ""
          }
        },
        "05abf1700e904eed9a5a5705370682c5": {
          "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_e6f5ba576f464249a6881395a6e2f231",
              "IPY_MODEL_c7a735762c354f4bb7d6079ee1116c7f",
              "IPY_MODEL_02caba808c3549dda08737dbccb2a4f0"
            ],
            "layout": "IPY_MODEL_f2ad7d65b988424f8ab6a9ca0e73e3ed"
          }
        },
        "e6f5ba576f464249a6881395a6e2f231": {
          "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_ce7c8d424c454e0e9f2f68aa8bf246ae",
            "placeholder": "​",
            "style": "IPY_MODEL_0872cd612f0146fdbaceee17d569a290",
            "value": "model.safetensors: 100%"
          }
        },
        "c7a735762c354f4bb7d6079ee1116c7f": {
          "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_f82478f2215b41a69d23e2097a82583d",
            "max": 343586952,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_b483c3b200a8494ab13f17ce0b5a691a",
            "value": 343586952
          }
        },
        "02caba808c3549dda08737dbccb2a4f0": {
          "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_137b6e65ab1345709e7be202cba72a1c",
            "placeholder": "​",
            "style": "IPY_MODEL_e84851e2685643a49b2b24b005a22ef7",
            "value": " 344M/344M [00:04&lt;00:00, 1.73GB/s]"
          }
        },
        "f2ad7d65b988424f8ab6a9ca0e73e3ed": {
          "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
          }
        },
        "ce7c8d424c454e0e9f2f68aa8bf246ae": {
          "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
          }
        },
        "0872cd612f0146fdbaceee17d569a290": {
          "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": ""
          }
        },
        "f82478f2215b41a69d23e2097a82583d": {
          "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
          }
        },
        "b483c3b200a8494ab13f17ce0b5a691a": {
          "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": ""
          }
        },
        "137b6e65ab1345709e7be202cba72a1c": {
          "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
          }
        },
        "e84851e2685643a49b2b24b005a22ef7": {
          "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": ""
          }
        },
        "108b83898feb4c1babb42f1e6210b154": {
          "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_ab6ae9440c9e41c0acb1035570e4415a",
              "IPY_MODEL_9751e6c0a3e94b44ab4793295b9c3606",
              "IPY_MODEL_6fe3d494b4e1452cb0dc97c36fd35fa1"
            ],
            "layout": "IPY_MODEL_eb9bedb5809244d08c1d649bcd837ee7"
          }
        },
        "ab6ae9440c9e41c0acb1035570e4415a": {
          "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_f80d7fb427d9495ba4dc488011065429",
            "placeholder": "​",
            "style": "IPY_MODEL_1d0f20d6a0744c3eadb20c8343d09786",
            "value": "Loading weights: 100%"
          }
        },
        "9751e6c0a3e94b44ab4793295b9c3606": {
          "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_a424359a23e741e494dee465dd702317",
            "max": 200,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_8262dc6500ac4b90b3f4baaaf270c2bd",
            "value": 200
          }
        },
        "6fe3d494b4e1452cb0dc97c36fd35fa1": {
          "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_06173515d675425e9f33a09f257b08ff",
            "placeholder": "​",
            "style": "IPY_MODEL_7e7f973890db4306849d40318b82b6a8",
            "value": " 200/200 [00:00&lt;00:00, 418.23it/s, Materializing param=vit.layernorm.weight]"
          }
        },
        "eb9bedb5809244d08c1d649bcd837ee7": {
          "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
          }
        },
        "f80d7fb427d9495ba4dc488011065429": {
          "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
          }
        },
        "1d0f20d6a0744c3eadb20c8343d09786": {
          "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": ""
          }
        },
        "a424359a23e741e494dee465dd702317": {
          "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
          }
        },
        "8262dc6500ac4b90b3f4baaaf270c2bd": {
          "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": ""
          }
        },
        "06173515d675425e9f33a09f257b08ff": {
          "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
          }
        },
        "7e7f973890db4306849d40318b82b6a8": {
          "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": ""
          }
        },
        "8131b7f2af1340b4b7ecf8144a8d293d": {
          "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_843d968c451d4450b73a66576e3df16b",
              "IPY_MODEL_1b289c00e43e4c55ae61c785b17e4c8b",
              "IPY_MODEL_e14c36d18f4f4dfc9ab4ced2f36d01c9"
            ],
            "layout": "IPY_MODEL_a66d9560db0a431c821cd1b7b590a000"
          }
        },
        "843d968c451d4450b73a66576e3df16b": {
          "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_d69f72e87cb44739a0f5d228d842d23b",
            "placeholder": "​",
            "style": "IPY_MODEL_b6412930ed9744d88d44f6a0e0efc002",
            "value": "100%"
          }
        },
        "1b289c00e43e4c55ae61c785b17e4c8b": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_5b1ee7ed422b42c1a0b466c3bd20c240",
            "max": 213,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_e06b0685c7a141aa9e893ebabc2e5279",
            "value": 213
          }
        },
        "e14c36d18f4f4dfc9ab4ced2f36d01c9": {
          "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_958b97e28db0468c91d39dec0f8e7f4a",
            "placeholder": "​",
            "style": "IPY_MODEL_be1db19cbf094accaa4b8abbe01981bc",
            "value": " 213/213 [01:30&lt;00:00,  3.09it/s]"
          }
        },
        "a66d9560db0a431c821cd1b7b590a000": {
          "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": "hidden",
            "width": null
          }
        },
        "d69f72e87cb44739a0f5d228d842d23b": {
          "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
          }
        },
        "b6412930ed9744d88d44f6a0e0efc002": {
          "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": ""
          }
        },
        "5b1ee7ed422b42c1a0b466c3bd20c240": {
          "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
          }
        },
        "e06b0685c7a141aa9e893ebabc2e5279": {
          "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": ""
          }
        },
        "958b97e28db0468c91d39dec0f8e7f4a": {
          "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
          }
        },
        "be1db19cbf094accaa4b8abbe01981bc": {
          "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": ""
          }
        },
        "9a8c329e25134f24b3724dbe6e50d0bc": {
          "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_269b22d6ccab46d6ac62d41f637ab7e5",
              "IPY_MODEL_2d29c4aad0754d25a84f25db094b7be2",
              "IPY_MODEL_9ef45a73fa034b6099dee8cc21e65faa"
            ],
            "layout": "IPY_MODEL_4208ef81a6014eb6a1a4a5fbdb1f28e3"
          }
        },
        "269b22d6ccab46d6ac62d41f637ab7e5": {
          "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_8a464e59449642d8b0a829b1b5f1e92e",
            "placeholder": "​",
            "style": "IPY_MODEL_bab152e64fd5437897aeeea4da321848",
            "value": "100%"
          }
        },
        "2d29c4aad0754d25a84f25db094b7be2": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_3a1506cece6d40eebae4afb16833300b",
            "max": 46,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_e04abc87d4a243d69819a3cc82754c4e",
            "value": 46
          }
        },
        "9ef45a73fa034b6099dee8cc21e65faa": {
          "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_beea469fc595495bbd81c4f254ae10eb",
            "placeholder": "​",
            "style": "IPY_MODEL_d56cd23820a54de8891f872d7e4e4f5d",
            "value": " 46/46 [00:12&lt;00:00,  3.56it/s]"
          }
        },
        "4208ef81a6014eb6a1a4a5fbdb1f28e3": {
          "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": "hidden",
            "width": null
          }
        },
        "8a464e59449642d8b0a829b1b5f1e92e": {
          "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
          }
        },
        "bab152e64fd5437897aeeea4da321848": {
          "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": ""
          }
        },
        "3a1506cece6d40eebae4afb16833300b": {
          "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
          }
        },
        "e04abc87d4a243d69819a3cc82754c4e": {
          "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": ""
          }
        },
        "beea469fc595495bbd81c4f254ae10eb": {
          "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
          }
        },
        "d56cd23820a54de8891f872d7e4e4f5d": {
          "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": ""
          }
        },
        "e57da70ee29340b3880358a3996dd963": {
          "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_2e6c3badb08f43bc9d4ed5df7346283c",
              "IPY_MODEL_046f93fe252e449894ef20d418b7c4d1",
              "IPY_MODEL_2c3518f8fad345b89e3652d3e7ca098f"
            ],
            "layout": "IPY_MODEL_295356a619024c8d8c773a4a4e9c63db"
          }
        },
        "2e6c3badb08f43bc9d4ed5df7346283c": {
          "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_b585f41c7d0c414e9e4c80b7f8b881f0",
            "placeholder": "​",
            "style": "IPY_MODEL_aa1d59f5e38b4167ada7312eb3871037",
            "value": "100%"
          }
        },
        "046f93fe252e449894ef20d418b7c4d1": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_370bb3c15e7247a7a56ff281bb15d8ab",
            "max": 122,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_e8012326dae1430cb6e24fea56b2d264",
            "value": 122
          }
        },
        "2c3518f8fad345b89e3652d3e7ca098f": {
          "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_b70c9b997e224920bae2cce2abe3f546",
            "placeholder": "​",
            "style": "IPY_MODEL_3c0b361e5f6a417a87e68eea8fec35cc",
            "value": " 122/122 [00:41&lt;00:00,  3.18it/s]"
          }
        },
        "295356a619024c8d8c773a4a4e9c63db": {
          "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": "hidden",
            "width": null
          }
        },
        "b585f41c7d0c414e9e4c80b7f8b881f0": {
          "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
          }
        },
        "aa1d59f5e38b4167ada7312eb3871037": {
          "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": ""
          }
        },
        "370bb3c15e7247a7a56ff281bb15d8ab": {
          "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
          }
        },
        "e8012326dae1430cb6e24fea56b2d264": {
          "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": ""
          }
        },
        "b70c9b997e224920bae2cce2abe3f546": {
          "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
          }
        },
        "3c0b361e5f6a417a87e68eea8fec35cc": {
          "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": ""
          }
        },
        "7dcab62aea8643279a8b647495cc7986": {
          "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_67b9ba80a1e84321bdd90835bbb3fa4e",
              "IPY_MODEL_a54af15246164c7fb9882a18e55b7ec6",
              "IPY_MODEL_a24f6bcbf82f47bab6a1f7f81b281a5f"
            ],
            "layout": "IPY_MODEL_73f6b6cdde2146e79fb44be6da19ce51"
          }
        },
        "67b9ba80a1e84321bdd90835bbb3fa4e": {
          "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_cb569392d10f4235b6769885d9700825",
            "placeholder": "​",
            "style": "IPY_MODEL_af555b654f9a4132aba10433216cfe8a",
            "value": "100%"
          }
        },
        "a54af15246164c7fb9882a18e55b7ec6": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_4c8b71a40bda4c54a72c9d1aa8f2a6d7",
            "max": 213,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_763bf4ed3f774fbba330b16295bb482e",
            "value": 213
          }
        },
        "a24f6bcbf82f47bab6a1f7f81b281a5f": {
          "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_9bf3fbbce5aa420fa3f8ea2a18a54ac4",
            "placeholder": "​",
            "style": "IPY_MODEL_8084e60b6b874b829afb9eac22eff9a9",
            "value": " 213/213 [01:35&lt;00:00,  2.33it/s]"
          }
        },
        "73f6b6cdde2146e79fb44be6da19ce51": {
          "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": "hidden",
            "width": null
          }
        },
        "cb569392d10f4235b6769885d9700825": {
          "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
          }
        },
        "af555b654f9a4132aba10433216cfe8a": {
          "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": ""
          }
        },
        "4c8b71a40bda4c54a72c9d1aa8f2a6d7": {
          "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
          }
        },
        "763bf4ed3f774fbba330b16295bb482e": {
          "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": ""
          }
        },
        "9bf3fbbce5aa420fa3f8ea2a18a54ac4": {
          "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
          }
        },
        "8084e60b6b874b829afb9eac22eff9a9": {
          "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": ""
          }
        },
        "1cfb9a685b8a491793a872cf1dc4861e": {
          "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_9e76c7da2adf4bcebce9dde2984fa579",
              "IPY_MODEL_7a2de14dd79d4a33869c4ca1c70c6049",
              "IPY_MODEL_2c034573baef492cb3ff990d0ed96bc8"
            ],
            "layout": "IPY_MODEL_2307e4581c60457fb788a4f7aefc4ca5"
          }
        },
        "9e76c7da2adf4bcebce9dde2984fa579": {
          "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_892183a96dde4cf98e1452db3f27bb5c",
            "placeholder": "​",
            "style": "IPY_MODEL_ed3fb8f280bd4a5dae5246545ba24ec6",
            "value": "100%"
          }
        },
        "7a2de14dd79d4a33869c4ca1c70c6049": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_670f016ff1244f08999380357cdf5aff",
            "max": 46,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_f3ceb9a5820b413dbc4578fbafcdeead",
            "value": 46
          }
        },
        "2c034573baef492cb3ff990d0ed96bc8": {
          "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_8eee145858504c919fa4d57270c3dfde",
            "placeholder": "​",
            "style": "IPY_MODEL_bd8cd8f3a6164cf2878ebcc15d515356",
            "value": " 46/46 [00:10&lt;00:00,  4.89it/s]"
          }
        },
        "2307e4581c60457fb788a4f7aefc4ca5": {
          "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": "hidden",
            "width": null
          }
        },
        "892183a96dde4cf98e1452db3f27bb5c": {
          "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
          }
        },
        "ed3fb8f280bd4a5dae5246545ba24ec6": {
          "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": ""
          }
        },
        "670f016ff1244f08999380357cdf5aff": {
          "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
          }
        },
        "f3ceb9a5820b413dbc4578fbafcdeead": {
          "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": ""
          }
        },
        "8eee145858504c919fa4d57270c3dfde": {
          "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
          }
        },
        "bd8cd8f3a6164cf2878ebcc15d515356": {
          "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": ""
          }
        },
        "8de5817d2b5e4a3c8480a03fd265cdc7": {
          "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_171db4ab574b462ba7052063800e848d",
              "IPY_MODEL_8eea2650eb134102a54e2503b492ba5f",
              "IPY_MODEL_6bd03afd39b148cdbef4a7874f147c87"
            ],
            "layout": "IPY_MODEL_908f8bededab4dad918817f32751d0a0"
          }
        },
        "171db4ab574b462ba7052063800e848d": {
          "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_6ce47b3a03ae4eb0a25714786d8568fa",
            "placeholder": "​",
            "style": "IPY_MODEL_61b0e9edc9e4460ea58b2d8ca6b55f1c",
            "value": "100%"
          }
        },
        "8eea2650eb134102a54e2503b492ba5f": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_a77588b2f6f24b8180dfc279ba8e5b70",
            "max": 213,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_b14b22ade74a465f9f3a582afaea41c9",
            "value": 213
          }
        },
        "6bd03afd39b148cdbef4a7874f147c87": {
          "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_c31b68bd57d44ecabf54390a52a230cc",
            "placeholder": "​",
            "style": "IPY_MODEL_745148a3eeed4d3ebed5d41a521aae98",
            "value": " 213/213 [01:24&lt;00:00,  3.08it/s]"
          }
        },
        "908f8bededab4dad918817f32751d0a0": {
          "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": "hidden",
            "width": null
          }
        },
        "6ce47b3a03ae4eb0a25714786d8568fa": {
          "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
          }
        },
        "61b0e9edc9e4460ea58b2d8ca6b55f1c": {
          "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": ""
          }
        },
        "a77588b2f6f24b8180dfc279ba8e5b70": {
          "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
          }
        },
        "b14b22ade74a465f9f3a582afaea41c9": {
          "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": ""
          }
        },
        "c31b68bd57d44ecabf54390a52a230cc": {
          "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
          }
        },
        "745148a3eeed4d3ebed5d41a521aae98": {
          "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": ""
          }
        },
        "06c4c9e0e7144a33b034c3e5374960c8": {
          "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_d110a65aad9f475ba52bfc79d3132847",
              "IPY_MODEL_89c2c6fc1ad54c56b6077e7abf5eaff3",
              "IPY_MODEL_df7e3a32dfac4b9e802cc8249b33008b"
            ],
            "layout": "IPY_MODEL_3b6dc4907a334418a5ae26a66a81bccb"
          }
        },
        "d110a65aad9f475ba52bfc79d3132847": {
          "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_8eeafab0938e4fc1ba26ced7707bbea8",
            "placeholder": "​",
            "style": "IPY_MODEL_3fb16abc94ef47c28f23bd6b6080405e",
            "value": "100%"
          }
        },
        "89c2c6fc1ad54c56b6077e7abf5eaff3": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_07ac215fa73443cba8bc0d64a625e72d",
            "max": 46,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_c196a960cd00477280cecc7ad75d3aae",
            "value": 46
          }
        },
        "df7e3a32dfac4b9e802cc8249b33008b": {
          "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_73bfc643e0014f729b68be7c31b7267e",
            "placeholder": "​",
            "style": "IPY_MODEL_6314b00495b94449ad66b3b8e3b4a617",
            "value": " 46/46 [00:11&lt;00:00,  5.05it/s]"
          }
        },
        "3b6dc4907a334418a5ae26a66a81bccb": {
          "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": "hidden",
            "width": null
          }
        },
        "8eeafab0938e4fc1ba26ced7707bbea8": {
          "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
          }
        },
        "3fb16abc94ef47c28f23bd6b6080405e": {
          "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": ""
          }
        },
        "07ac215fa73443cba8bc0d64a625e72d": {
          "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
          }
        },
        "c196a960cd00477280cecc7ad75d3aae": {
          "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": ""
          }
        },
        "73bfc643e0014f729b68be7c31b7267e": {
          "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
          }
        },
        "6314b00495b94449ad66b3b8e3b4a617": {
          "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": ""
          }
        },
        "139aa9d1ed8947ad8df4aeaa7db0d192": {
          "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_da94f2f0242e44c38b3b131bf4c52f08",
              "IPY_MODEL_1659154cdf5745c6bf01dc987b9010cb",
              "IPY_MODEL_dad39e84e02e4aef97afca962259b4ec"
            ],
            "layout": "IPY_MODEL_e5d45acda7764585bc7324caa504432d"
          }
        },
        "da94f2f0242e44c38b3b131bf4c52f08": {
          "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_905ab12d227347df9f772759471b378b",
            "placeholder": "​",
            "style": "IPY_MODEL_62d5d3a296ae4e219a81c82222b7d269",
            "value": "100%"
          }
        },
        "1659154cdf5745c6bf01dc987b9010cb": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_76fabcacdb034c11b767cc7d15346238",
            "max": 213,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_05e9741a33344cf393d7effd178120c9",
            "value": 213
          }
        },
        "dad39e84e02e4aef97afca962259b4ec": {
          "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_90938f8e0f7a4544a54b28433440cc4a",
            "placeholder": "​",
            "style": "IPY_MODEL_32b6bdec3e284e0cb9a35374a25c8def",
            "value": " 213/213 [01:23&lt;00:00,  2.31it/s]"
          }
        },
        "e5d45acda7764585bc7324caa504432d": {
          "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": "hidden",
            "width": null
          }
        },
        "905ab12d227347df9f772759471b378b": {
          "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
          }
        },
        "62d5d3a296ae4e219a81c82222b7d269": {
          "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": ""
          }
        },
        "76fabcacdb034c11b767cc7d15346238": {
          "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
          }
        },
        "05e9741a33344cf393d7effd178120c9": {
          "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": ""
          }
        },
        "90938f8e0f7a4544a54b28433440cc4a": {
          "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
          }
        },
        "32b6bdec3e284e0cb9a35374a25c8def": {
          "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": ""
          }
        },
        "26d21e13ed894149bfa191475c4d23d2": {
          "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_7809444a5bcb4010a0738d1456cb737c",
              "IPY_MODEL_bc681125d445435ab993f4cd7ef2613b",
              "IPY_MODEL_e4b898e9c8f5438faef2190e377fead5"
            ],
            "layout": "IPY_MODEL_c6d5d9ae44874b78af831de26f3a4335"
          }
        },
        "7809444a5bcb4010a0738d1456cb737c": {
          "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_ca2660877ed843098a01ca2eb096837e",
            "placeholder": "​",
            "style": "IPY_MODEL_833d4bf08a414cfcbf05063bc4a27d61",
            "value": "100%"
          }
        },
        "bc681125d445435ab993f4cd7ef2613b": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_9ebcc0e596354bb486a5858dff3b70c6",
            "max": 46,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_632fa263884144f5a32ee1721d163772",
            "value": 46
          }
        },
        "e4b898e9c8f5438faef2190e377fead5": {
          "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_8536ae13144f4e668e718e66c9820265",
            "placeholder": "​",
            "style": "IPY_MODEL_c5cfcd62d4934e3cbc3728adf03e55b7",
            "value": " 46/46 [00:10&lt;00:00,  4.02it/s]"
          }
        },
        "c6d5d9ae44874b78af831de26f3a4335": {
          "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": "hidden",
            "width": null
          }
        },
        "ca2660877ed843098a01ca2eb096837e": {
          "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
          }
        },
        "833d4bf08a414cfcbf05063bc4a27d61": {
          "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": ""
          }
        },
        "9ebcc0e596354bb486a5858dff3b70c6": {
          "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
          }
        },
        "632fa263884144f5a32ee1721d163772": {
          "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": ""
          }
        },
        "8536ae13144f4e668e718e66c9820265": {
          "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
          }
        },
        "c5cfcd62d4934e3cbc3728adf03e55b7": {
          "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": ""
          }
        },
        "817c3cd642994f98af2a53ce8f6fd5f4": {
          "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_9d2c9ebb98714ceb921af005dd0af9ad",
              "IPY_MODEL_95b8ba438a284d3e91b1001f9c47ca08",
              "IPY_MODEL_6035f01339ec456fb4ea79f542da8146"
            ],
            "layout": "IPY_MODEL_deb80ee1ec444b4694ba2f39bdcda711"
          }
        },
        "9d2c9ebb98714ceb921af005dd0af9ad": {
          "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_e5bb2b6d16c84c399fec4218de6b0458",
            "placeholder": "​",
            "style": "IPY_MODEL_5a842e1b07584945ba798ca5cf8e6a58",
            "value": "100%"
          }
        },
        "95b8ba438a284d3e91b1001f9c47ca08": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_07f91e4fbb2c408186d3ee846cd2eb48",
            "max": 46,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_1e305861ad3649568947a906372d8394",
            "value": 46
          }
        },
        "6035f01339ec456fb4ea79f542da8146": {
          "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_13e00d1e3a33458a9ce06f2c511ebe8a",
            "placeholder": "​",
            "style": "IPY_MODEL_ec3b389fb4c548958ed7c235e8133f89",
            "value": " 46/46 [00:10&lt;00:00,  4.94it/s]"
          }
        },
        "deb80ee1ec444b4694ba2f39bdcda711": {
          "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": "hidden",
            "width": null
          }
        },
        "e5bb2b6d16c84c399fec4218de6b0458": {
          "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
          }
        },
        "5a842e1b07584945ba798ca5cf8e6a58": {
          "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": ""
          }
        },
        "07f91e4fbb2c408186d3ee846cd2eb48": {
          "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
          }
        },
        "1e305861ad3649568947a906372d8394": {
          "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": ""
          }
        },
        "13e00d1e3a33458a9ce06f2c511ebe8a": {
          "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
          }
        },
        "ec3b389fb4c548958ed7c235e8133f89": {
          "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": ""
          }
        },
        "824fc19c2da64fa38c658f6f78fde028": {
          "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_eb498ba7350a47cdb82bdebd5ca2c0e8",
              "IPY_MODEL_ef76ea860195445aa04253e529fbb9b5",
              "IPY_MODEL_f80c416288484ada8a389275f674d41d"
            ],
            "layout": "IPY_MODEL_79cb46023d814f2fb9226e447dcdd23f"
          }
        },
        "eb498ba7350a47cdb82bdebd5ca2c0e8": {
          "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_183553a256b14ee1984f9aa51980bf35",
            "placeholder": "​",
            "style": "IPY_MODEL_d5630e232b974e2eb0d6a9175f894fd8",
            "value": "100%"
          }
        },
        "ef76ea860195445aa04253e529fbb9b5": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_39c132eed80344d9816d7e70dcae6398",
            "max": 122,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_5f7cef270a2f407e9fe2a51e58889a85",
            "value": 122
          }
        },
        "f80c416288484ada8a389275f674d41d": {
          "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_4b5c8e7e625443078ec3bb2982acfcb7",
            "placeholder": "​",
            "style": "IPY_MODEL_75125a538bb446228b128ca5492de616",
            "value": " 122/122 [00:41&lt;00:00,  3.36it/s]"
          }
        },
        "79cb46023d814f2fb9226e447dcdd23f": {
          "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": "hidden",
            "width": null
          }
        },
        "183553a256b14ee1984f9aa51980bf35": {
          "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
          }
        },
        "d5630e232b974e2eb0d6a9175f894fd8": {
          "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": ""
          }
        },
        "39c132eed80344d9816d7e70dcae6398": {
          "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
          }
        },
        "5f7cef270a2f407e9fe2a51e58889a85": {
          "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": ""
          }
        },
        "4b5c8e7e625443078ec3bb2982acfcb7": {
          "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
          }
        },
        "75125a538bb446228b128ca5492de616": {
          "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": ""
          }
        },
        "7cbd453cc72746ce89698a3a0357a46f": {
          "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_d5ddcc8458494654952ea3a90d246d4a",
              "IPY_MODEL_a44f3ce55d6545e6bb1ea78e55559adf",
              "IPY_MODEL_30642eaafb3f408e88ef02833b7e6081"
            ],
            "layout": "IPY_MODEL_df00d59a8ba14cb1bc056e94f1c29483"
          }
        },
        "d5ddcc8458494654952ea3a90d246d4a": {
          "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_f9f8266f1ce445f9af967df8a92eeb9c",
            "placeholder": "​",
            "style": "IPY_MODEL_e496644905dd416687bcca3d336f9d62",
            "value": "100%"
          }
        },
        "a44f3ce55d6545e6bb1ea78e55559adf": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_1f23cc9e8bdc427dac55d0ebc02ec4a5",
            "max": 46,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_a409dde8f01a480a80fb35bb14eac3a5",
            "value": 46
          }
        },
        "30642eaafb3f408e88ef02833b7e6081": {
          "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_a908bb0317d34019abb65573d37862f7",
            "placeholder": "​",
            "style": "IPY_MODEL_7ecd633873cc4962b44dc2c80bc55946",
            "value": " 46/46 [00:11&lt;00:00,  4.18it/s]"
          }
        },
        "df00d59a8ba14cb1bc056e94f1c29483": {
          "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": "hidden",
            "width": null
          }
        },
        "f9f8266f1ce445f9af967df8a92eeb9c": {
          "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
          }
        },
        "e496644905dd416687bcca3d336f9d62": {
          "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": ""
          }
        },
        "1f23cc9e8bdc427dac55d0ebc02ec4a5": {
          "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
          }
        },
        "a409dde8f01a480a80fb35bb14eac3a5": {
          "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": ""
          }
        },
        "a908bb0317d34019abb65573d37862f7": {
          "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
          }
        },
        "7ecd633873cc4962b44dc2c80bc55946": {
          "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": ""
          }
        },
        "cc4cbbeac1474fc1971633b225894fd2": {
          "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_9efb84a0e3ba46c7a9fa94b124ce8861",
              "IPY_MODEL_d678aebe10dd455a9132c5ed36c64bcf",
              "IPY_MODEL_5a0614a7aeef4a8db4150b875db180d6"
            ],
            "layout": "IPY_MODEL_f3e821895b0c455faa830dd6d670cf7d"
          }
        },
        "9efb84a0e3ba46c7a9fa94b124ce8861": {
          "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_d9878e779617478c9a043e1da145610b",
            "placeholder": "​",
            "style": "IPY_MODEL_f52852f33b41440faa25932d88c662d7",
            "value": "100%"
          }
        },
        "d678aebe10dd455a9132c5ed36c64bcf": {
          "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": "",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_f4ee25ffdf0a404882fc1406e42de69d",
            "max": 122,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_87c1a207130949c7b271db503b47d361",
            "value": 122
          }
        },
        "5a0614a7aeef4a8db4150b875db180d6": {
          "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_9c4752b5121a46438afb9dd07fa2aac7",
            "placeholder": "​",
            "style": "IPY_MODEL_c7e9c117274f437a85c008729d2ee8b0",
            "value": " 122/122 [00:43&lt;00:00,  3.30it/s]"
          }
        },
        "f3e821895b0c455faa830dd6d670cf7d": {
          "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": "hidden",
            "width": null
          }
        },
        "d9878e779617478c9a043e1da145610b": {
          "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
          }
        },
        "f52852f33b41440faa25932d88c662d7": {
          "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": ""
          }
        },
        "f4ee25ffdf0a404882fc1406e42de69d": {
          "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
          }
        },
        "87c1a207130949c7b271db503b47d361": {
          "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": ""
          }
        },
        "9c4752b5121a46438afb9dd07fa2aac7": {
          "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
          }
        },
        "c7e9c117274f437a85c008729d2ee8b0": {
          "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": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "YaSp23tE6Bjt",
        "outputId": "2da2eb23-f9e6-4d5b-e485-31d82b31b4aa"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\u001b[?25l   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/4.5 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K   \u001b[91m━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/4.5 MB\u001b[0m \u001b[31m32.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.5/4.5 MB\u001b[0m \u001b[31m68.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h"
          ]
        }
      ],
      "source": [
        "!pip -q install --no-cache-dir \\\n",
        "    \"kaggle\" \\\n",
        "    \"transformers\" \\\n",
        "    \"tensorboard==2.19.0\" \\\n",
        "    \"pandas==2.2.2\" \\\n",
        "    \"pillow==10.4.0\" \\\n",
        "    \"scikit-learn\" \\\n",
        "    \"tqdm\""
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from google.colab import files\n",
        "uploaded = files.upload()\n",
        "print(uploaded.keys())"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 97
        },
        "id": "Sbe5-8TiCKoR",
        "outputId": "c4624447-cd15-408b-bd3b-64e9b2393f33"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "     <input type=\"file\" id=\"files-ca0e428a-1d41-452d-b0e3-c5f8de807597\" name=\"files[]\" multiple disabled\n",
              "        style=\"border:none\" />\n",
              "     <output id=\"result-ca0e428a-1d41-452d-b0e3-c5f8de807597\">\n",
              "      Upload widget is only available when the cell has been executed in the\n",
              "      current browser session. Please rerun this cell to enable.\n",
              "      </output>\n",
              "      <script>// Copyright 2017 Google LLC\n",
              "//\n",
              "// Licensed under the Apache License, Version 2.0 (the \"License\");\n",
              "// you may not use this file except in compliance with the License.\n",
              "// You may obtain a copy of the License at\n",
              "//\n",
              "//      http://www.apache.org/licenses/LICENSE-2.0\n",
              "//\n",
              "// Unless required by applicable law or agreed to in writing, software\n",
              "// distributed under the License is distributed on an \"AS IS\" BASIS,\n",
              "// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
              "// See the License for the specific language governing permissions and\n",
              "// limitations under the License.\n",
              "\n",
              "/**\n",
              " * @fileoverview Helpers for google.colab Python module.\n",
              " */\n",
              "(function(scope) {\n",
              "function span(text, styleAttributes = {}) {\n",
              "  const element = document.createElement('span');\n",
              "  element.textContent = text;\n",
              "  for (const key of Object.keys(styleAttributes)) {\n",
              "    element.style[key] = styleAttributes[key];\n",
              "  }\n",
              "  return element;\n",
              "}\n",
              "\n",
              "// Max number of bytes which will be uploaded at a time.\n",
              "const MAX_PAYLOAD_SIZE = 100 * 1024;\n",
              "\n",
              "function _uploadFiles(inputId, outputId) {\n",
              "  const steps = uploadFilesStep(inputId, outputId);\n",
              "  const outputElement = document.getElementById(outputId);\n",
              "  // Cache steps on the outputElement to make it available for the next call\n",
              "  // to uploadFilesContinue from Python.\n",
              "  outputElement.steps = steps;\n",
              "\n",
              "  return _uploadFilesContinue(outputId);\n",
              "}\n",
              "\n",
              "// This is roughly an async generator (not supported in the browser yet),\n",
              "// where there are multiple asynchronous steps and the Python side is going\n",
              "// to poll for completion of each step.\n",
              "// This uses a Promise to block the python side on completion of each step,\n",
              "// then passes the result of the previous step as the input to the next step.\n",
              "function _uploadFilesContinue(outputId) {\n",
              "  const outputElement = document.getElementById(outputId);\n",
              "  const steps = outputElement.steps;\n",
              "\n",
              "  const next = steps.next(outputElement.lastPromiseValue);\n",
              "  return Promise.resolve(next.value.promise).then((value) => {\n",
              "    // Cache the last promise value to make it available to the next\n",
              "    // step of the generator.\n",
              "    outputElement.lastPromiseValue = value;\n",
              "    return next.value.response;\n",
              "  });\n",
              "}\n",
              "\n",
              "/**\n",
              " * Generator function which is called between each async step of the upload\n",
              " * process.\n",
              " * @param {string} inputId Element ID of the input file picker element.\n",
              " * @param {string} outputId Element ID of the output display.\n",
              " * @return {!Iterable<!Object>} Iterable of next steps.\n",
              " */\n",
              "function* uploadFilesStep(inputId, outputId) {\n",
              "  const inputElement = document.getElementById(inputId);\n",
              "  inputElement.disabled = false;\n",
              "\n",
              "  const outputElement = document.getElementById(outputId);\n",
              "  outputElement.innerHTML = '';\n",
              "\n",
              "  const pickedPromise = new Promise((resolve) => {\n",
              "    inputElement.addEventListener('change', (e) => {\n",
              "      resolve(e.target.files);\n",
              "    });\n",
              "  });\n",
              "\n",
              "  const cancel = document.createElement('button');\n",
              "  inputElement.parentElement.appendChild(cancel);\n",
              "  cancel.textContent = 'Cancel upload';\n",
              "  const cancelPromise = new Promise((resolve) => {\n",
              "    cancel.onclick = () => {\n",
              "      resolve(null);\n",
              "    };\n",
              "  });\n",
              "\n",
              "  // Wait for the user to pick the files.\n",
              "  const files = yield {\n",
              "    promise: Promise.race([pickedPromise, cancelPromise]),\n",
              "    response: {\n",
              "      action: 'starting',\n",
              "    }\n",
              "  };\n",
              "\n",
              "  cancel.remove();\n",
              "\n",
              "  // Disable the input element since further picks are not allowed.\n",
              "  inputElement.disabled = true;\n",
              "\n",
              "  if (!files) {\n",
              "    return {\n",
              "      response: {\n",
              "        action: 'complete',\n",
              "      }\n",
              "    };\n",
              "  }\n",
              "\n",
              "  for (const file of files) {\n",
              "    const li = document.createElement('li');\n",
              "    li.append(span(file.name, {fontWeight: 'bold'}));\n",
              "    li.append(span(\n",
              "        `(${file.type || 'n/a'}) - ${file.size} bytes, ` +\n",
              "        `last modified: ${\n",
              "            file.lastModifiedDate ? file.lastModifiedDate.toLocaleDateString() :\n",
              "                                    'n/a'} - `));\n",
              "    const percent = span('0% done');\n",
              "    li.appendChild(percent);\n",
              "\n",
              "    outputElement.appendChild(li);\n",
              "\n",
              "    const fileDataPromise = new Promise((resolve) => {\n",
              "      const reader = new FileReader();\n",
              "      reader.onload = (e) => {\n",
              "        resolve(e.target.result);\n",
              "      };\n",
              "      reader.readAsArrayBuffer(file);\n",
              "    });\n",
              "    // Wait for the data to be ready.\n",
              "    let fileData = yield {\n",
              "      promise: fileDataPromise,\n",
              "      response: {\n",
              "        action: 'continue',\n",
              "      }\n",
              "    };\n",
              "\n",
              "    // Use a chunked sending to avoid message size limits. See b/62115660.\n",
              "    let position = 0;\n",
              "    do {\n",
              "      const length = Math.min(fileData.byteLength - position, MAX_PAYLOAD_SIZE);\n",
              "      const chunk = new Uint8Array(fileData, position, length);\n",
              "      position += length;\n",
              "\n",
              "      const base64 = btoa(String.fromCharCode.apply(null, chunk));\n",
              "      yield {\n",
              "        response: {\n",
              "          action: 'append',\n",
              "          file: file.name,\n",
              "          data: base64,\n",
              "        },\n",
              "      };\n",
              "\n",
              "      let percentDone = fileData.byteLength === 0 ?\n",
              "          100 :\n",
              "          Math.round((position / fileData.byteLength) * 100);\n",
              "      percent.textContent = `${percentDone}% done`;\n",
              "\n",
              "    } while (position < fileData.byteLength);\n",
              "  }\n",
              "\n",
              "  // All done.\n",
              "  yield {\n",
              "    response: {\n",
              "      action: 'complete',\n",
              "    }\n",
              "  };\n",
              "}\n",
              "\n",
              "scope.google = scope.google || {};\n",
              "scope.google.colab = scope.google.colab || {};\n",
              "scope.google.colab._files = {\n",
              "  _uploadFiles,\n",
              "  _uploadFilesContinue,\n",
              "};\n",
              "})(self);\n",
              "</script> "
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Saving kaggle.json to kaggle.json\n",
            "dict_keys(['kaggle.json'])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import glob\n",
        "import shutil\n",
        "\n",
        "json_files = glob.glob(\"*.json\")\n",
        "assert len(json_files) > 0, \"Сначала загрузи kaggle.json\"\n",
        "\n",
        "src = json_files[0]\n",
        "os.makedirs(os.path.expanduser(\"~/.kaggle\"), exist_ok=True)\n",
        "dst = os.path.expanduser(\"~/.kaggle/kaggle.json\")\n",
        "shutil.copy(src, dst)\n",
        "os.chmod(dst, 0o600)\n",
        "\n",
        "!kaggle --version\n",
        "!ls -lah ~/.kaggle"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "FisLHAJ3CMPR",
        "outputId": "36461af8-bb05-447c-cb64-ca25a98b863d"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Kaggle CLI 2.0.0\n",
            "total 16K\n",
            "drwxr-xr-x 2 root root 4.0K Apr  8 12:20 .\n",
            "drwx------ 1 root root 4.0K Apr  8 12:20 ..\n",
            "-rw------- 1 root root   72 Apr  8 12:20 kaggle.json\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!rm -rf data\n",
        "!mkdir -p data\n",
        "!kaggle datasets download -d amandam1/120-dog-breeds-breed-classification -p data --force\n",
        "!ls -lh data"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "uUh4rIB3CNw2",
        "outputId": "2a106f51-8f84-4520-81f5-2b351ece50f3"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Dataset URL: https://www.kaggle.com/datasets/amandam1/120-dog-breeds-breed-classification\n",
            "License(s): CC0-1.0\n",
            "Downloading 120-dog-breeds-breed-classification.zip to data\n",
            "100% 740M/740M [00:06<00:00, 129MB/s]\n",
            "\n",
            "total 741M\n",
            "-rw-r--r-- 1 root root 741M Apr 20  2022 120-dog-breeds-breed-classification.zip\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import zipfile\n",
        "\n",
        "zip_files = [f for f in os.listdir(\"data\") if f.endswith(\".zip\")]\n",
        "print(\"zip_files:\", zip_files)\n",
        "assert len(zip_files) > 0, \"Не найден zip-архив в папке data\"\n",
        "\n",
        "zip_path = os.path.join(\"data\", zip_files[0])\n",
        "print(\"zip_path:\", zip_path)\n",
        "print(\"size_gb:\", round(os.path.getsize(zip_path) / 1024**3, 3))\n",
        "\n",
        "with zipfile.ZipFile(zip_path, \"r\") as zf:\n",
        "    bad = zf.testzip()\n",
        "    print(\"testzip:\", bad)\n",
        "    print(\"files_in_zip:\", len(zf.infolist()))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "K2MWGvBDCV7N",
        "outputId": "ab50fb77-ad97-4297-ebb9-1aa63c0af136"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "zip_files: ['120-dog-breeds-breed-classification.zip']\n",
            "zip_path: data/120-dog-breeds-breed-classification.zip\n",
            "size_gb: 0.723\n",
            "testzip: None\n",
            "files_in_zip: 20580\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!apt-get -qq update\n",
        "!apt-get -qq install -y unzip\n",
        "!mkdir -p data/dogs120\n",
        "!unzip -q \"$zip_path\" -d data/dogs120"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "o29mbFQpCZyc",
        "outputId": "742a90df-0b1b-45db-aea7-1e1d1c84e0d4"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "W: Skipping acquire of configured file 'main/source/Sources' as repository 'https://r2u.stat.illinois.edu/ubuntu jammy InRelease' does not seem to provide it (sources.list entry misspelt?)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!find data -maxdepth 4 -type d | sort | head -120\n",
        "!du -sh data"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "yXho63qaCa07",
        "outputId": "84aef5c4-4b3e-4b5e-a647-c8226f353083"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "data\n",
            "data/dogs120\n",
            "data/dogs120/Images\n",
            "data/dogs120/Images/n02085620-Chihuahua\n",
            "data/dogs120/Images/n02085782-Japanese_spaniel\n",
            "data/dogs120/Images/n02085936-Maltese_dog\n",
            "data/dogs120/Images/n02086079-Pekinese\n",
            "data/dogs120/Images/n02086240-Shih-Tzu\n",
            "data/dogs120/Images/n02086646-Blenheim_spaniel\n",
            "data/dogs120/Images/n02086910-papillon\n",
            "data/dogs120/Images/n02087046-toy_terrier\n",
            "data/dogs120/Images/n02087394-Rhodesian_ridgeback\n",
            "data/dogs120/Images/n02088094-Afghan_hound\n",
            "data/dogs120/Images/n02088238-basset\n",
            "data/dogs120/Images/n02088364-beagle\n",
            "data/dogs120/Images/n02088466-bloodhound\n",
            "data/dogs120/Images/n02088632-bluetick\n",
            "data/dogs120/Images/n02089078-black-and-tan_coonhound\n",
            "data/dogs120/Images/n02089867-Walker_hound\n",
            "data/dogs120/Images/n02089973-English_foxhound\n",
            "data/dogs120/Images/n02090379-redbone\n",
            "data/dogs120/Images/n02090622-borzoi\n",
            "data/dogs120/Images/n02090721-Irish_wolfhound\n",
            "data/dogs120/Images/n02091032-Italian_greyhound\n",
            "data/dogs120/Images/n02091134-whippet\n",
            "data/dogs120/Images/n02091244-Ibizan_hound\n",
            "data/dogs120/Images/n02091467-Norwegian_elkhound\n",
            "data/dogs120/Images/n02091635-otterhound\n",
            "data/dogs120/Images/n02091831-Saluki\n",
            "data/dogs120/Images/n02092002-Scottish_deerhound\n",
            "data/dogs120/Images/n02092339-Weimaraner\n",
            "data/dogs120/Images/n02093256-Staffordshire_bullterrier\n",
            "data/dogs120/Images/n02093428-American_Staffordshire_terrier\n",
            "data/dogs120/Images/n02093647-Bedlington_terrier\n",
            "data/dogs120/Images/n02093754-Border_terrier\n",
            "data/dogs120/Images/n02093859-Kerry_blue_terrier\n",
            "data/dogs120/Images/n02093991-Irish_terrier\n",
            "data/dogs120/Images/n02094114-Norfolk_terrier\n",
            "data/dogs120/Images/n02094258-Norwich_terrier\n",
            "data/dogs120/Images/n02094433-Yorkshire_terrier\n",
            "data/dogs120/Images/n02095314-wire-haired_fox_terrier\n",
            "data/dogs120/Images/n02095570-Lakeland_terrier\n",
            "data/dogs120/Images/n02095889-Sealyham_terrier\n",
            "data/dogs120/Images/n02096051-Airedale\n",
            "data/dogs120/Images/n02096177-cairn\n",
            "data/dogs120/Images/n02096294-Australian_terrier\n",
            "data/dogs120/Images/n02096437-Dandie_Dinmont\n",
            "data/dogs120/Images/n02096585-Boston_bull\n",
            "data/dogs120/Images/n02097047-miniature_schnauzer\n",
            "data/dogs120/Images/n02097130-giant_schnauzer\n",
            "data/dogs120/Images/n02097209-standard_schnauzer\n",
            "data/dogs120/Images/n02097298-Scotch_terrier\n",
            "data/dogs120/Images/n02097474-Tibetan_terrier\n",
            "data/dogs120/Images/n02097658-silky_terrier\n",
            "data/dogs120/Images/n02098105-soft-coated_wheaten_terrier\n",
            "data/dogs120/Images/n02098286-West_Highland_white_terrier\n",
            "data/dogs120/Images/n02098413-Lhasa\n",
            "data/dogs120/Images/n02099267-flat-coated_retriever\n",
            "data/dogs120/Images/n02099429-curly-coated_retriever\n",
            "data/dogs120/Images/n02099601-golden_retriever\n",
            "data/dogs120/Images/n02099712-Labrador_retriever\n",
            "data/dogs120/Images/n02099849-Chesapeake_Bay_retriever\n",
            "data/dogs120/Images/n02100236-German_short-haired_pointer\n",
            "data/dogs120/Images/n02100583-vizsla\n",
            "data/dogs120/Images/n02100735-English_setter\n",
            "data/dogs120/Images/n02100877-Irish_setter\n",
            "data/dogs120/Images/n02101006-Gordon_setter\n",
            "data/dogs120/Images/n02101388-Brittany_spaniel\n",
            "data/dogs120/Images/n02101556-clumber\n",
            "data/dogs120/Images/n02102040-English_springer\n",
            "data/dogs120/Images/n02102177-Welsh_springer_spaniel\n",
            "data/dogs120/Images/n02102318-cocker_spaniel\n",
            "data/dogs120/Images/n02102480-Sussex_spaniel\n",
            "data/dogs120/Images/n02102973-Irish_water_spaniel\n",
            "data/dogs120/Images/n02104029-kuvasz\n",
            "data/dogs120/Images/n02104365-schipperke\n",
            "data/dogs120/Images/n02105056-groenendael\n",
            "data/dogs120/Images/n02105162-malinois\n",
            "data/dogs120/Images/n02105251-briard\n",
            "data/dogs120/Images/n02105412-kelpie\n",
            "data/dogs120/Images/n02105505-komondor\n",
            "data/dogs120/Images/n02105641-Old_English_sheepdog\n",
            "data/dogs120/Images/n02105855-Shetland_sheepdog\n",
            "data/dogs120/Images/n02106030-collie\n",
            "data/dogs120/Images/n02106166-Border_collie\n",
            "data/dogs120/Images/n02106382-Bouvier_des_Flandres\n",
            "data/dogs120/Images/n02106550-Rottweiler\n",
            "data/dogs120/Images/n02106662-German_shepherd\n",
            "data/dogs120/Images/n02107142-Doberman\n",
            "data/dogs120/Images/n02107312-miniature_pinscher\n",
            "data/dogs120/Images/n02107574-Greater_Swiss_Mountain_dog\n",
            "data/dogs120/Images/n02107683-Bernese_mountain_dog\n",
            "data/dogs120/Images/n02107908-Appenzeller\n",
            "data/dogs120/Images/n02108000-EntleBucher\n",
            "data/dogs120/Images/n02108089-boxer\n",
            "data/dogs120/Images/n02108422-bull_mastiff\n",
            "data/dogs120/Images/n02108551-Tibetan_mastiff\n",
            "data/dogs120/Images/n02108915-French_bulldog\n",
            "data/dogs120/Images/n02109047-Great_Dane\n",
            "data/dogs120/Images/n02109525-Saint_Bernard\n",
            "data/dogs120/Images/n02109961-Eskimo_dog\n",
            "data/dogs120/Images/n02110063-malamute\n",
            "data/dogs120/Images/n02110185-Siberian_husky\n",
            "data/dogs120/Images/n02110627-affenpinscher\n",
            "data/dogs120/Images/n02110806-basenji\n",
            "data/dogs120/Images/n02110958-pug\n",
            "data/dogs120/Images/n02111129-Leonberg\n",
            "data/dogs120/Images/n02111277-Newfoundland\n",
            "data/dogs120/Images/n02111500-Great_Pyrenees\n",
            "data/dogs120/Images/n02111889-Samoyed\n",
            "data/dogs120/Images/n02112018-Pomeranian\n",
            "data/dogs120/Images/n02112137-chow\n",
            "data/dogs120/Images/n02112350-keeshond\n",
            "data/dogs120/Images/n02112706-Brabancon_griffon\n",
            "data/dogs120/Images/n02113023-Pembroke\n",
            "data/dogs120/Images/n02113186-Cardigan\n",
            "data/dogs120/Images/n02113624-toy_poodle\n",
            "data/dogs120/Images/n02113712-miniature_poodle\n",
            "data/dogs120/Images/n02113799-standard_poodle\n",
            "data/dogs120/Images/n02113978-Mexican_hairless\n",
            "1.5G\tdata\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import re\n",
        "import json\n",
        "import time\n",
        "import random\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "\n",
        "from PIL import Image\n",
        "from tqdm.auto import tqdm\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.metrics import accuracy_score, f1_score\n",
        "\n",
        "import torch\n",
        "import torch.nn as nn\n",
        "import torch.nn.functional as F\n",
        "import torchvision.transforms as T\n",
        "from torch.utils.data import Dataset, DataLoader\n",
        "\n",
        "from transformers import AutoImageProcessor, AutoModelForImageClassification"
      ],
      "metadata": {
        "id": "4JnIpHEzCdTo"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "SEED = 42\n",
        "random.seed(SEED)\n",
        "np.random.seed(SEED)\n",
        "torch.manual_seed(SEED)\n",
        "torch.cuda.manual_seed_all(SEED)\n",
        "\n",
        "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n",
        "print(\"device:\", device)\n",
        "\n",
        "RUB_PER_HOUR = 0.0\n",
        "\n",
        "def sec_to_rub(sec, rub_per_hour=0.0):\n",
        "    return float(sec) / 3600.0 * float(rub_per_hour)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "kZkpEI_bCfHo",
        "outputId": "703bb8ac-5d0d-48f9-d87c-467955ab58e1"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "device: cuda\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "HF_CKPT = \"wesleyacheng/dog-breeds-multiclass-image-classification-with-vit\"\n",
        "\n",
        "processor = AutoImageProcessor.from_pretrained(HF_CKPT)\n",
        "hf_model = AutoModelForImageClassification.from_pretrained(HF_CKPT).to(device)\n",
        "hf_model.eval()\n",
        "\n",
        "raw_id2label = hf_model.config.id2label\n",
        "if isinstance(next(iter(raw_id2label.keys())), str):\n",
        "    hf_id2label = {int(k): v for k, v in raw_id2label.items()}\n",
        "else:\n",
        "    hf_id2label = raw_id2label\n",
        "\n",
        "print(\"HF classes:\", len(hf_id2label))\n",
        "print(list(hf_id2label.items())[:5])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 366,
          "referenced_widgets": [
            "df0fb89c4f9848d8b6bfbef3d4813321",
            "0f3ca3da94d84803855d6cc8ef39777a",
            "df9dee1f6d7b40c086abc5888217d9f3",
            "089c967f36554b7ebb163e2b5cdb49e2",
            "dad999ec7ef1496d9a53ec309ba5216f",
            "93f0cf53f013412c9fb1468b995328c7",
            "c203164619ba4cfbb388366975de1cec",
            "436f79f5ef7a4c4cb1b20975aa341b0d",
            "f7b456da1e2e424b8d686d4894637132",
            "124616b71c764c7d9f8479b4ffacaf1b",
            "746bc737ac414d57a3fab94aa22a5b7c",
            "4807772c13d04407bf51c8726f98066b",
            "56b10496d8e842d586e6a1906700396a",
            "c73d9d94b7d541138a081e5feeec5dcc",
            "1eab539b2ada48ce978081479f0942be",
            "e5b6f393202b4dae823a6073c829f680",
            "52e087b36f2e40e09a30af9b8b4924a1",
            "84e6ea4460cc45d191a68a80a31f8ba6",
            "e7bf444d03614d4c9b26f11aee448532",
            "53f7fae0cbab45e5b79e3c29a5ba2804",
            "2a1b56ef915749efa445eb8489f1e404",
            "cd571a6bfb8345479d4a9ab02707e76a",
            "05abf1700e904eed9a5a5705370682c5",
            "e6f5ba576f464249a6881395a6e2f231",
            "c7a735762c354f4bb7d6079ee1116c7f",
            "02caba808c3549dda08737dbccb2a4f0",
            "f2ad7d65b988424f8ab6a9ca0e73e3ed",
            "ce7c8d424c454e0e9f2f68aa8bf246ae",
            "0872cd612f0146fdbaceee17d569a290",
            "f82478f2215b41a69d23e2097a82583d",
            "b483c3b200a8494ab13f17ce0b5a691a",
            "137b6e65ab1345709e7be202cba72a1c",
            "e84851e2685643a49b2b24b005a22ef7",
            "108b83898feb4c1babb42f1e6210b154",
            "ab6ae9440c9e41c0acb1035570e4415a",
            "9751e6c0a3e94b44ab4793295b9c3606",
            "6fe3d494b4e1452cb0dc97c36fd35fa1",
            "eb9bedb5809244d08c1d649bcd837ee7",
            "f80d7fb427d9495ba4dc488011065429",
            "1d0f20d6a0744c3eadb20c8343d09786",
            "a424359a23e741e494dee465dd702317",
            "8262dc6500ac4b90b3f4baaaf270c2bd",
            "06173515d675425e9f33a09f257b08ff",
            "7e7f973890db4306849d40318b82b6a8"
          ]
        },
        "id": "UAg3ry6ZCg-r",
        "outputId": "257c5c4a-fb8b-4b24-f105-6e92d5645819"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.12/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning: \n",
            "The secret `HF_TOKEN` does not exist in your Colab secrets.\n",
            "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n",
            "You will be able to reuse this secret in all of your notebooks.\n",
            "Please note that authentication is recommended but still optional to access public models or datasets.\n",
            "  warnings.warn(\n",
            "Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n",
            "WARNING:huggingface_hub.utils._http:Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "preprocessor_config.json:   0%|          | 0.00/325 [00:00<?, ?B/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "df0fb89c4f9848d8b6bfbef3d4813321"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "The image processor of type `ViTImageProcessor` is now loaded as a fast processor by default, even if the model checkpoint was saved with a slow processor. This is a breaking change and may produce slightly different outputs. To continue using the slow processor, instantiate this class with `use_fast=False`. \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": "4807772c13d04407bf51c8726f98066b"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "model.safetensors:   0%|          | 0.00/344M [00:00<?, ?B/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "05abf1700e904eed9a5a5705370682c5"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "Loading weights:   0%|          | 0/200 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "108b83898feb4c1babb42f1e6210b154"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "HF classes: 120\n",
            "[(0, 'otterhound'), (1, 'cocker_spaniel'), (2, 'brittany_spaniel'), (3, 'afghan_hound'), (4, 'maltese_dog')]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "IMAGE_EXTS = {\".jpg\", \".jpeg\", \".png\", \".bmp\", \".webp\"}\n",
        "\n",
        "def count_image_files(path):\n",
        "    total = 0\n",
        "    for root, _, files in os.walk(path):\n",
        "        for f in files:\n",
        "            if os.path.splitext(f.lower())[1] in IMAGE_EXTS:\n",
        "                total += 1\n",
        "    return total\n",
        "\n",
        "candidates = []\n",
        "for root, dirs, files in os.walk(\"data/dogs120\"):\n",
        "    img_count = sum(os.path.splitext(f.lower())[1] in IMAGE_EXTS for f in files)\n",
        "    if img_count > 0:\n",
        "        candidates.append((root, img_count))\n",
        "\n",
        "candidates = sorted(candidates, key=lambda x: x[0])\n",
        "print(\"sample image dirs:\", candidates[:20])\n",
        "\n",
        "def find_dataset_root(base=\"data/dogs120\"):\n",
        "    best_root = None\n",
        "    best_num_classes = -1\n",
        "\n",
        "    for root, dirs, files in os.walk(base):\n",
        "        class_dirs = 0\n",
        "        for d in dirs:\n",
        "            sub = os.path.join(root, d)\n",
        "            sub_has_image = False\n",
        "            for _, _, fs in os.walk(sub):\n",
        "                if any(os.path.splitext(f.lower())[1] in IMAGE_EXTS for f in fs):\n",
        "                    sub_has_image = True\n",
        "                    break\n",
        "            if sub_has_image:\n",
        "                class_dirs += 1\n",
        "\n",
        "        if class_dirs > best_num_classes:\n",
        "            best_num_classes = class_dirs\n",
        "            best_root = root\n",
        "\n",
        "    return best_root, best_num_classes\n",
        "\n",
        "DATASET_ROOT, approx_classes = find_dataset_root(\"data/dogs120\")\n",
        "print(\"DATASET_ROOT:\", DATASET_ROOT)\n",
        "print(\"approx_classes:\", approx_classes)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-C2fUC5LCiuZ",
        "outputId": "05721076-9e1c-409a-96b7-ee5e22f16db5"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "sample image dirs: [('data/dogs120/Images/n02085620-Chihuahua', 152), ('data/dogs120/Images/n02085782-Japanese_spaniel', 185), ('data/dogs120/Images/n02085936-Maltese_dog', 252), ('data/dogs120/Images/n02086079-Pekinese', 149), ('data/dogs120/Images/n02086240-Shih-Tzu', 214), ('data/dogs120/Images/n02086646-Blenheim_spaniel', 188), ('data/dogs120/Images/n02086910-papillon', 196), ('data/dogs120/Images/n02087046-toy_terrier', 172), ('data/dogs120/Images/n02087394-Rhodesian_ridgeback', 172), ('data/dogs120/Images/n02088094-Afghan_hound', 239), ('data/dogs120/Images/n02088238-basset', 175), ('data/dogs120/Images/n02088364-beagle', 195), ('data/dogs120/Images/n02088466-bloodhound', 187), ('data/dogs120/Images/n02088632-bluetick', 171), ('data/dogs120/Images/n02089078-black-and-tan_coonhound', 159), ('data/dogs120/Images/n02089867-Walker_hound', 153), ('data/dogs120/Images/n02089973-English_foxhound', 157), ('data/dogs120/Images/n02090379-redbone', 148), ('data/dogs120/Images/n02090622-borzoi', 151), ('data/dogs120/Images/n02090721-Irish_wolfhound', 218)]\n",
            "DATASET_ROOT: data/dogs120/Images\n",
            "approx_classes: 120\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "def normalize_breed_name(s: str) -> str:\n",
        "    s = os.path.basename(str(s)).strip().lower()\n",
        "\n",
        "    s = re.sub(r\"^n\\d{8}[-_ ]*\", \"\", s)\n",
        "\n",
        "    s = s.replace(\"_\", \" \").replace(\"-\", \" \")\n",
        "    s = re.sub(r\"[^a-z0-9 ]+\", \" \", s)\n",
        "    s = re.sub(r\"\\s+\", \" \", s).strip()\n",
        "    return s\n",
        "\n",
        "hf_name_to_idx = {\n",
        "    normalize_breed_name(v): k\n",
        "    for k, v in hf_id2label.items()\n",
        "}\n",
        "\n",
        "rows = []\n",
        "for root, _, files in os.walk(DATASET_ROOT):\n",
        "    img_files = [\n",
        "        f for f in files\n",
        "        if os.path.splitext(f.lower())[1] in IMAGE_EXTS\n",
        "    ]\n",
        "    if not img_files:\n",
        "        continue\n",
        "\n",
        "    raw_class = os.path.basename(root)\n",
        "    norm_class = normalize_breed_name(raw_class)\n",
        "\n",
        "    if norm_class not in hf_name_to_idx:\n",
        "        continue\n",
        "\n",
        "    label = hf_name_to_idx[norm_class]\n",
        "    class_name = hf_id2label[label]\n",
        "\n",
        "    for f in img_files:\n",
        "        rows.append({\n",
        "            \"path\": os.path.join(root, f),\n",
        "            \"raw_class\": raw_class,\n",
        "            \"norm_class\": norm_class,\n",
        "            \"label\": label,\n",
        "            \"class_name\": class_name\n",
        "        })\n",
        "\n",
        "df = pd.DataFrame(rows)\n",
        "\n",
        "print(\"rows:\", len(df))\n",
        "print(\"num_classes_mapped:\", df[\"label\"].nunique())\n",
        "print(df.head())"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "M6-6DQfSClDG",
        "outputId": "cfe29d31-6145-4b89-8f32-e7f7c277ae98"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "rows: 19439\n",
            "num_classes_mapped: 113\n",
            "                                                path             raw_class  \\\n",
            "0  data/dogs120/Images/n02091635-otterhound/n0209...  n02091635-otterhound   \n",
            "1  data/dogs120/Images/n02091635-otterhound/n0209...  n02091635-otterhound   \n",
            "2  data/dogs120/Images/n02091635-otterhound/n0209...  n02091635-otterhound   \n",
            "3  data/dogs120/Images/n02091635-otterhound/n0209...  n02091635-otterhound   \n",
            "4  data/dogs120/Images/n02091635-otterhound/n0209...  n02091635-otterhound   \n",
            "\n",
            "   norm_class  label  class_name  \n",
            "0  otterhound      0  otterhound  \n",
            "1  otterhound      0  otterhound  \n",
            "2  otterhound      0  otterhound  \n",
            "3  otterhound      0  otterhound  \n",
            "4  otterhound      0  otterhound  \n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "all_hf_classes = set(hf_id2label.keys())\n",
        "present_classes = set(df[\"label\"].unique())\n",
        "\n",
        "missing_hf = sorted(all_hf_classes - present_classes)\n",
        "print(\"missing_hf_classes_count:\", len(missing_hf))\n",
        "\n",
        "if len(missing_hf) > 0:\n",
        "    print(\"First missing:\", [hf_id2label[x] for x in missing_hf[:15]])\n",
        "\n",
        "assert df[\"label\"].nunique() >= 100, \"\"\n",
        "print(\"OK\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "KWfyFDLPCnI1",
        "outputId": "1f2cbb21-58e4-4565-f1a3-b68557002e99"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "missing_hf_classes_count: 7\n",
            "First missing: ['curly', 'wire', 'soft', 'flat', 'shih', 'black', 'german_short']\n",
            "OK\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "idx_train, idx_tmp = train_test_split(\n",
        "    df.index,\n",
        "    test_size=0.30,\n",
        "    random_state=42,\n",
        "    stratify=df[\"label\"]\n",
        ")\n",
        "\n",
        "df_train = df.loc[idx_train].copy()\n",
        "df_tmp = df.loc[idx_tmp].copy()\n",
        "\n",
        "idx_val, idx_test = train_test_split(\n",
        "    df_tmp.index,\n",
        "    test_size=0.50,\n",
        "    random_state=42,\n",
        "    stratify=df_tmp[\"label\"]\n",
        ")\n",
        "\n",
        "df_val = df.loc[idx_val].copy()\n",
        "df_test = df.loc[idx_test].copy()\n",
        "\n",
        "df_train[\"split\"] = \"train\"\n",
        "df_val[\"split\"] = \"val\"\n",
        "df_test[\"split\"] = \"test\"\n",
        "\n",
        "df_all = pd.concat([df_train, df_val, df_test], ignore_index=True)\n",
        "df_all.to_csv(\"dogs120_splits.csv\", index=False)\n",
        "\n",
        "print(df_all[\"split\"].value_counts())\n",
        "print(\"num_classes:\", df_all[\"label\"].nunique())\n",
        "print(\"missing files:\", (~df_all[\"path\"].map(os.path.exists)).sum())"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "1wPHH-UACruo",
        "outputId": "44115f6f-37ca-48cb-c471-53d08d3a548b"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "split\n",
            "train    13607\n",
            "val       2916\n",
            "test      2916\n",
            "Name: count, dtype: int64\n",
            "num_classes: 113\n",
            "missing files: 0\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "CNN_SIZE = 160\n",
        "CNN_BATCH_SIZE = 64 if device == \"cuda\" else 32\n",
        "HF_BATCH_SIZE = 24 if device == \"cuda\" else 8\n",
        "NUM_WORKERS = 0\n",
        "\n",
        "IMAGENET_MEAN = (0.485, 0.456, 0.406)\n",
        "IMAGENET_STD = (0.229, 0.224, 0.225)\n",
        "\n",
        "train_tfms = T.Compose([\n",
        "    T.RandomResizedCrop(CNN_SIZE, scale=(0.7, 1.0)),\n",
        "    T.RandomHorizontalFlip(),\n",
        "    T.ColorJitter(brightness=0.1, contrast=0.1, saturation=0.1),\n",
        "    T.ToTensor(),\n",
        "    T.Normalize(IMAGENET_MEAN, IMAGENET_STD),\n",
        "])\n",
        "\n",
        "eval_tfms = T.Compose([\n",
        "    T.Resize((CNN_SIZE, CNN_SIZE)),\n",
        "    T.ToTensor(),\n",
        "    T.Normalize(IMAGENET_MEAN, IMAGENET_STD),\n",
        "])\n",
        "\n",
        "class DogTensorDS(Dataset):\n",
        "    def __init__(self, frame, tfms):\n",
        "        self.df = frame.reset_index(drop=True)\n",
        "        self.tfms = tfms\n",
        "\n",
        "    def __len__(self):\n",
        "        return len(self.df)\n",
        "\n",
        "    def __getitem__(self, idx):\n",
        "        row = self.df.iloc[idx]\n",
        "        img = Image.open(row[\"path\"]).convert(\"RGB\")\n",
        "        x = self.tfms(img)\n",
        "        y = int(row[\"label\"])\n",
        "        return x, y\n",
        "\n",
        "class DogPILDS(Dataset):\n",
        "    def __init__(self, frame):\n",
        "        self.df = frame.reset_index(drop=True)\n",
        "\n",
        "    def __len__(self):\n",
        "        return len(self.df)\n",
        "\n",
        "    def __getitem__(self, idx):\n",
        "        row = self.df.iloc[idx]\n",
        "        img = Image.open(row[\"path\"]).convert(\"RGB\")\n",
        "        y = int(row[\"label\"])\n",
        "        return img, y\n",
        "\n",
        "def pil_collate(batch):\n",
        "    imgs = [b[0] for b in batch]\n",
        "    ys = torch.tensor([b[1] for b in batch], dtype=torch.long)\n",
        "    return imgs, ys"
      ],
      "metadata": {
        "id": "RMfPoniYCtYu"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "train_df = df_all[df_all[\"split\"] == \"train\"].reset_index(drop=True)\n",
        "val_df = df_all[df_all[\"split\"] == \"val\"].reset_index(drop=True)\n",
        "test_df = df_all[df_all[\"split\"] == \"test\"].reset_index(drop=True)\n",
        "\n",
        "train_loader = DataLoader(\n",
        "    DogTensorDS(train_df, train_tfms),\n",
        "    batch_size=CNN_BATCH_SIZE,\n",
        "    shuffle=True,\n",
        "    num_workers=NUM_WORKERS,\n",
        "    pin_memory=(device == \"cuda\")\n",
        ")\n",
        "\n",
        "val_loader = DataLoader(\n",
        "    DogTensorDS(val_df, eval_tfms),\n",
        "    batch_size=CNN_BATCH_SIZE,\n",
        "    shuffle=False,\n",
        "    num_workers=NUM_WORKERS,\n",
        "    pin_memory=(device == \"cuda\")\n",
        ")\n",
        "\n",
        "test_loader = DataLoader(\n",
        "    DogTensorDS(test_df, eval_tfms),\n",
        "    batch_size=CNN_BATCH_SIZE,\n",
        "    shuffle=False,\n",
        "    num_workers=NUM_WORKERS,\n",
        "    pin_memory=(device == \"cuda\")\n",
        ")\n",
        "\n",
        "hf_val_loader = DataLoader(\n",
        "    DogPILDS(val_df),\n",
        "    batch_size=HF_BATCH_SIZE,\n",
        "    shuffle=False,\n",
        "    num_workers=NUM_WORKERS,\n",
        "    collate_fn=pil_collate\n",
        ")\n",
        "\n",
        "hf_test_loader = DataLoader(\n",
        "    DogPILDS(test_df),\n",
        "    batch_size=HF_BATCH_SIZE,\n",
        "    shuffle=False,\n",
        "    num_workers=NUM_WORKERS,\n",
        "    collate_fn=pil_collate\n",
        ")\n",
        "\n",
        "print(len(train_df), len(val_df), len(test_df))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6EoWBG6DCvM-",
        "outputId": "338a681d-2af5-462a-ae11-0cf11062155c"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "13607 2916 2916\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "class DSConvBlock(nn.Module):\n",
        "    def __init__(self, in_ch, out_ch, stride=1):\n",
        "        super().__init__()\n",
        "        self.depthwise = nn.Conv2d(\n",
        "            in_ch, in_ch, kernel_size=3, stride=stride, padding=1,\n",
        "            groups=in_ch, bias=False\n",
        "        )\n",
        "        self.dw_bn = nn.BatchNorm2d(in_ch)\n",
        "\n",
        "        self.pointwise = nn.Conv2d(\n",
        "            in_ch, out_ch, kernel_size=1, stride=1, padding=0, bias=False\n",
        "        )\n",
        "        self.pw_bn = nn.BatchNorm2d(out_ch)\n",
        "\n",
        "    def forward(self, x):\n",
        "        x = F.relu(self.dw_bn(self.depthwise(x)), inplace=True)\n",
        "        x = F.relu(self.pw_bn(self.pointwise(x)), inplace=True)\n",
        "        return x\n",
        "\n",
        "class DogLiteCNN(nn.Module):\n",
        "    def __init__(self, num_classes):\n",
        "        super().__init__()\n",
        "        self.stem = nn.Sequential(\n",
        "            nn.Conv2d(3, 32, kernel_size=3, stride=2, padding=1, bias=False),\n",
        "            nn.BatchNorm2d(32),\n",
        "            nn.ReLU(inplace=True)\n",
        "        )\n",
        "\n",
        "        self.features = nn.Sequential(\n",
        "            DSConvBlock(32, 64, stride=1),\n",
        "            DSConvBlock(64, 128, stride=2),\n",
        "            DSConvBlock(128, 128, stride=1),\n",
        "            DSConvBlock(128, 256, stride=2),\n",
        "            DSConvBlock(256, 256, stride=1),\n",
        "            DSConvBlock(256, 384, stride=2),\n",
        "            DSConvBlock(384, 384, stride=1),\n",
        "        )\n",
        "\n",
        "        self.head = nn.Sequential(\n",
        "            nn.AdaptiveAvgPool2d(1),\n",
        "            nn.Flatten(),\n",
        "            nn.Dropout(0.3),\n",
        "            nn.Linear(384, num_classes)\n",
        "        )\n",
        "\n",
        "    def forward(self, x):\n",
        "        x = self.stem(x)\n",
        "        x = self.features(x)\n",
        "        x = self.head(x)\n",
        "        return x\n",
        "\n",
        "num_classes = len(hf_id2label)\n",
        "cnn = DogLiteCNN(num_classes).to(device)\n",
        "\n",
        "criterion = nn.CrossEntropyLoss(label_smoothing=0.1)\n",
        "optimizer = torch.optim.AdamW(cnn.parameters(), lr=3e-4, weight_decay=1e-4)\n",
        "\n",
        "print(\"params_million:\", round(sum(p.numel() for p in cnn.parameters()) / 1e6, 3))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fLm3l2KJCw3d",
        "outputId": "f0baa4b2-af50-443b-b553-66ab4b393bc1"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "params_million: 0.435\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "@torch.no_grad()\n",
        "def evaluate_cnn(model, loader):\n",
        "    model.eval()\n",
        "    ys, ps = [], []\n",
        "    losses = []\n",
        "\n",
        "    for x, y in tqdm(loader, leave=False):\n",
        "        x = x.to(device, non_blocking=True)\n",
        "        y = y.to(device, non_blocking=True)\n",
        "\n",
        "        logits = model(x)\n",
        "        loss = criterion(logits, y)\n",
        "        pred = logits.argmax(1)\n",
        "\n",
        "        ys.extend(y.cpu().numpy().tolist())\n",
        "        ps.extend(pred.cpu().numpy().tolist())\n",
        "        losses.append(float(loss.item()))\n",
        "\n",
        "    return {\n",
        "        \"loss\": float(np.mean(losses)),\n",
        "        \"acc\": float(accuracy_score(ys, ps)),\n",
        "        \"f1_macro\": float(f1_score(ys, ps, average=\"macro\"))\n",
        "    }\n",
        "\n",
        "def train_one_epoch(model, loader):\n",
        "    model.train()\n",
        "    losses = []\n",
        "    t0 = time.perf_counter()\n",
        "\n",
        "    for x, y in tqdm(loader, leave=False):\n",
        "        x = x.to(device, non_blocking=True)\n",
        "        y = y.to(device, non_blocking=True)\n",
        "\n",
        "        optimizer.zero_grad(set_to_none=True)\n",
        "        logits = model(x)\n",
        "        loss = criterion(logits, y)\n",
        "        loss.backward()\n",
        "        optimizer.step()\n",
        "\n",
        "        losses.append(float(loss.item()))\n",
        "\n",
        "    t1 = time.perf_counter()\n",
        "    return {\n",
        "        \"train_loss\": float(np.mean(losses)),\n",
        "        \"time_sec\": float(t1 - t0)\n",
        "    }\n",
        "\n",
        "@torch.no_grad()\n",
        "def hf_logits(imgs):\n",
        "    batch = processor(images=imgs, return_tensors=\"pt\")\n",
        "    pixel_values = batch[\"pixel_values\"].to(device)\n",
        "    logits = hf_model(pixel_values=pixel_values).logits\n",
        "    return logits\n",
        "\n",
        "@torch.no_grad()\n",
        "def evaluate_hf(loader):\n",
        "    hf_model.eval()\n",
        "    ys, ps = [], []\n",
        "    t0 = time.perf_counter()\n",
        "\n",
        "    for imgs, y in tqdm(loader, leave=False):\n",
        "        logits = hf_logits(imgs)\n",
        "        pred = logits.argmax(1).cpu().numpy()\n",
        "\n",
        "        ys.extend(y.numpy().tolist())\n",
        "        ps.extend(pred.tolist())\n",
        "\n",
        "    t1 = time.perf_counter()\n",
        "\n",
        "    return {\n",
        "        \"acc\": float(accuracy_score(ys, ps)),\n",
        "        \"f1_macro\": float(f1_score(ys, ps, average=\"macro\")),\n",
        "        \"time_sec\": float(t1 - t0)\n",
        "    }\n",
        "\n",
        "@torch.no_grad()\n",
        "def predict_proba_cnn(model, loader):\n",
        "    model.eval()\n",
        "    probs, ys = [], []\n",
        "\n",
        "    for x, y in tqdm(loader, leave=False):\n",
        "        x = x.to(device, non_blocking=True)\n",
        "        logits = model(x)\n",
        "        probs.append(F.softmax(logits, dim=1).cpu().numpy())\n",
        "        ys.extend(y.numpy().tolist())\n",
        "\n",
        "    return np.vstack(probs), np.array(ys)\n",
        "\n",
        "@torch.no_grad()\n",
        "def predict_proba_hf(loader):\n",
        "    hf_model.eval()\n",
        "    probs, ys = [], []\n",
        "\n",
        "    for imgs, y in tqdm(loader, leave=False):\n",
        "        logits = hf_logits(imgs)\n",
        "        probs.append(torch.softmax(logits, dim=1).cpu().numpy())\n",
        "        ys.extend(y.numpy().tolist())\n",
        "\n",
        "    return np.vstack(probs), np.array(ys)"
      ],
      "metadata": {
        "id": "uW3e-HmfCy3O"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "step3_train = train_one_epoch(cnn, train_loader)\n",
        "cnn_val_step3 = evaluate_cnn(cnn, val_loader)\n",
        "hf_val_step3 = evaluate_hf(hf_val_loader)\n",
        "\n",
        "step3_report = {\n",
        "    \"cnn_after_1_epoch\": {\n",
        "        **step3_train,\n",
        "        **cnn_val_step3,\n",
        "        \"cost_rub\": sec_to_rub(step3_train[\"time_sec\"], RUB_PER_HOUR)\n",
        "    },\n",
        "    \"hf_on_val\": {\n",
        "        **hf_val_step3,\n",
        "        \"cost_rub\": sec_to_rub(hf_val_step3[\"time_sec\"], RUB_PER_HOUR)\n",
        "    },\n",
        "    \"total_step3_cost_rub\": sec_to_rub(\n",
        "        step3_train[\"time_sec\"] + hf_val_step3[\"time_sec\"],\n",
        "        RUB_PER_HOUR\n",
        "    )\n",
        "}\n",
        "\n",
        "with open(\"step3_metrics.json\", \"w\", encoding=\"utf-8\") as f:\n",
        "    json.dump(step3_report, f, ensure_ascii=False, indent=2)\n",
        "\n",
        "torch.save(cnn.state_dict(), \"doglite_epoch1.pt\")\n",
        "\n",
        "print(json.dumps(step3_report, ensure_ascii=False, indent=2))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 328,
          "referenced_widgets": [
            "8131b7f2af1340b4b7ecf8144a8d293d",
            "843d968c451d4450b73a66576e3df16b",
            "1b289c00e43e4c55ae61c785b17e4c8b",
            "e14c36d18f4f4dfc9ab4ced2f36d01c9",
            "a66d9560db0a431c821cd1b7b590a000",
            "d69f72e87cb44739a0f5d228d842d23b",
            "b6412930ed9744d88d44f6a0e0efc002",
            "5b1ee7ed422b42c1a0b466c3bd20c240",
            "e06b0685c7a141aa9e893ebabc2e5279",
            "958b97e28db0468c91d39dec0f8e7f4a",
            "be1db19cbf094accaa4b8abbe01981bc",
            "9a8c329e25134f24b3724dbe6e50d0bc",
            "269b22d6ccab46d6ac62d41f637ab7e5",
            "2d29c4aad0754d25a84f25db094b7be2",
            "9ef45a73fa034b6099dee8cc21e65faa",
            "4208ef81a6014eb6a1a4a5fbdb1f28e3",
            "8a464e59449642d8b0a829b1b5f1e92e",
            "bab152e64fd5437897aeeea4da321848",
            "3a1506cece6d40eebae4afb16833300b",
            "e04abc87d4a243d69819a3cc82754c4e",
            "beea469fc595495bbd81c4f254ae10eb",
            "d56cd23820a54de8891f872d7e4e4f5d",
            "e57da70ee29340b3880358a3996dd963",
            "2e6c3badb08f43bc9d4ed5df7346283c",
            "046f93fe252e449894ef20d418b7c4d1",
            "2c3518f8fad345b89e3652d3e7ca098f",
            "295356a619024c8d8c773a4a4e9c63db",
            "b585f41c7d0c414e9e4c80b7f8b881f0",
            "aa1d59f5e38b4167ada7312eb3871037",
            "370bb3c15e7247a7a56ff281bb15d8ab",
            "e8012326dae1430cb6e24fea56b2d264",
            "b70c9b997e224920bae2cce2abe3f546",
            "3c0b361e5f6a417a87e68eea8fec35cc"
          ]
        },
        "id": "ZPYVcV6pC1PO",
        "outputId": "ebeb6415-d43e-4ab1-a62c-510d8764714e"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/213 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "8131b7f2af1340b4b7ecf8144a8d293d"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/46 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "9a8c329e25134f24b3724dbe6e50d0bc"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/122 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "e57da70ee29340b3880358a3996dd963"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{\n",
            "  \"cnn_after_1_epoch\": {\n",
            "    \"train_loss\": 4.7214702798726975,\n",
            "    \"time_sec\": 90.28594455099994,\n",
            "    \"loss\": 4.629003690636677,\n",
            "    \"acc\": 0.029492455418381344,\n",
            "    \"f1_macro\": 0.007218133505086909,\n",
            "    \"cost_rub\": 0.0\n",
            "  },\n",
            "  \"hf_on_val\": {\n",
            "    \"acc\": 0.9207818930041153,\n",
            "    \"f1_macro\": 0.8890583981698527,\n",
            "    \"time_sec\": 41.599882829999956,\n",
            "    \"cost_rub\": 0.0\n",
            "  },\n",
            "  \"total_step3_cost_rub\": 0.0\n",
            "}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from torch.utils.tensorboard import SummaryWriter\n",
        "\n",
        "TOTAL_EPOCHS = 4\n",
        "writer = SummaryWriter(\"runs/dogs120_doglite\")\n",
        "\n",
        "history = []\n",
        "best_acc = cnn_val_step3[\"acc\"]\n",
        "best_state_path = \"doglite_best.pt\"\n",
        "torch.save(cnn.state_dict(), best_state_path)\n",
        "\n",
        "history.append({\n",
        "    \"epoch\": 1,\n",
        "    \"train_loss\": step3_train[\"train_loss\"],\n",
        "    \"val_loss\": cnn_val_step3[\"loss\"],\n",
        "    \"val_acc\": cnn_val_step3[\"acc\"],\n",
        "    \"val_f1_macro\": cnn_val_step3[\"f1_macro\"],\n",
        "    \"epoch_time_sec\": step3_train[\"time_sec\"]\n",
        "})\n",
        "\n",
        "writer.add_scalar(\"train/loss\", step3_train[\"train_loss\"], 1)\n",
        "writer.add_scalar(\"val/loss\", cnn_val_step3[\"loss\"], 1)\n",
        "writer.add_scalar(\"val/acc\", cnn_val_step3[\"acc\"], 1)\n",
        "writer.add_scalar(\"val/f1_macro\", cnn_val_step3[\"f1_macro\"], 1)\n",
        "writer.add_scalar(\"time/epoch_sec\", step3_train[\"time_sec\"], 1)\n",
        "\n",
        "total_cnn_train_sec = step3_train[\"time_sec\"]\n",
        "\n",
        "for epoch in range(2, TOTAL_EPOCHS + 1):\n",
        "    tr = train_one_epoch(cnn, train_loader)\n",
        "    val_m = evaluate_cnn(cnn, val_loader)\n",
        "\n",
        "    row = {\n",
        "        \"epoch\": epoch,\n",
        "        \"train_loss\": tr[\"train_loss\"],\n",
        "        \"val_loss\": val_m[\"loss\"],\n",
        "        \"val_acc\": val_m[\"acc\"],\n",
        "        \"val_f1_macro\": val_m[\"f1_macro\"],\n",
        "        \"epoch_time_sec\": tr[\"time_sec\"]\n",
        "    }\n",
        "    history.append(row)\n",
        "\n",
        "    writer.add_scalar(\"train/loss\", tr[\"train_loss\"], epoch)\n",
        "    writer.add_scalar(\"val/loss\", val_m[\"loss\"], epoch)\n",
        "    writer.add_scalar(\"val/acc\", val_m[\"acc\"], epoch)\n",
        "    writer.add_scalar(\"val/f1_macro\", val_m[\"f1_macro\"], epoch)\n",
        "    writer.add_scalar(\"time/epoch_sec\", tr[\"time_sec\"], epoch)\n",
        "\n",
        "    total_cnn_train_sec += tr[\"time_sec\"]\n",
        "    print(row)\n",
        "\n",
        "    if val_m[\"acc\"] > best_acc:\n",
        "        best_acc = val_m[\"acc\"]\n",
        "        torch.save(cnn.state_dict(), best_state_path)\n",
        "\n",
        "writer.close()\n",
        "\n",
        "history_df = pd.DataFrame(history)\n",
        "history_df.to_csv(\"step4_cnn_history.csv\", index=False)\n",
        "\n",
        "with open(\"step4_cnn_history.json\", \"w\", encoding=\"utf-8\") as f:\n",
        "    json.dump(history, f, ensure_ascii=False, indent=2)\n",
        "\n",
        "print(\"best val acc:\", best_acc)\n",
        "history_df"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 268,
          "referenced_widgets": [
            "7dcab62aea8643279a8b647495cc7986",
            "67b9ba80a1e84321bdd90835bbb3fa4e",
            "a54af15246164c7fb9882a18e55b7ec6",
            "a24f6bcbf82f47bab6a1f7f81b281a5f",
            "73f6b6cdde2146e79fb44be6da19ce51",
            "cb569392d10f4235b6769885d9700825",
            "af555b654f9a4132aba10433216cfe8a",
            "4c8b71a40bda4c54a72c9d1aa8f2a6d7",
            "763bf4ed3f774fbba330b16295bb482e",
            "9bf3fbbce5aa420fa3f8ea2a18a54ac4",
            "8084e60b6b874b829afb9eac22eff9a9",
            "1cfb9a685b8a491793a872cf1dc4861e",
            "9e76c7da2adf4bcebce9dde2984fa579",
            "7a2de14dd79d4a33869c4ca1c70c6049",
            "2c034573baef492cb3ff990d0ed96bc8",
            "2307e4581c60457fb788a4f7aefc4ca5",
            "892183a96dde4cf98e1452db3f27bb5c",
            "ed3fb8f280bd4a5dae5246545ba24ec6",
            "670f016ff1244f08999380357cdf5aff",
            "f3ceb9a5820b413dbc4578fbafcdeead",
            "8eee145858504c919fa4d57270c3dfde",
            "bd8cd8f3a6164cf2878ebcc15d515356",
            "8de5817d2b5e4a3c8480a03fd265cdc7",
            "171db4ab574b462ba7052063800e848d",
            "8eea2650eb134102a54e2503b492ba5f",
            "6bd03afd39b148cdbef4a7874f147c87",
            "908f8bededab4dad918817f32751d0a0",
            "6ce47b3a03ae4eb0a25714786d8568fa",
            "61b0e9edc9e4460ea58b2d8ca6b55f1c",
            "a77588b2f6f24b8180dfc279ba8e5b70",
            "b14b22ade74a465f9f3a582afaea41c9",
            "c31b68bd57d44ecabf54390a52a230cc",
            "745148a3eeed4d3ebed5d41a521aae98",
            "06c4c9e0e7144a33b034c3e5374960c8",
            "d110a65aad9f475ba52bfc79d3132847",
            "89c2c6fc1ad54c56b6077e7abf5eaff3",
            "df7e3a32dfac4b9e802cc8249b33008b",
            "3b6dc4907a334418a5ae26a66a81bccb",
            "8eeafab0938e4fc1ba26ced7707bbea8",
            "3fb16abc94ef47c28f23bd6b6080405e",
            "07ac215fa73443cba8bc0d64a625e72d",
            "c196a960cd00477280cecc7ad75d3aae",
            "73bfc643e0014f729b68be7c31b7267e",
            "6314b00495b94449ad66b3b8e3b4a617",
            "139aa9d1ed8947ad8df4aeaa7db0d192",
            "da94f2f0242e44c38b3b131bf4c52f08",
            "1659154cdf5745c6bf01dc987b9010cb",
            "dad39e84e02e4aef97afca962259b4ec",
            "e5d45acda7764585bc7324caa504432d",
            "905ab12d227347df9f772759471b378b",
            "62d5d3a296ae4e219a81c82222b7d269",
            "76fabcacdb034c11b767cc7d15346238",
            "05e9741a33344cf393d7effd178120c9",
            "90938f8e0f7a4544a54b28433440cc4a",
            "32b6bdec3e284e0cb9a35374a25c8def",
            "26d21e13ed894149bfa191475c4d23d2",
            "7809444a5bcb4010a0738d1456cb737c",
            "bc681125d445435ab993f4cd7ef2613b",
            "e4b898e9c8f5438faef2190e377fead5",
            "c6d5d9ae44874b78af831de26f3a4335",
            "ca2660877ed843098a01ca2eb096837e",
            "833d4bf08a414cfcbf05063bc4a27d61",
            "9ebcc0e596354bb486a5858dff3b70c6",
            "632fa263884144f5a32ee1721d163772",
            "8536ae13144f4e668e718e66c9820265",
            "c5cfcd62d4934e3cbc3728adf03e55b7"
          ]
        },
        "id": "ryQr3ThnC28Y",
        "outputId": "3c31be93-42e9-45f8-b985-e132cf1d070b"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/213 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "7dcab62aea8643279a8b647495cc7986"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/46 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "1cfb9a685b8a491793a872cf1dc4861e"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'epoch': 2, 'train_loss': 4.553371630923849, 'val_loss': 4.489863582279371, 'val_acc': 0.03772290809327846, 'val_f1_macro': 0.012524422483321786, 'epoch_time_sec': 95.73960929400005}\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/213 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "8de5817d2b5e4a3c8480a03fd265cdc7"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/46 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "06c4c9e0e7144a33b034c3e5374960c8"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'epoch': 3, 'train_loss': 4.418297948971601, 'val_loss': 4.352578816206559, 'val_acc': 0.05384087791495199, 'val_f1_macro': 0.022272142509379828, 'epoch_time_sec': 84.43444155099996}\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/213 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "139aa9d1ed8947ad8df4aeaa7db0d192"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/46 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "26d21e13ed894149bfa191475c4d23d2"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'epoch': 4, 'train_loss': 4.302493411050716, 'val_loss': 4.283579629400502, 'val_acc': 0.0668724279835391, 'val_f1_macro': 0.0336248987465368, 'epoch_time_sec': 83.85175714400009}\n",
            "best val acc: 0.0668724279835391\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "   epoch  train_loss  val_loss   val_acc  val_f1_macro  epoch_time_sec\n",
              "0      1    4.721470  4.629004  0.029492      0.007218       90.285945\n",
              "1      2    4.553372  4.489864  0.037723      0.012524       95.739609\n",
              "2      3    4.418298  4.352579  0.053841      0.022272       84.434442\n",
              "3      4    4.302493  4.283580  0.066872      0.033625       83.851757"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-b6acd0f5-be0e-44a3-90da-de5d343d92c8\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>epoch</th>\n",
              "      <th>train_loss</th>\n",
              "      <th>val_loss</th>\n",
              "      <th>val_acc</th>\n",
              "      <th>val_f1_macro</th>\n",
              "      <th>epoch_time_sec</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>1</td>\n",
              "      <td>4.721470</td>\n",
              "      <td>4.629004</td>\n",
              "      <td>0.029492</td>\n",
              "      <td>0.007218</td>\n",
              "      <td>90.285945</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>2</td>\n",
              "      <td>4.553372</td>\n",
              "      <td>4.489864</td>\n",
              "      <td>0.037723</td>\n",
              "      <td>0.012524</td>\n",
              "      <td>95.739609</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>3</td>\n",
              "      <td>4.418298</td>\n",
              "      <td>4.352579</td>\n",
              "      <td>0.053841</td>\n",
              "      <td>0.022272</td>\n",
              "      <td>84.434442</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>4</td>\n",
              "      <td>4.302493</td>\n",
              "      <td>4.283580</td>\n",
              "      <td>0.066872</td>\n",
              "      <td>0.033625</td>\n",
              "      <td>83.851757</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-b6acd0f5-be0e-44a3-90da-de5d343d92c8')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-b6acd0f5-be0e-44a3-90da-de5d343d92c8 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-b6acd0f5-be0e-44a3-90da-de5d343d92c8');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "variable_name": "history_df",
              "summary": "{\n  \"name\": \"history_df\",\n  \"rows\": 4,\n  \"fields\": [\n    {\n      \"column\": \"epoch\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1,\n        \"min\": 1,\n        \"max\": 4,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          2,\n          4,\n          1\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"train_loss\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.18034866841210262,\n        \"min\": 4.302493411050716,\n        \"max\": 4.7214702798726975,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          4.553371630923849,\n          4.302493411050716,\n          4.7214702798726975\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"val_loss\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.15309298019754133,\n        \"min\": 4.283579629400502,\n        \"max\": 4.629003690636677,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          4.489863582279371,\n          4.283579629400502,\n          4.629003690636677\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"val_acc\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0166762134402876,\n        \"min\": 0.029492455418381344,\n        \"max\": 0.0668724279835391,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.03772290809327846,\n          0.0668724279835391,\n          0.029492455418381344\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"val_f1_macro\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.011623361385446031,\n        \"min\": 0.007218133505086909,\n        \"max\": 0.0336248987465368,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.012524422483321786,\n          0.0336248987465368,\n          0.007218133505086909\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"epoch_time_sec\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 5.589041969427287,\n        \"min\": 83.85175714400009,\n        \"max\": 95.73960929400005,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          95.73960929400005,\n          83.85175714400009,\n          90.28594455099994\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 21
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "plt.figure(figsize=(7,4))\n",
        "plt.plot(history_df[\"epoch\"], history_df[\"val_acc\"], marker=\"o\")\n",
        "plt.title(\"Val accuracy по эпохам\")\n",
        "plt.xlabel(\"Epoch\")\n",
        "plt.ylabel(\"Accuracy\")\n",
        "plt.grid(True)\n",
        "plt.show()\n",
        "\n",
        "plt.figure(figsize=(7,4))\n",
        "plt.plot(history_df[\"epoch\"], history_df[\"train_loss\"], marker=\"o\")\n",
        "plt.title(\"Train loss по эпохам\")\n",
        "plt.xlabel(\"Epoch\")\n",
        "plt.ylabel(\"Loss\")\n",
        "plt.grid(True)\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 803
        },
        "id": "gHntLrR9C4vX",
        "outputId": "62b1db0f-a8cd-4bbb-d632-19966267e833"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 700x400 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 700x400 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "best_cnn = DogLiteCNN(num_classes).to(device)\n",
        "best_cnn.load_state_dict(torch.load(\"doglite_best.pt\", map_location=device))\n",
        "\n",
        "cnn_val_p, y_val1 = predict_proba_cnn(best_cnn, val_loader)\n",
        "hf_val_p, y_val2 = predict_proba_hf(hf_val_loader)\n",
        "assert np.all(y_val1 == y_val2)\n",
        "\n",
        "best_w = 0.0\n",
        "best_val_acc = -1.0\n",
        "\n",
        "for w in np.linspace(0.0, 1.0, 21):\n",
        "    pred = (w * cnn_val_p + (1.0 - w) * hf_val_p).argmax(axis=1)\n",
        "    acc = accuracy_score(y_val1, pred)\n",
        "    if acc > best_val_acc:\n",
        "        best_val_acc = float(acc)\n",
        "        best_w = float(w)\n",
        "\n",
        "print(\"best_w:\", best_w, \"best_val_acc:\", best_val_acc)\n",
        "\n",
        "cnn_test_p, y_test1 = predict_proba_cnn(best_cnn, test_loader)\n",
        "hf_test_p, y_test2 = predict_proba_hf(hf_test_loader)\n",
        "assert np.all(y_test1 == y_test2)\n",
        "\n",
        "ens_pred = (best_w * cnn_test_p + (1.0 - best_w) * hf_test_p).argmax(axis=1)\n",
        "\n",
        "ensemble_metrics = {\n",
        "    \"best_cnn_weight\": best_w,\n",
        "    \"val_acc_for_best_weight\": best_val_acc,\n",
        "    \"test_acc\": float(accuracy_score(y_test1, ens_pred)),\n",
        "    \"test_f1_macro\": float(f1_score(y_test1, ens_pred, average=\"macro\")),\n",
        "    \"cnn_train_time_sec_total\": float(total_cnn_train_sec),\n",
        "    \"total_pipeline_time_sec\": float(total_cnn_train_sec + hf_val_step3[\"time_sec\"]),\n",
        "    \"approx_total_cost_rub\": float(sec_to_rub(total_cnn_train_sec + hf_val_step3[\"time_sec\"], RUB_PER_HOUR))\n",
        "}\n",
        "\n",
        "with open(\"ensemble_metrics.json\", \"w\", encoding=\"utf-8\") as f:\n",
        "    json.dump(ensemble_metrics, f, ensure_ascii=False, indent=2)\n",
        "\n",
        "print(json.dumps(ensemble_metrics, ensure_ascii=False, indent=2))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 200,
          "referenced_widgets": [
            "817c3cd642994f98af2a53ce8f6fd5f4",
            "9d2c9ebb98714ceb921af005dd0af9ad",
            "95b8ba438a284d3e91b1001f9c47ca08",
            "6035f01339ec456fb4ea79f542da8146",
            "deb80ee1ec444b4694ba2f39bdcda711",
            "e5bb2b6d16c84c399fec4218de6b0458",
            "5a842e1b07584945ba798ca5cf8e6a58",
            "07f91e4fbb2c408186d3ee846cd2eb48",
            "1e305861ad3649568947a906372d8394",
            "13e00d1e3a33458a9ce06f2c511ebe8a",
            "ec3b389fb4c548958ed7c235e8133f89",
            "824fc19c2da64fa38c658f6f78fde028",
            "eb498ba7350a47cdb82bdebd5ca2c0e8",
            "ef76ea860195445aa04253e529fbb9b5",
            "f80c416288484ada8a389275f674d41d",
            "79cb46023d814f2fb9226e447dcdd23f",
            "183553a256b14ee1984f9aa51980bf35",
            "d5630e232b974e2eb0d6a9175f894fd8",
            "39c132eed80344d9816d7e70dcae6398",
            "5f7cef270a2f407e9fe2a51e58889a85",
            "4b5c8e7e625443078ec3bb2982acfcb7",
            "75125a538bb446228b128ca5492de616",
            "7cbd453cc72746ce89698a3a0357a46f",
            "d5ddcc8458494654952ea3a90d246d4a",
            "a44f3ce55d6545e6bb1ea78e55559adf",
            "30642eaafb3f408e88ef02833b7e6081",
            "df00d59a8ba14cb1bc056e94f1c29483",
            "f9f8266f1ce445f9af967df8a92eeb9c",
            "e496644905dd416687bcca3d336f9d62",
            "1f23cc9e8bdc427dac55d0ebc02ec4a5",
            "a409dde8f01a480a80fb35bb14eac3a5",
            "a908bb0317d34019abb65573d37862f7",
            "7ecd633873cc4962b44dc2c80bc55946",
            "cc4cbbeac1474fc1971633b225894fd2",
            "9efb84a0e3ba46c7a9fa94b124ce8861",
            "d678aebe10dd455a9132c5ed36c64bcf",
            "5a0614a7aeef4a8db4150b875db180d6",
            "f3e821895b0c455faa830dd6d670cf7d",
            "d9878e779617478c9a043e1da145610b",
            "f52852f33b41440faa25932d88c662d7",
            "f4ee25ffdf0a404882fc1406e42de69d",
            "87c1a207130949c7b271db503b47d361",
            "9c4752b5121a46438afb9dd07fa2aac7",
            "c7e9c117274f437a85c008729d2ee8b0"
          ]
        },
        "id": "mGaB8hUsDnDY",
        "outputId": "aa701351-5763-4b05-b75f-cd9b515b6292"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/46 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "817c3cd642994f98af2a53ce8f6fd5f4"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/122 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "824fc19c2da64fa38c658f6f78fde028"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "best_w: 0.0 best_val_acc: 0.9207818930041153\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/46 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "7cbd453cc72746ce89698a3a0357a46f"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/122 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "cc4cbbeac1474fc1971633b225894fd2"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{\n",
            "  \"best_cnn_weight\": 0.0,\n",
            "  \"val_acc_for_best_weight\": 0.9207818930041153,\n",
            "  \"test_acc\": 0.9098079561042524,\n",
            "  \"test_f1_macro\": 0.8703987447581212,\n",
            "  \"cnn_train_time_sec_total\": 354.31175254000004,\n",
            "  \"total_pipeline_time_sec\": 395.91163537,\n",
            "  \"approx_total_cost_rub\": 0.0\n",
            "}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "В работе была решена задача классификации изображений пород собак. Для этого были использованы две модели: собственная сверточная нейросеть DogLiteCNN и готовая модель Hugging Face на основе ViT. Собственная CNN показала постепенное улучшение качества в ходе обучения: val_accuracy выросла с 0.0295 до 0.0669, а функция потерь уменьшалась на каждой эпохе. Однако готовая модель Hugging Face оказалась значительно эффективнее и показала accuracy = 0.9208 на валидационной выборке. При построении ансамбля оптимальный вес CNN оказался равен 0.0, то есть лучший результат был достигнут фактически за счёт одной готовой модели. Итоговые метрики на тестовой выборке составили accuracy = 0.9098 и f1_macro = 0.8704. Полученные результаты показывают, что для задачи классификации пород собак предобученная трансформерная модель значительно превосходит простую CNN, обучаемую с нуля."
      ],
      "metadata": {
        "id": "3rrKorKMGCGL"
      }
    }
  ]
}