{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "BCTUDjwiYn6T" }, "source": [ "## DINOv3 Fine-tuning for Image Classification" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!pip install -q trackio git+https://github.com/huggingface/transformers.git" ] }, { "cell_type": "markdown", "metadata": { "id": "5AJ3YVCE8S9Y" }, "source": [ "## Dataset" ] }, { "cell_type": "markdown", "metadata": { "id": "s_Aabbb6VBZt" }, "source": [ "We will do a very small run on food101 dataset." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "Cxzbngbq4K31" }, "outputs": [], "source": [ "from datasets import load_dataset\n", "\n", "ds = load_dataset(\"ethz/food101\")\n", "\n", "train_ds = ds[\"train\"]\n", "train_ds = train_ds.shuffle().train_test_split(test_size=0.9)[\"train\"]\n", "val_ds = ds[\"validation\"].shuffle().train_test_split(test_size=0.9)[\"train\"]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "g1wl86sp8L6C", "outputId": "1b42f43f-df62-4eba-f469-54cabd232cf9" }, "outputs": [ { "data": { "text/plain": [ "Dataset({\n", " features: ['image', 'label'],\n", " num_rows: 7575\n", "})" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_ds" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Tq5OiKxvVj9k", "outputId": "391489ba-d95f-498a-b4bb-f959e19686b0" }, "outputs": [ { "data": { "text/plain": [ "Dataset({\n", " features: ['image', 'label'],\n", " num_rows: 2525\n", "})" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val_ds" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1JcvDPFK8Scd", "outputId": "5c920e23-e96b-4c62-bf3a-7db183c97f48" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Classes: 101\n" ] } ], "source": [ "num_classes = train_ds.features[\"label\"].num_classes\n", "id2label = {i: name for i, name in enumerate(train_ds.features[\"label\"].names)}\n", "label2id = {v: k for k, v in id2label.items()}\n", "print(f\"Classes: {num_classes}\")" ] }, { "cell_type": "markdown", "metadata": { "id": "_69A3AmO81c8" }, "source": [ "## Load Model\n", "\n", "This model doesn't come with a head, so we need to write the headed model class." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 113, "referenced_widgets": [ "32138245d41348928cc5b5834b07cb7e", "df6de04fdb204d348767dd0b2d0e88f7", "63a3800d62dd41d6b4a3f643a8930d95", "49d67bd205184874a5cee04d318d91fe", "f00ace964f96471b9eb839cce48ce378", "3ad0ac8def244930a3aff41d68a88a65", "7464841c193d492685bb929b1c0d230c", "5c16553a2ff34a37a2cb62b4a4c42a6f", "34be83ddb4bf43e58cadbcbac5a606b7", "0ce7bd7e52074f29b446ef2d4dd0921a", "7e2178d696c04d5787e736ace9ab57c0", "3ff80bc2f64948408757caa8715d0603", "12aa8675bca54f05a6deb7ec7a5def7a", "31a74feac76f4744a0f34fbc99433831", "bd51d97e739a4e78ad28083043f638d8", "062d36b5d0c043a597eb9b3ebd35f313", "2c2223a6ae3e4ff6be96a5f4e2d2d9b6", "f2c7be27f90b49a3abe51b5e3003c17d", "76d1f15c857640c3b06d98aef478f234", "d43089f8240c44339c6881355ff0aee3", "a139b85557a942b9b5d32b9d7def3e50", "92043bfce97e4629bf9e4b268aa88c11", "f20b3989658642528f4ed91666320097", "3ee9921a635d44ec9b248e2155b5b243", "caf0790dbf2544378cb04aa8eb3098c3", "3ff0fc5ce62a44b9950dd8575d90bd21", "77cdafc6dae44107a43a46ae19ed390a", "65d8b73e3bdd46fca8a42b67739e27f9", "b566321171044b0eb02ea3bd8c0472df", "62535e046f794a28b4002c3f34fe7ff7", "663aa65fdb4e4349b2815b6bafce4dcd", "8410c9d15bca4c9f8b3aab2b7d327211", "fb359d0651a74fe790aaace9a5d0e329" ] }, "id": "_oqXAu_y81H4", "outputId": "7c4a4f6f-2301-4a43-eecb-50f1adb004b9" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "32138245d41348928cc5b5834b07cb7e", "version_major": 2, "version_minor": 0 }, "text/plain": [ "preprocessor_config.json: 0%| | 0.00/585 [00:00 Dict[str, float]:\n", " model.eval()\n", " correct, total, loss_sum = 0, 0, 0.0\n", " with torch.no_grad():\n", " for batch in val_loader:\n", " pixel_values = batch[\"pixel_values\"].to(device, non_blocking=True)\n", " labels = batch[\"labels\"].to(device, non_blocking=True)\n", " logits = model(pixel_values)\n", " loss = criterion(logits, labels)\n", " loss_sum += loss.item() * labels.size(0)\n", " preds = logits.argmax(dim=-1)\n", " correct += (preds == labels).sum().item()\n", " total += labels.size(0)\n", " return {\n", " \"val_loss\": loss_sum / max(total, 1),\n", " \"val_acc\": correct / max(total, 1),\n", " }" ] }, { "cell_type": "markdown", "metadata": { "id": "yakvOUOkAVcR" }, "source": [ "Let's write the training loop. We'll also use trackio for experiment tracking." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import trackio\n", "\n", "best_acc = 0.0\n", "global_step = 0\n", "\n", "trackio.init(project=\"dinov3\", config={\n", " \"epochs\": EPOCHS,\n", " \"learning_rate\": LR,\n", " \"batch_size\": BATCH_SIZE\n", " })\n", "\n", "for epoch in range(1, EPOCHS + 1):\n", " model.train()\n", " model.backbone.eval() # comment out if you want to train the whole model\n", "\n", " running_loss = 0.0\n", " for i, batch in enumerate(train_loader, start=1):\n", " pixel_values = batch[\"pixel_values\"].to(device, non_blocking=True)\n", " labels = batch[\"labels\"].to(device, non_blocking=True)\n", "\n", " optimizer.zero_grad(set_to_none=True)\n", " logits = model(pixel_values)\n", " loss = criterion(logits, labels)\n", "\n", " scaler.scale(loss).backward()\n", " scaler.step(optimizer)\n", " scaler.update()\n", " scheduler.step()\n", "\n", " running_loss += loss.item()\n", " global_step += 1\n", "\n", " if global_step % EVAL_EVERY_STEPS == 0:\n", " metrics = evaluate()\n", " print(\n", " f\"[epoch {epoch} | step {global_step}] \"\n", " f\"train_loss={running_loss / EVAL_EVERY_STEPS:.4f} \"\n", " f\"val_loss={metrics['val_loss']:.4f} val_acc={metrics['val_acc']*100:.2f}%\"\n", " )\n", " running_loss = 0.0\n", "\n", " trackio.log(\n", " {\n", " \"epoch\": epoch,\n", " \"val_acc\": best_acc,\n", " }\n", " )\n", "\n", " if metrics[\"val_acc\"] > best_acc:\n", " best_acc = metrics[\"val_acc\"]\n", " ckpt_path = os.path.join(CHECKPOINT_DIR, f\"best_acc_{best_acc:.4f}.pt\")\n", " torch.save(\n", " {\n", " \"model_state_dict\": model.state_dict(),\n", " \"optimizer_state_dict\": optimizer.state_dict(),\n", " \"scheduler_state_dict\": scheduler.state_dict(),\n", " \"config\": {\n", " \"model_name\": MODEL_NAME,\n", " \"num_classes\": num_classes,\n", " },\n", " \"step\": global_step,\n", " \"epoch\": epoch,\n", " },\n", " ckpt_path,\n", " )\n", "\n", "\n", " metrics = evaluate()\n", " print(\n", " f\"END EPOCH {epoch}: val_loss={metrics['val_loss']:.4f} val_acc={metrics['val_acc']*100:.2f}% \"\n", " f\"(best_acc={best_acc*100:.2f}%)\"\n", " )\n", " trackio.finish()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "dX0kEHogATQ_" }, "outputs": [], "source": [ "!trackio show" ] }, { "cell_type": "markdown", "metadata": { "id": "VKpGJ4L7bb2E" }, "source": [ "Let's infer with the model, I have a few in the wild images." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "id": "RGZntYQEaVbA" }, "outputs": [], "source": [ "import torch\n", "from PIL import Image\n", "from typing import List, Dict\n", "\n", "\n", "model.eval()\n", "\n", "images = [\"/content/pizza.jpg\", \"/content/spaghetti.JPG\"]\n", "\n", "pil_images = [Image.open(p).convert(\"RGB\") for p in images]\n", "inputs = image_processor(images=pil_images, return_tensors=\"pt\").to(device)\n", "\n", "with torch.no_grad():\n", " logits = model(inputs[\"pixel_values\"])\n", "\n", "# take top 2 classes\n", "probs = logits.softmax(dim=-1)\n", "scores, indices = probs.topk(2, dim=-1)\n", "\n", "results = []\n", "for path, idxs, scs in zip(images, indices, scores):\n", " preds = [\n", " {\"label_id\": int(i.item()),\n", " \"label\": id2label.get(int(i.item()), f\"class_{int(i)}\"),\n", " \"score\": float(s.item())}\n", " for i, s in zip(idxs, scs)\n", " ]\n", " results.append({\"image\": path, \"topk\": preds})\n" ] }, { "cell_type": "markdown", "metadata": { "id": "bFoB-1Ebcab1" }, "source": [ "The model predicts correctly, which is expected given we only trained head with the great backbone frozen, it learned very fast. Feel free to try with more challenging use cases." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "NrgtO2D1cXzj", "outputId": "c972e7d0-ee78-45d3-e91f-7c68521d6a0b" }, "outputs": [ { "data": { "text/plain": [ "[{'image': '/content/pizza.jpg',\n", " 'topk': [{'label_id': 76, 'label': 'pizza', 'score': 0.7595003843307495},\n", " {'label_id': 35, 'label': 'escargots', 'score': 0.013227012008428574}]},\n", " {'image': '/content/spaghetti.JPG',\n", " 'topk': [{'label_id': 91,\n", " 'label': 'spaghetti_carbonara',\n", " 'score': 0.6622196435928345},\n", " {'label_id': 90,\n", " 'label': 'spaghetti_bolognese',\n", " 'score': 0.18182380497455597}]}]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results" ] } ], "metadata": { "accelerator": "GPU", "colab": { "gpuType": "L4", "machine_shape": "hm", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "062d36b5d0c043a597eb9b3ebd35f313": { "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 } }, "0ce7bd7e52074f29b446ef2d4dd0921a": { "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 } }, "12aa8675bca54f05a6deb7ec7a5def7a": { "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_2c2223a6ae3e4ff6be96a5f4e2d2d9b6", "placeholder": "​", "style": "IPY_MODEL_f2c7be27f90b49a3abe51b5e3003c17d", "value": "config.json: 100%" } }, "2c2223a6ae3e4ff6be96a5f4e2d2d9b6": { "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 } }, "31a74feac76f4744a0f34fbc99433831": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "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_76d1f15c857640c3b06d98aef478f234", "max": 744, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_d43089f8240c44339c6881355ff0aee3", "value": 744 } }, "32138245d41348928cc5b5834b07cb7e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "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_df6de04fdb204d348767dd0b2d0e88f7", "IPY_MODEL_63a3800d62dd41d6b4a3f643a8930d95", "IPY_MODEL_49d67bd205184874a5cee04d318d91fe" ], "layout": "IPY_MODEL_f00ace964f96471b9eb839cce48ce378" } }, "34be83ddb4bf43e58cadbcbac5a606b7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "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": "" } }, "3ad0ac8def244930a3aff41d68a88a65": { "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 } }, "3ee9921a635d44ec9b248e2155b5b243": { "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_65d8b73e3bdd46fca8a42b67739e27f9", "placeholder": "​", "style": "IPY_MODEL_b566321171044b0eb02ea3bd8c0472df", "value": "model.safetensors: 100%" } }, "3ff0fc5ce62a44b9950dd8575d90bd21": { "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_8410c9d15bca4c9f8b3aab2b7d327211", "placeholder": "​", "style": "IPY_MODEL_fb359d0651a74fe790aaace9a5d0e329", "value": " 3.36G/3.36G [00:18<00:00, 296MB/s]" } }, "3ff80bc2f64948408757caa8715d0603": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "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_12aa8675bca54f05a6deb7ec7a5def7a", "IPY_MODEL_31a74feac76f4744a0f34fbc99433831", "IPY_MODEL_bd51d97e739a4e78ad28083043f638d8" ], "layout": "IPY_MODEL_062d36b5d0c043a597eb9b3ebd35f313" } }, "49d67bd205184874a5cee04d318d91fe": { "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_0ce7bd7e52074f29b446ef2d4dd0921a", "placeholder": "​", "style": "IPY_MODEL_7e2178d696c04d5787e736ace9ab57c0", "value": " 585/585 [00:00<00:00, 65.6kB/s]" } }, "5c16553a2ff34a37a2cb62b4a4c42a6f": { "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 } }, "62535e046f794a28b4002c3f34fe7ff7": { "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 } }, "63a3800d62dd41d6b4a3f643a8930d95": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "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_5c16553a2ff34a37a2cb62b4a4c42a6f", "max": 585, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_34be83ddb4bf43e58cadbcbac5a606b7", "value": 585 } }, "65d8b73e3bdd46fca8a42b67739e27f9": { "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 } }, "663aa65fdb4e4349b2815b6bafce4dcd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "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": "" } }, "7464841c193d492685bb929b1c0d230c": { "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": "" } }, "76d1f15c857640c3b06d98aef478f234": { "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 } }, "77cdafc6dae44107a43a46ae19ed390a": { "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 } }, "7e2178d696c04d5787e736ace9ab57c0": { "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": "" } }, "8410c9d15bca4c9f8b3aab2b7d327211": { "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 } }, "92043bfce97e4629bf9e4b268aa88c11": { "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": "" } }, "a139b85557a942b9b5d32b9d7def3e50": { "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 } }, "b566321171044b0eb02ea3bd8c0472df": { "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": "" } }, "bd51d97e739a4e78ad28083043f638d8": { "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_a139b85557a942b9b5d32b9d7def3e50", "placeholder": "​", "style": "IPY_MODEL_92043bfce97e4629bf9e4b268aa88c11", "value": " 744/744 [00:00<00:00, 93.7kB/s]" } }, "caf0790dbf2544378cb04aa8eb3098c3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "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_62535e046f794a28b4002c3f34fe7ff7", "max": 3362432800, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_663aa65fdb4e4349b2815b6bafce4dcd", "value": 3362432800 } }, "d43089f8240c44339c6881355ff0aee3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "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": "" } }, "df6de04fdb204d348767dd0b2d0e88f7": { "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_3ad0ac8def244930a3aff41d68a88a65", "placeholder": "​", "style": "IPY_MODEL_7464841c193d492685bb929b1c0d230c", "value": "preprocessor_config.json: 100%" } }, "f00ace964f96471b9eb839cce48ce378": { "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 } }, "f20b3989658642528f4ed91666320097": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "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_3ee9921a635d44ec9b248e2155b5b243", "IPY_MODEL_caf0790dbf2544378cb04aa8eb3098c3", "IPY_MODEL_3ff0fc5ce62a44b9950dd8575d90bd21" ], "layout": "IPY_MODEL_77cdafc6dae44107a43a46ae19ed390a" } }, "f2c7be27f90b49a3abe51b5e3003c17d": { "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": "" } }, "fb359d0651a74fe790aaace9a5d0e329": { "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": "" } } } } }, "nbformat": 4, "nbformat_minor": 0 }