diff --git a/integrations/model-training/torchtune/notebooks/Comet_and_torchtune.ipynb b/integrations/model-training/torchtune/notebooks/Comet_and_torchtune.ipynb new file mode 100644 index 0000000..cb5fc89 --- /dev/null +++ b/integrations/model-training/torchtune/notebooks/Comet_and_torchtune.ipynb @@ -0,0 +1,1344 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "QGh1ELq9353o" + }, + "source": [ + "\n", + " \n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/comet-ml/comet-examples/blob/master/integrations/model-training/torchtune/notebooks/Comet_and_torchtune.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZwFdmc4rzjwM" + }, + "source": [ + "# Comet and torchtune\n", + "\n", + "[Comet](https://www.comet.com/site/?utm_medium=colab&utm_source=comet-examples&utm_campaign=torchtune) is an MLOps platform designed to help data scientists and teams build better models faster! Comet provides tooling to track, explain, manage, and monitor your models in a single place! It works with Jupyter notebooks and scripts and-- most importantly--it's 100% free to get started!\n", + "\n", + "[torchtune](https://github.com/pytorch/torchtune) is a PyTorch-native library for easily authoring, fine-tuning and experimenting with LLMs.\n", + "\n", + "Instrument your torchtune training runs with Comet to start managing experiments with efficiency, reproducibility, and collaboration in mind.\n", + "\n", + "Find more information about [our integration with torchtune here](https://www.comet.com/docs/v2/integrations/third-party-tools/torchtune?utm_medium=colab&utm_source=comet-examples&utm_campaign=torchtune) or [learn about our other integrations here](https://www.comet.com/docs/v2/integrations?utm_medium=colab&utm_source=comet-examples&utm_campaign=torchtune)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SE2dLI22Muuy" + }, + "source": [ + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "🌟 Can't wait? For a preview for what's to come, check out the completed Comet project [here](https://www.comet.com/examples/comet-examples-torchtune-mistral7b?utm_medium=colab&utm_source=comet-examples&utm_campaign=torchtune)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "PM3nbzHr0BwP", + "outputId": "eed9156a-2ed4-4394-9c02-36682e18a81e" + }, + "outputs": [], + "source": [ + "!git clone https://github.com/pytorch/torchtune/" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2ZyMqeuL4FUi" + }, + "source": [ + "## Install dependencies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Vq4bUdro0F-Y", + "outputId": "4858ebfc-9a4c-44ed-eee8-5e8f7f5b1acd" + }, + "outputs": [], + "source": [ + "%pip install \"./torchtune[dev]\" comet_ml torchao" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LEcuScqX4Klr" + }, + "source": [ + "## Login to Comet\n", + "For CLI, use `comet login`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "EssuzOD10KcM", + "outputId": "d0c4f201-8caf-4dc1-c753-79972fd98671" + }, + "outputs": [], + "source": [ + "import comet_ml\n", + "\n", + "comet_ml.login()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tZjS8Zt34jWL" + }, + "source": [ + "## Download the model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IouDAk1FyiU7" + }, + "source": [ + "You need to login to HF to download that model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 145, + "referenced_widgets": [ + "f1daee1cb79345d5ae3d17c5a05c53fc", + "25f101b15513458199fbafc80fbbffb7", + "460a4aa60c1b476f8c52840236ef6c75", + "e8c889cbe34c4302834294d5bc32ef9f", + "fa50fe5baa1849deb810279aaa6bc328", + "4e1da00bc2644367b9a686c2ae526596", + "2fe1d18543ec48a982ae760dfb2f72b6", + "25a489ec736649f7ac70e7809150ba40", + "5ca47283ef9a4f7ea6259c9cb53b62ea", + "c0e75c4c9973464c8e86007f1d39c9f7", + "00867cbdb14b451ebb9d6c4ca2e10d66", + "8d106b78dab5441f9cf1e6bd3f7bdde0", + "57fcb83a2d754d77bbfa7365a3d9ba48", + "9228744c40e848f0a068004cb793053e", + "a7ab20d37d2e4a739c4bc35a92057e9e", + "0439c3fe41074d63902bc4b9f29a64c2", + "d240c85832074298a94c1a1479809216", + "084762ff283f4090ba399cc48997adea", + "c431c24c29bf49668298ecded9f89dde", + "546dfba48f8c4dc09b6f236fdd98f9e6", + "cf87b2a7a3cf4c9f9c3ccd5fd9b1f669", + "044534d6450b47c98c0fb270ef46000e", + "49d3ecb4668244ea98da8313f6347ed9", + "c6f120038d844558826bc4db9640dd77", + "c69ea844b67e4b38b35ff533d67e68ec", + "270340b8769744c8a027e79539838cd7", + "73ba358ba797484ea29299ae50611bc2", + "06bf71e3b45c451ca5841672368a1172", + "db85bc56477c4350a6d39c79610373e6", + "aa9be702a494436c92d6aac8cf051df6", + "90c0c3d0956540dd9ff04c9db7cba781", + "2cd5cd873ee74f5c92c7ad5eeee80ad2" + ] + }, + "id": "d3RHkE7syqSP", + "outputId": "639ebf8d-6b9a-49b1-af29-b609b1c68fdc" + }, + "outputs": [], + "source": [ + "from huggingface_hub import notebook_login\n", + "\n", + "notebook_login()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "PaWPU4gA0ST4", + "outputId": "d162e2e7-19ee-4382-ad9c-dba31981fb9f" + }, + "outputs": [], + "source": [ + "!tune download mistralai/Mistral-7B-v0.1 \\\n", + " --output-dir /tmp/Mistral-7B-v0.1/" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a52jWY0V4to-" + }, + "source": [ + "## Create the config file" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Qy4WWjrOzSBY" + }, + "source": [ + "You are now ready to fine-tune Mistral 7B model and logs your results to Comet. To log data to Comet, the important part is:\n", + "\n", + "```yaml\n", + "metric_logger:\n", + " _component_: torchtune.training.metric_logging.CometLogger\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LrioSBcP0WG7", + "outputId": "4fc9f256-1258-4e4b-c7a8-92f9380f1153" + }, + "outputs": [], + "source": [ + "%%writefile mistral_comet_lora.yaml\n", + "tokenizer:\n", + " _component_: torchtune.models.mistral.mistral_tokenizer\n", + " path: /tmp/Mistral-7B-v0.1/tokenizer.model\n", + "\n", + "# Dataset\n", + "dataset:\n", + " _component_: torchtune.datasets.alpaca_dataset\n", + " train_on_input: True\n", + "seed: null\n", + "shuffle: True\n", + "\n", + "# Model Arguments\n", + "model:\n", + " _component_: torchtune.models.mistral.lora_mistral_7b\n", + " lora_attn_modules: ['q_proj', 'k_proj', 'v_proj']\n", + " apply_lora_to_mlp: True\n", + " apply_lora_to_output: True\n", + " lora_rank: 64\n", + " lora_alpha: 16\n", + "\n", + "checkpointer:\n", + " _component_: torchtune.training.FullModelHFCheckpointer\n", + " checkpoint_dir: /tmp/Mistral-7B-v0.1\n", + " checkpoint_files: [\n", + " pytorch_model-00001-of-00002.bin,\n", + " pytorch_model-00002-of-00002.bin\n", + " ]\n", + " recipe_checkpoint: null\n", + " output_dir: /tmp/Mistral-7B-v0.1\n", + " model_type: MISTRAL\n", + "resume_from_checkpoint: False\n", + "\n", + "optimizer:\n", + " _component_: torch.optim.AdamW\n", + " lr: 2e-5\n", + "\n", + "lr_scheduler:\n", + " _component_: torchtune.modules.get_cosine_schedule_with_warmup\n", + " num_warmup_steps: 100\n", + "\n", + "loss:\n", + " _component_: torch.nn.CrossEntropyLoss\n", + "\n", + "# Fine-tuning arguments\n", + "batch_size: 4\n", + "epochs: 1\n", + "max_steps_per_epoch: 100\n", + "gradient_accumulation_steps: 2\n", + "compile: False\n", + "\n", + "# Training env\n", + "device: cuda\n", + "\n", + "# Memory management\n", + "enable_activation_checkpointing: True\n", + "\n", + "# Reduced precision\n", + "dtype: bf16\n", + "############################### Enable Comet ###################################\n", + "################################################################################\n", + "# Logging\n", + "# enable logging to the built-in CometLogger\n", + "metric_logger:\n", + " _component_: torchtune.training.metric_logging.CometLogger\n", + " # the Comet project to log to\n", + " project: comet-examples-torchtune-mistral7b\n", + " experiment_name: mistral7b-alpaca-cleaned\n", + "################################################################################\n", + "################################################################################\n", + "output_dir: /tmp/Mistral-7B-v0.1\n", + "log_peak_memory_stats: True\n", + "\n", + "# Profiler (disabled)\n", + "profiler:\n", + " _component_: torchtune.training.setup_torch_profiler\n", + " enabled: False" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rJxXDbrs4xFy" + }, + "source": [ + "## Train the model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fvZLiofe0Z2X", + "outputId": "b7a3a68a-f316-4c2e-c8fd-71671d493a7f" + }, + "outputs": [], + "source": [ + "!tune run lora_finetune_single_device --config mistral_comet_lora.yaml" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NNsfeCTD5KvD" + }, + "source": [ + "🌟 Check out the [final public project here](https://www.comet.com/examples/comet-examples-torchtune-mistral7b)!" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "A100", + "machine_shape": "hm", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "00867cbdb14b451ebb9d6c4ca2e10d66": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "0439c3fe41074d63902bc4b9f29a64c2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "044534d6450b47c98c0fb270ef46000e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "LabelModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "LabelModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "LabelView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_73ba358ba797484ea29299ae50611bc2", + "placeholder": "​", + "style": "IPY_MODEL_06bf71e3b45c451ca5841672368a1172", + "value": "Your token has been saved in your configured git credential helpers (store)." + } + }, + "06bf71e3b45c451ca5841672368a1172": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "084762ff283f4090ba399cc48997adea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "LabelModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "LabelModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "LabelView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c431c24c29bf49668298ecded9f89dde", + "placeholder": "​", + "style": "IPY_MODEL_546dfba48f8c4dc09b6f236fdd98f9e6", + "value": "Connecting..." + } + }, + "25a489ec736649f7ac70e7809150ba40": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "25f101b15513458199fbafc80fbbffb7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_25a489ec736649f7ac70e7809150ba40", + "placeholder": "​", + "style": "IPY_MODEL_5ca47283ef9a4f7ea6259c9cb53b62ea", + "value": "

Copy a token from your Hugging Face\ntokens page and paste it below.
Immediately click login after copying\nyour token or it might be stored in plain text in this notebook file.
" + } + }, + "270340b8769744c8a027e79539838cd7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "2cd5cd873ee74f5c92c7ad5eeee80ad2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "2fe1d18543ec48a982ae760dfb2f72b6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": "center", + "align_self": null, + "border": null, + "bottom": null, + "display": "flex", + "flex": null, + "flex_flow": "column", + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "50%" + } + }, + "460a4aa60c1b476f8c52840236ef6c75": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "PasswordModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "PasswordModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "PasswordView", + "continuous_update": true, + "description": "Token:", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_c0e75c4c9973464c8e86007f1d39c9f7", + "placeholder": "​", + "style": "IPY_MODEL_00867cbdb14b451ebb9d6c4ca2e10d66", + "value": "" + } + }, + "49d3ecb4668244ea98da8313f6347ed9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "LabelModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "LabelModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "LabelView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_db85bc56477c4350a6d39c79610373e6", + "placeholder": "​", + "style": "IPY_MODEL_aa9be702a494436c92d6aac8cf051df6", + "value": "Your token has been saved to /root/.cache/huggingface/token" + } + }, + "4e1da00bc2644367b9a686c2ae526596": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_0439c3fe41074d63902bc4b9f29a64c2", + "placeholder": "​", + "style": "IPY_MODEL_d240c85832074298a94c1a1479809216", + "value": "\nPro Tip: If you don't already have one, you can create a dedicated\n'notebooks' token with 'write' access, that you can then easily reuse for all\nnotebooks. " + } + }, + "546dfba48f8c4dc09b6f236fdd98f9e6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "57fcb83a2d754d77bbfa7365a3d9ba48": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "5ca47283ef9a4f7ea6259c9cb53b62ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "73ba358ba797484ea29299ae50611bc2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "8d106b78dab5441f9cf1e6bd3f7bdde0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "90c0c3d0956540dd9ff04c9db7cba781": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "9228744c40e848f0a068004cb793053e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "a7ab20d37d2e4a739c4bc35a92057e9e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "aa9be702a494436c92d6aac8cf051df6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "c0e75c4c9973464c8e86007f1d39c9f7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "c431c24c29bf49668298ecded9f89dde": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "c69ea844b67e4b38b35ff533d67e68ec": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "c6f120038d844558826bc4db9640dd77": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "LabelModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "LabelModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "LabelView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_90c0c3d0956540dd9ff04c9db7cba781", + "placeholder": "​", + "style": "IPY_MODEL_2cd5cd873ee74f5c92c7ad5eeee80ad2", + "value": "Login successful" + } + }, + "cf87b2a7a3cf4c9f9c3ccd5fd9b1f669": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "LabelModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "LabelModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "LabelView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c69ea844b67e4b38b35ff533d67e68ec", + "placeholder": "​", + "style": "IPY_MODEL_270340b8769744c8a027e79539838cd7", + "value": "Token is valid (permission: read)." + } + }, + "d240c85832074298a94c1a1479809216": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "db85bc56477c4350a6d39c79610373e6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_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 + } + }, + "e8c889cbe34c4302834294d5bc32ef9f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "CheckboxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Add token as git credential?", + "description_tooltip": null, + "disabled": false, + "indent": true, + "layout": "IPY_MODEL_8d106b78dab5441f9cf1e6bd3f7bdde0", + "style": "IPY_MODEL_57fcb83a2d754d77bbfa7365a3d9ba48", + "value": true + } + }, + "f1daee1cb79345d5ae3d17c5a05c53fc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cf87b2a7a3cf4c9f9c3ccd5fd9b1f669", + "IPY_MODEL_044534d6450b47c98c0fb270ef46000e", + "IPY_MODEL_49d3ecb4668244ea98da8313f6347ed9", + "IPY_MODEL_c6f120038d844558826bc4db9640dd77" + ], + "layout": "IPY_MODEL_2fe1d18543ec48a982ae760dfb2f72b6" + } + }, + "fa50fe5baa1849deb810279aaa6bc328": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "Login", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_9228744c40e848f0a068004cb793053e", + "style": "IPY_MODEL_a7ab20d37d2e4a739c4bc35a92057e9e", + "tooltip": "" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}