diff --git "a/T5_data_to_text.ipynb" "b/T5_data_to_text.ipynb" new file mode 100644--- /dev/null +++ "b/T5_data_to_text.ipynb" @@ -0,0 +1,2897 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "b6bacfd5637146aa9d3a8c6e4a5382ac": { + "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_8de85c40cb4646f5ab217d396f4b18dc", + "IPY_MODEL_4724cc46c2a14221b1e5356b4cab3846", + "IPY_MODEL_11798f190a924fa3bf4c32d19c1b0840" + ], + "layout": "IPY_MODEL_93befcf2d3eb4e2b818278778dfb4634" + } + }, + "8de85c40cb4646f5ab217d396f4b18dc": { + "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_89a6fdb01ce14810a9c6f986b7298485", + "placeholder": "​", + "style": "IPY_MODEL_0d3fa3f3e5e5449ba6902d33a003b5fe", + "value": "Downloading (…)ve/main/spiece.model: 100%" + } + }, + "4724cc46c2a14221b1e5356b4cab3846": { + "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_2cde526f646f464e86bb271efa76e9cc", + "max": 791656, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9a5907bdfacf4c1392bb047524a60d10", + "value": 791656 + } + }, + "11798f190a924fa3bf4c32d19c1b0840": { + "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_c44ba72f185f4d2ab53f7140a1e3e187", + "placeholder": "​", + "style": "IPY_MODEL_8cf379b81d9147439bb8d801ba97025d", + "value": " 792k/792k [00:00<00:00, 21.8MB/s]" + } + }, + "93befcf2d3eb4e2b818278778dfb4634": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "89a6fdb01ce14810a9c6f986b7298485": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "0d3fa3f3e5e5449ba6902d33a003b5fe": { + "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": "" + } + }, + "2cde526f646f464e86bb271efa76e9cc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "9a5907bdfacf4c1392bb047524a60d10": { + "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": "" + } + }, + "c44ba72f185f4d2ab53f7140a1e3e187": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "8cf379b81d9147439bb8d801ba97025d": { + "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": "" + } + }, + "85d37445796746eca6d942f3a54d0313": { + "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_51ed125e71804b5397916a7f9e83fd34", + "IPY_MODEL_c7fdc1f9f2b44cd59ef155000138d969", + "IPY_MODEL_275bf3e8abe14932a03dbc175d8771dc" + ], + "layout": "IPY_MODEL_14744f735d284918a93844e4ef9e1926" + } + }, + "51ed125e71804b5397916a7f9e83fd34": { + "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_95e2b1f1570f4fc192d797c1e5faae05", + "placeholder": "​", + "style": "IPY_MODEL_6e97b0561717401fa17c49c1d1e3a7df", + "value": "Downloading (…)lve/main/config.json: 100%" + } + }, + "c7fdc1f9f2b44cd59ef155000138d969": { + "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_cfb32c5c21844b8ca89767d38e86e81d", + "max": 1208, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4a56bdb898cd4009bfcb09ca52ddc31f", + "value": 1208 + } + }, + "275bf3e8abe14932a03dbc175d8771dc": { + "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_f5f381f872d744dab05819ebe58d14ea", + "placeholder": "​", + "style": "IPY_MODEL_9b0b8273ceb3497fb97f7138c92c384d", + "value": " 1.21k/1.21k [00:00<00:00, 46.5kB/s]" + } + }, + "14744f735d284918a93844e4ef9e1926": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "95e2b1f1570f4fc192d797c1e5faae05": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "6e97b0561717401fa17c49c1d1e3a7df": { + "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": "" + } + }, + "cfb32c5c21844b8ca89767d38e86e81d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "4a56bdb898cd4009bfcb09ca52ddc31f": { + "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": "" + } + }, + "f5f381f872d744dab05819ebe58d14ea": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "9b0b8273ceb3497fb97f7138c92c384d": { + "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": "" + } + }, + "d92350188ecd4164b2bcc357b82a42cc": { + "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_22f7d964c70e4f34abca2356aea52cd2", + "IPY_MODEL_888a5b50fc814baeb3d2d8f804cd9f96", + "IPY_MODEL_793d3b7dbced4a8fbad7f22af77c9fbf" + ], + "layout": "IPY_MODEL_7b4b8dbc2a6942e08bdf977a57fc08dd" + } + }, + "22f7d964c70e4f34abca2356aea52cd2": { + "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_d845e183bec44b11b51e4f158a7cba91", + "placeholder": "​", + "style": "IPY_MODEL_6cc10f68126e43b5a30e6b301763cf8a", + "value": "Downloading model.safetensors: 100%" + } + }, + "888a5b50fc814baeb3d2d8f804cd9f96": { + "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_90bd019289cb4aa1b99744832afc58fc", + "max": 891646390, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f122699bf41d4326a64624fbf8fb9794", + "value": 891646390 + } + }, + "793d3b7dbced4a8fbad7f22af77c9fbf": { + "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_744269868d7a4e67b23db22be2ba2d95", + "placeholder": "​", + "style": "IPY_MODEL_17ea9a6ccdbc4c9e8e56ce9326aaaf44", + "value": " 892M/892M [00:04<00:00, 254MB/s]" + } + }, + "7b4b8dbc2a6942e08bdf977a57fc08dd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "d845e183bec44b11b51e4f158a7cba91": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "6cc10f68126e43b5a30e6b301763cf8a": { + "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": "" + } + }, + "90bd019289cb4aa1b99744832afc58fc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "f122699bf41d4326a64624fbf8fb9794": { + "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": "" + } + }, + "744269868d7a4e67b23db22be2ba2d95": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "17ea9a6ccdbc4c9e8e56ce9326aaaf44": { + "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": "" + } + }, + "9f401178ddb84bb6b3f94d9a13b60796": { + "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_4206a193278d417db00f7f3937e749ac", + "IPY_MODEL_ccfec96512224d0c84906250bf73685f", + "IPY_MODEL_cb1c5aac10494bc3abd9868b20409987" + ], + "layout": "IPY_MODEL_a34b12adb6714f24978885f8827c029a" + } + }, + "4206a193278d417db00f7f3937e749ac": { + "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_f81fe5f51db94395bfbc5fac5d0249c4", + "placeholder": "​", + "style": "IPY_MODEL_683737fb0e374686ab72206352d015df", + "value": "Downloading (…)neration_config.json: 100%" + } + }, + "ccfec96512224d0c84906250bf73685f": { + "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_e32277df5ec24214a1a026aa15c30ee9", + "max": 147, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9450813a1a2d454d948e8ab033d4a398", + "value": 147 + } + }, + "cb1c5aac10494bc3abd9868b20409987": { + "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_e5a37d20dc634596bb1484b227bb403a", + "placeholder": "​", + "style": "IPY_MODEL_f6d63cd279bb473f936a819ae016796e", + "value": " 147/147 [00:00<00:00, 10.4kB/s]" + } + }, + "a34b12adb6714f24978885f8827c029a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "f81fe5f51db94395bfbc5fac5d0249c4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "683737fb0e374686ab72206352d015df": { + "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": "" + } + }, + "e32277df5ec24214a1a026aa15c30ee9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "9450813a1a2d454d948e8ab033d4a398": { + "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": "" + } + }, + "e5a37d20dc634596bb1484b227bb403a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": 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 + } + }, + "f6d63cd279bb473f936a819ae016796e": { + "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": "" + } + } + } + }, + "accelerator": "GPU" + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "Viuf5RhzKG00" + }, + "source": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "-gogiO-IKF-e" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "vYq5R3XiKKDf" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "MetMTAcsKKG_" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sf1uUqSEKKgk" + }, + "source": [ + "## Installing the required packages" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "A6ki1-m-5UUA", + "outputId": "3930708d-27f4-4afc-a689-1f2f46a5bce1" + }, + "source": [ + "!pip install transformers\n", + "!pip install sentencepiece" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting transformers\n", + " Downloading transformers-4.31.0-py3-none-any.whl (7.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.4/7.4 MB\u001b[0m \u001b[31m68.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from transformers) (3.12.2)\n", + "Collecting huggingface-hub<1.0,>=0.14.1 (from transformers)\n", + " Downloading huggingface_hub-0.16.4-py3-none-any.whl (268 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m268.8/268.8 kB\u001b[0m \u001b[31m31.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (1.23.5)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers) (23.1)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (6.0.1)\n", + "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (2022.10.31)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers) (2.31.0)\n", + "Collecting tokenizers!=0.11.3,<0.14,>=0.11.1 (from transformers)\n", + " Downloading tokenizers-0.13.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.8/7.8 MB\u001b[0m \u001b[31m106.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting safetensors>=0.3.1 (from transformers)\n", + " Downloading safetensors-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m80.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers) (4.65.0)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.14.1->transformers) (2023.6.0)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.14.1->transformers) (4.7.1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.2.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (1.26.16)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2023.7.22)\n", + "Installing collected packages: tokenizers, safetensors, huggingface-hub, transformers\n", + "Successfully installed huggingface-hub-0.16.4 safetensors-0.3.2 tokenizers-0.13.3 transformers-4.31.0\n", + "Collecting sentencepiece\n", + " Downloading sentencepiece-0.1.99-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: sentencepiece\n", + "Successfully installed sentencepiece-0.1.99\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CalKR6o4KP22" + }, + "source": [ + "## Importing required libraries" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "CB6rH4GenWpN" + }, + "source": [ + "import pandas as pd\n", + "import os\n", + "import torch\n", + "from transformers import T5Tokenizer, T5ForConditionalGeneration\n", + "from transformers.optimization import Adafactor\n", + "import time\n", + "import warnings\n", + "warnings.filterwarnings('ignore')" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "4GZK-pXuKUw9" + }, + "source": [ + "import urllib.request\n", + "import zipfile\n", + "url = 'https://gitlab.com/shimorina/webnlg-dataset/-/archive/master/webnlg-dataset-master.zip?path=release_v3.0/en/train'\n", + "urllib.request.urlretrieve(url, 'web.zip')\n", + "with zipfile.ZipFile('web.zip', 'r') as zip_ref:\n", + " zip_ref.extractall('web')\n", + "import glob\n", + "import os\n", + "import re\n", + "import xml.etree.ElementTree as ET\n", + "import pandas as pd\n", + "files = glob.glob(\"/content/web/webnlg-dataset-master-release_v3.0-en-train/release_v3.0/en/train/**/*.xml\", recursive=True)\n", + "triple_re=re.compile('(\\d)triples')\n", + "data_dct={}\n", + "for file in files:\n", + " tree = ET.parse(file)\n", + " root = tree.getroot()\n", + " triples_num=int(triple_re.findall(file)[0])\n", + " for sub_root in root:\n", + " for ss_root in sub_root:\n", + " strutured_master=[]\n", + " unstructured=[]\n", + " for entry in ss_root:\n", + " unstructured.append(entry.text)\n", + " strutured=[triple.text for triple in entry]\n", + " strutured_master.extend(strutured)\n", + " unstructured=[i for i in unstructured if i.replace('\\n','').strip()!='' ]\n", + " strutured_master=strutured_master[-triples_num:]\n", + " strutured_master_str=(' && ').join(strutured_master)\n", + " data_dct[strutured_master_str]=unstructured\n", + "mdata_dct={\"prefix\":[], \"input_text\":[], \"target_text\":[]}\n", + "for st,unst in data_dct.items():\n", + " for i in unst:\n", + " mdata_dct['prefix'].append('webNLG')\n", + " mdata_dct['input_text'].append(st)\n", + " mdata_dct['target_text'].append(i)\n", + "\n", + "\n", + "df=pd.DataFrame(mdata_dct)\n", + "df.to_csv('webNLG2020_train.csv')\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-aWMq3DOKl34" + }, + "source": [ + "## Loading the processed data" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "8CTSGvJQVChn" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hq0jrINwVNLr" + }, + "source": [ + "## Please look at the code [here](https://gist.github.com/MathewAlexander/d4853c2268a2293e479b773f0c317030) to preprocess the data" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "VKZGSyWA0NUk", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "dcccfda5-037a-4264-e010-93f069bd95d6" + }, + "source": [ + "#cd drive/My\\ Drive/WebNLG2020/" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/content/drive/My Drive/WebNLG2020\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "BQ2uifxUnVgk" + }, + "source": [ + "train_df=pd.read_csv('/content/webNLG2020_train.csv', index_col=[0])" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "j_dPYbsVK5zO" + }, + "source": [ + "Trimming off a few data points and so that a batch would not leave any remainder, hence some lines of codes can be avoided (Okay, this might be a hackish way of doing it )" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-WpyPzBKyXf1" + }, + "source": [ + "train_df=train_df.iloc[ :35000,:]" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "WgsIcgFgRCwN" + }, + "source": [ + "train_df=train_df.sample(frac = 1)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "zGfaigiqnZW5" + }, + "source": [ + "batch_size=8\n", + "num_of_batches=len(train_df)/batch_size\n", + "num_of_epochs=4" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "SQDfdl3mxYf_" + }, + "source": [ + "num_of_batches=int(num_of_batches)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "L_QyyxbkKXf2" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9kfjkXbiKeyU" + }, + "source": [ + "Checking for the GPU availability" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "nHkcKfKRr1BC", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ae883000-306d-46c7-e922-d2e6440b9dd1" + }, + "source": [ + "if torch.cuda.is_available():\n", + " dev = torch.device(\"cuda:0\")\n", + " print(\"Running on the GPU\")\n", + "else:\n", + " dev = torch.device(\"cpu\")\n", + " print(\"Running on the CPU\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running on the GPU\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_JaUpURdLAla" + }, + "source": [ + "## Loading the pretrained model and tokenizer" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "xVAXjd6wsOM6", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "b6bacfd5637146aa9d3a8c6e4a5382ac", + "8de85c40cb4646f5ab217d396f4b18dc", + "4724cc46c2a14221b1e5356b4cab3846", + "11798f190a924fa3bf4c32d19c1b0840", + "93befcf2d3eb4e2b818278778dfb4634", + "89a6fdb01ce14810a9c6f986b7298485", + "0d3fa3f3e5e5449ba6902d33a003b5fe", + "2cde526f646f464e86bb271efa76e9cc", + "9a5907bdfacf4c1392bb047524a60d10", + "c44ba72f185f4d2ab53f7140a1e3e187", + "8cf379b81d9147439bb8d801ba97025d", + "85d37445796746eca6d942f3a54d0313", + "51ed125e71804b5397916a7f9e83fd34", + "c7fdc1f9f2b44cd59ef155000138d969", + "275bf3e8abe14932a03dbc175d8771dc", + "14744f735d284918a93844e4ef9e1926", + "95e2b1f1570f4fc192d797c1e5faae05", + "6e97b0561717401fa17c49c1d1e3a7df", + "cfb32c5c21844b8ca89767d38e86e81d", + "4a56bdb898cd4009bfcb09ca52ddc31f", + "f5f381f872d744dab05819ebe58d14ea", + "9b0b8273ceb3497fb97f7138c92c384d", + "d92350188ecd4164b2bcc357b82a42cc", + "22f7d964c70e4f34abca2356aea52cd2", + "888a5b50fc814baeb3d2d8f804cd9f96", + "793d3b7dbced4a8fbad7f22af77c9fbf", + "7b4b8dbc2a6942e08bdf977a57fc08dd", + "d845e183bec44b11b51e4f158a7cba91", + "6cc10f68126e43b5a30e6b301763cf8a", + "90bd019289cb4aa1b99744832afc58fc", + "f122699bf41d4326a64624fbf8fb9794", + "744269868d7a4e67b23db22be2ba2d95", + "17ea9a6ccdbc4c9e8e56ce9326aaaf44", + "9f401178ddb84bb6b3f94d9a13b60796", + "4206a193278d417db00f7f3937e749ac", + "ccfec96512224d0c84906250bf73685f", + "cb1c5aac10494bc3abd9868b20409987", + "a34b12adb6714f24978885f8827c029a", + "f81fe5f51db94395bfbc5fac5d0249c4", + "683737fb0e374686ab72206352d015df", + "e32277df5ec24214a1a026aa15c30ee9", + "9450813a1a2d454d948e8ab033d4a398", + "e5a37d20dc634596bb1484b227bb403a", + "f6d63cd279bb473f936a819ae016796e" + ] + }, + "outputId": "2f647df3-6e0d-44c3-eaaf-6bea2adf3ddf" + }, + "source": [ + "tokenizer = T5Tokenizer.from_pretrained('t5-base')\n", + "model = T5ForConditionalGeneration.from_pretrained('t5-base', return_dict=True)\n", + "#moving the model to device(GPU/CPU)\n", + "model.to(dev)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading (…)ve/main/spiece.model: 0%| | 0.00/792k [00:00. This means that tokens that come after special tokens will not be properly handled. We recommend you to read the related pull request available at https://github.com/huggingface/transformers/pull/24565\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading model.safetensors: 0%| | 0.00/892M [00:00\n", + " {value}\n", + " \n", + " \"\"\".format(loss=loss,value=value, max=max))" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "6i7zx4DmC_ap" + }, + "source": [ + "num_of_epochs=1" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hMe1hKshLgJn" + }, + "source": [ + "## Training the model" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "qTvda_lWx2nC", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 88 + }, + "outputId": "64bb6d2f-4b78-476b-9f5b-fbb157be73e3" + }, + "source": [ + "#Sets the module in training mode\n", + "model.train()\n", + "\n", + "loss_per_10_steps=[]\n", + "for epoch in range(1,num_of_epochs+1):\n", + " print('Running epoch: {}'.format(epoch))\n", + "\n", + " running_loss=0\n", + "\n", + " out = display(progress(1, num_of_batches+1), display_id=True)\n", + " for i in range(num_of_batches):\n", + " inputbatch=[]\n", + " labelbatch=[]\n", + " new_df=train_df[i*batch_size:i*batch_size+batch_size]\n", + " for indx,row in new_df.iterrows():\n", + " input = 'WebNLG: '+row['input_text']+''\n", + " labels = row['target_text']+''\n", + " inputbatch.append(input)\n", + " labelbatch.append(labels)\n", + " inputbatch=tokenizer.batch_encode_plus(inputbatch,padding=True,max_length=400,return_tensors='pt')[\"input_ids\"]\n", + " labelbatch=tokenizer.batch_encode_plus(labelbatch,padding=True,max_length=400,return_tensors=\"pt\") [\"input_ids\"]\n", + " inputbatch=inputbatch.to(dev)\n", + " labelbatch=labelbatch.to(dev)\n", + "\n", + " # clear out the gradients of all Variables\n", + " optimizer.zero_grad()\n", + "\n", + " # Forward propogation\n", + " outputs = model(input_ids=inputbatch, labels=labelbatch)\n", + " loss = outputs.loss\n", + " loss_num=loss.item()\n", + " logits = outputs.logits\n", + " running_loss+=loss_num\n", + " if i%10 ==0:\n", + " loss_per_10_steps.append(loss_num)\n", + " out.update(progress(loss_num,i, num_of_batches+1))\n", + "\n", + " # calculating the gradients\n", + " loss.backward()\n", + "\n", + " #updating the params\n", + " optimizer.step()\n", + "\n", + " running_loss=running_loss/int(num_of_batches)\n", + " print('Epoch: {} , Running loss: {}'.format(epoch,running_loss))\n" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running epoch: 1\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + " Batch loss :0.3725753724575043\n", + " \n", + " 4374\n", + " \n", + " " + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch: 1 , Running loss: 0.5019446459702083\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UwVEDrdZ545G" + }, + "source": [ + "## Plotting the loss over time" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "7quhDpSxxTGL", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "outputId": "e5bbaa55-86ad-4075-b98d-96e7fc1acc78" + }, + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "steps = [i*100 for i in range(len(loss_per_10_steps))]\n", + "\n", + "plt.plot(steps, loss_per_10_steps)\n", + "plt.title('Loss')\n", + "plt.xlabel('Steps')\n", + "plt.ylabel('Loss')\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Nv3VHD585lc9" + }, + "source": [ + "## Testing the model" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JD6M4tb8l2Vs", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 36 + }, + "outputId": "ef787336-7fc6-433d-e0fe-1a2c2ae0942c" + }, + "source": [ + "model.eval()\n", + "input_ids = tokenizer.encode(\"WebNLG: sidharth | hometown | Delhi && sidharth | play | football \", return_tensors=\"pt\") # Batch size 1\n", + "input_ids=input_ids.to(dev)\n", + "outputs = model.generate(input_ids)\n", + "tokenizer.decode(outputs[0])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "' Sidharth, whose hometown is in Delhi, plays football.'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 16 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "owrlOe0L62WK" + }, + "source": [ + "Before testing the model further, lets learn how to serialize it and load from the path" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NG5aC_Yi5aQR" + }, + "source": [ + "## Serializing the trained model" + ] + }, + { + "cell_type": "code", + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4lKDkSkdsUbU", + "outputId": "4cdb774c-cc10-467a-ebff-73adf56d5d20" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Mounted at /content/drive\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OZ1A6VdZtLTs" + }, + "source": [ + "torch.save(model.state_dict(),'/content/drive/MyDrive/LS_NLP_Final_Project/pytoch_model.bin')\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ea11_6C7Qth7" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "vKiXqlxqzZ7b" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "osi7Pi2ptSAq" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "sdUbFoxPGjR7" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rxUEcuX_Gkkc" + }, + "source": [ + "## Downloading the config file" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "UlhGuidlyM5v", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "b8fc4c3c-5edb-43d0-b591-b1caf6422098" + }, + "source": [ + "import locale\n", + "def getpreferredencoding(do_setlocale = True):\n", + " return \"UTF-8\"\n", + "locale.getpreferredencoding = getpreferredencoding\n", + "\n", + "!wget https://s3.amazonaws.com/models.huggingface.co/bert/t5-base-config.json" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "--2023-08-08 20:13:46-- https://s3.amazonaws.com/models.huggingface.co/bert/t5-base-config.json\n", + "Resolving s3.amazonaws.com (s3.amazonaws.com)... 16.182.40.88, 54.231.134.144, 54.231.230.96, ...\n", + "Connecting to s3.amazonaws.com (s3.amazonaws.com)|16.182.40.88|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 1199 (1.2K) [application/json]\n", + "Saving to: ‘t5-base-config.json’\n", + "\n", + "t5-base-config.json 100%[===================>] 1.17K --.-KB/s in 0s \n", + "\n", + "2023-08-08 20:13:47 (63.9 MB/s) - ‘t5-base-config.json’ saved [1199/1199]\n", + "\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "owUdVXZ9GvPt" + }, + "source": [ + "#model=torch.load(\"/content/pytoch_model.bin\")" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f_2MGB0jGv7T" + }, + "source": [ + "## Loading the trained model from the path" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ffh8_weNtSMN" + }, + "source": [ + "model = T5ForConditionalGeneration.from_pretrained('/content/pytoch_model.bin', return_dict=True,config='t5-base-config.json')\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "PfpNp3Q8HZLu" + }, + "source": [], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uXNP97trHZt9" + }, + "source": [ + "## The Inference function" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "8bFXJDpQEJ-p" + }, + "source": [ + "def generate(text):\n", + " model.eval()\n", + " input_ids = tokenizer.encode(\"WebNLG:{} \".format(text), return_tensors=\"pt\") # Batch size 1\n", + " # input_ids.to(dev)\n", + " s = time.time()\n", + " outputs = model.generate(input_ids)\n", + " gen_text=tokenizer.decode(outputs[0]).replace('','').replace('','')\n", + " elapsed = time.time() - s\n", + " print('Generated in {} seconds'.format(str(elapsed)[:4]))\n", + "\n", + "\n", + " return gen_text" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "pip install gradio" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7gRfAouZzkIe", + "outputId": "17a4e0e4-ed17-4f91-a77a-327856a9e686" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting gradio\n", + " Downloading gradio-3.39.0-py3-none-any.whl (19.9 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m19.9/19.9 MB\u001b[0m \u001b[31m29.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting aiofiles<24.0,>=22.0 (from gradio)\n", + " Downloading aiofiles-23.1.0-py3-none-any.whl (14 kB)\n", + "Requirement already satisfied: aiohttp~=3.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (3.8.5)\n", + "Requirement already satisfied: altair<6.0,>=4.2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (4.2.2)\n", + "Collecting fastapi (from gradio)\n", + " Downloading fastapi-0.101.0-py3-none-any.whl (65 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m65.7/65.7 kB\u001b[0m \u001b[31m8.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ffmpy (from gradio)\n", + " Downloading ffmpy-0.3.1.tar.gz (5.5 kB)\n", + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting gradio-client>=0.3.0 (from gradio)\n", + " Downloading gradio_client-0.3.0-py3-none-any.whl (294 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m294.2/294.2 kB\u001b[0m \u001b[31m17.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpx (from gradio)\n", + " Downloading httpx-0.24.1-py3-none-any.whl (75 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.4/75.4 kB\u001b[0m \u001b[31m9.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: huggingface-hub>=0.14.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.16.4)\n", + "Requirement already satisfied: jinja2<4.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (3.1.2)\n", + "Requirement already satisfied: markdown-it-py[linkify]>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (3.0.0)\n", + "Requirement already satisfied: markupsafe~=2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (2.1.3)\n", + "Requirement already satisfied: matplotlib~=3.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (3.7.1)\n", + "Collecting mdit-py-plugins<=0.3.3 (from gradio)\n", + " Downloading mdit_py_plugins-0.3.3-py3-none-any.whl (50 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.5/50.5 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy~=1.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (1.23.5)\n", + "Collecting orjson~=3.0 (from gradio)\n", + " Downloading orjson-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m140.3/140.3 kB\u001b[0m \u001b[31m19.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from gradio) (23.1)\n", + "Requirement already satisfied: pandas<3.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (1.5.3)\n", + "Requirement already satisfied: pillow<11.0,>=8.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (9.4.0)\n", + "Requirement already satisfied: pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,<3.0.0,>=1.7.4 in /usr/local/lib/python3.10/dist-packages (from gradio) (1.10.12)\n", + "Collecting pydub (from gradio)\n", + " Downloading pydub-0.25.1-py2.py3-none-any.whl (32 kB)\n", + "Collecting python-multipart (from gradio)\n", + " Downloading python_multipart-0.0.6-py3-none-any.whl (45 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m45.7/45.7 kB\u001b[0m \u001b[31m6.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pyyaml<7.0,>=5.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (6.0.1)\n", + "Requirement already satisfied: requests~=2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (2.31.0)\n", + "Collecting semantic-version~=2.0 (from gradio)\n", + " Downloading semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)\n", + "Requirement already satisfied: typing-extensions~=4.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (4.7.1)\n", + "Collecting uvicorn>=0.14.0 (from gradio)\n", + " Downloading uvicorn-0.23.2-py3-none-any.whl (59 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m59.5/59.5 kB\u001b[0m \u001b[31m8.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting websockets<12.0,>=10.0 (from gradio)\n", + " Downloading websockets-11.0.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (129 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m129.9/129.9 kB\u001b[0m \u001b[31m16.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp~=3.0->gradio) (23.1.0)\n", + "Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp~=3.0->gradio) (3.2.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp~=3.0->gradio) (6.0.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.10/dist-packages (from aiohttp~=3.0->gradio) (4.0.2)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp~=3.0->gradio) (1.9.2)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp~=3.0->gradio) (1.4.0)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp~=3.0->gradio) (1.3.1)\n", + "Requirement already satisfied: entrypoints in /usr/local/lib/python3.10/dist-packages (from altair<6.0,>=4.2.0->gradio) (0.4)\n", + "Requirement already satisfied: jsonschema>=3.0 in /usr/local/lib/python3.10/dist-packages (from altair<6.0,>=4.2.0->gradio) (4.3.3)\n", + "Requirement already satisfied: toolz in /usr/local/lib/python3.10/dist-packages (from altair<6.0,>=4.2.0->gradio) (0.12.0)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from gradio-client>=0.3.0->gradio) (2023.6.0)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.14.0->gradio) (3.12.2)\n", + "Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.14.0->gradio) (4.65.0)\n", + "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py[linkify]>=2.0.0->gradio) (0.1.2)\n", + "Requirement already satisfied: linkify-it-py<3,>=1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py[linkify]>=2.0.0->gradio) (2.0.2)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (1.1.0)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (0.11.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (4.42.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (1.4.4)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (3.1.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (2.8.2)\n", + "INFO: pip is looking at multiple versions of mdit-py-plugins to determine which version is compatible with other requirements. This could take a while.\n", + "Collecting mdit-py-plugins<=0.3.3 (from gradio)\n", + " Downloading mdit_py_plugins-0.3.2-py3-none-any.whl (50 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.4/50.4 kB\u001b[0m \u001b[31m5.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Downloading mdit_py_plugins-0.3.1-py3-none-any.whl (46 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m46.5/46.5 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Downloading mdit_py_plugins-0.3.0-py3-none-any.whl (43 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.7/43.7 kB\u001b[0m \u001b[31m5.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Downloading mdit_py_plugins-0.2.8-py3-none-any.whl (41 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m41.0/41.0 kB\u001b[0m \u001b[31m3.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Downloading mdit_py_plugins-0.2.7-py3-none-any.whl (41 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m41.0/41.0 kB\u001b[0m \u001b[31m5.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Downloading mdit_py_plugins-0.2.6-py3-none-any.whl (39 kB)\n", + " Downloading mdit_py_plugins-0.2.5-py3-none-any.whl (39 kB)\n", + "INFO: pip is looking at multiple versions of mdit-py-plugins to determine which version is compatible with other requirements. This could take a while.\n", + " Downloading mdit_py_plugins-0.2.4-py3-none-any.whl (39 kB)\n", + " Downloading mdit_py_plugins-0.2.3-py3-none-any.whl (39 kB)\n", + " Downloading mdit_py_plugins-0.2.2-py3-none-any.whl (39 kB)\n", + " Downloading mdit_py_plugins-0.2.1-py3-none-any.whl (38 kB)\n", + " Downloading mdit_py_plugins-0.2.0-py3-none-any.whl (38 kB)\n", + "INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.\n", + " Downloading mdit_py_plugins-0.1.0-py3-none-any.whl (37 kB)\n", + "Collecting markdown-it-py[linkify]>=2.0.0 (from gradio)\n", + " Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m87.5/87.5 kB\u001b[0m \u001b[31m11.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Downloading markdown_it_py-2.2.0-py3-none-any.whl (84 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m84.5/84.5 kB\u001b[0m \u001b[31m11.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0,>=1.0->gradio) (2022.7.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests~=2.0->gradio) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests~=2.0->gradio) (1.26.16)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests~=2.0->gradio) (2023.7.22)\n", + "Requirement already satisfied: click>=7.0 in /usr/local/lib/python3.10/dist-packages (from uvicorn>=0.14.0->gradio) (8.1.6)\n", + "Collecting h11>=0.8 (from uvicorn>=0.14.0->gradio)\n", + " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting starlette<0.28.0,>=0.27.0 (from fastapi->gradio)\n", + " Downloading starlette-0.27.0-py3-none-any.whl (66 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.0/67.0 kB\u001b[0m \u001b[31m8.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpcore<0.18.0,>=0.15.0 (from httpx->gradio)\n", + " Downloading httpcore-0.17.3-py3-none-any.whl (74 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m74.5/74.5 kB\u001b[0m \u001b[31m8.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx->gradio) (1.3.0)\n", + "Requirement already satisfied: anyio<5.0,>=3.0 in /usr/local/lib/python3.10/dist-packages (from httpcore<0.18.0,>=0.15.0->httpx->gradio) (3.7.1)\n", + "Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio) (0.19.3)\n", + "Requirement already satisfied: uc-micro-py in /usr/local/lib/python3.10/dist-packages (from linkify-it-py<3,>=1->markdown-it-py[linkify]>=2.0.0->gradio) (1.0.2)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib~=3.0->gradio) (1.16.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio<5.0,>=3.0->httpcore<0.18.0,>=0.15.0->httpx->gradio) (1.1.2)\n", + "Building wheels for collected packages: ffmpy\n", + " Building wheel for ffmpy (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for ffmpy: filename=ffmpy-0.3.1-py3-none-any.whl size=5579 sha256=ec75e5d00514110aa7347e1164f940ac7479876f74618a24f66eda30b81cb017\n", + " Stored in directory: /root/.cache/pip/wheels/01/a6/d1/1c0828c304a4283b2c1639a09ad86f83d7c487ef34c6b4a1bf\n", + "Successfully built ffmpy\n", + "Installing collected packages: pydub, ffmpy, websockets, semantic-version, python-multipart, orjson, markdown-it-py, h11, aiofiles, uvicorn, starlette, mdit-py-plugins, httpcore, httpx, fastapi, gradio-client, gradio\n", + " Attempting uninstall: markdown-it-py\n", + " Found existing installation: markdown-it-py 3.0.0\n", + " Uninstalling markdown-it-py-3.0.0:\n", + " Successfully uninstalled markdown-it-py-3.0.0\n", + " Attempting uninstall: mdit-py-plugins\n", + " Found existing installation: mdit-py-plugins 0.4.0\n", + " Uninstalling mdit-py-plugins-0.4.0:\n", + " Successfully uninstalled mdit-py-plugins-0.4.0\n", + "Successfully installed aiofiles-23.1.0 fastapi-0.101.0 ffmpy-0.3.1 gradio-3.39.0 gradio-client-0.3.0 h11-0.14.0 httpcore-0.17.3 httpx-0.24.1 markdown-it-py-2.2.0 mdit-py-plugins-0.3.3 orjson-3.9.4 pydub-0.25.1 python-multipart-0.0.6 semantic-version-2.10.0 starlette-0.27.0 uvicorn-0.23.2 websockets-11.0.3\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "IIKmb1jR2XS3", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 619 + }, + "outputId": "55e79d19-2cc8-4220-f45b-1abea08bd6bb" + }, + "source": [ + "import gradio as gr\n", + "\n", + "\n", + "\n", + "# Define the Gradio interface\n", + "iface = gr.Interface(\n", + " fn=generate, # Replace with your actual function\n", + " inputs=gr.inputs.Textbox(lines=2, placeholder=\"Enter text here...\"),\n", + " outputs=gr.outputs.Textbox(),\n", + " title=\"Text Generation App\",\n", + " description=\"Enter some text and see the generated output.\",\n", + ")\n", + "\n", + "# Launch the Gradio interface\n", + "iface.launch()\n" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Colab notebook detected. To show errors in colab notebook, set debug=True in launch()\n", + "Note: opening Chrome Inspector may crash demo inside Colab notebooks.\n", + "\n", + "To create a public link, set `share=True` in `launch()`.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "application/javascript": [ + "(async (port, path, width, height, cache, element) => {\n", + " if (!google.colab.kernel.accessAllowed && !cache) {\n", + " return;\n", + " }\n", + " element.appendChild(document.createTextNode(''));\n", + " const url = await google.colab.kernel.proxyPort(port, {cache});\n", + "\n", + " const external_link = document.createElement('div');\n", + " external_link.innerHTML = `\n", + " \n", + " `;\n", + " element.appendChild(external_link);\n", + "\n", + " const iframe = document.createElement('iframe');\n", + " iframe.src = new URL(path, url).toString();\n", + " iframe.height = height;\n", + " iframe.allow = \"autoplay; camera; microphone; clipboard-read; clipboard-write;\"\n", + " iframe.width = width;\n", + " iframe.style.border = 0;\n", + " element.appendChild(iframe);\n", + " })(7860, \"/\", \"100%\", 500, false, window.element)" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [] + }, + "metadata": {}, + "execution_count": 43 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LlKSpuxcIP_5" + }, + "source": [ + "# Now, Lets test it out !" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dlKdla7l8Gs9", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + }, + "outputId": "8b92231e-e2d0-4b31-9794-c791376f8e72" + }, + "source": [ + "generate('Russia | leader | Putin')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Generated in 0.64 seconds\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "' The leader of Russia is Putin.'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 34 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uThvhALg7m3s", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + }, + "outputId": "263c7318-552f-49c4-f8d8-63586ffd776b" + }, + "source": [ + "generate('Sidhath | profession | Doctor && Sidharth | home_town | Bombay')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Generated in 1.47 seconds\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Sidhath, a doctor, is a doctor in the city of Bomba'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 35 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3y08dQ7y75VX", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + }, + "outputId": "1fe45386-69e7-4229-91e4-564274cea941" + }, + "source": [ + "generate('Nie_Haisheng | birthDate | 1964-10-13 && Nie_Haisheng | occupation | Fighter_pilot ')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Generated in 1.17 seconds\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Born on October 13th, 1964, Nie Haisheng served as a fighter pilot.'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 36 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "DQkgoIHB9bOu" + }, + "source": [ + "generate('Bananaman | creator | Steve_Bright && Bananaman | broadcastedBy | BBC')" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "h8X3LAar9ohw" + }, + "source": [ + "generate('Bananaman | lastAired | \"1986-04-15\" && Bananaman | creator | Steve_Bright')" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "3QHRL7QG9olX" + }, + "source": [ + "generate('Alan_B._Miller_Hall | currentTenants | Mason_School_of_Business && Alan_B._Miller_Hall | location | Williamsburg,_Virginia')" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "aQ9SahJsHKrB" + }, + "source": [], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file