diff --git "a/how_to_train_model.ipynb" "b/how_to_train_model.ipynb"
new file mode 100644--- /dev/null
+++ "b/how_to_train_model.ipynb"
@@ -0,0 +1,3269 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "🧠 NeuroFeel – (Where AI Meets Emotion) | Offline & Fast\n",
+ "NeuroFeel is a tiny emotion detection model built on NeuroBERT.\n",
+ "It’s lightweight (~25MB), works offline, and is perfect for edge and mobile devices.\n",
+ "\n",
+ "🔍 Trained on:\n",
+ "📊 Boltuix Emotions Dataset – crafted for real, short-text emotional expressions.\n",
+ "🔗 Dataset: [Emotions Dataset](https://huggingface.co/datasets/boltuix/emotions-dataset)\n",
+ "\n",
+ "💡 Use NeuroFeel in:\n",
+ "📱 Mobile apps\n",
+ "🏠 Smart homes\n",
+ "⌚ Wearables\n",
+ "💬 Chatbots\n",
+ "🧘 Mental health tools\n",
+ "\n",
+ "❤️ Understands 13 emotions like:\n",
+ "\n",
+ "Happy, Sad, Angry, Loved, Scared, Excited, and more.\n",
+ "\n",
+ "⚡ Why NeuroFeel?\n",
+ "Ultra-fast and low memory\n",
+ "\n",
+ "Edge-ready\n",
+ "Great for emotional intelligence in devices\n",
+ "\n",
+ "🔗 Model: [NeuroFeel Model](https://huggingface.co/boltuix/NeuroFeel)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 672,
+ "referenced_widgets": [
+ "83ee878c039f47edb96fde00e6983a4b",
+ "6431434040ca4b0d8738746930297070",
+ "87d22a71e458437faf0ce8bb8defedeb",
+ "5a95456db43d4267a8c7ae1d3adb9110",
+ "bcf8516da0904b0abc5ef3f0278e00b5",
+ "587a98275dd34c08a618fb9111d73fe4",
+ "24fe1819e2d4414f8bfd8d30633c6fe2",
+ "f5110aa7303d4828877d7582ef636c7d",
+ "7cec1b1c66dc48bc93ffc6825e289330",
+ "21e071df139249d682835f68117b4eda",
+ "0bc9dd340c624a5fac7683ed00498c2c",
+ "e76d997ea69c48d7b11f55a4d0b9d9a3",
+ "02b7ea08c62a464aa0ec1126cc7aecb2",
+ "0574728db5104852abfb4b7078929cad",
+ "6c9b4fff204e4b19adf82309fa1a4556",
+ "0571849b1c1347a6ad44581aa6d3014c",
+ "4214e904c01d4c0ca1a3856a2c913786",
+ "6f3597c9cdeb45d995dbcb9b494b9032",
+ "5c3c994f7c3a4b41a1613c8deb74ae4a",
+ "14d9f5d18d37430b8f4b1f5002976c14",
+ "7e329e78d0d648c8b793a80b732a6b8e",
+ "94ee1ab7847d4a3784f026bdb6c1645f",
+ "2fdb97fea1274feab421442b35e98a5c",
+ "295eb20afb8a4b88a35ebda114369fe2",
+ "5fbaff21141b41e78964fa0dc8730292",
+ "15194a408fb5415fa1f28d465700521e",
+ "322deeed887c4499b96026564e6d1d22",
+ "94c23de385894e1faa02664d8970b5bc",
+ "5db9ecd4769e49f6bfef8bc5013611ed",
+ "b1e321c905a648d2bc90bd7c5eb50367",
+ "b0f55fb60973416dba9eef54b929793a",
+ "95fe2503295144bb8468123ec3b40d1c",
+ "a9c2da3c42f9486e9caabc123c4350f4",
+ "7ff76b22476143dda0a60ee3c45a2573",
+ "6ed9a1236be7488489bda90570bcf491",
+ "644c507725544b9784503eac031ae937",
+ "b477c3f151714d918af683b0743f5068",
+ "26ccd138f2594379a54bcf28ea426f08",
+ "ad36b1ffe2bb4e3ca6838b4b612949fe",
+ "c2fda8ced9544c30a74861243e13cec8",
+ "1b1bf9ce6edc44d6946e0e3a3004cae6",
+ "2bae8ec848554c1bac9f95e73200ebc2",
+ "c4d7d20019e14d8c8fc8a7ab9cc2d9f1",
+ "b00a8aa97c1d40b28567cb25233182e4",
+ "92fb1012832d4648b8afe6ce9e679fc4",
+ "05b597fa33d94d8489f0a906b6601ac6",
+ "51408a68fa75477eb73b28bd08478a27",
+ "87df8146909842a7abc9ecfa73e1b308",
+ "51cb98c739e94588a74df263daf62c4f",
+ "d218377a68a64eb5a4f5457020a62725",
+ "13310f97091f466bbe9c14cca6797a27",
+ "5d5a5d3b0bfb4984b52a2282d4be3405",
+ "bb071aeb68d54afe9de4f96770c16b8d",
+ "6412c72c5f874277bd04ef23222713d5",
+ "a93f582392ee462793e968d26b32f33e",
+ "128a5ed0c23146febe335db237e2710f",
+ "78fe8ef2b501428f95ec0c792b164403",
+ "4c1ef193029f403da623358d6eea2e19",
+ "28062357e02f48a6936389feded24575",
+ "fc6c756a30cc4963aa20f9b448acab10",
+ "de782ab08ffd4c4f9cddc9ea5d278762",
+ "eb02f42f31544cd692933fce1280374d",
+ "3ef0ad6cffc04384a7734c17ca71066e",
+ "38eace2350d24617a7054a3f23fd083b",
+ "3cbf6205e1dc412e9c8245bf086e3e7c",
+ "8285dd8bd8c94898bce1cbe3ffb64736"
+ ]
+ },
+ "id": "wHooIdoXPICj",
+ "outputId": "5648d7d8-4260-47fa-9ff1-e01ca836a7db"
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.11/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning: \n",
+ "The secret `HF_TOKEN` does not exist in your Colab secrets.\n",
+ "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n",
+ "You will be able to reuse this secret in all of your notebooks.\n",
+ "Please note that authentication is recommended but still optional to access public models or datasets.\n",
+ " warnings.warn(\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "83ee878c039f47edb96fde00e6983a4b",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "tokenizer_config.json: 0%| | 0.00/1.36k [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "e76d997ea69c48d7b11f55a4d0b9d9a3",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "vocab.txt: 0%| | 0.00/232k [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "2fdb97fea1274feab421442b35e98a5c",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "special_tokens_map.json: 0%| | 0.00/132 [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "7ff76b22476143dda0a60ee3c45a2573",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "tokenizer.json: 0%| | 0.00/711k [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "92fb1012832d4648b8afe6ce9e679fc4",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "config.json: 0%| | 0.00/611 [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "128a5ed0c23146febe335db237e2710f",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "model.safetensors: 0%| | 0.00/57.5M [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Some weights of BertForSequenceClassification were not initialized from the model checkpoint at boltuix/NeuroBERT and are newly initialized: ['bert.pooler.dense.bias', 'bert.pooler.dense.weight', 'classifier.bias', 'classifier.weight']\n",
+ "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n",
+ "Training: 0%| | 1/32830 [00:01<10:58:37, 1.20s/step, epoch=0.00, step=1]"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ " [32830/32830 30:41, Epoch 5/5]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Epoch | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 0.859700 | \n",
+ " 0.986835 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 0.917500 | \n",
+ " 0.912361 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 0.855600 | \n",
+ " 0.881038 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0.753100 | \n",
+ " 0.896444 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " 0.663200 | \n",
+ " 0.905136 | \n",
+ "
\n",
+ " \n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Training: 100%|██████████| 32830/32830 [30:43<00:00, 17.81step/s, epoch=5.00, step=32830]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [1642/1642 00:29]\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "✅ Training complete. Model and tokenizer saved to ./neuro-feel\n",
+ "✅ Model directory zipped to neuro-feel.zip\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments, TrainerCallback\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "import torch\n",
+ "from torch.utils.data import Dataset\n",
+ "import shutil\n",
+ "from tqdm import tqdm # Added for progress bar\n",
+ "\n",
+ "# === 0. Define common model name ===\n",
+ "MODEL_NAME = \"boltuix/NeuroBERT\"\n",
+ "OUTPUT_DIR = \"./neuro-feel\"\n",
+ "\n",
+ "# === Custom Callback for Progress Bar ===\n",
+ "class TQDMProgressBarCallback(TrainerCallback):\n",
+ " def __init__(self):\n",
+ " super().__init__()\n",
+ " self.progress_bar = None\n",
+ "\n",
+ " def on_train_begin(self, args, state, control, **kwargs):\n",
+ " self.total_steps = state.max_steps\n",
+ " self.progress_bar = tqdm(total=self.total_steps, desc=\"Training\", unit=\"step\")\n",
+ "\n",
+ " def on_step_end(self, args, state, control, **kwargs):\n",
+ " self.progress_bar.update(1)\n",
+ " self.progress_bar.set_postfix({\n",
+ " \"epoch\": f\"{state.epoch:.2f}\",\n",
+ " \"step\": state.global_step\n",
+ " })\n",
+ "\n",
+ " def on_train_end(self, args, state, control, **kwargs):\n",
+ " if self.progress_bar is not None:\n",
+ " self.progress_bar.close()\n",
+ " self.progress_bar = None\n",
+ "\n",
+ "# === 1. Load and preprocess data ===\n",
+ "dataset_path = '/content/dataset.csv'\n",
+ "df = pd.read_csv(dataset_path)\n",
+ "df = df.dropna(subset=['Label'])\n",
+ "df.columns = ['text', 'label']\n",
+ "\n",
+ "# === 2. Encode labels ===\n",
+ "labels = sorted(df[\"label\"].unique())\n",
+ "label_to_id = {label: idx for idx, label in enumerate(labels)}\n",
+ "id_to_label = {idx: label for label, idx in label_to_id.items()}\n",
+ "df['label'] = df['label'].map(label_to_id)\n",
+ "\n",
+ "# === 3. Train/val split ===\n",
+ "train_texts, val_texts, train_labels, val_labels = train_test_split(\n",
+ " df['text'].tolist(), df['label'].tolist(), test_size=0.2, random_state=42\n",
+ ")\n",
+ "\n",
+ "# === 4. Tokenizer ===\n",
+ "tokenizer = BertTokenizer.from_pretrained(MODEL_NAME)\n",
+ "\n",
+ "# === 5. Dataset class ===\n",
+ "class SentimentDataset(Dataset):\n",
+ " def __init__(self, texts, labels, tokenizer, max_length=128):\n",
+ " self.texts = texts\n",
+ " self.labels = labels\n",
+ " self.tokenizer = tokenizer\n",
+ " self.max_length = max_length\n",
+ "\n",
+ " def __len__(self):\n",
+ " return len(self.texts)\n",
+ "\n",
+ " def __getitem__(self, idx):\n",
+ " encoding = self.tokenizer(\n",
+ " self.texts[idx],\n",
+ " padding='max_length',\n",
+ " truncation=True,\n",
+ " max_length=self.max_length,\n",
+ " return_tensors='pt'\n",
+ " )\n",
+ " return {\n",
+ " 'input_ids': encoding['input_ids'].squeeze(0),\n",
+ " 'attention_mask': encoding['attention_mask'].squeeze(0),\n",
+ " 'labels': torch.tensor(self.labels[idx], dtype=torch.long)\n",
+ " }\n",
+ "\n",
+ "# === 6. Load datasets ===\n",
+ "train_dataset = SentimentDataset(train_texts, train_labels, tokenizer)\n",
+ "val_dataset = SentimentDataset(val_texts, val_labels, tokenizer)\n",
+ "\n",
+ "# === 7. Load model ===\n",
+ "model = BertForSequenceClassification.from_pretrained(\n",
+ " MODEL_NAME,\n",
+ " num_labels=len(label_to_id)\n",
+ ")\n",
+ "\n",
+ "for param in model.parameters():\n",
+ " param.data = param.data.contiguous()\n",
+ "\n",
+ "# === 8. Training arguments ===\n",
+ "training_args = TrainingArguments(\n",
+ " output_dir='./results',\n",
+ " run_name=\"NeuroFeel\",\n",
+ " num_train_epochs=5,\n",
+ " per_device_train_batch_size=16,\n",
+ " per_device_eval_batch_size=16,\n",
+ " warmup_steps=500,\n",
+ " weight_decay=0.01,\n",
+ " logging_dir='./logs',\n",
+ " logging_steps=10,\n",
+ " eval_strategy=\"epoch\",\n",
+ " report_to=\"none\"\n",
+ ")\n",
+ "\n",
+ "# === 9. Trainer setup ===\n",
+ "trainer = Trainer(\n",
+ " model=model,\n",
+ " args=training_args,\n",
+ " train_dataset=train_dataset,\n",
+ " eval_dataset=val_dataset,\n",
+ " callbacks=[TQDMProgressBarCallback()] # Added progress bar callback\n",
+ ")\n",
+ "\n",
+ "# === 10. Train and evaluate ===\n",
+ "trainer.train()\n",
+ "trainer.evaluate()\n",
+ "\n",
+ "# === 11. Save model and label mappings ===\n",
+ "model.config.label2id = label_to_id\n",
+ "model.config.id2label = id_to_label\n",
+ "model.config.num_labels = len(label_to_id)\n",
+ "\n",
+ "model.save_pretrained(OUTPUT_DIR)\n",
+ "tokenizer.save_pretrained(OUTPUT_DIR)\n",
+ "\n",
+ "# === 12. Zip the trained model directory ===\n",
+ "shutil.make_archive(\"neuro-feel\", 'zip', OUTPUT_DIR)\n",
+ "\n",
+ "print(\"✅ Training complete. Model and tokenizer saved to ./neuro-feel\")\n",
+ "print(\"✅ Model directory zipped to neuro-feel.zip\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-wQctWLFnNQ4",
+ "outputId": "55d4b628-cb55-400c-8c1d-e21bd5137995"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Prediction Results:\n",
+ "----------------------------------------\n",
+ "1. Sentence: I miss her so much it hurts.\n",
+ " Predicted Label: sadness\n",
+ " True Label: sadness\n",
+ " Correct: Yes\n",
+ "\n",
+ "2. Sentence: Tears won’t stop falling.\n",
+ " Predicted Label: sadness\n",
+ " True Label: sadness\n",
+ " Correct: Yes\n",
+ "\n",
+ "3. Sentence: Everything feels so empty.\n",
+ " Predicted Label: sadness\n",
+ " True Label: sadness\n",
+ " Correct: Yes\n",
+ "\n",
+ "4. Sentence: I feel broken inside.\n",
+ " Predicted Label: sadness\n",
+ " True Label: sadness\n",
+ " Correct: Yes\n",
+ "\n",
+ "5. Sentence: Waking up is the hardest part.\n",
+ " Predicted Label: sadness\n",
+ " True Label: sadness\n",
+ " Correct: Yes\n",
+ "\n",
+ "6. Sentence: It’s been so hard to cope.\n",
+ " Predicted Label: sadness\n",
+ " True Label: sadness\n",
+ " Correct: Yes\n",
+ "\n",
+ "7. Sentence: My chest feels heavy all the time.\n",
+ " Predicted Label: sadness\n",
+ " True Label: sadness\n",
+ " Correct: Yes\n",
+ "\n",
+ "8. Sentence: Losing him shattered me.\n",
+ " Predicted Label: sadness\n",
+ " True Label: sadness\n",
+ " Correct: Yes\n",
+ "\n",
+ "9. Sentence: Why do you always ignore me?!\n",
+ " Predicted Label: anger\n",
+ " True Label: anger\n",
+ " Correct: Yes\n",
+ "\n",
+ "10. Sentence: This is absolutely ridiculous!\n",
+ " Predicted Label: anger\n",
+ " True Label: anger\n",
+ " Correct: Yes\n",
+ "\n",
+ "11. Sentence: You never listen to me!\n",
+ " Predicted Label: anger\n",
+ " True Label: anger\n",
+ " Correct: Yes\n",
+ "\n",
+ "12. Sentence: That’s the last straw!\n",
+ " Predicted Label: anger\n",
+ " True Label: anger\n",
+ " Correct: Yes\n",
+ "\n",
+ "13. Sentence: I’m furious with how they treated me.\n",
+ " Predicted Label: anger\n",
+ " True Label: anger\n",
+ " Correct: Yes\n",
+ "\n",
+ "14. Sentence: I’m done putting up with this nonsense!\n",
+ " Predicted Label: anger\n",
+ " True Label: anger\n",
+ " Correct: Yes\n",
+ "\n",
+ "15. Sentence: Everything you say just makes it worse!\n",
+ " Predicted Label: anger\n",
+ " True Label: anger\n",
+ " Correct: Yes\n",
+ "\n",
+ "16. Sentence: I hate how you always twist my words.\n",
+ " Predicted Label: anger\n",
+ " True Label: anger\n",
+ " Correct: Yes\n",
+ "\n",
+ "17. Sentence: You’re the reason I believe in love.\n",
+ " Predicted Label: love\n",
+ " True Label: love\n",
+ " Correct: Yes\n",
+ "\n",
+ "18. Sentence: You complete me.\n",
+ " Predicted Label: love\n",
+ " True Label: love\n",
+ " Correct: Yes\n",
+ "\n",
+ "19. Sentence: What? That’s unbelievable!\n",
+ " Predicted Label: surprise\n",
+ " True Label: surprise\n",
+ " Correct: Yes\n",
+ "\n",
+ "20. Sentence: I didn’t see that coming!\n",
+ " Predicted Label: surprise\n",
+ " True Label: surprise\n",
+ " Correct: Yes\n",
+ "\n",
+ "21. Sentence: You got me tickets? No way!\n",
+ " Predicted Label: surprise\n",
+ " True Label: surprise\n",
+ " Correct: Yes\n",
+ "\n",
+ "22. Sentence: That was totally unexpected.\n",
+ " Predicted Label: surprise\n",
+ " True Label: surprise\n",
+ " Correct: Yes\n",
+ "\n",
+ "23. Sentence: You're moving already? That’s so sudden!\n",
+ " Predicted Label: surprise\n",
+ " True Label: surprise\n",
+ " Correct: Yes\n",
+ "\n",
+ "24. Sentence: Whoa, that was fast!\n",
+ " Predicted Label: surprise\n",
+ " True Label: surprise\n",
+ " Correct: Yes\n",
+ "\n",
+ "25. Sentence: I’m so scared right now.\n",
+ " Predicted Label: fear\n",
+ " True Label: fear\n",
+ " Correct: Yes\n",
+ "\n",
+ "26. Sentence: I can’t do this, I’m terrified.\n",
+ " Predicted Label: fear\n",
+ " True Label: fear\n",
+ " Correct: Yes\n",
+ "\n",
+ "27. Sentence: I’m afraid to even look.\n",
+ " Predicted Label: fear\n",
+ " True Label: fear\n",
+ " Correct: Yes\n",
+ "\n",
+ "28. Sentence: My hands are shaking.\n",
+ " Predicted Label: fear\n",
+ " True Label: fear\n",
+ " Correct: Yes\n",
+ "\n",
+ "29. Sentence: I keep hearing noises in the dark.\n",
+ " Predicted Label: fear\n",
+ " True Label: fear\n",
+ " Correct: Yes\n",
+ "\n",
+ "30. Sentence: I’m panicking just thinking about it.\n",
+ " Predicted Label: fear\n",
+ " True Label: fear\n",
+ " Correct: Yes\n",
+ "\n",
+ "31. Sentence: Today was absolutely perfect!\n",
+ " Predicted Label: happiness\n",
+ " True Label: happiness\n",
+ " Correct: Yes\n",
+ "\n",
+ "32. Sentence: I can’t stop smiling!\n",
+ " Predicted Label: happiness\n",
+ " True Label: happiness\n",
+ " Correct: Yes\n",
+ "\n",
+ "33. Sentence: This made my whole week!\n",
+ " Predicted Label: happiness\n",
+ " True Label: happiness\n",
+ " Correct: Yes\n",
+ "\n",
+ "34. Sentence: I’m full of joy right now.\n",
+ " Predicted Label: happiness\n",
+ " True Label: happiness\n",
+ " Correct: Yes\n",
+ "\n",
+ "35. Sentence: That was so much fun!\n",
+ " Predicted Label: happiness\n",
+ " True Label: happiness\n",
+ " Correct: Yes\n",
+ "\n",
+ "36. Sentence: I’m just working through the day.\n",
+ " Predicted Label: neutral\n",
+ " True Label: neutral\n",
+ " Correct: Yes\n",
+ "\n",
+ "37. Sentence: It was an average lunch.\n",
+ " Predicted Label: neutral\n",
+ " True Label: neutral\n",
+ " Correct: Yes\n",
+ "\n",
+ "38. Sentence: Nothing much happened today.\n",
+ " Predicted Label: neutral\n",
+ " True Label: neutral\n",
+ " Correct: Yes\n",
+ "\n",
+ "39. Sentence: Just reading some news.\n",
+ " Predicted Label: neutral\n",
+ " True Label: neutral\n",
+ " Correct: Yes\n",
+ "\n",
+ "40. Sentence: That food made me gag.\n",
+ " Predicted Label: disgust\n",
+ " True Label: disgust\n",
+ " Correct: Yes\n",
+ "\n",
+ "41. Sentence: That’s absolutely revolting.\n",
+ " Predicted Label: disgust\n",
+ " True Label: disgust\n",
+ " Correct: Yes\n",
+ "\n",
+ "42. Sentence: Ugh, that’s disgusting!\n",
+ " Predicted Label: disgust\n",
+ " True Label: disgust\n",
+ " Correct: Yes\n",
+ "\n",
+ "43. Sentence: It smells horrible in here.\n",
+ " Predicted Label: disgust\n",
+ " True Label: disgust\n",
+ " Correct: Yes\n",
+ "\n",
+ "44. Sentence: That behavior is so gross.\n",
+ " Predicted Label: disgust\n",
+ " True Label: disgust\n",
+ " Correct: Yes\n",
+ "\n",
+ "45. Sentence: I’m repulsed by what I saw.\n",
+ " Predicted Label: disgust\n",
+ " True Label: disgust\n",
+ " Correct: Yes\n",
+ "\n",
+ "46. Sentence: That’s just nasty.\n",
+ " Predicted Label: disgust\n",
+ " True Label: disgust\n",
+ " Correct: Yes\n",
+ "\n",
+ "47. Sentence: I can’t even look them in the eye.\n",
+ " Predicted Label: shame\n",
+ " True Label: shame\n",
+ " Correct: Yes\n",
+ "\n",
+ "48. Sentence: Why did I say that? I’m so embarrassed.\n",
+ " Predicted Label: shame\n",
+ " True Label: shame\n",
+ " Correct: Yes\n",
+ "\n",
+ "49. Sentence: I can’t believe I acted that way.\n",
+ " Predicted Label: shame\n",
+ " True Label: shame\n",
+ " Correct: Yes\n",
+ "\n",
+ "50. Sentence: I shouldn’t have lied to her.\n",
+ " Predicted Label: guilt\n",
+ " True Label: guilt\n",
+ " Correct: Yes\n",
+ "\n",
+ "51. Sentence: I feel terrible about what I did.\n",
+ " Predicted Label: guilt\n",
+ " True Label: guilt\n",
+ " Correct: Yes\n",
+ "\n",
+ "52. Sentence: I feel sick with regret.\n",
+ " Predicted Label: guilt\n",
+ " True Label: guilt\n",
+ " Correct: Yes\n",
+ "\n",
+ "53. Sentence: The guilt is eating me alive.\n",
+ " Predicted Label: guilt\n",
+ " True Label: guilt\n",
+ " Correct: Yes\n",
+ "\n",
+ "54. Sentence: Wait, what just happened?\n",
+ " Predicted Label: confusion\n",
+ " True Label: confusion\n",
+ " Correct: Yes\n",
+ "\n",
+ "55. Sentence: I don’t get it at all.\n",
+ " Predicted Label: confusion\n",
+ " True Label: confusion\n",
+ " Correct: Yes\n",
+ "\n",
+ "56. Sentence: I’m not sure what I’m supposed to do.\n",
+ " Predicted Label: confusion\n",
+ " True Label: confusion\n",
+ " Correct: Yes\n",
+ "\n",
+ "57. Sentence: This is all so unclear.\n",
+ " Predicted Label: confusion\n",
+ " True Label: confusion\n",
+ " Correct: Yes\n",
+ "\n",
+ "58. Sentence: I’m lost in this situation.\n",
+ " Predicted Label: confusion\n",
+ " True Label: confusion\n",
+ " Correct: Yes\n",
+ "\n",
+ "59. Sentence: I don’t know how to respond.\n",
+ " Predicted Label: confusion\n",
+ " True Label: confusion\n",
+ " Correct: Yes\n",
+ "\n",
+ "60. Sentence: I’m struggling to understand.\n",
+ " Predicted Label: confusion\n",
+ " True Label: confusion\n",
+ " Correct: Yes\n",
+ "\n",
+ "61. Sentence: I want to be the best at this.\n",
+ " Predicted Label: desire\n",
+ " True Label: desire\n",
+ " Correct: Yes\n",
+ "\n",
+ "62. Sentence: All I need is one more chance.\n",
+ " Predicted Label: desire\n",
+ " True Label: desire\n",
+ " Correct: Yes\n",
+ "\n",
+ "63. Sentence: I wish I could be with you right now.\n",
+ " Predicted Label: desire\n",
+ " True Label: desire\n",
+ " Correct: Yes\n",
+ "\n",
+ "64. Sentence: I need this more than anything.\n",
+ " Predicted Label: desire\n",
+ " True Label: desire\n",
+ " Correct: Yes\n",
+ "\n",
+ "65. Sentence: I’ve been dreaming of this moment.\n",
+ " Predicted Label: desire\n",
+ " True Label: desire\n",
+ " Correct: Yes\n",
+ "\n",
+ "66. Sentence: I crave your attention.\n",
+ " Predicted Label: desire\n",
+ " True Label: desire\n",
+ " Correct: Yes\n",
+ "\n",
+ "67. Sentence: I just want to be loved.\n",
+ " Predicted Label: desire\n",
+ " True Label: desire\n",
+ " Correct: Yes\n",
+ "\n",
+ "68. Sentence: I desire success more than comfort.\n",
+ " Predicted Label: desire\n",
+ " True Label: desire\n",
+ " Correct: Yes\n",
+ "\n",
+ "69. Sentence: Oh great, another meeting… just what I needed.\n",
+ " Predicted Label: sarcasm\n",
+ " True Label: sarcasm\n",
+ " Correct: Yes\n",
+ "\n",
+ "70. Sentence: Wow, you’re such a genius.\n",
+ " Predicted Label: sarcasm\n",
+ " True Label: sarcasm\n",
+ " Correct: Yes\n",
+ "\n",
+ "71. Sentence: Yeah, because that worked out so well last time.\n",
+ " Predicted Label: sarcasm\n",
+ " True Label: sarcasm\n",
+ " Correct: Yes\n",
+ "\n",
+ "72. Sentence: Lovely, now we’re lost again.\n",
+ " Predicted Label: sarcasm\n",
+ " True Label: sarcasm\n",
+ " Correct: Yes\n",
+ "\n",
+ "73. Sentence: Oh, I’m absolutely thrilled… not.\n",
+ " Predicted Label: sarcasm\n",
+ " True Label: sarcasm\n",
+ " Correct: Yes\n",
+ "\n",
+ "74. Sentence: Absolutely, let’s make another terrible decision.\n",
+ " Predicted Label: sarcasm\n",
+ " True Label: sarcasm\n",
+ " Correct: Yes\n",
+ "\n",
+ "----------------------------------------\n",
+ "Total predictions made: 74\n",
+ "Correct predictions: 74\n",
+ "Accuracy: 100.00%\n"
+ ]
+ }
+ ],
+ "source": [
+ "import torch\n",
+ "from transformers import BertTokenizer, BertForSequenceClassification\n",
+ "\n",
+ "# Load the fine-tuned model and tokenizer from Hugging Face Hub\n",
+ "try:\n",
+ " model = BertForSequenceClassification.from_pretrained(\"./neuro-feel\")\n",
+ " tokenizer = BertTokenizer.from_pretrained(\"./neuro-feel\")\n",
+ "except Exception as e:\n",
+ " print(f\"Error loading model or tokenizer: {e}\")\n",
+ " exit(1)\n",
+ "\n",
+ "# Set model to evaluation mode to disable training-specific layers\n",
+ "model.eval()\n",
+ "\n",
+ "# Define a label map to decode numerical predictions to emotion labels\n",
+ "# label_map = {\n",
+ "# 0: \"sadness\",\n",
+ "# 1: \"anger\",\n",
+ "# 2: \"love\",\n",
+ "# 3: \"surprise\",\n",
+ "# 4: \"fear\",\n",
+ "# 5: \"happiness\",\n",
+ "# 6: \"neutral\",\n",
+ "# 7: \"disgust\",\n",
+ "# 8: \"shame\",\n",
+ "# 9: \"guilt\",\n",
+ "# 10: \"confusion\",\n",
+ "# 11: \"desire\",\n",
+ "# 12: \"sarcasm\"\n",
+ "# } # Adjust based on model’s training labels 🏷️\n",
+ "\n",
+ "\n",
+ "label_map = model.config.id2label\n",
+ "label_map = {int(k): v for k, v in label_map.items()}\n",
+ "\n",
+ "# Define test sentences with ground truth emotion labels\n",
+ "test_cases = [\n",
+ " (\"I miss her so much it hurts.\", \"sadness\"),\n",
+ " (\"Tears won’t stop falling.\", \"sadness\"),\n",
+ " (\"Everything feels so empty.\", \"sadness\"),\n",
+ " (\"I feel broken inside.\", \"sadness\"),\n",
+ " (\"Waking up is the hardest part.\", \"sadness\"),\n",
+ " (\"It’s been so hard to cope.\", \"sadness\"),\n",
+ " (\"My chest feels heavy all the time.\", \"sadness\"),\n",
+ " (\"Losing him shattered me.\", \"sadness\"),\n",
+ " (\"Why do you always ignore me?!\", \"anger\"),\n",
+ " (\"This is absolutely ridiculous!\", \"anger\"),\n",
+ " (\"You never listen to me!\", \"anger\"),\n",
+ " (\"That’s the last straw!\", \"anger\"),\n",
+ " (\"I’m furious with how they treated me.\", \"anger\"),\n",
+ " (\"I’m done putting up with this nonsense!\", \"anger\"),\n",
+ " (\"Everything you say just makes it worse!\", \"anger\"),\n",
+ " (\"I hate how you always twist my words.\", \"anger\"),\n",
+ " (\"You’re the reason I believe in love.\", \"love\"),\n",
+ " (\"You complete me.\", \"love\"),\n",
+ " (\"What? That’s unbelievable!\", \"surprise\"),\n",
+ " (\"I didn’t see that coming!\", \"surprise\"),\n",
+ " (\"You got me tickets? No way!\", \"surprise\"),\n",
+ " (\"That was totally unexpected.\", \"surprise\"),\n",
+ " (\"You're moving already? That’s so sudden!\", \"surprise\"),\n",
+ " (\"Whoa, that was fast!\", \"surprise\"),\n",
+ " (\"I’m so scared right now.\", \"fear\"),\n",
+ " (\"I can’t do this, I’m terrified.\", \"fear\"),\n",
+ " (\"I’m afraid to even look.\", \"fear\"),\n",
+ " (\"My hands are shaking.\", \"fear\"),\n",
+ " (\"I keep hearing noises in the dark.\", \"fear\"),\n",
+ " (\"I’m panicking just thinking about it.\", \"fear\"),\n",
+ " (\"Today was absolutely perfect!\", \"happiness\"),\n",
+ " (\"I can’t stop smiling!\", \"happiness\"),\n",
+ " (\"This made my whole week!\", \"happiness\"),\n",
+ " (\"I’m full of joy right now.\", \"happiness\"),\n",
+ " (\"That was so much fun!\", \"happiness\"),\n",
+ " (\"I’m just working through the day.\", \"neutral\"),\n",
+ " (\"It was an average lunch.\", \"neutral\"),\n",
+ " (\"Nothing much happened today.\", \"neutral\"),\n",
+ " (\"Just reading some news.\", \"neutral\"),\n",
+ " (\"That food made me gag.\", \"disgust\"),\n",
+ " (\"That’s absolutely revolting.\", \"disgust\"),\n",
+ " (\"Ugh, that’s disgusting!\", \"disgust\"),\n",
+ " (\"It smells horrible in here.\", \"disgust\"),\n",
+ " (\"That behavior is so gross.\", \"disgust\"),\n",
+ " (\"I’m repulsed by what I saw.\", \"disgust\"),\n",
+ " (\"That’s just nasty.\", \"disgust\"),\n",
+ " (\"I can’t even look them in the eye.\", \"shame\"),\n",
+ " (\"Why did I say that? I’m so embarrassed.\", \"shame\"),\n",
+ " (\"I can’t believe I acted that way.\", \"shame\"),\n",
+ " (\"I shouldn’t have lied to her.\", \"guilt\"),\n",
+ " (\"I feel terrible about what I did.\", \"guilt\"),\n",
+ " (\"I feel sick with regret.\", \"guilt\"),\n",
+ " (\"The guilt is eating me alive.\", \"guilt\"),\n",
+ " (\"Wait, what just happened?\", \"confusion\"),\n",
+ " (\"I don’t get it at all.\", \"confusion\"),\n",
+ " (\"I’m not sure what I’m supposed to do.\", \"confusion\"),\n",
+ " (\"This is all so unclear.\", \"confusion\"),\n",
+ " (\"I’m lost in this situation.\", \"confusion\"),\n",
+ " (\"I don’t know how to respond.\", \"confusion\"),\n",
+ " (\"I’m struggling to understand.\", \"confusion\"),\n",
+ " (\"I want to be the best at this.\", \"desire\"),\n",
+ " (\"All I need is one more chance.\", \"desire\"),\n",
+ " (\"I wish I could be with you right now.\", \"desire\"),\n",
+ " (\"I need this more than anything.\", \"desire\"),\n",
+ " (\"I’ve been dreaming of this moment.\", \"desire\"),\n",
+ " (\"I crave your attention.\", \"desire\"),\n",
+ " (\"I just want to be loved.\", \"desire\"),\n",
+ " (\"I desire success more than comfort.\", \"desire\"),\n",
+ " (\"Oh great, another meeting… just what I needed.\", \"sarcasm\"),\n",
+ " (\"Wow, you’re such a genius.\", \"sarcasm\"),\n",
+ " (\"Yeah, because that worked out so well last time.\", \"sarcasm\"),\n",
+ " (\"Lovely, now we’re lost again.\", \"sarcasm\"),\n",
+ " (\"Oh, I’m absolutely thrilled… not.\", \"sarcasm\"),\n",
+ " (\"Absolutely, let’s make another terrible decision.\", \"sarcasm\"),\n",
+ "]\n",
+ "\n",
+ "\n",
+ "\n",
+ "# Prediction function with error handling\n",
+ "def predict_label(text):\n",
+ " \"\"\"\n",
+ " Predict the emotion label for a given text using the fine-tuned BERT model.\n",
+ "\n",
+ " Args:\n",
+ " text (str): Input text to classify (e.g., \"I'm feeling really down today.\"). 💬\n",
+ "\n",
+ " Returns:\n",
+ " str: Predicted emotion label (e.g., \"sadness\") or \"error\" if prediction fails. 😊\n",
+ " \"\"\"\n",
+ " try:\n",
+ " inputs = tokenizer(text, return_tensors=\"pt\", padding=True, truncation=True, max_length=512)\n",
+ " with torch.no_grad():\n",
+ " outputs = model(**inputs)\n",
+ " logits = outputs.logits\n",
+ " predicted_label = torch.argmax(logits, dim=1).item()\n",
+ " return label_map.get(predicted_label, \"unknown\")\n",
+ " except Exception as e:\n",
+ " print(f\"Error predicting for text '{text}': {e}\")\n",
+ " return \"error\"\n",
+ "\n",
+ "# Run predictions and evaluate performance\n",
+ "correct = 0\n",
+ "print(\"Prediction Results:\\n\" + \"-\"*40)\n",
+ "for idx, (sentence, true_label) in enumerate(test_cases):\n",
+ " predicted = predict_label(sentence)\n",
+ " is_correct = predicted == true_label\n",
+ " if is_correct:\n",
+ " correct += 1\n",
+ " print(f\"{idx+1}. Sentence: {sentence}\")\n",
+ " print(f\" Predicted Label: {predicted}\")\n",
+ " print(f\" True Label: {true_label}\")\n",
+ " print(f\" Correct: {'Yes' if is_correct else 'No'}\\n\")\n",
+ "\n",
+ "# Calculate and display accuracy\n",
+ "total = len(test_cases)\n",
+ "accuracy = (correct / total) * 100 if total > 0 else 0\n",
+ "print(\"-\"*40)\n",
+ "print(f\"Total predictions made: {total}\")\n",
+ "print(f\"Correct predictions: {correct}\")\n",
+ "print(f\"Accuracy: {accuracy:.2f}%\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "fM_F2nba9s9n",
+ "outputId": "2d3f2f1e-1612-4591-d8d6-58827e6c3fbe"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Loading models and evaluating...\n",
+ "\n",
+ "Model | Size (MB) | Total Params (M) | Trainable Params (M) | Avg. Inference Time (ms) | Accuracy (%)\n",
+ "---------------------------------------------------------------------------------------------------------------------------------------\n",
+ "boltuix/NeuroFeel | 109.83 | 14.33 | 14.33 | 10.86 | 100.00 \n",
+ "boltuix/bert-emotion | 85.77 | 11.17 | 11.17 | 6.85 | 68.42 \n",
+ "Varnikasiva/sentiment-classification-bert-mini | 85.77 | 11.17 | 11.17 | 5.18 | 73.68 \n",
+ "\n",
+ "Best model by accuracy: boltuix/NeuroFeel with 100.00% accuracy\n",
+ "\n",
+ "❌ FAILED CASES PER MODEL:\n",
+ "\n",
+ "Model: boltuix/NeuroFeel\n",
+ " ✅ All test cases passed.\n",
+ "\n",
+ "Model: boltuix/bert-emotion\n",
+ "Input | Expected | Predicted\n",
+ "----------------------------------------------------------------------------------------------------\n",
+ "Everything feels meaningless lately. | sadness | confusion\n",
+ "The driver just cut me off without even signaling! | anger | neutral\n",
+ "I didn’t expect to win the competition! | surprise | disgust\n",
+ "I shouldn’t have yelled at him. I feel guilty. | guilt | shame\n",
+ "I forgot Mom’s birthday. I feel terrible. | guilt | sadness\n",
+ "Oh, perfect, rides misplace, pickup puzzle! | sarcasm | happiness\n",
+ "\n",
+ "\n",
+ "Model: Varnikasiva/sentiment-classification-bert-mini\n",
+ "Input | Expected | Predicted\n",
+ "----------------------------------------------------------------------------------------------------\n",
+ "The driver just cut me off without even signaling! | anger | neutral\n",
+ "I didn’t expect to win the competition! | surprise | disgust\n",
+ "I shouldn’t have yelled at him. I feel guilty. | guilt | shame\n",
+ "I forgot Mom’s birthday. I feel terrible. | guilt | sadness\n",
+ "Oh, perfect, rides misplace, pickup puzzle! | sarcasm | happiness\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "import torch\n",
+ "from transformers import AutoModelForSequenceClassification, AutoTokenizer\n",
+ "import time\n",
+ "import os\n",
+ "\n",
+ "model_names = [\n",
+ " \"boltuix/NeuroFeel\", # base model : boltuix/NeuroBERT\n",
+ " \"boltuix/bert-emotion\",# base model :boltuix/bert-lite\n",
+ " \"Varnikasiva/sentiment-classification-bert-mini\", # base model : prajjwal1/bert-mini\n",
+ "]\n",
+ "\n",
+ "test_cases = [\n",
+ " # Sadness 😢\n",
+ " (\"I miss my family so much it hurts.\", \"sadness\"),\n",
+ " (\"Everything feels meaningless lately.\", \"sadness\"),\n",
+ "\n",
+ " # Anger 😠\n",
+ " (\"The driver just cut me off without even signaling!\", \"anger\"),\n",
+ "\n",
+ " # Love ❤️\n",
+ " (\"I love you.\", \"love\"),\n",
+ " (\"i love u very much.\", \"love\"),\n",
+ "\n",
+ " # Surprise 😲\n",
+ " (\"I didn’t expect to win the competition!\", \"surprise\"),\n",
+ "\n",
+ " # Fear 😱\n",
+ " (\"I’m terrified of losing my job.\", \"fear\"),\n",
+ " (\"That noise outside my window scared me to death.\", \"fear\"),\n",
+ "\n",
+ " # Happiness 😄\n",
+ " (\"Spending time with my friends today made me so happy.\", \"happiness\"),\n",
+ "\n",
+ " # Neutral 😐\n",
+ " (\"I had lunch and watched TV. Nothing special.\", \"neutral\"),\n",
+ " (\"Just another ordinary day at the office.\", \"neutral\"),\n",
+ "\n",
+ " # Disgust 🤢\n",
+ " (\"The kitchen smelled awful this morning.\", \"disgust\"),\n",
+ "\n",
+ " # Shame 🙈\n",
+ " (\"I felt so embarrassed after forgetting her name.\", \"shame\"),\n",
+ "\n",
+ " # Guilt 😔\n",
+ " (\"I shouldn’t have yelled at him. I feel guilty.\", \"guilt\"),\n",
+ " (\"I forgot Mom’s birthday. I feel terrible.\", \"guilt\"),\n",
+ "\n",
+ " # Confusion 😕\n",
+ " (\"I don’t understand why she’s upset with me.\", \"confusion\"),\n",
+ " (\"Why is the meeting scheduled twice? I’m confused.\", \"confusion\"),\n",
+ "\n",
+ " # Desire 🔥\n",
+ " (\"I really want to travel the world someday.\", \"desire\"),\n",
+ "\n",
+ " # Sarcasm 🙃\n",
+ " (\"Oh, perfect, rides misplace, pickup puzzle!\", \"sarcasm\"),\n",
+ "]\n",
+ "\n",
+ "\n",
+ "def get_folder_size_mb(folder):\n",
+ " total_size = 0\n",
+ " for dirpath, dirnames, filenames in os.walk(folder):\n",
+ " for f in filenames:\n",
+ " fp = os.path.join(dirpath, f)\n",
+ " total_size += os.path.getsize(fp)\n",
+ " return total_size / (1024 * 1024)\n",
+ "\n",
+ "def load_model_and_tokenizer(model_name):\n",
+ " local_dir = f\"./downloaded_models/{model_name.replace('/', '_')}\"\n",
+ " model = AutoModelForSequenceClassification.from_pretrained(model_name, cache_dir=local_dir)\n",
+ " tokenizer = AutoTokenizer.from_pretrained(model_name, cache_dir=local_dir)\n",
+ " model.eval()\n",
+ " label_map = {int(k): v for k, v in model.config.id2label.items()}\n",
+ " return model, tokenizer, label_map, local_dir\n",
+ "\n",
+ "def predict_label(model, tokenizer, label_map, text):\n",
+ " inputs = tokenizer(text, return_tensors=\"pt\", padding=True, truncation=True, max_length=512)\n",
+ " with torch.no_grad():\n",
+ " outputs = model(**inputs)\n",
+ " logits = outputs.logits\n",
+ " predicted_id = torch.argmax(logits, dim=1).item()\n",
+ " return label_map.get(predicted_id, \"unknown\")\n",
+ "\n",
+ "results = []\n",
+ "print(\"Loading models and evaluating...\\n\")\n",
+ "for name in model_names:\n",
+ " model, tokenizer, label_map, local_dir = load_model_and_tokenizer(name)\n",
+ " size_mb = get_folder_size_mb(local_dir)\n",
+ "\n",
+ " times = []\n",
+ " correct = 0\n",
+ " failed_cases = [] # NEW: collect failed cases\n",
+ "\n",
+ " for text, true_label in test_cases:\n",
+ " start = time.time()\n",
+ " pred = predict_label(model, tokenizer, label_map, text)\n",
+ " end = time.time()\n",
+ " times.append((end - start) * 1000) # ms\n",
+ "\n",
+ " if pred == true_label:\n",
+ " correct += 1\n",
+ " else:\n",
+ " failed_cases.append((text, true_label, pred)) # store mismatch\n",
+ "\n",
+ " avg_time = sum(times) / len(times)\n",
+ " accuracy = (correct / len(test_cases)) * 100\n",
+ "\n",
+ " total_params = sum(p.numel() for p in model.parameters())\n",
+ " trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad)\n",
+ "\n",
+ " results.append({\n",
+ " \"model_name\": name,\n",
+ " \"size_mb\": size_mb,\n",
+ " \"total_params_million\": total_params / 1e6,\n",
+ " \"trainable_params_million\": trainable_params / 1e6,\n",
+ " \"avg_inference_time_ms\": avg_time,\n",
+ " \"accuracy_percent\": accuracy,\n",
+ " \"failed_cases\": failed_cases, # add failed info\n",
+ " })\n",
+ "\n",
+ "# Summary Table\n",
+ "print(f\"{'Model':<50} | {'Size (MB)':<10} | {'Total Params (M)':<17} | {'Trainable Params (M)':<20} | {'Avg. Inference Time (ms)':<24} | {'Accuracy (%)':<12}\")\n",
+ "print(\"-\" * 135)\n",
+ "for res in results:\n",
+ " print(f\"{res['model_name']:<50} | {res['size_mb']:<10.2f} | {res['total_params_million']:<17.2f} | {res['trainable_params_million']:<20.2f} | {res['avg_inference_time_ms']:<24.2f} | {res['accuracy_percent']:<12.2f}\")\n",
+ "\n",
+ "# Best model by accuracy\n",
+ "best_model = max(results, key=lambda x: x['accuracy_percent'])\n",
+ "print(f\"\\nBest model by accuracy: {best_model['model_name']} with {best_model['accuracy_percent']:.2f}% accuracy\")\n",
+ "\n",
+ "# Failed Cases Log\n",
+ "print(\"\\n❌ FAILED CASES PER MODEL:\\n\")\n",
+ "for res in results:\n",
+ " print(f\"Model: {res['model_name']}\")\n",
+ " if not res[\"failed_cases\"]:\n",
+ " print(\" ✅ All test cases passed.\\n\")\n",
+ " continue\n",
+ " print(f\"{'Input':<70} | {'Expected':<10} | {'Predicted'}\")\n",
+ " print(\"-\" * 100)\n",
+ " for sentence, expected, predicted in res[\"failed_cases\"]:\n",
+ " print(f\"{sentence[:70]:<70} | {expected:<10} | {predicted}\")\n",
+ " print(\"\\n\")\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "accelerator": "GPU",
+ "colab": {
+ "gpuType": "T4",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ },
+ "widgets": {
+ "application/vnd.jupyter.widget-state+json": {
+ "02b7ea08c62a464aa0ec1126cc7aecb2": {
+ "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_4214e904c01d4c0ca1a3856a2c913786",
+ "placeholder": "",
+ "style": "IPY_MODEL_6f3597c9cdeb45d995dbcb9b494b9032",
+ "value": "vocab.txt: 100%"
+ }
+ },
+ "0571849b1c1347a6ad44581aa6d3014c": {
+ "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
+ }
+ },
+ "0574728db5104852abfb4b7078929cad": {
+ "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_5c3c994f7c3a4b41a1613c8deb74ae4a",
+ "max": 231508,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_14d9f5d18d37430b8f4b1f5002976c14",
+ "value": 231508
+ }
+ },
+ "05b597fa33d94d8489f0a906b6601ac6": {
+ "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_d218377a68a64eb5a4f5457020a62725",
+ "placeholder": "",
+ "style": "IPY_MODEL_13310f97091f466bbe9c14cca6797a27",
+ "value": "config.json: 100%"
+ }
+ },
+ "0bc9dd340c624a5fac7683ed00498c2c": {
+ "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": ""
+ }
+ },
+ "128a5ed0c23146febe335db237e2710f": {
+ "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_78fe8ef2b501428f95ec0c792b164403",
+ "IPY_MODEL_4c1ef193029f403da623358d6eea2e19",
+ "IPY_MODEL_28062357e02f48a6936389feded24575"
+ ],
+ "layout": "IPY_MODEL_fc6c756a30cc4963aa20f9b448acab10"
+ }
+ },
+ "13310f97091f466bbe9c14cca6797a27": {
+ "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": ""
+ }
+ },
+ "14d9f5d18d37430b8f4b1f5002976c14": {
+ "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": ""
+ }
+ },
+ "15194a408fb5415fa1f28d465700521e": {
+ "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_95fe2503295144bb8468123ec3b40d1c",
+ "placeholder": "",
+ "style": "IPY_MODEL_a9c2da3c42f9486e9caabc123c4350f4",
+ "value": " 132/132 [00:00<00:00, 13.9kB/s]"
+ }
+ },
+ "1b1bf9ce6edc44d6946e0e3a3004cae6": {
+ "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
+ }
+ },
+ "21e071df139249d682835f68117b4eda": {
+ "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
+ }
+ },
+ "24fe1819e2d4414f8bfd8d30633c6fe2": {
+ "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": ""
+ }
+ },
+ "26ccd138f2594379a54bcf28ea426f08": {
+ "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
+ }
+ },
+ "28062357e02f48a6936389feded24575": {
+ "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_3cbf6205e1dc412e9c8245bf086e3e7c",
+ "placeholder": "",
+ "style": "IPY_MODEL_8285dd8bd8c94898bce1cbe3ffb64736",
+ "value": " 57.5M/57.5M [00:00<00:00, 168MB/s]"
+ }
+ },
+ "295eb20afb8a4b88a35ebda114369fe2": {
+ "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_94c23de385894e1faa02664d8970b5bc",
+ "placeholder": "",
+ "style": "IPY_MODEL_5db9ecd4769e49f6bfef8bc5013611ed",
+ "value": "special_tokens_map.json: 100%"
+ }
+ },
+ "2bae8ec848554c1bac9f95e73200ebc2": {
+ "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": ""
+ }
+ },
+ "2fdb97fea1274feab421442b35e98a5c": {
+ "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_295eb20afb8a4b88a35ebda114369fe2",
+ "IPY_MODEL_5fbaff21141b41e78964fa0dc8730292",
+ "IPY_MODEL_15194a408fb5415fa1f28d465700521e"
+ ],
+ "layout": "IPY_MODEL_322deeed887c4499b96026564e6d1d22"
+ }
+ },
+ "322deeed887c4499b96026564e6d1d22": {
+ "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
+ }
+ },
+ "38eace2350d24617a7054a3f23fd083b": {
+ "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": ""
+ }
+ },
+ "3cbf6205e1dc412e9c8245bf086e3e7c": {
+ "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
+ }
+ },
+ "3ef0ad6cffc04384a7734c17ca71066e": {
+ "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
+ }
+ },
+ "4214e904c01d4c0ca1a3856a2c913786": {
+ "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
+ }
+ },
+ "4c1ef193029f403da623358d6eea2e19": {
+ "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_3ef0ad6cffc04384a7734c17ca71066e",
+ "max": 57458416,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_38eace2350d24617a7054a3f23fd083b",
+ "value": 57458416
+ }
+ },
+ "51408a68fa75477eb73b28bd08478a27": {
+ "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_5d5a5d3b0bfb4984b52a2282d4be3405",
+ "max": 611,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_bb071aeb68d54afe9de4f96770c16b8d",
+ "value": 611
+ }
+ },
+ "51cb98c739e94588a74df263daf62c4f": {
+ "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
+ }
+ },
+ "587a98275dd34c08a618fb9111d73fe4": {
+ "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
+ }
+ },
+ "5a95456db43d4267a8c7ae1d3adb9110": {
+ "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_21e071df139249d682835f68117b4eda",
+ "placeholder": "",
+ "style": "IPY_MODEL_0bc9dd340c624a5fac7683ed00498c2c",
+ "value": " 1.36k/1.36k [00:00<00:00, 111kB/s]"
+ }
+ },
+ "5c3c994f7c3a4b41a1613c8deb74ae4a": {
+ "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
+ }
+ },
+ "5d5a5d3b0bfb4984b52a2282d4be3405": {
+ "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
+ }
+ },
+ "5db9ecd4769e49f6bfef8bc5013611ed": {
+ "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": ""
+ }
+ },
+ "5fbaff21141b41e78964fa0dc8730292": {
+ "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_b1e321c905a648d2bc90bd7c5eb50367",
+ "max": 132,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_b0f55fb60973416dba9eef54b929793a",
+ "value": 132
+ }
+ },
+ "6412c72c5f874277bd04ef23222713d5": {
+ "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
+ }
+ },
+ "6431434040ca4b0d8738746930297070": {
+ "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_587a98275dd34c08a618fb9111d73fe4",
+ "placeholder": "",
+ "style": "IPY_MODEL_24fe1819e2d4414f8bfd8d30633c6fe2",
+ "value": "tokenizer_config.json: 100%"
+ }
+ },
+ "644c507725544b9784503eac031ae937": {
+ "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_1b1bf9ce6edc44d6946e0e3a3004cae6",
+ "max": 711396,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_2bae8ec848554c1bac9f95e73200ebc2",
+ "value": 711396
+ }
+ },
+ "6c9b4fff204e4b19adf82309fa1a4556": {
+ "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_7e329e78d0d648c8b793a80b732a6b8e",
+ "placeholder": "",
+ "style": "IPY_MODEL_94ee1ab7847d4a3784f026bdb6c1645f",
+ "value": " 232k/232k [00:00<00:00, 4.17MB/s]"
+ }
+ },
+ "6ed9a1236be7488489bda90570bcf491": {
+ "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_ad36b1ffe2bb4e3ca6838b4b612949fe",
+ "placeholder": "",
+ "style": "IPY_MODEL_c2fda8ced9544c30a74861243e13cec8",
+ "value": "tokenizer.json: 100%"
+ }
+ },
+ "6f3597c9cdeb45d995dbcb9b494b9032": {
+ "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": ""
+ }
+ },
+ "78fe8ef2b501428f95ec0c792b164403": {
+ "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_de782ab08ffd4c4f9cddc9ea5d278762",
+ "placeholder": "",
+ "style": "IPY_MODEL_eb02f42f31544cd692933fce1280374d",
+ "value": "model.safetensors: 100%"
+ }
+ },
+ "7cec1b1c66dc48bc93ffc6825e289330": {
+ "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": ""
+ }
+ },
+ "7e329e78d0d648c8b793a80b732a6b8e": {
+ "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
+ }
+ },
+ "7ff76b22476143dda0a60ee3c45a2573": {
+ "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_6ed9a1236be7488489bda90570bcf491",
+ "IPY_MODEL_644c507725544b9784503eac031ae937",
+ "IPY_MODEL_b477c3f151714d918af683b0743f5068"
+ ],
+ "layout": "IPY_MODEL_26ccd138f2594379a54bcf28ea426f08"
+ }
+ },
+ "8285dd8bd8c94898bce1cbe3ffb64736": {
+ "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": ""
+ }
+ },
+ "83ee878c039f47edb96fde00e6983a4b": {
+ "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_6431434040ca4b0d8738746930297070",
+ "IPY_MODEL_87d22a71e458437faf0ce8bb8defedeb",
+ "IPY_MODEL_5a95456db43d4267a8c7ae1d3adb9110"
+ ],
+ "layout": "IPY_MODEL_bcf8516da0904b0abc5ef3f0278e00b5"
+ }
+ },
+ "87d22a71e458437faf0ce8bb8defedeb": {
+ "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_f5110aa7303d4828877d7582ef636c7d",
+ "max": 1358,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_7cec1b1c66dc48bc93ffc6825e289330",
+ "value": 1358
+ }
+ },
+ "87df8146909842a7abc9ecfa73e1b308": {
+ "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_6412c72c5f874277bd04ef23222713d5",
+ "placeholder": "",
+ "style": "IPY_MODEL_a93f582392ee462793e968d26b32f33e",
+ "value": " 611/611 [00:00<00:00, 62.9kB/s]"
+ }
+ },
+ "92fb1012832d4648b8afe6ce9e679fc4": {
+ "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_05b597fa33d94d8489f0a906b6601ac6",
+ "IPY_MODEL_51408a68fa75477eb73b28bd08478a27",
+ "IPY_MODEL_87df8146909842a7abc9ecfa73e1b308"
+ ],
+ "layout": "IPY_MODEL_51cb98c739e94588a74df263daf62c4f"
+ }
+ },
+ "94c23de385894e1faa02664d8970b5bc": {
+ "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
+ }
+ },
+ "94ee1ab7847d4a3784f026bdb6c1645f": {
+ "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": ""
+ }
+ },
+ "95fe2503295144bb8468123ec3b40d1c": {
+ "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
+ }
+ },
+ "a93f582392ee462793e968d26b32f33e": {
+ "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": ""
+ }
+ },
+ "a9c2da3c42f9486e9caabc123c4350f4": {
+ "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": ""
+ }
+ },
+ "ad36b1ffe2bb4e3ca6838b4b612949fe": {
+ "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
+ }
+ },
+ "b00a8aa97c1d40b28567cb25233182e4": {
+ "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": ""
+ }
+ },
+ "b0f55fb60973416dba9eef54b929793a": {
+ "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": ""
+ }
+ },
+ "b1e321c905a648d2bc90bd7c5eb50367": {
+ "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
+ }
+ },
+ "b477c3f151714d918af683b0743f5068": {
+ "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_c4d7d20019e14d8c8fc8a7ab9cc2d9f1",
+ "placeholder": "",
+ "style": "IPY_MODEL_b00a8aa97c1d40b28567cb25233182e4",
+ "value": " 711k/711k [00:00<00:00, 24.2MB/s]"
+ }
+ },
+ "bb071aeb68d54afe9de4f96770c16b8d": {
+ "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": ""
+ }
+ },
+ "bcf8516da0904b0abc5ef3f0278e00b5": {
+ "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
+ }
+ },
+ "c2fda8ced9544c30a74861243e13cec8": {
+ "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": ""
+ }
+ },
+ "c4d7d20019e14d8c8fc8a7ab9cc2d9f1": {
+ "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
+ }
+ },
+ "d218377a68a64eb5a4f5457020a62725": {
+ "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
+ }
+ },
+ "de782ab08ffd4c4f9cddc9ea5d278762": {
+ "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
+ }
+ },
+ "e76d997ea69c48d7b11f55a4d0b9d9a3": {
+ "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_02b7ea08c62a464aa0ec1126cc7aecb2",
+ "IPY_MODEL_0574728db5104852abfb4b7078929cad",
+ "IPY_MODEL_6c9b4fff204e4b19adf82309fa1a4556"
+ ],
+ "layout": "IPY_MODEL_0571849b1c1347a6ad44581aa6d3014c"
+ }
+ },
+ "eb02f42f31544cd692933fce1280374d": {
+ "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": ""
+ }
+ },
+ "f5110aa7303d4828877d7582ef636c7d": {
+ "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
+ }
+ },
+ "fc6c756a30cc4963aa20f9b448acab10": {
+ "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
+ }
+ }
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}