"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "wandb: Detected [huggingface_hub.inference, openai] in use.\n",
+ "wandb: Use W&B Weave for improved LLM call tracing. Install Weave with `pip install weave` then add `import weave` to the top of your script.\n",
+ "wandb: For more information, check out the docs at: https://weave-docs.wandb.ai\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [32/32 03:08, Epoch 1/1]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Epoch | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 0.100000 | \n",
+ " 0.052316 | \n",
+ "
\n",
+ " \n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [20/20 00:12]\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "
Run history:
| eval/loss | █▁ |
| eval/runtime | █▁ |
| eval/samples_per_second | ▁█ |
| eval/steps_per_second | ▁█ |
| train/epoch | ▁███ |
| train/global_step | ▁███ |
| train/grad_norm | ▁ |
| train/learning_rate | ▁ |
| train/loss | ▁ |
Run summary:
| eval/loss | 0.05231 |
| eval/runtime | 13.5339 |
| eval/samples_per_second | 5.911 |
| eval/steps_per_second | 1.478 |
| total_flos | 2946293207040000.0 |
| train/epoch | 1 |
| train/global_step | 32 |
| train/grad_norm | 0.1389 |
| train/learning_rate | 8e-05 |
| train/loss | 0.1 |
| +4 | ... |
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run optuna-trial-0 at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/zu5yyufj
View project at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Find logs at: ./wandb/run-20260422_235902-zu5yyufj/logs"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[I 2026-04-23 00:02:42,889] Trial 0 finished with value: 0.05230738967657089 and parameters: {'lora_r': 16, 'lora_alpha_mul': 1, 'lora_dropout': 0.005808361216819946, 'learning_rate': 0.00040311702880369243, 'warmup_ratio': 0.1}. Best is trial 0 with value: 0.05230738967657089.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Trial 0: r=16 alpha=16 dropout=0.006 lr=4.03e-04 warmup=0.1 -> eval_loss=0.0523\n",
+ "==((====))== Unsloth 2026.4.7: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Unsloth: Dropout = 0 is supported for fast patching. You are using dropout = 0.030424224295953775.\n",
+ "Unsloth will patch all other layers, except LoRA matrices, causing a performance hit.\n",
+ "/usr/local/lib/python3.12/dist-packages/unsloth/models/_utils.py:2331: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `UnslothSFTTrainer.__init__`. Use `processing_class` instead.\n",
+ " _original_trainer_init(self, *args, **kwargs)\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "🦥 Unsloth: Padding-free auto-enabled, enabling faster training.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 500 | Num Epochs = 1 | Total steps = 32\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 7,372,800 of 3,093,311,488 (0.24% trained)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Tracking run with wandb version 0.26.0"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Run data is saved locally in /content/wandb/run-20260423_000304-pfrd9n61"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Syncing run optuna-trial-1 to Weights & Biases (docs)
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View project at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/pfrd9n61"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [32/32 03:03, Epoch 1/1]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Epoch | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 0.114500 | \n",
+ " 0.078962 | \n",
+ "
\n",
+ " \n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [20/20 00:12]\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "
Run history:
| eval/loss | █▁ |
| eval/runtime | █▁ |
| eval/samples_per_second | ▁█ |
| eval/steps_per_second | ▁█ |
| train/epoch | ▁███ |
| train/global_step | ▁███ |
| train/grad_norm | ▁ |
| train/learning_rate | ▁ |
| train/loss | ▁ |
Run summary:
| eval/loss | 0.07896 |
| eval/runtime | 13.5401 |
| eval/samples_per_second | 5.908 |
| eval/steps_per_second | 1.477 |
| total_flos | 2946293207040000.0 |
| train/epoch | 1 |
| train/global_step | 32 |
| train/grad_norm | 0.14956 |
| train/learning_rate | 4e-05 |
| train/loss | 0.1145 |
| +4 | ... |
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run optuna-trial-1 at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/pfrd9n61
View project at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT
Synced 4 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Find logs at: ./wandb/run-20260423_000304-pfrd9n61/logs"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[I 2026-04-23 00:06:32,284] Trial 1 finished with value: 0.0789594054222107 and parameters: {'lora_r': 16, 'lora_alpha_mul': 1, 'lora_dropout': 0.030424224295953775, 'learning_rate': 0.0002326960468194962, 'warmup_ratio': 0.03}. Best is trial 0 with value: 0.05230738967657089.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Trial 1: r=16 alpha=16 dropout=0.030 lr=2.33e-04 warmup=0.03 -> eval_loss=0.0790\n",
+ "==((====))== Unsloth 2026.4.7: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Unsloth: Dropout = 0 is supported for fast patching. You are using dropout = 0.019967378215835975.\n",
+ "Unsloth will patch all other layers, except LoRA matrices, causing a performance hit.\n",
+ "/usr/local/lib/python3.12/dist-packages/unsloth/models/_utils.py:2331: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `UnslothSFTTrainer.__init__`. Use `processing_class` instead.\n",
+ " _original_trainer_init(self, *args, **kwargs)\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "🦥 Unsloth: Padding-free auto-enabled, enabling faster training.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 500 | Num Epochs = 1 | Total steps = 32\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 3,686,400 of 3,089,625,088 (0.12% trained)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Tracking run with wandb version 0.26.0"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Run data is saved locally in /content/wandb/run-20260423_000654-dh2eeaxk"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Syncing run optuna-trial-2 to Weights & Biases (docs)
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View project at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/dh2eeaxk"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [32/32 03:03, Epoch 1/1]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Epoch | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 0.096600 | \n",
+ " 0.058720 | \n",
+ "
\n",
+ " \n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [20/20 00:12]\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "
Run history:
| eval/loss | ▁█ |
| eval/runtime | █▁ |
| eval/samples_per_second | ▁█ |
| eval/steps_per_second | ▁█ |
| train/epoch | ▁███ |
| train/global_step | ▁███ |
| train/grad_norm | ▁ |
| train/learning_rate | ▁ |
| train/loss | ▁ |
Run summary:
| eval/loss | 0.05872 |
| eval/runtime | 13.3861 |
| eval/samples_per_second | 5.976 |
| eval/steps_per_second | 1.494 |
| total_flos | 2942389309440000.0 |
| train/epoch | 1 |
| train/global_step | 32 |
| train/grad_norm | 0.31422 |
| train/learning_rate | 4e-05 |
| train/loss | 0.0966 |
| +4 | ... |
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run optuna-trial-2 at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/dh2eeaxk
View project at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT
Synced 4 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Find logs at: ./wandb/run-20260423_000654-dh2eeaxk/logs"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[I 2026-04-23 00:10:20,691] Trial 2 finished with value: 0.05872423201799393 and parameters: {'lora_r': 8, 'lora_alpha_mul': 4, 'lora_dropout': 0.019967378215835975, 'learning_rate': 0.00022878863522445903, 'warmup_ratio': 0.03}. Best is trial 0 with value: 0.05230738967657089.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Trial 2: r=8 alpha=32 dropout=0.020 lr=2.29e-04 warmup=0.03 -> eval_loss=0.0587\n",
+ "==((====))== Unsloth 2026.4.7: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Unsloth: Dropout = 0 is supported for fast patching. You are using dropout = 0.03046137691733707.\n",
+ "Unsloth will patch all other layers, except LoRA matrices, causing a performance hit.\n",
+ "/usr/local/lib/python3.12/dist-packages/unsloth/models/_utils.py:2331: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `UnslothSFTTrainer.__init__`. Use `processing_class` instead.\n",
+ " _original_trainer_init(self, *args, **kwargs)\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "🦥 Unsloth: Padding-free auto-enabled, enabling faster training.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 500 | Num Epochs = 1 | Total steps = 32\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 3,686,400 of 3,089,625,088 (0.12% trained)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Tracking run with wandb version 0.26.0"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Run data is saved locally in /content/wandb/run-20260423_001042-jep5c7sz"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Syncing run optuna-trial-3 to Weights & Biases (docs)
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View project at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/jep5c7sz"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [32/32 03:04, Epoch 1/1]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Epoch | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 0.145600 | \n",
+ " 0.119793 | \n",
+ "
\n",
+ " \n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [20/20 00:12]\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "
Run history:
| eval/loss | ▁█ |
| eval/runtime | █▁ |
| eval/samples_per_second | ▁█ |
| eval/steps_per_second | ▁█ |
| train/epoch | ▁███ |
| train/global_step | ▁███ |
| train/grad_norm | ▁ |
| train/learning_rate | ▁ |
| train/loss | ▁ |
Run summary:
| eval/loss | 0.11986 |
| eval/runtime | 13.5701 |
| eval/samples_per_second | 5.895 |
| eval/steps_per_second | 1.474 |
| total_flos | 2942389309440000.0 |
| train/epoch | 1 |
| train/global_step | 32 |
| train/grad_norm | 0.253 |
| train/learning_rate | 2e-05 |
| train/loss | 0.1456 |
| +4 | ... |
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run optuna-trial-3 at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/jep5c7sz
View project at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT
Synced 4 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Find logs at: ./wandb/run-20260423_001042-jep5c7sz/logs"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[I 2026-04-23 00:14:09,403] Trial 3 finished with value: 0.11985526233911514 and parameters: {'lora_r': 8, 'lora_alpha_mul': 2, 'lora_dropout': 0.03046137691733707, 'learning_rate': 0.00011702263636127808, 'warmup_ratio': 0.03}. Best is trial 0 with value: 0.05230738967657089.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Trial 3: r=8 alpha=16 dropout=0.030 lr=1.17e-04 warmup=0.03 -> eval_loss=0.1199\n",
+ "==((====))== Unsloth 2026.4.7: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Unsloth: Dropout = 0 is supported for fast patching. You are using dropout = 0.031171107608941095.\n",
+ "Unsloth will patch all other layers, except LoRA matrices, causing a performance hit.\n",
+ "/usr/local/lib/python3.12/dist-packages/unsloth/models/_utils.py:2331: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `UnslothSFTTrainer.__init__`. Use `processing_class` instead.\n",
+ " _original_trainer_init(self, *args, **kwargs)\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "🦥 Unsloth: Padding-free auto-enabled, enabling faster training.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 500 | Num Epochs = 1 | Total steps = 32\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 7,372,800 of 3,093,311,488 (0.24% trained)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Tracking run with wandb version 0.26.0"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Run data is saved locally in /content/wandb/run-20260423_001430-wvylgkh8"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Syncing run optuna-trial-4 to Weights & Biases (docs)
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View project at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/wvylgkh8"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [32/32 03:03, Epoch 1/1]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Epoch | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 0.114800 | \n",
+ " 0.079328 | \n",
+ "
\n",
+ " \n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [20/20 00:12]\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "
Run history:
| eval/loss | ▁█ |
| eval/runtime | █▁ |
| eval/samples_per_second | ▁█ |
| eval/steps_per_second | ▁█ |
| train/epoch | ▁███ |
| train/global_step | ▁███ |
| train/grad_norm | ▁ |
| train/learning_rate | ▁ |
| train/loss | ▁ |
Run summary:
| eval/loss | 0.07934 |
| eval/runtime | 13.4903 |
| eval/samples_per_second | 5.93 |
| eval/steps_per_second | 1.483 |
| total_flos | 2946293207040000.0 |
| train/epoch | 1 |
| train/global_step | 32 |
| train/grad_norm | 0.14956 |
| train/learning_rate | 4e-05 |
| train/loss | 0.1148 |
| +4 | ... |
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run optuna-trial-4 at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/wvylgkh8
View project at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT
Synced 4 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Find logs at: ./wandb/run-20260423_001430-wvylgkh8/logs"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[I 2026-04-23 00:17:57,673] Trial 4 finished with value: 0.0793430432677269 and parameters: {'lora_r': 16, 'lora_alpha_mul': 1, 'lora_dropout': 0.031171107608941095, 'learning_rate': 0.00023094679892576625, 'warmup_ratio': 0.03}. Best is trial 0 with value: 0.05230738967657089.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Trial 4: r=16 alpha=16 dropout=0.031 lr=2.31e-04 warmup=0.03 -> eval_loss=0.0793\n",
+ "==((====))== Unsloth 2026.4.7: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Unsloth: Dropout = 0 is supported for fast patching. You are using dropout = 0.00884925020519195.\n",
+ "Unsloth will patch all other layers, except LoRA matrices, causing a performance hit.\n",
+ "/usr/local/lib/python3.12/dist-packages/unsloth/models/_utils.py:2331: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `UnslothSFTTrainer.__init__`. Use `processing_class` instead.\n",
+ " _original_trainer_init(self, *args, **kwargs)\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "🦥 Unsloth: Padding-free auto-enabled, enabling faster training.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 500 | Num Epochs = 1 | Total steps = 32\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 3,686,400 of 3,089,625,088 (0.12% trained)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Tracking run with wandb version 0.26.0"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Run data is saved locally in /content/wandb/run-20260423_001819-n06qegrd"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Syncing run optuna-trial-5 to Weights & Biases (docs)
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View project at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run at https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/n06qegrd"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [32/32 03:15, Epoch 1/1]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Epoch | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 0.122500 | \n",
+ " 0.082837 | \n",
+ "
\n",
+ " \n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [20/20 00:12]\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "
Run history:
| eval/loss | █▁ |
| eval/runtime | █▁ |
| eval/samples_per_second | ▁█ |
| eval/steps_per_second | ▁█ |
| train/epoch | ▁███ |
| train/global_step | ▁███ |
| train/grad_norm | ▁ |
| train/learning_rate | ▁ |
| train/loss | ▁ |
Run summary:
| eval/loss | 0.08283 |
| eval/runtime | 13.5748 |
| eval/samples_per_second | 5.893 |
| eval/steps_per_second | 1.473 |
| total_flos | 2942389309440000.0 |
| train/epoch | 1 |
| train/global_step | 32 |
| train/grad_norm | 0.32769 |
| train/learning_rate | 3e-05 |
| train/loss | 0.1225 |
| +4 | ... |
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run optuna-trial-5 at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT/runs/n06qegrd
View project at: https://wandb.ai/sizzing-sizzing/AWS-RL-SFT
Synced 4 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Find logs at: ./wandb/run-20260423_001819-n06qegrd/logs"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[I 2026-04-23 00:21:57,943] Trial 5 finished with value: 0.08283159881830215 and parameters: {'lora_r': 8, 'lora_alpha_mul': 4, 'lora_dropout': 0.00884925020519195, 'learning_rate': 0.0001370838023704289, 'warmup_ratio': 0.1}. Best is trial 0 with value: 0.05230738967657089.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " Trial 5: r=8 alpha=32 dropout=0.009 lr=1.37e-04 warmup=0.1 -> eval_loss=0.0828\n",
+ "\n",
+ "=== OPTUNA RESULTS ===\n",
+ "Best eval_loss : 0.0523\n",
+ "Best trial : #0\n",
+ "Best params :\n",
+ " lora_r 16\n",
+ " lora_alpha_mul 1\n",
+ " lora_dropout 0.005808361216819946\n",
+ " learning_rate 0.00040311702880369243\n",
+ " warmup_ratio 0.1\n"
+ ]
+ }
+ ],
"source": [
"study = optuna.create_study(\n",
" direction='minimize',\n",
@@ -627,44 +3101,57 @@
{
"cell_type": "markdown",
"id": "21d9c33e",
- "metadata": {},
+ "metadata": {
+ "id": "21d9c33e"
+ },
"source": [
"## 10. Optuna plots\n",
"\n",
- "Three views for the judges:\n",
+ "Five views, all rendered with matplotlib and saved as PNGs to `OUT_DIR/plots/`:\n",
"\n",
- "1. **Optimization history** \u2014 did later trials converge on lower loss?\n",
- "2. **Parallel coordinates** \u2014 which hparam combinations trend toward low loss?\n",
- "3. **Param importances** \u2014 which knob mattered most?"
+ "1. **Optimization history** — did later trials converge on lower loss?\n",
+ "2. **Param importances** — which knob mattered most (fANOVA-style)?\n",
+ "3. **Parallel coordinates** — which hparam combinations trend toward low loss?\n",
+ "4. **Slice plot** — per-parameter scatter against the objective.\n",
+ "5. **Per-trial loss curves** — overlay every trial's training/eval loss to see how the search space behaved during fitting."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "90d27d5b",
- "metadata": {},
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "90d27d5b",
+ "outputId": "96cdda6f-79f0-44fc-dd02-70368ed5bff9"
+ },
"outputs": [],
"source": [
- "from optuna.visualization import (\n",
- " plot_optimization_history, plot_parallel_coordinate, plot_param_importances,\n",
- ")\n",
- "\n",
- "plot_optimization_history(study).show()\n",
- "plot_parallel_coordinate(study).show()\n",
- "plot_param_importances(study).show()"
+ "# All Optuna views as matplotlib PNGs in OUT_DIR/plots/.\n",
+ "# Each helper renders inline AND saves to disk; see PLOTS_DIR for the files.\n",
+ "plot_optuna_history(study)\n",
+ "plot_optuna_param_importances(study)\n",
+ "plot_optuna_parallel_coordinates(study)\n",
+ "plot_optuna_slice(study)\n",
+ "plot_optuna_trial_loss_curves(study)"
]
},
{
"cell_type": "markdown",
"id": "7323c278",
- "metadata": {},
+ "metadata": {
+ "id": "7323c278"
+ },
"source": [
- "## 11. Final SFT run \u2014 best hparams, full data, checkpointed\n",
+ "## 11. Final SFT run — best hparams, full data, checkpointed\n",
"\n",
"- Full dataset (1500 train / 150 val)\n",
"- 2 epochs (vs. 1 during search)\n",
"- Checkpoints saved every 50 steps; last 3 kept (`save_total_limit=3`)\n",
- "- `load_best_model_at_end=True` \u2014 final model = lowest eval_loss checkpoint, not last\n",
+ "- `load_best_model_at_end=True` — final model = lowest eval_loss checkpoint, not last\n",
"- **Resume-safe**: if the session dies, rerunning this cell picks up from the latest `checkpoint-*/`"
]
},
@@ -672,7 +3159,104 @@
"cell_type": "code",
"execution_count": null,
"id": "cbeb9145",
- "metadata": {},
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 874,
+ "referenced_widgets": [
+ "8ba25aaf330e4cecb4940f51ce4c2d91",
+ "a11421346cb544c3ae79e49143b3ff98",
+ "59cb2a9a1e0f474fb0759dce2e9254b4",
+ "6fa8f54bd32c4c05b39643df321bf826",
+ "45efca052b0948659037c654d3fa4cfc",
+ "b7d9cf67d7ee44ffb77a45fd4e6fe32f",
+ "01e6e5c1ca6b46e38b90c3437b2a338a",
+ "f02d91e96fe84c0781b1c6e17fd537ae",
+ "5aa8c08833564830a597642fdee68611",
+ "6acc17dc21b84d0e9d91605f8e76e1ce",
+ "8ce3dac1705c4d608474c0b2b29ef16c",
+ "2149d1d6bb244d4db8d53d5c16649563",
+ "0e757f51fc684a33b871c6654f1bc520",
+ "e86a2ac8f7d543b1ae3ecbc2f4e560f7",
+ "1c4fd41612f4466b853c66cfc8b77427",
+ "aa058deba06246f1b0003d7b073c8b1c",
+ "5438f243332143e38cea9fe6ac6acf40",
+ "f74e56c5f86046d8812584b3f4b460ce",
+ "f16acd23373845d3894da4abf9500e0f",
+ "d2babfe551ed49f9809a535092e078e4",
+ "601e2da7c2f3466c907c6dc975904974",
+ "bc086dd51c684413bcb3e40183290786",
+ "24df48e26dde45c78e01649c8b9b68b4",
+ "315ae3dd2bd441b0be55ab63d71cf2f3",
+ "2e2b3a77fa2444528c88527ce662ebcc",
+ "9531b4bcfab345b7b0235c422e7f8c18",
+ "2d740eedcf154502ab8ea9651603d816",
+ "a108eb483f0e4ed0ae36e77e2b269ce6",
+ "6069750771574e9c9d641c4e97d0f1a4",
+ "d5a7f54aab804d7c998694863e366900",
+ "5ae30524dc344783a7b546ac4c403239",
+ "b957a5477fc54821a8112428690ca3f8",
+ "7d3a823c2d45490e9e9505d3e399aeff",
+ "7f3c543649714b99a9565399839ba5e1",
+ "6cdce07c0aae4c80b63ba7c312c15999",
+ "45f43e003da84552b733938e93e76575",
+ "3ca5a40ba10f4ad09b23ee0339607696",
+ "64770e809d234b958d990ad9db262f86",
+ "839bcd34b3d1455c9b168f3c0eb7ee48",
+ "f46385b2c5dd46ebae4f130e22bc2b51",
+ "6cfd94dbb7a84ddf9cada7c2760a2264",
+ "5b6113c58c8b49459b9fe02794b461d4",
+ "4b3da87ff3884fbabe0e6e05af82679a",
+ "2e8fd49cd671471c8e59c8f2b0ecde5b",
+ "95d4d9080e17430687b4a52e7b704ac1",
+ "514d072373ed49d6900888c63d959d39",
+ "cff8893cc6d2490cbb1c903f22d85772",
+ "8874182d6efb466f9551c71306e87be2",
+ "00d34d841ca74436aae9d727781deb95",
+ "4c5ad75f54da4638a49f5d7b91a80675",
+ "3bedf84e5b124ca882242272cabede5c",
+ "90cfd352cfce435a9fb4c2ca4506ef81",
+ "91e66dab350841299c8785795c380366",
+ "8afebc1ba6cc47868b3caa994d271e2a",
+ "8e8c8c3211484f63a499bbe3d5f0b63d",
+ "875f7ae9afab4421bdeacdec71be326a",
+ "42c06ae8171840c8b1c73b5b489d25a7",
+ "7456f76578b944ec98a79f0b0dc6de65",
+ "45a4dce069c5478ab52ce3a35b21123c",
+ "3fec3c13e9224c35aef5fce6f6108e34",
+ "397f468d7aff48618720f3e06b9284ed",
+ "7a6c64ca6c284301b4308fe3f2fe9bcb",
+ "46e1e61959b94777953aa2dd43997a4e",
+ "35ed6c346ecf445f8b9307546af0b17b",
+ "6945c712815142f4b78b3ab735646f6e",
+ "a6343a6d1db84aa180e2cd42376dad35",
+ "00b580c294954b7789e5ec131b554bb0",
+ "55f2f5c7da47473497cccd4591f6f1b2",
+ "cd36d12e348f438e81d1def580ddc3bb",
+ "c7e6eb783c8f465dba5ffe4912db0735",
+ "0b5b82b219a8493badb13a0de16120d8",
+ "b2f24deee752408c9c11652cf60a84d3",
+ "db50c8f9fcd64b1391c751ee7697e23d",
+ "1c7903362174485aa575d018201c4352",
+ "c14897b6216b47038f9b1b5bdb941467",
+ "79520fc6e14b4fb7a20f4eca948dede0",
+ "290efeeadcc0488994d0bf7d32f4e57b",
+ "ba4a487089554097a60c839774eb6312",
+ "99c64e4279264453b7bf06e578ba7025",
+ "0db1cdbbb47a4d0aa8654678cda5e5c8",
+ "47487ef40fba4b01a29038c332fdbe6e",
+ "297df3af99124fe98b6699137b5f3cd8",
+ "51fab6cbb2574f828d0ae4b8431eeda0",
+ "73f33acaacc846e5b22e00e94dff8743",
+ "3848ca58a1b24b0489c0ed2ac572d9a2",
+ "497d07100389476fb3e68a6fe20e04dd",
+ "b8789c36105a4c6d91aa8f2f8aa2182d",
+ "4600b1a835694f13b580c2306d0c267b"
+ ]
+ },
+ "id": "cbeb9145",
+ "outputId": "0f4b26e4-8a29-4de8-a86e-44de8c7831f4"
+ },
"outputs": [],
"source": [
"# Ensure the Transformers 5.x shim is in place (idempotent).\n",
@@ -716,7 +3300,7 @@
"# --- Render the full dataset with the chat template ---\n",
"full_train = ds['train'].map(lambda ex: _render_messages(ex, tokenizer))\n",
"full_val = ds['validation'].map(lambda ex: _render_messages(ex, tokenizer))\n",
- "# Drop metadata then pre-tokenize \u2014 leaves only numeric columns for the collator.\n",
+ "# Drop metadata then pre-tokenize — leaves only numeric columns for the collator.\n",
"full_train = full_train.remove_columns([c for c in full_train.column_names if c != 'text'])\n",
"full_val = full_val.remove_columns([c for c in full_val.column_names if c != 'text'])\n",
"def _tokenize_batch(batch):\n",
@@ -739,9 +3323,9 @@
" resume_ckpt = str(existing[-1])\n",
" print(f'Resuming from checkpoint: {resume_ckpt}')\n",
" else:\n",
- " print('No checkpoint found \u2014 starting fresh')\n",
+ " print('No checkpoint found — starting fresh')\n",
"else:\n",
- " print('No prior training dir \u2014 starting fresh')\n",
+ " print('No prior training dir — starting fresh')\n",
"\n",
"final_trainer = SFTTrainer(\n",
" model=model,\n",
@@ -772,13 +3356,13 @@
" load_best_model_at_end=True,\n",
" metric_for_best_model='eval_loss',\n",
" greater_is_better=False,\n",
- " report_to='wandb',\n",
+ " report_to='none',\n",
" run_name='final-sft',\n",
" seed=CONFIG['seed'],\n",
" dataset_num_proc=1,\n",
" ),\n",
")\n",
- "# Completion-only loss \u2014 same masking as Optuna trials\n",
+ "# Completion-only loss — same masking as Optuna trials\n",
"final_trainer = train_on_responses_only(\n",
" final_trainer,\n",
" instruction_part='<|im_start|>user\\n',\n",
@@ -793,9 +3377,39 @@
},
{
"cell_type": "markdown",
+ "id": "707ab49e",
+ "source": [
+ "## 11a. Final SFT — training curves\n",
+ "\n",
+ "The trainer's `log_history` carries every logged step (loss, eval_loss, learning_rate, grad_norm). Render it as a 2×2 grid and save to `OUT_DIR/plots/final_training_curves.png`."
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "id": "fa46b4b1",
+ "source": [
+ "# Final SFT — training curves\n",
+ "# (train + eval loss, learning-rate schedule, gradient-norm) extracted from\n",
+ "# trainer.state.log_history. Saved to OUT_DIR/plots/final_training_curves.png.\n",
+ "plot_training_curves(\n",
+ " list(final_trainer.state.log_history),\n",
+ " title='Final SFT — training curves (full dataset, best Optuna params)',\n",
+ " save_name='final_training_curves',\n",
+ ")"
+ ],
"metadata": {},
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "id": "kRib4wOVkQdh",
+ "metadata": {
+ "id": "kRib4wOVkQdh"
+ },
"source": [
- "## 12. Post-SFT eval \u2014 the delta that matters\n",
+ "## 12. Post-SFT eval — the delta that matters\n",
"\n",
"Same prompts as the baseline. This is the headline table for judges."
]
@@ -803,7 +3417,14 @@
{
"cell_type": "code",
"execution_count": null,
- "metadata": {},
+ "id": "uOmvY2y_kQdh",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "uOmvY2y_kQdh",
+ "outputId": "e33f9f51-2439-43c9-b9a9-708abb482bfa"
+ },
"outputs": [],
"source": [
"FastLanguageModel.for_inference(model)\n",
@@ -832,18 +3453,18 @@
" 'delta': {k: posttrain_metrics[k] - baseline_metrics[k] for k in metric_keys},\n",
" }, f, indent=2)\n",
"\n",
- "# Log the headline deltas to wandb so they show up in the final run's summary panel\n",
- "wandb.log({\n",
- " 'delta/format_pct': posttrain_metrics['format_pct'] - baseline_metrics['format_pct'],\n",
- " 'delta/exact_pct': posttrain_metrics['exact_pct'] - baseline_metrics['exact_pct'],\n",
- " 'delta/operation_pct': posttrain_metrics['operation_pct'] - baseline_metrics['operation_pct'],\n",
- " 'delta/service_pct': posttrain_metrics['service_pct'] - baseline_metrics['service_pct'],\n",
- "})"
+ "# Render baseline-vs-SFT grouped bars + Δpp delta bars; saved to\n",
+ "# OUT_DIR/plots/eval_metrics_comparison.png. The JSON dump above keeps the\n",
+ "# raw numbers for any downstream comparison.\n",
+ "plot_eval_comparison(baseline_metrics, posttrain_metrics)"
]
},
{
"cell_type": "markdown",
- "metadata": {},
+ "id": "Wp7ycEItkQdh",
+ "metadata": {
+ "id": "Wp7ycEItkQdh"
+ },
"source": [
"## 13. Inspect a few post-SFT generations\n",
"\n",
@@ -853,8 +3474,41 @@
{
"cell_type": "code",
"execution_count": null,
- "metadata": {},
- "outputs": [],
+ "id": "OovPADlKkQdh",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "OovPADlKkQdh",
+ "outputId": "d50dd10c-4135-49f6-fe79-a8a7ef7bb807"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Post-SFT generations vs canonical:\n",
+ "\n",
+ " [OK] expected : 'aws route53 list-hosted-zones'\n",
+ " generated: 'aws route53 list-hosted-zones'\n",
+ "\n",
+ " [OK] expected : 'aws dynamodb put-item --table-name orders --item \\'{\"order_id\":{\"S\":\"001\"},\"status\":{\"S\":\"pending\"}}\\''\n",
+ " generated: 'aws dynamodb put-item --table-name orders --item \\'{\"order_id\":{\"S\":\"001\"},\"status\":{\"S\":\"pending\"}}\\''\n",
+ "\n",
+ " [~ ] expected : 'aws help --task-hint'\n",
+ " generated: 'aws lambda create-function --function-name scheduled-task --runtime python3.12 --handler index.handl'\n",
+ "\n",
+ " [OK] expected : 'aws sns create-topic --name notifications'\n",
+ " generated: 'aws sns create-topic --name notifications'\n",
+ "\n",
+ " [OK] expected : 'aws apigatewayv2 create-api --name payments-api --protocol-type HTTP'\n",
+ " generated: 'aws apigatewayv2 create-api --name payments-api --protocol-type HTTP'\n",
+ "\n",
+ " [OK] expected : 'aws s3api create-bucket --bucket firehose-delivery'\n",
+ " generated: 'aws s3api create-bucket --bucket firehose-delivery'\n"
+ ]
+ }
+ ],
"source": [
"print('Post-SFT generations vs canonical:')\n",
"for r in posttrain_metrics['_per_row'][:6]:\n",
@@ -865,18 +3519,228 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "id": "7vLaN97EkQdh",
+ "metadata": {
+ "id": "7vLaN97EkQdh"
+ },
"source": [
"## 14. Push LoRA adapter to Hugging Face Hub\n",
"\n",
- "Just the adapter \u2014 ~60MB instead of the full 3B (~6GB). Consumers will apply it on top of `Qwen/Qwen2.5-Coder-3B-Instruct` at inference time."
+ "Just the adapter — ~60MB instead of the full 3B (~6GB). Consumers will apply it on top of `Qwen/Qwen2.5-Coder-3B-Instruct` at inference time."
]
},
{
"cell_type": "code",
"execution_count": null,
- "metadata": {},
- "outputs": [],
+ "id": "HzjnMLBMkQdh",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 315,
+ "referenced_widgets": [
+ "b15fcea90a104c5a8fa21646638b0a12",
+ "bc6c6aee6b6d4cd3afe76dd00245f8db",
+ "49c2f2ae112f4133a434b6274ca9ffd0",
+ "871a4878c903463289a2283b5f649d00",
+ "8ea83d7a46d84e37a28890d5c61109cf",
+ "dd6994f094df444c9c62f84fd2da82af",
+ "2d642e51abf547849f6584d35b5d7a70",
+ "c0bc942b2dec498480f6e19344c4d203",
+ "30ca70060ebd492390750750e5c677bf",
+ "3e9b15dda7bf48c3aae394f0d68e2b10",
+ "9dcb1c84d9384ab3b0d9ad681646e4e9",
+ "003ae8232ede408d8f51453bdc63f96e",
+ "5c796d225e474ae2940c9106b9d64938",
+ "9a45bc9a77c94a66b1ff7256e8231088",
+ "e91e918d37a14b28beb9e16f012458f5",
+ "9b33c99b889543a19eef2316ac5ab0fe",
+ "2978d0d591544b74a9b1fc816e430e43",
+ "f50bbeaadfe1453fb7880dc8d725fefb",
+ "648646594ca74b69a29ace1fed5db1be",
+ "c313a139e75c4953ab62b75752bcc5d7",
+ "689257af48194add88f3462e44a9c9a7",
+ "b3f3175c19c74344a406aff51a048139",
+ "0ffa028e2b1e4bcdaa441a9be76de87e",
+ "607cf6ca93ed4f6ab23765508b5f95c1",
+ "4cf904670be54de0803dc23c6e3059d3",
+ "33c60940f8ec4a098021b70f1a76e6b5",
+ "5247e1b5ee1042a593e68f679f30a670",
+ "b3ce39f1bb0741ffbda5960559007735",
+ "d82962ea0d704b99a06987a6d58bc36c",
+ "3db4042595a1463a93d26ef4e8fd5185",
+ "2f180de8e1ef4040ab355cfcdd6445da",
+ "afef069fc3054b6bac72e05c06a9b699",
+ "0cdd8c9bfcce4be8b452a4e03b56cf8f",
+ "a3cb87314cd145cb892e64a5936d5288",
+ "7ed12fe7019d4facb1c8b98238805561",
+ "110e9a99f25f4b9f9139b495a557975b",
+ "25cdfd281d264f49841120ad73571197",
+ "b10bb711d77540678c446c980abbefb0",
+ "d9bd7bf387b44ed7bd859d415bc2986f",
+ "d3e67e65c9b44eadac8364257b7b6a4d",
+ "fdd57fafdc3747baa062dfce006addbf",
+ "240577f1ac5b475ca29ace7e5a697890",
+ "49b872b4786d48d5b906f03d5ffea4cf",
+ "4f7540961425431f895ad9f368867e76",
+ "2e7a725fb0da46768d271d76019af7ff",
+ "2f835b1be1fd4a1fa215c38ccb24fade",
+ "6b7d3842124e451ea5bccfd3d00aaf41",
+ "dbbc84a88ec54339aa0b17acaa527221",
+ "ffbda3ae381149c58b0f4f4ca3aba694",
+ "de8e98bcce6a4a32bb344467f5301c16",
+ "129d882ae4a340fcab1cafde0f5fafaf",
+ "19ce6b36b49e45e39ec255c52fba389d",
+ "4be4e4869d5e441486cb640177763603",
+ "362ca4826fc24755b7898c54334b5f7b",
+ "23ccb3a4752b4bc28c3f312f9537d6a4",
+ "a5f80d1357054b3794403ff0ea183bb1",
+ "ed09000d8a464e21bb0d345c9042ad60",
+ "ac1d67b8c8a24e619ac85998b6fbd44e",
+ "5ccff814bf444f0bb1622c1639072fd3",
+ "ac7464fbe2bd4241bcb283b8f8c2f38c",
+ "823885191d4c472e9f961c11a3c6ffc5",
+ "6eab9db0d1aa4b84b90fc3872e083dc6",
+ "811977f4dc4a45ebaec21ecb2882a6f5",
+ "5f97644a4dbb4de9b2401617cd0d405e",
+ "bb36946281b04834aad5e987f54ef2c5",
+ "d67efe136abc47dcbd9f2f7aea2870b4",
+ "a6c8c00476ed49c7ac1d17165dbb19e0",
+ "b09db1f09d6e4f98b13a1496df56f634",
+ "00af5c6f40494636a6f3229e0a7cfe7c",
+ "0e7ae2b6132647bc9017f6ac2cc342f9",
+ "3a1db87d4cef4e41839e92e7080813c0",
+ "c5c6d5fe77ae4a118d531152e752a552",
+ "a737b9169ce442b7a607273640ac1562",
+ "59c1b9d1ff41425986d2a8740cec7720",
+ "e8069fbac7d04e4093e3f08fdd84b9ff",
+ "81465b29ad7c4f9e98021f23bf6654c0",
+ "e0943fee62a64d16803e1ce7a015c06b"
+ ]
+ },
+ "id": "HzjnMLBMkQdh",
+ "outputId": "eae869a8-3758-4f63-d204-76e691821fe1"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Adapter saved locally: /content/out/adapter\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "b15fcea90a104c5a8fa21646638b0a12",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "README.md: 0%| | 0.00/573 [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "003ae8232ede408d8f51453bdc63f96e",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Processing Files (0 / 0) : | | 0.00B / 0.00B "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "0ffa028e2b1e4bcdaa441a9be76de87e",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "New Data Upload : | | 0.00B / 0.00B "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "a3cb87314cd145cb892e64a5936d5288",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ " ...adapter_model.safetensors: 4%|3 | 525kB / 14.8MB "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Saved model to https://huggingface.co/Sizzing/aws-rl-sft-qwen25coder3b-adapter\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "2e7a725fb0da46768d271d76019af7ff",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Processing Files (0 / 0) : | | 0.00B / 0.00B "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "a5f80d1357054b3794403ff0ea183bb1",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "New Data Upload : | | 0.00B / 0.00B "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "a6c8c00476ed49c7ac1d17165dbb19e0",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ " ...mpcnfz5qff/tokenizer.json: 100%|##########| 11.4MB / 11.4MB "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "OK: adapter pushed to https://huggingface.co/Sizzing/aws-rl-sft-qwen25coder3b-adapter\n"
+ ]
+ }
+ ],
"source": [
"adapter_local = OUT_DIR / 'adapter'\n",
"model.save_pretrained(str(adapter_local))\n",
@@ -890,7 +3754,10 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "id": "hz8swHjGkQdh",
+ "metadata": {
+ "id": "hz8swHjGkQdh"
+ },
"source": [
"## 15. How to use this adapter at inference time\n",
"\n",
@@ -906,7 +3773,7 @@
"# Unsloth auto-pulls the base model and attaches the LoRA\n",
"```\n",
"\n",
- "## 16. Next phase \u2014 GRPO\n",
+ "## 16. Next phase — GRPO\n",
"\n",
"With the SFT'd adapter published, the GRPO phase builds on top:\n",
"\n",
@@ -915,13 +3782,71 @@
"3. Roll out episodes against the live `aws-rl-env` (MiniStack)\n",
"4. GRPO with online env reward + optional `` reasoning (R1-Zero style)\n",
"\n",
- "The adapter we just trained serves as both the starting policy and the KL anchor \u2014 SFT locks format and basic competence, GRPO refines task correctness with real reward signal."
+ "The adapter we just trained serves as both the starting policy and the KL anchor — SFT locks format and basic competence, GRPO refines task correctness with real reward signal."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "RsaNFJOpz3qj",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 106
+ },
+ "id": "RsaNFJOpz3qj",
+ "outputId": "1b6ff873-a8a0-4844-93be-4f45c7ff2984"
+ },
+ "outputs": [],
+ "source": [
+ "import shutil\n",
+ "from pathlib import Path\n",
+ "\n",
+ "STAGE = Path('/content/aws_rl_sft_export')\n",
+ "STAGE.mkdir(exist_ok=True)\n",
+ "\n",
+ "# Copy the output folder wholesale. `out/plots/` is included automatically.\n",
+ "for folder in ['out']:\n",
+ " src = Path('/content') / folder\n",
+ " if src.exists():\n",
+ " dest = STAGE / folder\n",
+ " if dest.exists():\n",
+ " shutil.rmtree(dest)\n",
+ " shutil.copytree(src, dest)\n",
+ " size_mb = sum(p.stat().st_size for p in dest.rglob('*') if p.is_file()) / 1e6\n",
+ " print(f' {folder}/ {size_mb:.1f} MB')\n",
+ " else:\n",
+ " print(f' {folder}/ MISSING')\n",
+ "\n",
+ "# Zip it\n",
+ "zip_path = shutil.make_archive('/content/aws_rl_sft_artifacts', 'zip', STAGE)\n",
+ "size_mb = Path(zip_path).stat().st_size / 1e6\n",
+ "print(f'\\nArchive: {zip_path} ({size_mb:.1f} MB)')\n",
+ "\n",
+ "# Download\n",
+ "from google.colab import files\n",
+ "files.download(zip_path)"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "Wkhwg6Wqz547",
+ "metadata": {
+ "id": "Wkhwg6Wqz547"
+ },
+ "outputs": [],
+ "source": []
}
],
"metadata": {
+ "accelerator": "GPU",
+ "colab": {
+ "gpuType": "T4",
+ "provenance": []
+ },
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -935,9 +3860,13013 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11"
+ "version": "3.12.10"
+ },
+ "widgets": {
+ "application/vnd.jupyter.widget-state+json": {
+ "state": {
+ "003ae8232ede408d8f51453bdc63f96e": {
+ "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_5c796d225e474ae2940c9106b9d64938",
+ "IPY_MODEL_9a45bc9a77c94a66b1ff7256e8231088",
+ "IPY_MODEL_e91e918d37a14b28beb9e16f012458f5"
+ ],
+ "layout": "IPY_MODEL_9b33c99b889543a19eef2316ac5ab0fe"
+ }
+ },
+ "00af5c6f40494636a6f3229e0a7cfe7c": {
+ "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_59c1b9d1ff41425986d2a8740cec7720",
+ "max": 11422086,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_e8069fbac7d04e4093e3f08fdd84b9ff",
+ "value": 11422086
+ }
+ },
+ "00b580c294954b7789e5ec131b554bb0": {
+ "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_55f2f5c7da47473497cccd4591f6f1b2",
+ "IPY_MODEL_cd36d12e348f438e81d1def580ddc3bb",
+ "IPY_MODEL_c7e6eb783c8f465dba5ffe4912db0735"
+ ],
+ "layout": "IPY_MODEL_0b5b82b219a8493badb13a0de16120d8"
+ }
+ },
+ "00d34d841ca74436aae9d727781deb95": {
+ "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
+ }
+ },
+ "00ebf205de7145699686bf127480ec74": {
+ "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_4d02b3371c1d4bd6a2dd7e9df50d227b",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_4c03c750722344faad6a2636dcf2a8c4",
+ "value": 1
+ }
+ },
+ "01e6e5c1ca6b46e38b90c3437b2a338a": {
+ "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": ""
+ }
+ },
+ "047421bbdbf042e3927d810afbb0b565": {
+ "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": ""
+ }
+ },
+ "048621e84d3a417f803f7a3e944234a6": {
+ "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": ""
+ }
+ },
+ "08036e0504e74efa9853b662f5bac19b": {
+ "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_a02f4be4f7c745aaae9727e9fb8f428c",
+ "IPY_MODEL_21402222e42046feb1eb6f4e64ecae50",
+ "IPY_MODEL_760789c0138e4adaade91c3bb73cea2d"
+ ],
+ "layout": "IPY_MODEL_643e84e16a3d4205bbc332db420f21d6"
+ }
+ },
+ "0b5b82b219a8493badb13a0de16120d8": {
+ "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
+ }
+ },
+ "0cdd8c9bfcce4be8b452a4e03b56cf8f": {
+ "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": ""
+ }
+ },
+ "0db1cdbbb47a4d0aa8654678cda5e5c8": {
+ "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_3848ca58a1b24b0489c0ed2ac572d9a2",
+ "max": 150,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_497d07100389476fb3e68a6fe20e04dd",
+ "value": 150
+ }
+ },
+ "0ddc82e2462d4ad4b4661e55654352b3": {
+ "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
+ }
+ },
+ "0e00775c7821414fb82084db4c71aff9": {
+ "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
+ }
+ },
+ "0e17405c7a8e4e6ab41d3964dc5fa5b4": {
+ "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_afcb53065479412f8ab30274403dcd9a",
+ "placeholder": "",
+ "style": "IPY_MODEL_d11291002423435f9ab639af145e999b",
+ "value": " 80/80 [00:00<00:00, 553.74 examples/s]"
+ }
+ },
+ "0e757f51fc684a33b871c6654f1bc520": {
+ "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_5438f243332143e38cea9fe6ac6acf40",
+ "placeholder": "",
+ "style": "IPY_MODEL_f74e56c5f86046d8812584b3f4b460ce",
+ "value": "Map: 100%"
+ }
+ },
+ "0e7ae2b6132647bc9017f6ac2cc342f9": {
+ "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_81465b29ad7c4f9e98021f23bf6654c0",
+ "placeholder": "",
+ "style": "IPY_MODEL_e0943fee62a64d16803e1ce7a015c06b",
+ "value": " 11.4MB / 11.4MB "
+ }
+ },
+ "0f4287efdcda4149a62718c3e8c14326": {
+ "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_64500442a3d44994a3593d309cd9ab02",
+ "max": 80,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_ee43ac368f5a4aa0813035b3d07cc399",
+ "value": 80
+ }
+ },
+ "0f8fc328cf5a4d56b155a64238f1a3e5": {
+ "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": ""
+ }
+ },
+ "0ffa028e2b1e4bcdaa441a9be76de87e": {
+ "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_607cf6ca93ed4f6ab23765508b5f95c1",
+ "IPY_MODEL_4cf904670be54de0803dc23c6e3059d3",
+ "IPY_MODEL_33c60940f8ec4a098021b70f1a76e6b5"
+ ],
+ "layout": "IPY_MODEL_5247e1b5ee1042a593e68f679f30a670"
+ }
+ },
+ "10132dd4cbde4803bdd38f45dc7e8b7d": {
+ "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_e2cdbf13de504156ae577dc40cbb48e5",
+ "placeholder": "",
+ "style": "IPY_MODEL_f7143a33b8ec4638934f319f04daa5fe",
+ "value": " 500/500 [00:00<00:00, 599.43 examples/s]"
+ }
+ },
+ "1056869d6f2048b38e79ab0bdddf0d55": {
+ "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
+ }
+ },
+ "110e9a99f25f4b9f9139b495a557975b": {
+ "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_fdd57fafdc3747baa062dfce006addbf",
+ "max": 14783936,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_240577f1ac5b475ca29ace7e5a697890",
+ "value": 14783936
+ }
+ },
+ "129d882ae4a340fcab1cafde0f5fafaf": {
+ "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": ""
+ }
+ },
+ "13cba6f342194b9ca6288583f9ff7b7a": {
+ "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": ""
+ }
+ },
+ "13d6cac54c3849f1afee12e0ef48dddf": {
+ "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": ""
+ }
+ },
+ "14a182021a734a6399c7fd5d9da8e9c7": {
+ "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
+ }
+ },
+ "16d4f581ec604fcc927343369c73f075": {
+ "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_ff0c2a46d55946459f52d2dd09e05674",
+ "placeholder": "",
+ "style": "IPY_MODEL_75b1eff81944448ab15c7d3f25021c99",
+ "value": "Map (num_proc=6): 100%"
+ }
+ },
+ "170a45be12e84118b1499c2d5a6c1b49": {
+ "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
+ }
+ },
+ "190841be433642759e1a669a3c1a456a": {
+ "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
+ }
+ },
+ "19a0246152f9400a9bb4362fd5f563fe": {
+ "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": ""
+ }
+ },
+ "19ce6b36b49e45e39ec255c52fba389d": {
+ "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": "20px"
+ }
+ },
+ "19f1fea7704742f79b50e096e08f7e30": {
+ "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": ""
+ }
+ },
+ "1ad5f8440a414d3eb18484e567ec57e5": {
+ "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_94f05fcac46b45a88cf98017f1870ad8",
+ "max": 266,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_4423b209ea8a439d9dc62bd0c85a055e",
+ "value": 266
+ }
+ },
+ "1af65eaea1dc47e49ba71128f8cc7043": {
+ "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_9edb47ef9a4e4348b0e99d302f1308eb",
+ "placeholder": "",
+ "style": "IPY_MODEL_c377f4bbadda4ca9a50769e7b7b83d1d",
+ "value": " 613/613 [00:00<00:00, 12.7kB/s]"
+ }
+ },
+ "1b8bdab05d574458ad302ab4d60c86e0": {
+ "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": ""
+ }
+ },
+ "1bcdcc5cb631454d95ef3a2ca180fbda": {
+ "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_6f8cc86dadfa4e47a4e3ec2aeb9ef0da",
+ "placeholder": "",
+ "style": "IPY_MODEL_6d290f1a029d409999a4d4f9dad9af00",
+ "value": " 2.78M/? [00:00<00:00, 10.2MB/s]"
+ }
+ },
+ "1c4fd41612f4466b853c66cfc8b77427": {
+ "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_601e2da7c2f3466c907c6dc975904974",
+ "placeholder": "",
+ "style": "IPY_MODEL_bc086dd51c684413bcb3e40183290786",
+ "value": " 150/150 [00:00<00:00, 2036.09 examples/s]"
+ }
+ },
+ "1c7903362174485aa575d018201c4352": {
+ "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
+ }
+ },
+ "1c846669e92d4d3a9cd91c408809ba69": {
+ "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": ""
+ }
+ },
+ "1d5e153fda8a4e38884d13b4b916edda": {
+ "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": ""
+ }
+ },
+ "20e75436cb7942e98f86392cb0378079": {
+ "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": ""
+ }
+ },
+ "21402222e42046feb1eb6f4e64ecae50": {
+ "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_7fa93872e8ce480b8f298cbcbb746916",
+ "max": 500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_1b8bdab05d574458ad302ab4d60c86e0",
+ "value": 500
+ }
+ },
+ "2149d1d6bb244d4db8d53d5c16649563": {
+ "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_0e757f51fc684a33b871c6654f1bc520",
+ "IPY_MODEL_e86a2ac8f7d543b1ae3ecbc2f4e560f7",
+ "IPY_MODEL_1c4fd41612f4466b853c66cfc8b77427"
+ ],
+ "layout": "IPY_MODEL_aa058deba06246f1b0003d7b073c8b1c"
+ }
+ },
+ "21b3fb6c19f54448a9e20ece85600a5b": {
+ "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
+ }
+ },
+ "2258954750884ee483357f4b9c178036": {
+ "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_5e5e3d76fe88464aa73ead1a1c51ccc5",
+ "placeholder": "",
+ "style": "IPY_MODEL_407a7acb4e474669bbec60ec70028736",
+ "value": " 500/500 [00:00<00:00, 2383.93 examples/s]"
+ }
+ },
+ "23ccb3a4752b4bc28c3f312f9537d6a4": {
+ "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": ""
+ }
+ },
+ "240577f1ac5b475ca29ace7e5a697890": {
+ "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": ""
+ }
+ },
+ "241038e98d724ee5b15b20682725b1ec": {
+ "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": ""
+ }
+ },
+ "2479fa82f86e44efb0074bf98d677948": {
+ "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_af1c80e5ed764e0dbe94a7901bfa5055",
+ "IPY_MODEL_50a6b112d54b4f4caf81ff51b5d47330",
+ "IPY_MODEL_2258954750884ee483357f4b9c178036"
+ ],
+ "layout": "IPY_MODEL_facd2d2ea3fd48f9a1ac2cc13bef64b8"
+ }
+ },
+ "249df56441d74bf4ba35ca0463e8d443": {
+ "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": ""
+ }
+ },
+ "24df48e26dde45c78e01649c8b9b68b4": {
+ "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_315ae3dd2bd441b0be55ab63d71cf2f3",
+ "IPY_MODEL_2e2b3a77fa2444528c88527ce662ebcc",
+ "IPY_MODEL_9531b4bcfab345b7b0235c422e7f8c18"
+ ],
+ "layout": "IPY_MODEL_2d740eedcf154502ab8ea9651603d816"
+ }
+ },
+ "25cdfd281d264f49841120ad73571197": {
+ "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_49b872b4786d48d5b906f03d5ffea4cf",
+ "placeholder": "",
+ "style": "IPY_MODEL_4f7540961425431f895ad9f368867e76",
+ "value": " 14.8MB / 14.8MB "
+ }
+ },
+ "275b2d90c0da458abbf59c963afb2e7e": {
+ "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": ""
+ }
+ },
+ "27ce5b996e4742a7a835112d03a9ae17": {
+ "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_a3adefd3834347cdb48d9e3316a5ed48",
+ "placeholder": "",
+ "style": "IPY_MODEL_a83dabfdb0324a9abc66b7bb47142fdc",
+ "value": "README.md: "
+ }
+ },
+ "288bd1af47c34ce7afe1cf10ae64da1a": {
+ "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
+ }
+ },
+ "290efeeadcc0488994d0bf7d32f4e57b": {
+ "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": ""
+ }
+ },
+ "29231af3a98a4913a229841d84b27422": {
+ "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_27ce5b996e4742a7a835112d03a9ae17",
+ "IPY_MODEL_eb3e7af58dc7441f9befff94cd837496",
+ "IPY_MODEL_bd36a2a263244450b85a492f96d018fa"
+ ],
+ "layout": "IPY_MODEL_7fca6a24a44a45bb87e8cc4fd390403e"
+ }
+ },
+ "2978d0d591544b74a9b1fc816e430e43": {
+ "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
+ }
+ },
+ "297df3af99124fe98b6699137b5f3cd8": {
+ "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
+ }
+ },
+ "29da9ecefb744a6ebe187d6ad24a04ec": {
+ "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
+ }
+ },
+ "2a30540f69414facb204ef8a7e6dea4a": {
+ "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
+ }
+ },
+ "2a8681d890d3439a90403ba1b9eec927": {
+ "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
+ }
+ },
+ "2d642e51abf547849f6584d35b5d7a70": {
+ "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": ""
+ }
+ },
+ "2d740eedcf154502ab8ea9651603d816": {
+ "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
+ }
+ },
+ "2e2b3a77fa2444528c88527ce662ebcc": {
+ "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_d5a7f54aab804d7c998694863e366900",
+ "max": 1500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_5ae30524dc344783a7b546ac4c403239",
+ "value": 1500
+ }
+ },
+ "2e7179f8d86740689b94aa8af55f403d": {
+ "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": ""
+ }
+ },
+ "2e7a725fb0da46768d271d76019af7ff": {
+ "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_2f835b1be1fd4a1fa215c38ccb24fade",
+ "IPY_MODEL_6b7d3842124e451ea5bccfd3d00aaf41",
+ "IPY_MODEL_dbbc84a88ec54339aa0b17acaa527221"
+ ],
+ "layout": "IPY_MODEL_ffbda3ae381149c58b0f4f4ca3aba694"
+ }
+ },
+ "2e8fd49cd671471c8e59c8f2b0ecde5b": {
+ "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": ""
+ }
+ },
+ "2eb6cd8deed74f1cae2298c20265efd6": {
+ "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_867ffb288b49498281c615325c9f9320",
+ "placeholder": "",
+ "style": "IPY_MODEL_a19ce4b328c34e1d9f84a9a70b5917d0",
+ "value": " 80/80 [00:00<00:00, 42.34 examples/s]"
+ }
+ },
+ "2f180de8e1ef4040ab355cfcdd6445da": {
+ "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": ""
+ }
+ },
+ "2f835b1be1fd4a1fa215c38ccb24fade": {
+ "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_de8e98bcce6a4a32bb344467f5301c16",
+ "placeholder": "",
+ "style": "IPY_MODEL_129d882ae4a340fcab1cafde0f5fafaf",
+ "value": "Processing Files (1 / 1) : 100%"
+ }
+ },
+ "2ffe97ed07e54f17b353563bcdd48b41": {
+ "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
+ }
+ },
+ "30ca70060ebd492390750750e5c677bf": {
+ "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": ""
+ }
+ },
+ "30ecc6450c0e4891b44c08f4e78db09c": {
+ "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": ""
+ }
+ },
+ "315ae3dd2bd441b0be55ab63d71cf2f3": {
+ "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_a108eb483f0e4ed0ae36e77e2b269ce6",
+ "placeholder": "",
+ "style": "IPY_MODEL_6069750771574e9c9d641c4e97d0f1a4",
+ "value": "Map: 100%"
+ }
+ },
+ "31f6a413168f45a5ab84a3e764013d78": {
+ "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_ccd9559fb88e4d6ab05f4d4f47a9e364",
+ "IPY_MODEL_f31c8cc62d4c401d8a865e6caad20c38",
+ "IPY_MODEL_1af65eaea1dc47e49ba71128f8cc7043"
+ ],
+ "layout": "IPY_MODEL_66c2a12960974935949e3186d50d2e45"
+ }
+ },
+ "33c60940f8ec4a098021b70f1a76e6b5": {
+ "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_afef069fc3054b6bac72e05c06a9b699",
+ "placeholder": "",
+ "style": "IPY_MODEL_0cdd8c9bfcce4be8b452a4e03b56cf8f",
+ "value": " 14.8MB / 14.8MB, 9.24MB/s "
+ }
+ },
+ "35ed6c346ecf445f8b9307546af0b17b": {
+ "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": ""
+ }
+ },
+ "362ca4826fc24755b7898c54334b5f7b": {
+ "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
+ }
+ },
+ "376b785a2a0f425693df17708b72f866": {
+ "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
+ }
+ },
+ "37924cda1a6446ffa7e3ed65c46fb0f2": {
+ "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": ""
+ }
+ },
+ "37f6fba6ad82421885e71b7cc4b42064": {
+ "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": ""
+ }
+ },
+ "383bb49d4cd34c2685a36c0965e9730b": {
+ "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
+ }
+ },
+ "3848ca58a1b24b0489c0ed2ac572d9a2": {
+ "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
+ }
+ },
+ "397f468d7aff48618720f3e06b9284ed": {
+ "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
+ }
+ },
+ "3a1db87d4cef4e41839e92e7080813c0": {
+ "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
+ }
+ },
+ "3a24f03afa3143448425861758e13de2": {
+ "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_ed4d26c9971d41ba821bcbf8c876c1cb",
+ "max": 150,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_37f6fba6ad82421885e71b7cc4b42064",
+ "value": 150
+ }
+ },
+ "3ad89276ef674026baca9d24d1296710": {
+ "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_376b785a2a0f425693df17708b72f866",
+ "placeholder": "",
+ "style": "IPY_MODEL_13cba6f342194b9ca6288583f9ff7b7a",
+ "value": "data/reserve-00000-of-00001.parquet: 100%"
+ }
+ },
+ "3bedf84e5b124ca882242272cabede5c": {
+ "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": ""
+ }
+ },
+ "3ca5a40ba10f4ad09b23ee0339607696": {
+ "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_4b3da87ff3884fbabe0e6e05af82679a",
+ "placeholder": "",
+ "style": "IPY_MODEL_2e8fd49cd671471c8e59c8f2b0ecde5b",
+ "value": " 150/150 [00:00<00:00, 1001.93 examples/s]"
+ }
+ },
+ "3d39bd5c62554dc98e37f26209681667": {
+ "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_992500d0a88044f3be59f23920e19f46",
+ "max": 260654,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_4758f788c9894f0a94fe1263a23039b6",
+ "value": 260654
+ }
+ },
+ "3db2b92b2e844f229826b4c46dd1faf9": {
+ "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": ""
+ }
+ },
+ "3db4042595a1463a93d26ef4e8fd5185": {
+ "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": "20px"
+ }
+ },
+ "3e9b15dda7bf48c3aae394f0d68e2b10": {
+ "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
+ }
+ },
+ "3f871a98b3214aecb047e164dc4a2a5d": {
+ "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_73b2b5b571f448b6bc3bc99552b1c392",
+ "placeholder": "",
+ "style": "IPY_MODEL_37924cda1a6446ffa7e3ed65c46fb0f2",
+ "value": "model.safetensors: 100%"
+ }
+ },
+ "3fec3c13e9224c35aef5fce6f6108e34": {
+ "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
+ }
+ },
+ "407a7acb4e474669bbec60ec70028736": {
+ "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": ""
+ }
+ },
+ "42c06ae8171840c8b1c73b5b489d25a7": {
+ "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_397f468d7aff48618720f3e06b9284ed",
+ "placeholder": "",
+ "style": "IPY_MODEL_7a6c64ca6c284301b4308fe3f2fe9bcb",
+ "value": "Filter (num_proc=5): 100%"
+ }
+ },
+ "4398ec401e6340b4b5f09482759a1045": {
+ "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": ""
+ }
+ },
+ "4423b209ea8a439d9dc62bd0c85a055e": {
+ "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": ""
+ }
+ },
+ "458d4b1b8efa47da9485514935fdbbf1": {
+ "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_ad2af2ba3b334823a563ce1dd4b2c65f",
+ "IPY_MODEL_8cf568edd88743b1a0cc66702873f5e6",
+ "IPY_MODEL_c05ce0271f8e4dc7a0315601532ca955"
+ ],
+ "layout": "IPY_MODEL_4baef096df4242b48f3273c0ef46c648"
+ }
+ },
+ "45a4dce069c5478ab52ce3a35b21123c": {
+ "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_6945c712815142f4b78b3ab735646f6e",
+ "placeholder": "",
+ "style": "IPY_MODEL_a6343a6d1db84aa180e2cd42376dad35",
+ "value": " 1500/1500 [00:01<00:00, 357.86 examples/s]"
+ }
+ },
+ "45efca052b0948659037c654d3fa4cfc": {
+ "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
+ }
+ },
+ "45f43e003da84552b733938e93e76575": {
+ "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_6cfd94dbb7a84ddf9cada7c2760a2264",
+ "max": 150,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_5b6113c58c8b49459b9fe02794b461d4",
+ "value": 150
+ }
+ },
+ "4600b1a835694f13b580c2306d0c267b": {
+ "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": ""
+ }
+ },
+ "4649e83451ae45fc9e47878075e04834": {
+ "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_6c8e529410e94ce6af69ccfc3df6be6d",
+ "placeholder": "",
+ "style": "IPY_MODEL_d97b2639afd9447eb61a6983cebe605a",
+ "value": " 200/200 [00:00<00:00, 9432.93 examples/s]"
+ }
+ },
+ "4696ce54235f4bd3873eeed778a4d75e": {
+ "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
+ }
+ },
+ "46e1e61959b94777953aa2dd43997a4e": {
+ "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
+ }
+ },
+ "47487ef40fba4b01a29038c332fdbe6e": {
+ "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_b8789c36105a4c6d91aa8f2f8aa2182d",
+ "placeholder": "",
+ "style": "IPY_MODEL_4600b1a835694f13b580c2306d0c267b",
+ "value": " 150/150 [00:00<00:00, 100.37 examples/s]"
+ }
+ },
+ "4758f788c9894f0a94fe1263a23039b6": {
+ "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": ""
+ }
+ },
+ "481e292b38954268ace143e169dfca74": {
+ "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": ""
+ }
+ },
+ "48c20c5564494cd5bac8ed6577bd91b0": {
+ "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": ""
+ }
+ },
+ "497d07100389476fb3e68a6fe20e04dd": {
+ "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": ""
+ }
+ },
+ "49b872b4786d48d5b906f03d5ffea4cf": {
+ "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
+ }
+ },
+ "49c2f2ae112f4133a434b6274ca9ffd0": {
+ "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_c0bc942b2dec498480f6e19344c4d203",
+ "max": 573,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_30ca70060ebd492390750750e5c677bf",
+ "value": 573
+ }
+ },
+ "4b3da87ff3884fbabe0e6e05af82679a": {
+ "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
+ }
+ },
+ "4baef096df4242b48f3273c0ef46c648": {
+ "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
+ }
+ },
+ "4be4e4869d5e441486cb640177763603": {
+ "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": ""
+ }
+ },
+ "4c03c750722344faad6a2636dcf2a8c4": {
+ "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": ""
+ }
+ },
+ "4c4456ede1364182b6b84bab9dbd0ceb": {
+ "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
+ }
+ },
+ "4c5ad75f54da4638a49f5d7b91a80675": {
+ "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
+ }
+ },
+ "4cf904670be54de0803dc23c6e3059d3": {
+ "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_3db4042595a1463a93d26ef4e8fd5185",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_2f180de8e1ef4040ab355cfcdd6445da",
+ "value": 1
+ }
+ },
+ "4d02b3371c1d4bd6a2dd7e9df50d227b": {
+ "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": "20px"
+ }
+ },
+ "4db1938146d24d3a8f267ad069c63baf": {
+ "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_cc72718e8e344f99839589eec9388dc5",
+ "IPY_MODEL_a336d465b4c146e68fb7f9e0414001e5",
+ "IPY_MODEL_7309057341a74ca28a8bd6e9f1d8e0df"
+ ],
+ "layout": "IPY_MODEL_fe237eb64d7b4a71bf13753010e77cbb"
+ }
+ },
+ "4f7540961425431f895ad9f368867e76": {
+ "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": ""
+ }
+ },
+ "4f7701101cc24c2f90049a6fc0919d80": {
+ "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": ""
+ }
+ },
+ "50a6b112d54b4f4caf81ff51b5d47330": {
+ "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_7e1c3b7d0e714ee3a7d92f7bdc68f19a",
+ "max": 500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_f63a0c3bd30741e389921c5a0c0257b6",
+ "value": 500
+ }
+ },
+ "512998b463a04362a4d618f503ceb95c": {
+ "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
+ }
+ },
+ "514d072373ed49d6900888c63d959d39": {
+ "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_4c5ad75f54da4638a49f5d7b91a80675",
+ "placeholder": "",
+ "style": "IPY_MODEL_3bedf84e5b124ca882242272cabede5c",
+ "value": "Map (num_proc=5): 100%"
+ }
+ },
+ "51fab6cbb2574f828d0ae4b8431eeda0": {
+ "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
+ }
+ },
+ "5247e1b5ee1042a593e68f679f30a670": {
+ "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
+ }
+ },
+ "530347c79cab4606835a0b7302e35f5b": {
+ "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": ""
+ }
+ },
+ "5438f243332143e38cea9fe6ac6acf40": {
+ "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
+ }
+ },
+ "5463570fd1ad4f43af5e5d4a14e5bbb1": {
+ "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_643b5f3367fc475aba8eeffe6091032c",
+ "placeholder": "",
+ "style": "IPY_MODEL_e67201215c274e8684c1c088bb7edc37",
+ "value": "tokenizer.json: "
+ }
+ },
+ "55f2f5c7da47473497cccd4591f6f1b2": {
+ "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_b2f24deee752408c9c11652cf60a84d3",
+ "placeholder": "",
+ "style": "IPY_MODEL_db50c8f9fcd64b1391c751ee7697e23d",
+ "value": "Map (num_proc=5): 100%"
+ }
+ },
+ "5668a72966b841019572521c201ea4e2": {
+ "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_895249c57814429e99f87e5d86907346",
+ "placeholder": "",
+ "style": "IPY_MODEL_61ad1078a7cc40819cdad3bf68531b6c",
+ "value": "generation_config.json: 100%"
+ }
+ },
+ "572caef8e71c48cea2b9bf826256a1e3": {
+ "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_fc8ba4f1606743dcabc2ee0dd482b704",
+ "IPY_MODEL_0f4287efdcda4149a62718c3e8c14326",
+ "IPY_MODEL_0e17405c7a8e4e6ab41d3964dc5fa5b4"
+ ],
+ "layout": "IPY_MODEL_f803f04e1f0b4c8db5b2a571538790d3"
+ }
+ },
+ "57553e43d221422d921c4212d71ad972": {
+ "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_5463570fd1ad4f43af5e5d4a14e5bbb1",
+ "IPY_MODEL_8d3afe0c4db14a9ab7234230d9f12e3e",
+ "IPY_MODEL_8a6323e9aa7342e1ab3337f24a48d61e"
+ ],
+ "layout": "IPY_MODEL_21b3fb6c19f54448a9e20ece85600a5b"
+ }
+ },
+ "59115df98912426b9d679bf80e3f5f6e": {
+ "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_c28d17bc0e2446dc89081a1a638a2484",
+ "IPY_MODEL_79099348a0c643e7bceaf63e6456f1f7",
+ "IPY_MODEL_10132dd4cbde4803bdd38f45dc7e8b7d"
+ ],
+ "layout": "IPY_MODEL_62769eb172cd4d2884c75b8e36c2d28c"
+ }
+ },
+ "59c1b9d1ff41425986d2a8740cec7720": {
+ "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
+ }
+ },
+ "59cb2a9a1e0f474fb0759dce2e9254b4": {
+ "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_f02d91e96fe84c0781b1c6e17fd537ae",
+ "max": 1500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_5aa8c08833564830a597642fdee68611",
+ "value": 1500
+ }
+ },
+ "5aa8c08833564830a597642fdee68611": {
+ "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": ""
+ }
+ },
+ "5ae30524dc344783a7b546ac4c403239": {
+ "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": ""
+ }
+ },
+ "5b6113c58c8b49459b9fe02794b461d4": {
+ "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": ""
+ }
+ },
+ "5c796d225e474ae2940c9106b9d64938": {
+ "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_2978d0d591544b74a9b1fc816e430e43",
+ "placeholder": "",
+ "style": "IPY_MODEL_f50bbeaadfe1453fb7880dc8d725fefb",
+ "value": "Processing Files (1 / 1) : 100%"
+ }
+ },
+ "5ccff814bf444f0bb1622c1639072fd3": {
+ "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_bb36946281b04834aad5e987f54ef2c5",
+ "placeholder": "",
+ "style": "IPY_MODEL_d67efe136abc47dcbd9f2f7aea2870b4",
+ "value": " 0.00B / 0.00B, 0.00B/s "
+ }
+ },
+ "5d434b4b5a88449aaa35026f0f2fe772": {
+ "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_4696ce54235f4bd3873eeed778a4d75e",
+ "placeholder": "",
+ "style": "IPY_MODEL_aecf790586e4461ca62b06581201a4db",
+ "value": " 500/500 [00:00<00:00, 556.09 examples/s]"
+ }
+ },
+ "5d6c9aa373cb457b84bf0818e880374f": {
+ "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
+ }
+ },
+ "5d7559aac4da485e920ddd19859521bd": {
+ "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_8ad0641ef6a040a99e42b838fefb13cc",
+ "placeholder": "",
+ "style": "IPY_MODEL_19f1fea7704742f79b50e096e08f7e30",
+ "value": "Filter (num_proc=6): 100%"
+ }
+ },
+ "5dc28d883bd046b7a7cc329b869b329e": {
+ "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": ""
+ }
+ },
+ "5e2d63577b9846649c53977c1e5f67e5": {
+ "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": ""
+ }
+ },
+ "5e5e3d76fe88464aa73ead1a1c51ccc5": {
+ "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
+ }
+ },
+ "5f810f46fc1d4b93a9362bab5e1d02cb": {
+ "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
+ }
+ },
+ "5f897a4a2d2d4134b182ca12ffedfd41": {
+ "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": ""
+ }
+ },
+ "5f97644a4dbb4de9b2401617cd0d405e": {
+ "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": ""
+ }
+ },
+ "6016e224b904438cbe154f26372d8c38": {
+ "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
+ }
+ },
+ "601e2da7c2f3466c907c6dc975904974": {
+ "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
+ }
+ },
+ "6069750771574e9c9d641c4e97d0f1a4": {
+ "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": ""
+ }
+ },
+ "607cf6ca93ed4f6ab23765508b5f95c1": {
+ "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_b3ce39f1bb0741ffbda5960559007735",
+ "placeholder": "",
+ "style": "IPY_MODEL_d82962ea0d704b99a06987a6d58bc36c",
+ "value": "New Data Upload : 100%"
+ }
+ },
+ "609b59d6e0544e39a92d47ef036baf47": {
+ "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": ""
+ }
+ },
+ "61ad1078a7cc40819cdad3bf68531b6c": {
+ "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": ""
+ }
+ },
+ "62769eb172cd4d2884c75b8e36c2d28c": {
+ "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
+ }
+ },
+ "6332e4cac11e4456a57f49757ad7a243": {
+ "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
+ }
+ },
+ "633c5d5645dc4d91953efe8466dd55cd": {
+ "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_16d4f581ec604fcc927343369c73f075",
+ "IPY_MODEL_d0f184b2c8934ac0830dfeb1963b083a",
+ "IPY_MODEL_e4440093f346491da5d4af23c296c324"
+ ],
+ "layout": "IPY_MODEL_2a8681d890d3439a90403ba1b9eec927"
+ }
+ },
+ "636cba5df88940e2b92525b4c2ea00b6": {
+ "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
+ }
+ },
+ "636f00f102ee4601839ab20f63386777": {
+ "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
+ }
+ },
+ "6425c2a961c74464a23986d7f52590bf": {
+ "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
+ }
+ },
+ "643b5f3367fc475aba8eeffe6091032c": {
+ "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
+ }
+ },
+ "643e84e16a3d4205bbc332db420f21d6": {
+ "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
+ }
+ },
+ "64500442a3d44994a3593d309cd9ab02": {
+ "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
+ }
+ },
+ "64770e809d234b958d990ad9db262f86": {
+ "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
+ }
+ },
+ "648646594ca74b69a29ace1fed5db1be": {
+ "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": "20px"
+ }
+ },
+ "64a36df9f60c4473afd94b03803c8a1c": {
+ "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_5d7559aac4da485e920ddd19859521bd",
+ "IPY_MODEL_d2d2f9d53852463982a293f44dda3572",
+ "IPY_MODEL_2eb6cd8deed74f1cae2298c20265efd6"
+ ],
+ "layout": "IPY_MODEL_8cb6e3e7b5254bc085775607e1d37f0e"
+ }
+ },
+ "66c2a12960974935949e3186d50d2e45": {
+ "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
+ }
+ },
+ "689257af48194add88f3462e44a9c9a7": {
+ "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
+ }
+ },
+ "6945c712815142f4b78b3ab735646f6e": {
+ "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
+ }
+ },
+ "6a2234cf25d847d586c0639407cb0422": {
+ "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
+ }
+ },
+ "6acc17dc21b84d0e9d91605f8e76e1ce": {
+ "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
+ }
+ },
+ "6b7d3842124e451ea5bccfd3d00aaf41": {
+ "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_19ce6b36b49e45e39ec255c52fba389d",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_4be4e4869d5e441486cb640177763603",
+ "value": 1
+ }
+ },
+ "6c8e529410e94ce6af69ccfc3df6be6d": {
+ "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
+ }
+ },
+ "6cdce07c0aae4c80b63ba7c312c15999": {
+ "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_839bcd34b3d1455c9b168f3c0eb7ee48",
+ "placeholder": "",
+ "style": "IPY_MODEL_f46385b2c5dd46ebae4f130e22bc2b51",
+ "value": "Map: 100%"
+ }
+ },
+ "6cfd94dbb7a84ddf9cada7c2760a2264": {
+ "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
+ }
+ },
+ "6d290f1a029d409999a4d4f9dad9af00": {
+ "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": ""
+ }
+ },
+ "6def0cb756d347cea530ec55079725f7": {
+ "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_c87be66de92644ca993361e6ca7a7cec",
+ "placeholder": "",
+ "style": "IPY_MODEL_b1f7e2baa64e461e928854bde8ca37da",
+ "value": "vocab.json: "
+ }
+ },
+ "6e1e9431d2da44648b11d4422814f4de": {
+ "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": ""
+ }
+ },
+ "6eab9db0d1aa4b84b90fc3872e083dc6": {
+ "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": ""
+ }
+ },
+ "6f8cc86dadfa4e47a4e3ec2aeb9ef0da": {
+ "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
+ }
+ },
+ "6fa8f54bd32c4c05b39643df321bf826": {
+ "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_6acc17dc21b84d0e9d91605f8e76e1ce",
+ "placeholder": "",
+ "style": "IPY_MODEL_8ce3dac1705c4d608474c0b2b29ef16c",
+ "value": " 1500/1500 [00:00<00:00, 3272.91 examples/s]"
+ }
+ },
+ "70c43ae789a94fa8b686164510c86176": {
+ "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": ""
+ }
+ },
+ "72ec2fb877254e0b9bb0b8a636c25187": {
+ "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
+ }
+ },
+ "72eecc7e741a41d695abed8c79cf885e": {
+ "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_f834d546d5634bcabf4776770c6d8871",
+ "IPY_MODEL_f5fe5f5074154467a6d5101f06b2dfc5",
+ "IPY_MODEL_b52c54c6617d4f7294f843f02ab70f02"
+ ],
+ "layout": "IPY_MODEL_6425c2a961c74464a23986d7f52590bf"
+ }
+ },
+ "7309057341a74ca28a8bd6e9f1d8e0df": {
+ "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_4c4456ede1364182b6b84bab9dbd0ceb",
+ "placeholder": "",
+ "style": "IPY_MODEL_a90d649010ca43aebc1534822d3aee6a",
+ "value": " 7.51k/? [00:00<00:00, 124kB/s]"
+ }
+ },
+ "73366bb0f86c4689828558a6db8160c2": {
+ "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
+ }
+ },
+ "73b07b37c66a41ada1a6a2aa5272398c": {
+ "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
+ }
+ },
+ "73b2b5b571f448b6bc3bc99552b1c392": {
+ "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
+ }
+ },
+ "73f33acaacc846e5b22e00e94dff8743": {
+ "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": ""
+ }
+ },
+ "7456f76578b944ec98a79f0b0dc6de65": {
+ "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_46e1e61959b94777953aa2dd43997a4e",
+ "max": 1500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_35ed6c346ecf445f8b9307546af0b17b",
+ "value": 1500
+ }
+ },
+ "75124ef3b8c5400986ad002c88504834": {
+ "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_bdde1deb5ae9491eae7b6152c81c059d",
+ "IPY_MODEL_7848ff282e424293b99fc1ffc4cd2fc2",
+ "IPY_MODEL_98925b8108c54ea28eb21503015989c1"
+ ],
+ "layout": "IPY_MODEL_d9f6cfc6a3f449b49907ff71ff293141"
+ }
+ },
+ "75b1eff81944448ab15c7d3f25021c99": {
+ "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": ""
+ }
+ },
+ "75b9ddd94a41423baf0eae13d3c74f9b": {
+ "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_6def0cb756d347cea530ec55079725f7",
+ "IPY_MODEL_8582e647c2e24f91aef1aa10c80e561c",
+ "IPY_MODEL_1bcdcc5cb631454d95ef3a2ca180fbda"
+ ],
+ "layout": "IPY_MODEL_ceb840afa0094d96a145df316807a345"
+ }
+ },
+ "760789c0138e4adaade91c3bb73cea2d": {
+ "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_73b07b37c66a41ada1a6a2aa5272398c",
+ "placeholder": "",
+ "style": "IPY_MODEL_f93c3a6553d1414ebc5ff9e5b18fb4dd",
+ "value": " 500/500 [00:00<00:00, 628.81 examples/s]"
+ }
+ },
+ "776f37e27e864e3596640ad6708fe717": {
+ "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
+ }
+ },
+ "77770c5f10934573a6fbe934cfb9cb4d": {
+ "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
+ }
+ },
+ "778e34c12b4347d387dc53596a598fe2": {
+ "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": "20px"
+ }
+ },
+ "7848ff282e424293b99fc1ffc4cd2fc2": {
+ "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_2ffe97ed07e54f17b353563bcdd48b41",
+ "max": 193593,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_20e75436cb7942e98f86392cb0378079",
+ "value": 193593
+ }
+ },
+ "79099348a0c643e7bceaf63e6456f1f7": {
+ "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_eab8c43144bf40f1925820492473e9d3",
+ "max": 500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_ecb17e182dd84febbdcded2879fa80b7",
+ "value": 500
+ }
+ },
+ "79520fc6e14b4fb7a20f4eca948dede0": {
+ "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
+ }
+ },
+ "7a6c64ca6c284301b4308fe3f2fe9bcb": {
+ "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": ""
+ }
+ },
+ "7d3a823c2d45490e9e9505d3e399aeff": {
+ "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": ""
+ }
+ },
+ "7e1c3b7d0e714ee3a7d92f7bdc68f19a": {
+ "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
+ }
+ },
+ "7e9cff4098c64cf9b95d105e1aff748c": {
+ "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
+ }
+ },
+ "7ed12fe7019d4facb1c8b98238805561": {
+ "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_d9bd7bf387b44ed7bd859d415bc2986f",
+ "placeholder": "",
+ "style": "IPY_MODEL_d3e67e65c9b44eadac8364257b7b6a4d",
+ "value": " ...adapter_model.safetensors: 100%"
+ }
+ },
+ "7f3c543649714b99a9565399839ba5e1": {
+ "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_6cdce07c0aae4c80b63ba7c312c15999",
+ "IPY_MODEL_45f43e003da84552b733938e93e76575",
+ "IPY_MODEL_3ca5a40ba10f4ad09b23ee0339607696"
+ ],
+ "layout": "IPY_MODEL_64770e809d234b958d990ad9db262f86"
+ }
+ },
+ "7fa93872e8ce480b8f298cbcbb746916": {
+ "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
+ }
+ },
+ "7fca6a24a44a45bb87e8cc4fd390403e": {
+ "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
+ }
+ },
+ "806a5a3781074d9d8201d0db61c04765": {
+ "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_9c688b55b9d244cd9a6ea1294670a1ad",
+ "placeholder": "",
+ "style": "IPY_MODEL_4398ec401e6340b4b5f09482759a1045",
+ "value": " 80/80 [00:00<00:00, 1506.87 examples/s]"
+ }
+ },
+ "811977f4dc4a45ebaec21ecb2882a6f5": {
+ "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": "20px"
+ }
+ },
+ "81465b29ad7c4f9e98021f23bf6654c0": {
+ "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
+ }
+ },
+ "81abc2746ae8418ba793c0e15783c665": {
+ "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
+ }
+ },
+ "823885191d4c472e9f961c11a3c6ffc5": {
+ "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
+ }
+ },
+ "839bcd34b3d1455c9b168f3c0eb7ee48": {
+ "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
+ }
+ },
+ "83d5c8137daf43f08389eaa70861637f": {
+ "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": ""
+ }
+ },
+ "83e24d6711ab464daa46584dd6526e33": {
+ "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
+ }
+ },
+ "84eaa448117b41fcbfa3d68b0287540e": {
+ "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
+ }
+ },
+ "857fc23cb42c4e5297b6cbc12f42bfb1": {
+ "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_afbec639658a4db09b968424a52074f9",
+ "IPY_MODEL_fa9a37a523ec459e8d02007b55b1ba20",
+ "IPY_MODEL_f9f7b1fc79dc4bee9b6a0a946ff39bb2"
+ ],
+ "layout": "IPY_MODEL_bf421ed09e4d42c3b906c51f159eaa2c"
+ }
+ },
+ "8582e647c2e24f91aef1aa10c80e561c": {
+ "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_b0e7dc59392242baaad8d4ba599646e2",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_241038e98d724ee5b15b20682725b1ec",
+ "value": 1
+ }
+ },
+ "867ffb288b49498281c615325c9f9320": {
+ "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
+ }
+ },
+ "871a4878c903463289a2283b5f649d00": {
+ "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_3e9b15dda7bf48c3aae394f0d68e2b10",
+ "placeholder": "",
+ "style": "IPY_MODEL_9dcb1c84d9384ab3b0d9ad681646e4e9",
+ "value": " 573/573 [00:00<00:00, 60.2kB/s]"
+ }
+ },
+ "87273b19125e42d0ad471db11f600a15": {
+ "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_b68f12d836a24d57b2708b476bfc71ad",
+ "placeholder": "",
+ "style": "IPY_MODEL_3db2b92b2e844f229826b4c46dd1faf9",
+ "value": " 2.05G/2.05G [00:21<00:00, 72.9MB/s]"
+ }
+ },
+ "875f7ae9afab4421bdeacdec71be326a": {
+ "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_42c06ae8171840c8b1c73b5b489d25a7",
+ "IPY_MODEL_7456f76578b944ec98a79f0b0dc6de65",
+ "IPY_MODEL_45a4dce069c5478ab52ce3a35b21123c"
+ ],
+ "layout": "IPY_MODEL_3fec3c13e9224c35aef5fce6f6108e34"
+ }
+ },
+ "8874182d6efb466f9551c71306e87be2": {
+ "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_8afebc1ba6cc47868b3caa994d271e2a",
+ "placeholder": "",
+ "style": "IPY_MODEL_8e8c8c3211484f63a499bbe3d5f0b63d",
+ "value": " 1500/1500 [00:00<00:00, 469.61 examples/s]"
+ }
+ },
+ "8946e4ccc6fa4cbc93fff996338aad43": {
+ "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_83e24d6711ab464daa46584dd6526e33",
+ "placeholder": "",
+ "style": "IPY_MODEL_48c20c5564494cd5bac8ed6577bd91b0",
+ "value": " 266/266 [00:00<00:00, 5.92kB/s]"
+ }
+ },
+ "895249c57814429e99f87e5d86907346": {
+ "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
+ }
+ },
+ "897116c49c5c4c9591c2c77d7538e851": {
+ "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
+ }
+ },
+ "8a4eb795873c46188f85230e6a948795": {
+ "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_84eaa448117b41fcbfa3d68b0287540e",
+ "placeholder": "",
+ "style": "IPY_MODEL_c73de00f6d4f456e8fb28a765df6a1fd",
+ "value": " 150/150 [00:00<00:00, 7213.48 examples/s]"
+ }
+ },
+ "8a6323e9aa7342e1ab3337f24a48d61e": {
+ "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_636cba5df88940e2b92525b4c2ea00b6",
+ "placeholder": "",
+ "style": "IPY_MODEL_a6f703306605483c9fe86cc203e73a5d",
+ "value": " 7.03M/? [00:00<00:00, 19.8MB/s]"
+ }
+ },
+ "8ad0641ef6a040a99e42b838fefb13cc": {
+ "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
+ }
+ },
+ "8afebc1ba6cc47868b3caa994d271e2a": {
+ "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
+ }
+ },
+ "8ba25aaf330e4cecb4940f51ce4c2d91": {
+ "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_a11421346cb544c3ae79e49143b3ff98",
+ "IPY_MODEL_59cb2a9a1e0f474fb0759dce2e9254b4",
+ "IPY_MODEL_6fa8f54bd32c4c05b39643df321bf826"
+ ],
+ "layout": "IPY_MODEL_45efca052b0948659037c654d3fa4cfc"
+ }
+ },
+ "8cb6e3e7b5254bc085775607e1d37f0e": {
+ "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
+ }
+ },
+ "8ce3dac1705c4d608474c0b2b29ef16c": {
+ "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": ""
+ }
+ },
+ "8cf568edd88743b1a0cc66702873f5e6": {
+ "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_b9374d73b2ac427e9c8d55949737bf4b",
+ "max": 1923495,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_ac471c36448e42e6a4278eb212464d78",
+ "value": 1923495
+ }
+ },
+ "8d3afe0c4db14a9ab7234230d9f12e3e": {
+ "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_d95d024f4dcb4bc5b0dfa92259ede3e5",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_5e2d63577b9846649c53977c1e5f67e5",
+ "value": 1
+ }
+ },
+ "8e8c8c3211484f63a499bbe3d5f0b63d": {
+ "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": ""
+ }
+ },
+ "8ea83d7a46d84e37a28890d5c61109cf": {
+ "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
+ }
+ },
+ "8fa83e655f654286a77f0d64c2017e40": {
+ "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": ""
+ }
+ },
+ "90cfd352cfce435a9fb4c2ca4506ef81": {
+ "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
+ }
+ },
+ "91e66dab350841299c8785795c380366": {
+ "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": ""
+ }
+ },
+ "939163edb94b4620876de0deaf90d550": {
+ "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": ""
+ }
+ },
+ "94f05fcac46b45a88cf98017f1870ad8": {
+ "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
+ }
+ },
+ "9531b4bcfab345b7b0235c422e7f8c18": {
+ "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_b957a5477fc54821a8112428690ca3f8",
+ "placeholder": "",
+ "style": "IPY_MODEL_7d3a823c2d45490e9e9505d3e399aeff",
+ "value": " 1500/1500 [00:01<00:00, 1026.90 examples/s]"
+ }
+ },
+ "95d4d9080e17430687b4a52e7b704ac1": {
+ "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_514d072373ed49d6900888c63d959d39",
+ "IPY_MODEL_cff8893cc6d2490cbb1c903f22d85772",
+ "IPY_MODEL_8874182d6efb466f9551c71306e87be2"
+ ],
+ "layout": "IPY_MODEL_00d34d841ca74436aae9d727781deb95"
+ }
+ },
+ "98925b8108c54ea28eb21503015989c1": {
+ "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_29da9ecefb744a6ebe187d6ad24a04ec",
+ "placeholder": "",
+ "style": "IPY_MODEL_1d5e153fda8a4e38884d13b4b916edda",
+ "value": " 194k/194k [00:00<00:00, 769kB/s]"
+ }
+ },
+ "98980e3258f148ae80e89c0b23847336": {
+ "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_fcbdd1e084124303be96ca0a89a8e293",
+ "IPY_MODEL_00ebf205de7145699686bf127480ec74",
+ "IPY_MODEL_bb5dea14dc0c420fa06ffda49187f503"
+ ],
+ "layout": "IPY_MODEL_7e9cff4098c64cf9b95d105e1aff748c"
+ }
+ },
+ "992500d0a88044f3be59f23920e19f46": {
+ "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
+ }
+ },
+ "99c64e4279264453b7bf06e578ba7025": {
+ "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_51fab6cbb2574f828d0ae4b8431eeda0",
+ "placeholder": "",
+ "style": "IPY_MODEL_73f33acaacc846e5b22e00e94dff8743",
+ "value": "Filter (num_proc=5): 100%"
+ }
+ },
+ "9a45bc9a77c94a66b1ff7256e8231088": {
+ "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_648646594ca74b69a29ace1fed5db1be",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_c313a139e75c4953ab62b75752bcc5d7",
+ "value": 1
+ }
+ },
+ "9b33c99b889543a19eef2316ac5ab0fe": {
+ "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
+ }
+ },
+ "9c688b55b9d244cd9a6ea1294670a1ad": {
+ "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
+ }
+ },
+ "9d9e8a585584449fbc2982735731b96e": {
+ "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": ""
+ }
+ },
+ "9dcb1c84d9384ab3b0d9ad681646e4e9": {
+ "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": ""
+ }
+ },
+ "9edb47ef9a4e4348b0e99d302f1308eb": {
+ "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
+ }
+ },
+ "a02f4be4f7c745aaae9727e9fb8f428c": {
+ "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_288bd1af47c34ce7afe1cf10ae64da1a",
+ "placeholder": "",
+ "style": "IPY_MODEL_cb97fe53c8364943b3251e935a6b59f9",
+ "value": "Map: 100%"
+ }
+ },
+ "a108eb483f0e4ed0ae36e77e2b269ce6": {
+ "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
+ }
+ },
+ "a11421346cb544c3ae79e49143b3ff98": {
+ "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_b7d9cf67d7ee44ffb77a45fd4e6fe32f",
+ "placeholder": "",
+ "style": "IPY_MODEL_01e6e5c1ca6b46e38b90c3437b2a338a",
+ "value": "Map: 100%"
+ }
+ },
+ "a19ce4b328c34e1d9f84a9a70b5917d0": {
+ "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": ""
+ }
+ },
+ "a336d465b4c146e68fb7f9e0414001e5": {
+ "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_d98c35bbd1524d6bb5b3faec9f74de31",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_939163edb94b4620876de0deaf90d550",
+ "value": 1
+ }
+ },
+ "a3adefd3834347cdb48d9e3316a5ed48": {
+ "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
+ }
+ },
+ "a3cb87314cd145cb892e64a5936d5288": {
+ "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_7ed12fe7019d4facb1c8b98238805561",
+ "IPY_MODEL_110e9a99f25f4b9f9139b495a557975b",
+ "IPY_MODEL_25cdfd281d264f49841120ad73571197"
+ ],
+ "layout": "IPY_MODEL_b10bb711d77540678c446c980abbefb0"
+ }
+ },
+ "a419e0561e0f4b3da3f0eb8cb657755f": {
+ "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_db75caefb31b4f49876694c98de6a6ad",
+ "max": 2054625552,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_d2106145680e4083a0d3efae7309cbb8",
+ "value": 2054625552
+ }
+ },
+ "a5f80d1357054b3794403ff0ea183bb1": {
+ "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_ed09000d8a464e21bb0d345c9042ad60",
+ "IPY_MODEL_ac1d67b8c8a24e619ac85998b6fbd44e",
+ "IPY_MODEL_5ccff814bf444f0bb1622c1639072fd3"
+ ],
+ "layout": "IPY_MODEL_ac7464fbe2bd4241bcb283b8f8c2f38c"
+ }
+ },
+ "a6343a6d1db84aa180e2cd42376dad35": {
+ "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": ""
+ }
+ },
+ "a6969e8ebd3d4f2aa1fb6d9153654a28": {
+ "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": ""
+ }
+ },
+ "a6c5d26ad5e14dd2b3b701de1bfe2b7f": {
+ "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_190841be433642759e1a669a3c1a456a",
+ "max": 80,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_e28c2ec5beb14108bf9633eb1965d233",
+ "value": 80
+ }
+ },
+ "a6c8c00476ed49c7ac1d17165dbb19e0": {
+ "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_b09db1f09d6e4f98b13a1496df56f634",
+ "IPY_MODEL_00af5c6f40494636a6f3229e0a7cfe7c",
+ "IPY_MODEL_0e7ae2b6132647bc9017f6ac2cc342f9"
+ ],
+ "layout": "IPY_MODEL_3a1db87d4cef4e41839e92e7080813c0"
+ }
+ },
+ "a6dbc6baa4b44ca0b042c6449959a7f0": {
+ "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": ""
+ }
+ },
+ "a6f703306605483c9fe86cc203e73a5d": {
+ "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": ""
+ }
+ },
+ "a737b9169ce442b7a607273640ac1562": {
+ "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": ""
+ }
+ },
+ "a83dabfdb0324a9abc66b7bb47142fdc": {
+ "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": ""
+ }
+ },
+ "a90d649010ca43aebc1534822d3aee6a": {
+ "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": ""
+ }
+ },
+ "a9e1f270b5314d4ba6c0417313dbd226": {
+ "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
+ }
+ },
+ "aa058deba06246f1b0003d7b073c8b1c": {
+ "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
+ }
+ },
+ "aa7bce772af442928a74629464e2fc0e": {
+ "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
+ }
+ },
+ "ac1d67b8c8a24e619ac85998b6fbd44e": {
+ "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_811977f4dc4a45ebaec21ecb2882a6f5",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_5f97644a4dbb4de9b2401617cd0d405e",
+ "value": 0
+ }
+ },
+ "ac471c36448e42e6a4278eb212464d78": {
+ "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": ""
+ }
+ },
+ "ac7464fbe2bd4241bcb283b8f8c2f38c": {
+ "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
+ }
+ },
+ "ad2af2ba3b334823a563ce1dd4b2c65f": {
+ "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_6016e224b904438cbe154f26372d8c38",
+ "placeholder": "",
+ "style": "IPY_MODEL_13d6cac54c3849f1afee12e0ef48dddf",
+ "value": "data/train-00000-of-00001.parquet: 100%"
+ }
+ },
+ "ae5960c8a5fb4c7c8a75c7bf9a4e6ebf": {
+ "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_cee47b7f9a1d4f86a51afedae1cc6185",
+ "placeholder": "",
+ "style": "IPY_MODEL_30ecc6450c0e4891b44c08f4e78db09c",
+ "value": "Map (num_proc=6): 100%"
+ }
+ },
+ "aecf790586e4461ca62b06581201a4db": {
+ "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": ""
+ }
+ },
+ "af1c80e5ed764e0dbe94a7901bfa5055": {
+ "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_aa7bce772af442928a74629464e2fc0e",
+ "placeholder": "",
+ "style": "IPY_MODEL_8fa83e655f654286a77f0d64c2017e40",
+ "value": "Map: 100%"
+ }
+ },
+ "afbec639658a4db09b968424a52074f9": {
+ "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_f0e4397588a847af90236075a3065ac7",
+ "placeholder": "",
+ "style": "IPY_MODEL_83d5c8137daf43f08389eaa70861637f",
+ "value": "added_tokens.json: 100%"
+ }
+ },
+ "afcb53065479412f8ab30274403dcd9a": {
+ "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
+ }
+ },
+ "afef069fc3054b6bac72e05c06a9b699": {
+ "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
+ }
+ },
+ "b09db1f09d6e4f98b13a1496df56f634": {
+ "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_c5c6d5fe77ae4a118d531152e752a552",
+ "placeholder": "",
+ "style": "IPY_MODEL_a737b9169ce442b7a607273640ac1562",
+ "value": " ...mpcnfz5qff/tokenizer.json: 100%"
+ }
+ },
+ "b0e7dc59392242baaad8d4ba599646e2": {
+ "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": "20px"
+ }
+ },
+ "b10bb711d77540678c446c980abbefb0": {
+ "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
+ }
+ },
+ "b15fcea90a104c5a8fa21646638b0a12": {
+ "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_bc6c6aee6b6d4cd3afe76dd00245f8db",
+ "IPY_MODEL_49c2f2ae112f4133a434b6274ca9ffd0",
+ "IPY_MODEL_871a4878c903463289a2283b5f649d00"
+ ],
+ "layout": "IPY_MODEL_8ea83d7a46d84e37a28890d5c61109cf"
+ }
+ },
+ "b1f7e2baa64e461e928854bde8ca37da": {
+ "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": ""
+ }
+ },
+ "b2f24deee752408c9c11652cf60a84d3": {
+ "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
+ }
+ },
+ "b3ce39f1bb0741ffbda5960559007735": {
+ "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
+ }
+ },
+ "b3f3175c19c74344a406aff51a048139": {
+ "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": ""
+ }
+ },
+ "b52c54c6617d4f7294f843f02ab70f02": {
+ "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_0ddc82e2462d4ad4b4661e55654352b3",
+ "placeholder": "",
+ "style": "IPY_MODEL_275b2d90c0da458abbf59c963afb2e7e",
+ "value": " 1500/1500 [00:00<00:00, 55111.34 examples/s]"
+ }
+ },
+ "b68f12d836a24d57b2708b476bfc71ad": {
+ "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
+ }
+ },
+ "b7d9cf67d7ee44ffb77a45fd4e6fe32f": {
+ "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
+ }
+ },
+ "b8789c36105a4c6d91aa8f2f8aa2182d": {
+ "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
+ }
+ },
+ "b9374d73b2ac427e9c8d55949737bf4b": {
+ "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
+ }
+ },
+ "b957a5477fc54821a8112428690ca3f8": {
+ "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
+ }
+ },
+ "ba4a487089554097a60c839774eb6312": {
+ "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_99c64e4279264453b7bf06e578ba7025",
+ "IPY_MODEL_0db1cdbbb47a4d0aa8654678cda5e5c8",
+ "IPY_MODEL_47487ef40fba4b01a29038c332fdbe6e"
+ ],
+ "layout": "IPY_MODEL_297df3af99124fe98b6699137b5f3cd8"
+ }
+ },
+ "bb36946281b04834aad5e987f54ef2c5": {
+ "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
+ }
+ },
+ "bb5dea14dc0c420fa06ffda49187f503": {
+ "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_e1a49fe3dcfe4c518055364a3b9654b1",
+ "placeholder": "",
+ "style": "IPY_MODEL_530347c79cab4606835a0b7302e35f5b",
+ "value": " 1.67M/? [00:00<00:00, 9.34MB/s]"
+ }
+ },
+ "bc086dd51c684413bcb3e40183290786": {
+ "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": ""
+ }
+ },
+ "bc2d4de1df5241e3949f4558b9322321": {
+ "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_e441aedea1414eac9574830ee8425098",
+ "IPY_MODEL_a6c5d26ad5e14dd2b3b701de1bfe2b7f",
+ "IPY_MODEL_806a5a3781074d9d8201d0db61c04765"
+ ],
+ "layout": "IPY_MODEL_bcacc2d5bcb34e0ab2caeb2e5fddeeba"
+ }
+ },
+ "bc6c6aee6b6d4cd3afe76dd00245f8db": {
+ "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_dd6994f094df444c9c62f84fd2da82af",
+ "placeholder": "",
+ "style": "IPY_MODEL_2d642e51abf547849f6584d35b5d7a70",
+ "value": "README.md: 100%"
+ }
+ },
+ "bcacc2d5bcb34e0ab2caeb2e5fddeeba": {
+ "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
+ }
+ },
+ "bd36a2a263244450b85a492f96d018fa": {
+ "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_897116c49c5c4c9591c2c77d7538e851",
+ "placeholder": "",
+ "style": "IPY_MODEL_4f7701101cc24c2f90049a6fc0919d80",
+ "value": " 4.89k/? [00:00<00:00, 140kB/s]"
+ }
+ },
+ "bd9250796f574171b657eb6da8880200": {
+ "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
+ }
+ },
+ "bda8d508d0a24cdaab5782d2cc1335e8": {
+ "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": ""
+ }
+ },
+ "bdde1deb5ae9491eae7b6152c81c059d": {
+ "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_77770c5f10934573a6fbe934cfb9cb4d",
+ "placeholder": "",
+ "style": "IPY_MODEL_a6dbc6baa4b44ca0b042c6449959a7f0",
+ "value": "data/validation-00000-of-00001.parquet: 100%"
+ }
+ },
+ "bf421ed09e4d42c3b906c51f159eaa2c": {
+ "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
+ }
+ },
+ "bf5d69a2795144ffb2e2c5a115e1c5b4": {
+ "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_776f37e27e864e3596640ad6708fe717",
+ "max": 500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_5f897a4a2d2d4134b182ca12ffedfd41",
+ "value": 500
+ }
+ },
+ "c05ce0271f8e4dc7a0315601532ca955": {
+ "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_e1c8bb5ef082498b8fe0a66130e69035",
+ "placeholder": "",
+ "style": "IPY_MODEL_481e292b38954268ace143e169dfca74",
+ "value": " 1.92M/1.92M [00:00<00:00, 9.64MB/s]"
+ }
+ },
+ "c08137d749274ddfa7d16d00038bbdcc": {
+ "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_72ec2fb877254e0b9bb0b8a636c25187",
+ "placeholder": "",
+ "style": "IPY_MODEL_f3ee5b5442b447539b1d7a72a9df1b58",
+ "value": "Generating validation split: 100%"
+ }
+ },
+ "c0bc942b2dec498480f6e19344c4d203": {
+ "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
+ }
+ },
+ "c14897b6216b47038f9b1b5bdb941467": {
+ "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": ""
+ }
+ },
+ "c21a9c6799f94f3b9400ed220a0fc1e9": {
+ "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": ""
+ }
+ },
+ "c28d17bc0e2446dc89081a1a638a2484": {
+ "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_e6c1913352514eef9cbf15cee827606b",
+ "placeholder": "",
+ "style": "IPY_MODEL_5dc28d883bd046b7a7cc329b869b329e",
+ "value": "Filter (num_proc=6): 100%"
+ }
+ },
+ "c313a139e75c4953ab62b75752bcc5d7": {
+ "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": ""
+ }
+ },
+ "c377f4bbadda4ca9a50769e7b7b83d1d": {
+ "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": ""
+ }
+ },
+ "c5c6d5fe77ae4a118d531152e752a552": {
+ "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
+ }
+ },
+ "c6ac84d0c64b4259be243b913caf652c": {
+ "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": ""
+ }
+ },
+ "c73de00f6d4f456e8fb28a765df6a1fd": {
+ "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": ""
+ }
+ },
+ "c7e6eb783c8f465dba5ffe4912db0735": {
+ "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_79520fc6e14b4fb7a20f4eca948dede0",
+ "placeholder": "",
+ "style": "IPY_MODEL_290efeeadcc0488994d0bf7d32f4e57b",
+ "value": " 150/150 [00:00<00:00, 95.55 examples/s]"
+ }
+ },
+ "c87be66de92644ca993361e6ca7a7cec": {
+ "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
+ }
+ },
+ "cb97fe53c8364943b3251e935a6b59f9": {
+ "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": ""
+ }
+ },
+ "cc72718e8e344f99839589eec9388dc5": {
+ "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_383bb49d4cd34c2685a36c0965e9730b",
+ "placeholder": "",
+ "style": "IPY_MODEL_6e1e9431d2da44648b11d4422814f4de",
+ "value": "tokenizer_config.json: "
+ }
+ },
+ "ccd9559fb88e4d6ab05f4d4f47a9e364": {
+ "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_5d6c9aa373cb457b84bf0818e880374f",
+ "placeholder": "",
+ "style": "IPY_MODEL_048621e84d3a417f803f7a3e944234a6",
+ "value": "special_tokens_map.json: 100%"
+ }
+ },
+ "cd36d12e348f438e81d1def580ddc3bb": {
+ "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_1c7903362174485aa575d018201c4352",
+ "max": 150,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_c14897b6216b47038f9b1b5bdb941467",
+ "value": 150
+ }
+ },
+ "cdb67ffc2d694e33a6612115a5974d11": {
+ "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_ae5960c8a5fb4c7c8a75c7bf9a4e6ebf",
+ "IPY_MODEL_bf5d69a2795144ffb2e2c5a115e1c5b4",
+ "IPY_MODEL_5d434b4b5a88449aaa35026f0f2fe772"
+ ],
+ "layout": "IPY_MODEL_6a2234cf25d847d586c0639407cb0422"
+ }
+ },
+ "ceb840afa0094d96a145df316807a345": {
+ "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
+ }
+ },
+ "cee47b7f9a1d4f86a51afedae1cc6185": {
+ "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
+ }
+ },
+ "cef92c4d93074e1e9f73c527f0e1b021": {
+ "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
+ }
+ },
+ "cff8893cc6d2490cbb1c903f22d85772": {
+ "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_90cfd352cfce435a9fb4c2ca4506ef81",
+ "max": 1500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_91e66dab350841299c8785795c380366",
+ "value": 1500
+ }
+ },
+ "d08376eb6b62480cb85f4e0b62320210": {
+ "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_5668a72966b841019572521c201ea4e2",
+ "IPY_MODEL_1ad5f8440a414d3eb18484e567ec57e5",
+ "IPY_MODEL_8946e4ccc6fa4cbc93fff996338aad43"
+ ],
+ "layout": "IPY_MODEL_636f00f102ee4601839ab20f63386777"
+ }
+ },
+ "d0f184b2c8934ac0830dfeb1963b083a": {
+ "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_ee900b2750c14293af20f0a47ca57f6c",
+ "max": 80,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_249df56441d74bf4ba35ca0463e8d443",
+ "value": 80
+ }
+ },
+ "d11291002423435f9ab639af145e999b": {
+ "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": ""
+ }
+ },
+ "d2106145680e4083a0d3efae7309cbb8": {
+ "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": ""
+ }
+ },
+ "d2babfe551ed49f9809a535092e078e4": {
+ "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": ""
+ }
+ },
+ "d2d2f9d53852463982a293f44dda3572": {
+ "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_cef92c4d93074e1e9f73c527f0e1b021",
+ "max": 80,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_0f8fc328cf5a4d56b155a64238f1a3e5",
+ "value": 80
+ }
+ },
+ "d3e67e65c9b44eadac8364257b7b6a4d": {
+ "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": ""
+ }
+ },
+ "d5a7f54aab804d7c998694863e366900": {
+ "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
+ }
+ },
+ "d67efe136abc47dcbd9f2f7aea2870b4": {
+ "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": ""
+ }
+ },
+ "d82962ea0d704b99a06987a6d58bc36c": {
+ "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": ""
+ }
+ },
+ "d8cd88776dd640b8a2790bd8222a32e5": {
+ "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_5f810f46fc1d4b93a9362bab5e1d02cb",
+ "placeholder": "",
+ "style": "IPY_MODEL_eab6a31889534b9886ea848e324f1a93",
+ "value": " 261k/261k [00:00<00:00, 1.03MB/s]"
+ }
+ },
+ "d95d024f4dcb4bc5b0dfa92259ede3e5": {
+ "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": "20px"
+ }
+ },
+ "d97b2639afd9447eb61a6983cebe605a": {
+ "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": ""
+ }
+ },
+ "d98c35bbd1524d6bb5b3faec9f74de31": {
+ "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": "20px"
+ }
+ },
+ "d9bd7bf387b44ed7bd859d415bc2986f": {
+ "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
+ }
+ },
+ "d9f6cfc6a3f449b49907ff71ff293141": {
+ "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
+ }
+ },
+ "db50c8f9fcd64b1391c751ee7697e23d": {
+ "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": ""
+ }
+ },
+ "db75caefb31b4f49876694c98de6a6ad": {
+ "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
+ }
+ },
+ "dbbc84a88ec54339aa0b17acaa527221": {
+ "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_362ca4826fc24755b7898c54334b5f7b",
+ "placeholder": "",
+ "style": "IPY_MODEL_23ccb3a4752b4bc28c3f312f9537d6a4",
+ "value": " 11.4MB / 11.4MB, 19.0MB/s "
+ }
+ },
+ "dd6994f094df444c9c62f84fd2da82af": {
+ "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
+ }
+ },
+ "de8e98bcce6a4a32bb344467f5301c16": {
+ "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
+ }
+ },
+ "de9c5e0f171e470c983d459e836ea96d": {
+ "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_c08137d749274ddfa7d16d00038bbdcc",
+ "IPY_MODEL_3a24f03afa3143448425861758e13de2",
+ "IPY_MODEL_8a4eb795873c46188f85230e6a948795"
+ ],
+ "layout": "IPY_MODEL_14a182021a734a6399c7fd5d9da8e9c7"
+ }
+ },
+ "df691f3fe6d84515aea9eba173c19208": {
+ "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
+ }
+ },
+ "e01e04ec36af435fa9af715377355e5a": {
+ "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_6332e4cac11e4456a57f49757ad7a243",
+ "max": 200,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_c21a9c6799f94f3b9400ed220a0fc1e9",
+ "value": 200
+ }
+ },
+ "e0943fee62a64d16803e1ce7a015c06b": {
+ "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": ""
+ }
+ },
+ "e18fbe8e72964a569c24722e35b81cb2": {
+ "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": ""
+ }
+ },
+ "e1a49fe3dcfe4c518055364a3b9654b1": {
+ "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
+ }
+ },
+ "e1c8bb5ef082498b8fe0a66130e69035": {
+ "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
+ }
+ },
+ "e28c2ec5beb14108bf9633eb1965d233": {
+ "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": ""
+ }
+ },
+ "e2cdbf13de504156ae577dc40cbb48e5": {
+ "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
+ }
+ },
+ "e441aedea1414eac9574830ee8425098": {
+ "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_81abc2746ae8418ba793c0e15783c665",
+ "placeholder": "",
+ "style": "IPY_MODEL_19a0246152f9400a9bb4362fd5f563fe",
+ "value": "Map: 100%"
+ }
+ },
+ "e4440093f346491da5d4af23c296c324": {
+ "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_ee0c45ace98b42a3a5c7d39f997d749d",
+ "placeholder": "",
+ "style": "IPY_MODEL_047421bbdbf042e3927d810afbb0b565",
+ "value": " 80/80 [00:00<00:00, 45.69 examples/s]"
+ }
+ },
+ "e67201215c274e8684c1c088bb7edc37": {
+ "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": ""
+ }
+ },
+ "e6c1913352514eef9cbf15cee827606b": {
+ "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
+ }
+ },
+ "e8069fbac7d04e4093e3f08fdd84b9ff": {
+ "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": ""
+ }
+ },
+ "e86a2ac8f7d543b1ae3ecbc2f4e560f7": {
+ "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_f16acd23373845d3894da4abf9500e0f",
+ "max": 150,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_d2babfe551ed49f9809a535092e078e4",
+ "value": 150
+ }
+ },
+ "e91e918d37a14b28beb9e16f012458f5": {
+ "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_689257af48194add88f3462e44a9c9a7",
+ "placeholder": "",
+ "style": "IPY_MODEL_b3f3175c19c74344a406aff51a048139",
+ "value": " 14.8MB / 14.8MB, 9.24MB/s "
+ }
+ },
+ "eab6a31889534b9886ea848e324f1a93": {
+ "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": ""
+ }
+ },
+ "eab8c43144bf40f1925820492473e9d3": {
+ "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
+ }
+ },
+ "eb3e7af58dc7441f9befff94cd837496": {
+ "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_778e34c12b4347d387dc53596a598fe2",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_bda8d508d0a24cdaab5782d2cc1335e8",
+ "value": 1
+ }
+ },
+ "ecb17e182dd84febbdcded2879fa80b7": {
+ "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": ""
+ }
+ },
+ "ed09000d8a464e21bb0d345c9042ad60": {
+ "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_823885191d4c472e9f961c11a3c6ffc5",
+ "placeholder": "",
+ "style": "IPY_MODEL_6eab9db0d1aa4b84b90fc3872e083dc6",
+ "value": "New Data Upload : "
+ }
+ },
+ "ed4d26c9971d41ba821bcbf8c876c1cb": {
+ "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
+ }
+ },
+ "ee0c45ace98b42a3a5c7d39f997d749d": {
+ "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
+ }
+ },
+ "ee43ac368f5a4aa0813035b3d07cc399": {
+ "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": ""
+ }
+ },
+ "ee900b2750c14293af20f0a47ca57f6c": {
+ "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
+ }
+ },
+ "eef7a636fa3d45b0865133884b93eea9": {
+ "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
+ }
+ },
+ "efeab27804f448febcf5335f0be8302d": {
+ "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
+ }
+ },
+ "f02d91e96fe84c0781b1c6e17fd537ae": {
+ "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
+ }
+ },
+ "f0e4397588a847af90236075a3065ac7": {
+ "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
+ }
+ },
+ "f16acd23373845d3894da4abf9500e0f": {
+ "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
+ }
+ },
+ "f31c8cc62d4c401d8a865e6caad20c38": {
+ "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_eef7a636fa3d45b0865133884b93eea9",
+ "max": 613,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_9d9e8a585584449fbc2982735731b96e",
+ "value": 613
+ }
+ },
+ "f3ee5b5442b447539b1d7a72a9df1b58": {
+ "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": ""
+ }
+ },
+ "f46385b2c5dd46ebae4f130e22bc2b51": {
+ "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": ""
+ }
+ },
+ "f50bbeaadfe1453fb7880dc8d725fefb": {
+ "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": ""
+ }
+ },
+ "f530e71385fb41fbac41b8ac8c4e6d8e": {
+ "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_73366bb0f86c4689828558a6db8160c2",
+ "placeholder": "",
+ "style": "IPY_MODEL_70c43ae789a94fa8b686164510c86176",
+ "value": "Generating reserve split: 100%"
+ }
+ },
+ "f5fe5f5074154467a6d5101f06b2dfc5": {
+ "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_bd9250796f574171b657eb6da8880200",
+ "max": 1500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_a6969e8ebd3d4f2aa1fb6d9153654a28",
+ "value": 1500
+ }
+ },
+ "f63a0c3bd30741e389921c5a0c0257b6": {
+ "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": ""
+ }
+ },
+ "f7143a33b8ec4638934f319f04daa5fe": {
+ "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": ""
+ }
+ },
+ "f74e56c5f86046d8812584b3f4b460ce": {
+ "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": ""
+ }
+ },
+ "f803f04e1f0b4c8db5b2a571538790d3": {
+ "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
+ }
+ },
+ "f834d546d5634bcabf4776770c6d8871": {
+ "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_efeab27804f448febcf5335f0be8302d",
+ "placeholder": "",
+ "style": "IPY_MODEL_c6ac84d0c64b4259be243b913caf652c",
+ "value": "Generating train split: 100%"
+ }
+ },
+ "f93c3a6553d1414ebc5ff9e5b18fb4dd": {
+ "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": ""
+ }
+ },
+ "f9f7b1fc79dc4bee9b6a0a946ff39bb2": {
+ "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_1056869d6f2048b38e79ab0bdddf0d55",
+ "placeholder": "",
+ "style": "IPY_MODEL_1c846669e92d4d3a9cd91c408809ba69",
+ "value": " 632/632 [00:00<00:00, 10.3kB/s]"
+ }
+ },
+ "fa9a37a523ec459e8d02007b55b1ba20": {
+ "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_df691f3fe6d84515aea9eba173c19208",
+ "max": 632,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_609b59d6e0544e39a92d47ef036baf47",
+ "value": 632
+ }
+ },
+ "facd2d2ea3fd48f9a1ac2cc13bef64b8": {
+ "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
+ }
+ },
+ "fbdf24206c1f4640be831670f4d29ed0": {
+ "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_f530e71385fb41fbac41b8ac8c4e6d8e",
+ "IPY_MODEL_e01e04ec36af435fa9af715377355e5a",
+ "IPY_MODEL_4649e83451ae45fc9e47878075e04834"
+ ],
+ "layout": "IPY_MODEL_a9e1f270b5314d4ba6c0417313dbd226"
+ }
+ },
+ "fc8ba4f1606743dcabc2ee0dd482b704": {
+ "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_0e00775c7821414fb82084db4c71aff9",
+ "placeholder": "",
+ "style": "IPY_MODEL_e18fbe8e72964a569c24722e35b81cb2",
+ "value": "Map: 100%"
+ }
+ },
+ "fcbdd1e084124303be96ca0a89a8e293": {
+ "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_512998b463a04362a4d618f503ceb95c",
+ "placeholder": "",
+ "style": "IPY_MODEL_2e7179f8d86740689b94aa8af55f403d",
+ "value": "merges.txt: "
+ }
+ },
+ "fd41dbbd73c5487d9b0d5e3751385225": {
+ "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_3f871a98b3214aecb047e164dc4a2a5d",
+ "IPY_MODEL_a419e0561e0f4b3da3f0eb8cb657755f",
+ "IPY_MODEL_87273b19125e42d0ad471db11f600a15"
+ ],
+ "layout": "IPY_MODEL_170a45be12e84118b1499c2d5a6c1b49"
+ }
+ },
+ "fdd57fafdc3747baa062dfce006addbf": {
+ "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
+ }
+ },
+ "fe237eb64d7b4a71bf13753010e77cbb": {
+ "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
+ }
+ },
+ "feebd174d6514ce69a24462b8cd314c4": {
+ "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_3ad89276ef674026baca9d24d1296710",
+ "IPY_MODEL_3d39bd5c62554dc98e37f26209681667",
+ "IPY_MODEL_d8cd88776dd640b8a2790bd8222a32e5"
+ ],
+ "layout": "IPY_MODEL_2a30540f69414facb204ef8a7e6dea4a"
+ }
+ },
+ "ff0c2a46d55946459f52d2dd09e05674": {
+ "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
+ }
+ },
+ "ffbda3ae381149c58b0f4f4ca3aba694": {
+ "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
+ }
+ }
+ },
+ "version_major": 2,
+ "version_minor": 0
+ }
}
},
"nbformat": 4,
"nbformat_minor": 5
-}
\ No newline at end of file
+}
diff --git a/train_grpo.py b/train_grpo.py
new file mode 100644
index 0000000000000000000000000000000000000000..7dd9c6acaf7ca823c63811959fc08016086e72e1
--- /dev/null
+++ b/train_grpo.py
@@ -0,0 +1,1283 @@
+"""GRPO training for the AWS RL environment — multi-turn rollouts + parallel envs.
+
+Mirrors the kube-sre-gym training pattern (heavy logic in this module, thin
+notebook on top):
+ - Each "episode" runs up to MAX_TURNS steps.
+ - Each step = one ``aws ...`` command; the command's stdout/stderr is fed
+ back into the next turn's prompt as the user message.
+ - Each GRPO step picks ONE curriculum task and runs G concurrent rollouts
+ (one per env in MultiTurnEnvPool) sharing that task.
+ - prompt_ids / completion_ids / logprobs are accumulated across turns so
+ GRPO assigns episode-level reward to the full token sequence.
+
+Usage (CLI)::
+
+ # Single training pass with explicit hyperparams
+ python train_grpo.py --mode train \\
+ --env-url http://localhost:8000 \\
+ --num-generations 8 --max-turns 6 --max-steps 200
+
+ # Optuna search over hyperparams, then dump best_cfg.json
+ python train_grpo.py --mode optuna --n-trials 6
+
+ # Optuna search, then full-length retrain using the best config
+ python train_grpo.py --mode full --n-trials 6 --max-steps 200
+"""
+
+from __future__ import annotations
+
+import argparse
+import asyncio
+import csv
+import gc
+import json
+import logging
+import re
+import threading
+from dataclasses import dataclass
+from datetime import datetime
+from pathlib import Path
+from typing import Any, Callable, Optional
+
+import torch
+from datasets import Dataset
+from peft import LoraConfig, PeftModel
+from transformers import AutoTokenizer
+from trl import GRPOConfig, GRPOTrainer
+
+from client import AwsRlEnv
+from models import AwsRlAction, AwsRlObservation, Task, TaskDifficulty, TaskID
+from server.services.curriculum import Curriculum
+
+logger = logging.getLogger(__name__)
+
+
+# ============================================================
+# System prompt — multi-turn AWS CLI agent
+# ============================================================
+
+SYSTEM_PROMPT = """You are an expert AWS Operations agent. You operate a simulated AWS cloud by emitting ONE AWS CLI command per turn.
+
+The user message contains:
+ - The task description.
+ - (Optional) A history of your previous commands and their outputs from earlier in this episode — use them to decide your next move.
+ - The most recent observation (last command's stdout / stderr / progress).
+
+Each turn:
+ 1. Optionally reason inside a single ... block. Keep it concise.
+ 2. After , on a NEW LINE, output EXACTLY ONE AWS CLI command starting with "aws ".
+
+Hard rules:
+ - The command line must contain ONLY the command — no markdown, no backticks, no quotes around it, no trailing commentary.
+ - If a command failed last turn, try a DIFFERENT approach. Do not repeat the exact same command twice in a row.
+ - When the task description names a specific resource (a bucket, table, queue, etc.), use that exact name.
+"""
+
+
+DEFAULT_CFG: dict[str, Any] = {
+ "learning_rate": 5e-6,
+ "beta": 0.04,
+ "num_generations": 8,
+ "temperature": 0.9,
+ "top_p": 0.95,
+ "lora_r": 16,
+ "lora_alpha_mul": 2,
+ "max_turns": 6,
+}
+
+
+# ============================================================
+# Helpers — prompt formatting + command parsing
+# ============================================================
+
+_THINK_BLOCK = re.compile(r"]*>.*?", re.DOTALL | re.IGNORECASE)
+_OPEN_THINK = re.compile(r"]*>.*", re.DOTALL | re.IGNORECASE)
+
+
+def extract_aws_command(raw: str) -> str:
+ """Strip blocks + markdown fences, return the first ``aws ...`` line.
+
+ Falls back to ``aws help`` so the env always gets a syntactically valid
+ command (the env will just produce a help-text observation, which is a
+ better RL signal than a parse error).
+ """
+ cleaned = _THINK_BLOCK.sub("", raw)
+ cleaned = _OPEN_THINK.sub("", cleaned)
+ for line in cleaned.splitlines():
+ line = line.strip().strip("`").strip()
+ if line.startswith("aws "):
+ return line
+ return "aws help"
+
+
+def _truncate(text: str, n: int) -> str:
+ if not text:
+ return ""
+ if len(text) <= n:
+ return text
+ return text[: n - 3] + "..."
+
+
+def format_observation(obs: AwsRlObservation) -> str:
+ """Render the latest env observation as a compact text block."""
+ parts: list[str] = []
+ if obs.command_output:
+ parts.append(f"Output:\n{_truncate(obs.command_output, 800)}")
+ if obs.error:
+ parts.append(f"Error:\n{_truncate(obs.error, 400)}")
+ parts.append(
+ f"Progress: {obs.partial_progress:.2f} "
+ f"Achieved: {obs.task_achieved} Step: {obs.step_count}"
+ )
+ if obs.hint_text:
+ parts.append(f"Hint: {_truncate(obs.hint_text, 200)}")
+ return "\n".join(parts)
+
+
+def format_history(history: list[dict], keep_last: int = 6) -> str:
+ """Render the last ``keep_last`` (cmd, output, reward) tuples for context."""
+ if not history:
+ return ""
+ recent = history[-keep_last:]
+ rendered: list[str] = ["PREVIOUS COMMANDS:"]
+ for i, h in enumerate(recent, start=max(1, len(history) - keep_last + 1)):
+ rendered.append(
+ f"[{i}] $ {h['command']}\n"
+ f" output: {_truncate(h['output'], 300)}\n"
+ f" reward: {h['reward']:.2f}"
+ )
+ return "\n".join(rendered)
+
+
+def apply_chat_template(tokenizer: AutoTokenizer, messages: list[dict]) -> str:
+ """Apply a chat template; fall back to a plain rendering if none is set."""
+ if getattr(tokenizer, "chat_template", None):
+ try:
+ return tokenizer.apply_chat_template(
+ messages, add_generation_prompt=True, tokenize=False
+ )
+ except TypeError:
+ return tokenizer.apply_chat_template(messages, tokenize=False)
+ parts: list[str] = []
+ for m in messages:
+ parts.append(f"<|{m['role']}|>\n{m['content']}\n")
+ parts.append("<|assistant|>\n")
+ return "".join(parts)
+
+
+def build_user_prompt(task: Task, obs: AwsRlObservation, history: list[dict]) -> str:
+ desc = task.description
+ if task.desired_state_spec:
+ desc = f"{desc}\n\nDesired end state:\n{task.desired_state_spec}"
+ history_text = format_history(history)
+ obs_text = format_observation(obs)
+ if history_text:
+ return f"TASK: {desc}\n\n{history_text}\n\n---\n\nCURRENT OBSERVATION:\n{obs_text}"
+ return f"TASK: {desc}\n\nCURRENT OBSERVATION:\n{obs_text}"
+
+
+# ============================================================
+# Policy loading — Unsloth 4-bit base + LoRA-from-SFT-adapter
+# ============================================================
+
+
+@dataclass
+class PolicySpec:
+ base_model: str = "unsloth/Qwen2.5-Coder-3B-Instruct-bnb-4bit"
+ sft_adapter: str = "Sizzing/aws-rl-sft-qwen25coder3b-adapter"
+ max_seq_length: int = 3072
+
+
+def load_policy(
+ base_model: str,
+ sft_adapter: Optional[str] = None,
+ max_seq_length: int = 3072,
+ trainable: bool = True,
+):
+ """Load Unsloth 4-bit base + (optional) LoRA adapter from the SFT run.
+
+ ``trainable=True`` returns a PeftModel ready for GRPO training (Unsloth's
+ training kernels enabled, input require-grads hook installed).
+ ``trainable=False`` returns the same stack in inference mode for eval.
+ """
+ from unsloth import FastLanguageModel
+
+ base, tokenizer = FastLanguageModel.from_pretrained(
+ model_name=base_model,
+ max_seq_length=max_seq_length,
+ load_in_4bit=True,
+ )
+ if sft_adapter:
+ model = PeftModel.from_pretrained(base, sft_adapter, is_trainable=trainable)
+ else:
+ # No adapter: GRPOTrainer can attach a fresh LoRA via peft_config later.
+ model = base
+
+ if trainable:
+ FastLanguageModel.for_training(model)
+ if hasattr(model, "enable_input_require_grads"):
+ model.enable_input_require_grads()
+ else:
+ FastLanguageModel.for_inference(model)
+
+ if tokenizer.pad_token is None:
+ tokenizer.pad_token = tokenizer.eos_token
+
+ return model, tokenizer
+
+
+def free_model(model) -> None:
+ """Release VRAM held by ``model`` and any captured optimizer state."""
+ try:
+ del model
+ except Exception:
+ pass
+ gc.collect()
+ if torch.cuda.is_available():
+ torch.cuda.empty_cache()
+
+
+# ============================================================
+# Multi-turn rollout — one episode in one env
+# ============================================================
+
+
+@dataclass
+class SamplingCfg:
+ temperature: float = 0.9
+ top_p: float = 0.95
+ max_new_tokens: int = 256
+ max_prompt_length: int = 2048
+
+
+_GENERATE_LOCK = threading.Lock()
+"""Serialise model.generate() calls across the asyncio.gather rollout group.
+
+The model lives on a single GPU; concurrent generate() calls would collide.
+We let the env step run concurrently (the slow part — WebSocket round-trip +
+MiniStack execution); only the generation is serialised.
+"""
+
+
+def _generate_with_logprobs(
+ model,
+ tokenizer,
+ prompt_text: str,
+ sampling: SamplingCfg,
+) -> tuple[list[int], list[int], list[float]]:
+ """Generate one completion + return per-token logprobs.
+
+ Returns: (prompt_ids, completion_ids, completion_logprobs).
+ """
+ with _GENERATE_LOCK:
+ prompt_input = tokenizer(
+ prompt_text,
+ return_tensors="pt",
+ truncation=True,
+ max_length=sampling.max_prompt_length,
+ ).to(model.device)
+
+ was_training = model.training
+ model.eval()
+ try:
+ with torch.no_grad():
+ gen_out = model.generate(
+ **prompt_input,
+ max_new_tokens=sampling.max_new_tokens,
+ do_sample=True,
+ temperature=sampling.temperature,
+ top_p=sampling.top_p,
+ return_dict_in_generate=True,
+ output_scores=True,
+ pad_token_id=tokenizer.pad_token_id,
+ )
+ finally:
+ if was_training:
+ model.train()
+
+ prompt_ids = prompt_input.input_ids[0].tolist()
+ prompt_len = len(prompt_ids)
+ completion_seq = gen_out.sequences[0, prompt_len:].tolist()
+
+ # Per-token logprobs from raw logits.
+ logprobs: list[float] = []
+ for i, scores_t in enumerate(gen_out.scores):
+ if i >= len(completion_seq):
+ break
+ lp = torch.log_softmax(scores_t[0].float(), dim=-1)
+ logprobs.append(float(lp[completion_seq[i]].item()))
+
+ return prompt_ids, completion_seq, logprobs
+
+
+async def rollout_one_episode(
+ env: AwsRlEnv,
+ task: Task,
+ model,
+ tokenizer,
+ system_prompt: str,
+ max_turns: int,
+ max_total_tokens: int,
+ sampling: SamplingCfg,
+) -> dict:
+ """Run one multi-turn episode in one env, accumulating tokens across turns."""
+ try:
+ res = await env.reset(task=task)
+ except Exception as e:
+ logger.warning("reset() failed for task=%s: %s", task.task_id, e)
+ return {
+ "prompt_ids": [],
+ "completion_ids": [],
+ "logprobs": [],
+ "task_reward": -1.0,
+ "task_achieved": False,
+ "final_progress": 0.0,
+ "num_steps": 0,
+ "transcript": [{"error": f"reset failed: {e!r}"}],
+ }
+ obs: AwsRlObservation = res.observation
+
+ prompt_ids: list[int] = []
+ completion_ids: list[int] = []
+ logprobs: list[float] = []
+ step_rewards: list[float] = []
+ history: list[dict] = []
+ final_progress = float(getattr(obs, "partial_progress", 0.0) or 0.0)
+ final_achieved = bool(getattr(obs, "task_achieved", False))
+
+ for _turn in range(max_turns):
+ if res.done:
+ break
+ if len(completion_ids) >= max_total_tokens:
+ break
+
+ user_text = build_user_prompt(task, obs, history)
+ messages = [
+ {"role": "system", "content": system_prompt},
+ {"role": "user", "content": user_text},
+ ]
+ prompt_text = apply_chat_template(tokenizer, messages)
+
+ # Generation runs on the calling thread (blocking) but env.step calls
+ # for other rollouts in this group can overlap because they're all
+ # awaiting in the same loop.
+ loop = asyncio.get_running_loop()
+ turn_prompt_ids, turn_completion_ids, turn_logprobs = await loop.run_in_executor(
+ None, _generate_with_logprobs, model, tokenizer, prompt_text, sampling
+ )
+ completion_text = tokenizer.decode(turn_completion_ids, skip_special_tokens=True)
+ cmd = extract_aws_command(completion_text)
+
+ try:
+ res = await env.step(AwsRlAction(command=cmd))
+ step_reward = float(res.reward or 0.0)
+ except Exception as e:
+ logger.warning("step() error on cmd=%r: %s", cmd[:80], e)
+ step_reward = -0.1
+ history.append(
+ {
+ "command": cmd,
+ "output": f"ERROR: {e!r}",
+ "reward": step_reward,
+ }
+ )
+ prompt_ids.extend(turn_prompt_ids)
+ completion_ids.extend(turn_completion_ids)
+ logprobs.extend(turn_logprobs)
+ step_rewards.append(step_reward)
+ break
+
+ prompt_ids.extend(turn_prompt_ids)
+ completion_ids.extend(turn_completion_ids)
+ logprobs.extend(turn_logprobs)
+ step_rewards.append(step_reward)
+ obs = res.observation
+ final_progress = float(getattr(obs, "partial_progress", 0.0) or 0.0)
+ final_achieved = bool(getattr(obs, "task_achieved", False))
+ history.append(
+ {
+ "command": cmd,
+ "output": _truncate(getattr(obs, "command_output", "") or "", 500),
+ "reward": step_reward,
+ }
+ )
+
+ return {
+ "prompt_ids": prompt_ids,
+ "completion_ids": completion_ids,
+ "logprobs": logprobs,
+ "task_reward": float(sum(step_rewards)) if step_rewards else -1.0,
+ "task_achieved": final_achieved,
+ "final_progress": final_progress,
+ "num_steps": len(history),
+ "transcript": history,
+ "task_id": int(task.task_id),
+ "difficulty": task.difficulty.value,
+ }
+
+
+# ============================================================
+# MultiTurnEnvPool — sync wrapper around N async env sessions
+# ============================================================
+
+
+class MultiTurnEnvPool:
+ """N persistent WebSocket env sessions, exposed via a sync ``run_group`` API.
+
+ Owns a background thread running an asyncio loop. Connect / close happens
+ once for the lifetime of training. Submitted coroutines run in the
+ background loop via ``asyncio.run_coroutine_threadsafe`` and the calling
+ thread blocks on the resulting concurrent.futures.Future.
+ """
+
+ def __init__(self, base_url: str, size: int, timeout_s: float = 120.0) -> None:
+ if size < 1:
+ raise ValueError("size must be >= 1")
+ self.base_url = base_url
+ self.size = size
+ self.timeout_s = timeout_s
+ self._envs: list[AwsRlEnv] = []
+ self._loop: Optional[asyncio.AbstractEventLoop] = None
+ self._thread: Optional[threading.Thread] = None
+ self._ready = threading.Event()
+ self._setup_error: Optional[BaseException] = None
+
+ def start(self) -> None:
+ """Open N WebSocket sessions on the background loop."""
+ if self._thread is not None:
+ return
+
+ def run() -> None:
+ loop = asyncio.new_event_loop()
+ self._loop = loop
+ asyncio.set_event_loop(loop)
+ try:
+ loop.run_until_complete(self._connect_all())
+ except BaseException as e:
+ self._setup_error = e
+ self._ready.set()
+ return
+ self._ready.set()
+ loop.run_forever()
+
+ self._thread = threading.Thread(target=run, daemon=True, name="env-pool")
+ self._thread.start()
+ self._ready.wait()
+ if self._setup_error is not None:
+ raise RuntimeError(
+ f"MultiTurnEnvPool failed to connect {self.size} sessions to "
+ f"{self.base_url}: {self._setup_error!r}"
+ )
+ logger.info("MultiTurnEnvPool: %d sessions on %s", self.size, self.base_url)
+
+ async def _connect_all(self) -> None:
+ envs = [AwsRlEnv(base_url=self.base_url) for _ in range(self.size)]
+ try:
+ await asyncio.gather(*(e.connect() for e in envs))
+ except BaseException:
+ await asyncio.gather(*(e.close() for e in envs), return_exceptions=True)
+ raise
+ self._envs = envs
+
+ def close(self) -> None:
+ if self._thread is None or self._loop is None:
+ return
+ loop = self._loop
+
+ async def _shutdown() -> None:
+ await asyncio.gather(
+ *(e.close() for e in self._envs), return_exceptions=True
+ )
+
+ try:
+ fut = asyncio.run_coroutine_threadsafe(_shutdown(), loop)
+ fut.result(timeout=10.0)
+ except Exception as e:
+ logger.warning("Pool shutdown error (ignored): %s", e)
+ finally:
+ loop.call_soon_threadsafe(loop.stop)
+ self._thread.join(timeout=5.0)
+ self._thread = None
+ self._loop = None
+ self._envs = []
+
+ def run_group(
+ self,
+ task: Task,
+ model,
+ tokenizer,
+ system_prompt: str,
+ max_turns: int,
+ max_total_tokens: int,
+ sampling: SamplingCfg,
+ ) -> list[dict]:
+ """Run N concurrent multi-turn rollouts on the same task. Sync; blocks."""
+ assert self._loop is not None and self._envs, "call start() first"
+
+ async def _gather() -> list[dict]:
+ return list(
+ await asyncio.gather(
+ *(
+ rollout_one_episode(
+ env,
+ task,
+ model,
+ tokenizer,
+ system_prompt,
+ max_turns,
+ max_total_tokens,
+ sampling,
+ )
+ for env in self._envs
+ )
+ )
+ )
+
+ fut = asyncio.run_coroutine_threadsafe(_gather(), self._loop)
+ return fut.result(timeout=self.timeout_s * max(1, max_turns))
+
+ def __enter__(self) -> "MultiTurnEnvPool":
+ self.start()
+ return self
+
+ def __exit__(self, *exc) -> None:
+ self.close()
+
+
+# ============================================================
+# Reward functions (TRL convention) + rollout_func factory
+# ============================================================
+
+
+def reward_task(completions: list[str], **kwargs) -> list[float]:
+ rewards = kwargs.get("task_reward")
+ if rewards is None:
+ return [0.0 for _ in completions]
+ return [float(r) for r in rewards]
+
+
+def reward_achieved(completions: list[str], **kwargs) -> list[float]:
+ flags = kwargs.get("task_achieved")
+ if flags is None:
+ return [0.0 for _ in completions]
+ return [float(f) for f in flags]
+
+
+def reward_progress(completions: list[str], **kwargs) -> list[float]:
+ progress = kwargs.get("final_progress")
+ if progress is None:
+ return [0.0 for _ in completions]
+ return [float(p) for p in progress]
+
+
+def make_rollout_func(
+ curriculum: Curriculum,
+ pool: MultiTurnEnvPool,
+ model,
+ tokenizer,
+ system_prompt: str,
+ max_turns: int,
+ max_total_tokens: int,
+ sampling: SamplingCfg,
+ log_episode: Callable[[Task, list[dict]], None],
+) -> Callable:
+ """Build the closure GRPO calls each step.
+
+ ``prompts`` length equals ``num_generations``. We ignore the prompt strings
+ because the curriculum drives task selection — every rollout in the group
+ runs the same task forced through ``env.reset(task=...)``.
+ """
+
+ def rollout_func(prompts: list[str], trainer: GRPOTrainer) -> dict[str, list]:
+ task = curriculum.next_task()
+ results = pool.run_group(
+ task,
+ model,
+ tokenizer,
+ system_prompt,
+ max_turns,
+ max_total_tokens,
+ sampling,
+ )
+ # Pad / truncate to len(prompts) — defence in depth, group size should match.
+ if len(results) < len(prompts):
+ results.extend(results[-1:] * (len(prompts) - len(results)))
+ results = results[: len(prompts)]
+
+ group_rewards = [r["task_reward"] for r in results]
+ group_achieved = [r["task_achieved"] for r in results]
+ group_progress = [r["final_progress"] for r in results]
+
+ curriculum.record_result(
+ task,
+ achieved=any(group_achieved),
+ reward=float(sum(group_rewards) / len(group_rewards)) if group_rewards else 0.0,
+ )
+ log_episode(task, results)
+
+ return {
+ "prompt_ids": [r["prompt_ids"] for r in results],
+ "completion_ids": [r["completion_ids"] for r in results],
+ "logprobs": [r["logprobs"] for r in results],
+ "task_reward": group_rewards,
+ "task_achieved": [float(a) for a in group_achieved],
+ "final_progress": group_progress,
+ }
+
+ return rollout_func
+
+
+# ============================================================
+# CSV / JSONL logging + reward plotter
+# ============================================================
+
+
+class EpisodeLogger:
+ """Append-only CSV + JSONL writer for per-rollout episode rows."""
+
+ HEADER = [
+ "step",
+ "rollout_idx",
+ "task_id",
+ "difficulty",
+ "task_reward",
+ "task_achieved",
+ "final_progress",
+ "num_steps",
+ "tier",
+ "tier_success_rate",
+ "timestamp",
+ ]
+
+ def __init__(self, output_dir: Path) -> None:
+ self.output_dir = output_dir
+ output_dir.mkdir(parents=True, exist_ok=True)
+ self.csv_path = output_dir / "reward_log.csv"
+ self.jsonl_path = output_dir / "transcripts.jsonl"
+ if not self.csv_path.exists():
+ with open(self.csv_path, "w", newline="") as f:
+ csv.writer(f).writerow(self.HEADER)
+ self._step_counter = 0
+
+ def log(self, task: Task, results: list[dict], curriculum: Curriculum) -> None:
+ self._step_counter += 1
+ stats = curriculum.get_stats()
+ ts = datetime.now().isoformat()
+ with open(self.csv_path, "a", newline="") as f:
+ writer = csv.writer(f)
+ for i, r in enumerate(results):
+ writer.writerow(
+ [
+ self._step_counter,
+ i,
+ int(task.task_id),
+ task.difficulty.value,
+ f"{r['task_reward']:.4f}",
+ int(bool(r["task_achieved"])),
+ f"{r['final_progress']:.4f}",
+ r["num_steps"],
+ stats["tier"],
+ stats["tier_success_rate"],
+ ts,
+ ]
+ )
+ with open(self.jsonl_path, "a") as f:
+ for i, r in enumerate(results):
+ f.write(
+ json.dumps(
+ {
+ "step": self._step_counter,
+ "rollout_idx": i,
+ "task_id": int(task.task_id),
+ "difficulty": task.difficulty.value,
+ "task_reward": r["task_reward"],
+ "task_achieved": bool(r["task_achieved"]),
+ "final_progress": r["final_progress"],
+ "num_steps": r["num_steps"],
+ "tier": stats["tier"],
+ "transcript": r["transcript"],
+ }
+ )
+ + "\n"
+ )
+
+ rewards = [r["task_reward"] for r in results]
+ achieved = [bool(r["task_achieved"]) for r in results]
+ logger.info(
+ "Step %d task=%d (%s) rewards=%s achieved=%d/%d tier=%s tier_rate=%.2f",
+ self._step_counter,
+ int(task.task_id),
+ task.difficulty.value,
+ [round(r, 2) for r in rewards],
+ sum(achieved),
+ len(achieved),
+ stats["tier"],
+ stats["tier_success_rate"],
+ )
+
+
+def plot_rewards(csv_path: Path, out_path: Path) -> None:
+ """Per-step mean group reward + 10-step rolling avg + per-tier curves."""
+ import matplotlib
+
+ matplotlib.use("Agg")
+ import matplotlib.pyplot as plt
+
+ if not csv_path.exists():
+ logger.warning("No CSV at %s — skipping plot.", csv_path)
+ return
+
+ steps_data: dict[int, list[float]] = {}
+ tier_data: dict[str, list[tuple[int, float]]] = {}
+ with open(csv_path) as f:
+ reader = csv.DictReader(f)
+ for row in reader:
+ step = int(row["step"])
+ r = float(row["task_reward"])
+ tier = row["tier"]
+ steps_data.setdefault(step, []).append(r)
+ tier_data.setdefault(tier, []).append((step, r))
+
+ if not steps_data:
+ logger.warning("CSV at %s has no rows — skipping plot.", csv_path)
+ return
+
+ steps = sorted(steps_data.keys())
+ means = [sum(steps_data[s]) / len(steps_data[s]) for s in steps]
+
+ rolling = []
+ window = 10
+ for i in range(len(means)):
+ lo = max(0, i - window + 1)
+ rolling.append(sum(means[lo : i + 1]) / (i - lo + 1))
+
+ fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))
+ ax1.plot(steps, means, label="mean group reward", alpha=0.5)
+ ax1.plot(steps, rolling, label=f"rolling avg (k={window})", linewidth=2)
+ ax1.set_xlabel("GRPO step")
+ ax1.set_ylabel("reward")
+ ax1.set_title("Group mean reward over training")
+ ax1.legend()
+ ax1.grid(alpha=0.3)
+
+ for tier, points in tier_data.items():
+ xs = [p[0] for p in points]
+ ys = [p[1] for p in points]
+ ax2.scatter(xs, ys, s=10, alpha=0.5, label=tier)
+ ax2.set_xlabel("GRPO step")
+ ax2.set_ylabel("reward")
+ ax2.set_title("Per-rollout reward by curriculum tier")
+ ax2.legend()
+ ax2.grid(alpha=0.3)
+
+ fig.tight_layout()
+ fig.savefig(out_path, dpi=120)
+ plt.close(fig)
+ logger.info("Reward plot written to %s", out_path)
+
+
+# ============================================================
+# Validation eval + Optuna search
+# ============================================================
+
+
+def pick_validation_task_ids(
+ curriculum: Optional[Curriculum] = None,
+ k_per_tier: int = 2,
+ seed: int = 42,
+) -> list[int]:
+ """Pick a frozen list of task ids — k per tier — for held-out validation."""
+ import random
+
+ rng = random.Random(seed)
+ cur = curriculum or Curriculum()
+ chosen: list[int] = []
+ for tier in TaskDifficulty:
+ try:
+ from server.services.curriculum import load_tier
+
+ tier_tasks = load_tier(tier, cur._tasks_dir)
+ except Exception as e:
+ logger.warning("Could not load tier %s for val: %s", tier.value, e)
+ continue
+ if not tier_tasks:
+ continue
+ sample = rng.sample(tier_tasks, k=min(k_per_tier, len(tier_tasks)))
+ chosen.extend(int(t.task_id) for t in sample)
+ return chosen
+
+
+def evaluate_on_validation(
+ model,
+ tokenizer,
+ pool: MultiTurnEnvPool,
+ val_task_ids: list[int],
+ system_prompt: str,
+ max_turns: int,
+ max_total_tokens: int,
+ sampling: SamplingCfg,
+ curriculum: Optional[Curriculum] = None,
+) -> dict[str, float]:
+ """Run ONE rollout per val task on env[0] of the pool. Return aggregate metrics."""
+ cur = curriculum or Curriculum()
+ achieved_flags: list[float] = []
+ progresses: list[float] = []
+ rewards: list[float] = []
+
+ async def _eval_one(task: Task) -> dict:
+ env = pool._envs[0]
+ return await rollout_one_episode(
+ env,
+ task,
+ model,
+ tokenizer,
+ system_prompt,
+ max_turns,
+ max_total_tokens,
+ sampling,
+ )
+
+ for tid in val_task_ids:
+ try:
+ task = cur.get_task_by_id(TaskID(int(tid)))
+ except KeyError:
+ logger.warning("val task_id=%d not found — skipping", tid)
+ continue
+ fut = asyncio.run_coroutine_threadsafe(_eval_one(task), pool._loop)
+ try:
+ res = fut.result(timeout=pool.timeout_s * max(1, max_turns))
+ except Exception as e:
+ logger.warning("val rollout failed for task=%d: %s", tid, e)
+ continue
+ achieved_flags.append(float(res["task_achieved"]))
+ progresses.append(float(res["final_progress"]))
+ rewards.append(float(res["task_reward"]))
+
+ n = max(1, len(achieved_flags))
+ return {
+ "achieved_rate": sum(achieved_flags) / n,
+ "mean_progress": sum(progresses) / n,
+ "mean_reward": sum(rewards) / n,
+ "n_evaluated": float(len(achieved_flags)),
+ }
+
+
+def _build_grpo_config(
+ output_dir: Path,
+ cfg: dict[str, Any],
+ max_steps: int,
+ max_completion_length: int,
+ max_prompt_length: int,
+ save_steps: int = 25,
+ save_strategy: str = "steps",
+ report_to: str = "none",
+) -> GRPOConfig:
+ return GRPOConfig(
+ output_dir=str(output_dir),
+ max_steps=max_steps,
+ learning_rate=float(cfg["learning_rate"]),
+ beta=float(cfg["beta"]),
+ num_generations=int(cfg["num_generations"]),
+ generation_batch_size=int(cfg["num_generations"]),
+ per_device_train_batch_size=1,
+ gradient_accumulation_steps=8,
+ gradient_checkpointing=True,
+ gradient_checkpointing_kwargs={"use_reentrant": False},
+ max_completion_length=max_completion_length,
+ max_prompt_length=max_prompt_length,
+ temperature=float(cfg["temperature"]),
+ top_p=float(cfg["top_p"]),
+ logging_steps=1,
+ save_strategy=save_strategy,
+ save_steps=save_steps,
+ save_total_limit=3,
+ report_to=report_to,
+ loss_type="dapo",
+ mask_truncated_completions=True,
+ warmup_ratio=0.05,
+ lr_scheduler_type="cosine",
+ max_grad_norm=1.0,
+ use_vllm=False,
+ remove_unused_columns=False,
+ )
+
+
+def _build_dummy_dataset(num_rows: int) -> Dataset:
+ """A length-only dataset; the prompts are ignored by ``rollout_func``."""
+ return Dataset.from_dict({"prompt": ["solve"] * max(1, num_rows)})
+
+
+def optuna_search(
+ n_trials: int,
+ trial_max_steps: int,
+ val_task_ids: list[int],
+ base_model: str,
+ sft_adapter: Optional[str],
+ env_url: str,
+ output_dir: Path,
+ max_total_tokens: int = 2048,
+ max_completion_length: int = 256,
+ max_prompt_length: int = 2048,
+ seed: int = 42,
+):
+ """TPE-sampled hyperparam search. Persists to ``output_dir/optuna.db``."""
+ import optuna
+
+ output_dir.mkdir(parents=True, exist_ok=True)
+ study = optuna.create_study(
+ direction="maximize",
+ study_name="aws-rl-grpo",
+ storage=f"sqlite:///{output_dir / 'optuna.db'}",
+ load_if_exists=True,
+ sampler=optuna.samplers.TPESampler(seed=seed),
+ )
+
+ def _objective(trial: optuna.Trial) -> float:
+ cfg = {
+ "learning_rate": trial.suggest_float("learning_rate", 1e-6, 1e-4, log=True),
+ "beta": trial.suggest_float("beta", 0.0, 0.1),
+ "num_generations": trial.suggest_categorical("num_generations", [4, 8]),
+ "temperature": trial.suggest_float("temperature", 0.7, 1.0),
+ "top_p": trial.suggest_float("top_p", 0.85, 0.98),
+ "lora_r": trial.suggest_categorical("lora_r", [8, 16, 32]),
+ "lora_alpha_mul": trial.suggest_categorical("lora_alpha_mul", [1, 2, 4]),
+ "max_turns": trial.suggest_categorical("max_turns", [4, 6, 8]),
+ }
+ trial_dir = output_dir / f"trial_{trial.number:03d}"
+ return _run_one_trial(
+ cfg=cfg,
+ trial_max_steps=trial_max_steps,
+ val_task_ids=val_task_ids,
+ base_model=base_model,
+ sft_adapter=sft_adapter,
+ env_url=env_url,
+ output_dir=trial_dir,
+ max_total_tokens=max_total_tokens,
+ max_completion_length=max_completion_length,
+ max_prompt_length=max_prompt_length,
+ )
+
+ study.optimize(_objective, n_trials=n_trials, gc_after_trial=True)
+
+ best_path = output_dir / "best_cfg.json"
+ payload = {"best_value": study.best_value, "best_params": dict(study.best_params)}
+ with open(best_path, "w") as f:
+ json.dump(payload, f, indent=2)
+ logger.info(
+ "Optuna study finished. best_value=%.4f best_params=%s -> %s",
+ study.best_value,
+ study.best_params,
+ best_path,
+ )
+ return study
+
+
+def _run_one_trial(
+ cfg: dict[str, Any],
+ trial_max_steps: int,
+ val_task_ids: list[int],
+ base_model: str,
+ sft_adapter: Optional[str],
+ env_url: str,
+ output_dir: Path,
+ max_total_tokens: int,
+ max_completion_length: int,
+ max_prompt_length: int,
+) -> float:
+ """One Optuna trial: load → train → eval on val tasks → tear down → return objective."""
+ output_dir.mkdir(parents=True, exist_ok=True)
+ logger.info("Optuna trial cfg=%s -> %s", cfg, output_dir)
+
+ model = tokenizer = None
+ pool: Optional[MultiTurnEnvPool] = None
+ trainer: Optional[GRPOTrainer] = None
+ try:
+ model, tokenizer = load_policy(base_model, sft_adapter, trainable=True)
+
+ pool = MultiTurnEnvPool(env_url, size=int(cfg["num_generations"]))
+ pool.start()
+
+ curriculum = Curriculum()
+ sampling = SamplingCfg(
+ temperature=float(cfg["temperature"]),
+ top_p=float(cfg["top_p"]),
+ max_new_tokens=max_completion_length,
+ max_prompt_length=max_prompt_length,
+ )
+ ep_logger = EpisodeLogger(output_dir)
+ rollout_func = make_rollout_func(
+ curriculum=curriculum,
+ pool=pool,
+ model=model,
+ tokenizer=tokenizer,
+ system_prompt=SYSTEM_PROMPT,
+ max_turns=int(cfg["max_turns"]),
+ max_total_tokens=max_total_tokens,
+ sampling=sampling,
+ log_episode=lambda task, results: ep_logger.log(task, results, curriculum),
+ )
+
+ dataset = _build_dummy_dataset(trial_max_steps * int(cfg["num_generations"]))
+ grpo_cfg = _build_grpo_config(
+ output_dir=output_dir,
+ cfg=cfg,
+ max_steps=trial_max_steps,
+ max_completion_length=max_completion_length,
+ max_prompt_length=max_prompt_length,
+ save_strategy="no",
+ report_to="none",
+ )
+
+ trainer = GRPOTrainer(
+ model=model,
+ processing_class=tokenizer,
+ reward_funcs=[reward_task, reward_achieved, reward_progress],
+ train_dataset=dataset,
+ args=grpo_cfg,
+ rollout_func=rollout_func,
+ peft_config=None if sft_adapter else _lora_config(cfg),
+ )
+ trainer.train()
+
+ metrics = evaluate_on_validation(
+ model=trainer.model,
+ tokenizer=tokenizer,
+ pool=pool,
+ val_task_ids=val_task_ids,
+ system_prompt=SYSTEM_PROMPT,
+ max_turns=int(cfg["max_turns"]),
+ max_total_tokens=max_total_tokens,
+ sampling=sampling,
+ curriculum=curriculum,
+ )
+ objective = 0.7 * metrics["achieved_rate"] + 0.3 * metrics["mean_progress"]
+ with open(output_dir / "trial_metrics.json", "w") as f:
+ json.dump({"cfg": cfg, "metrics": metrics, "objective": objective}, f, indent=2)
+ logger.info("Trial done: metrics=%s objective=%.4f", metrics, objective)
+ return float(objective)
+ finally:
+ if trainer is not None:
+ try:
+ del trainer
+ except Exception:
+ pass
+ if model is not None:
+ free_model(model)
+ if pool is not None:
+ try:
+ pool.close()
+ except Exception:
+ logger.exception("Pool close error during trial cleanup")
+ gc.collect()
+ if torch.cuda.is_available():
+ torch.cuda.empty_cache()
+
+
+def _lora_config(cfg: dict[str, Any]) -> LoraConfig:
+ r = int(cfg["lora_r"])
+ alpha_mul = int(cfg["lora_alpha_mul"])
+ return LoraConfig(
+ r=r,
+ lora_alpha=r * alpha_mul,
+ lora_dropout=0.05,
+ bias="none",
+ task_type="CAUSAL_LM",
+ target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
+ )
+
+
+# ============================================================
+# Main training entrypoint (single training pass)
+# ============================================================
+
+
+def run_training(
+ cfg: dict[str, Any],
+ *,
+ base_model: str,
+ sft_adapter: Optional[str],
+ env_url: str,
+ output_dir: Path,
+ max_steps: int,
+ max_total_tokens: int = 4096,
+ max_completion_length: int = 256,
+ max_prompt_length: int = 2048,
+ push_to_hub: bool = False,
+ hub_repo: Optional[str] = None,
+) -> Path:
+ """Run a full GRPO training pass with the supplied config dict."""
+ output_dir.mkdir(parents=True, exist_ok=True)
+ logger.info("run_training cfg=%s -> %s", cfg, output_dir)
+
+ model, tokenizer = load_policy(base_model, sft_adapter, trainable=True)
+ pool = MultiTurnEnvPool(env_url, size=int(cfg["num_generations"]))
+ pool.start()
+
+ curriculum = Curriculum()
+ sampling = SamplingCfg(
+ temperature=float(cfg["temperature"]),
+ top_p=float(cfg["top_p"]),
+ max_new_tokens=max_completion_length,
+ max_prompt_length=max_prompt_length,
+ )
+ ep_logger = EpisodeLogger(output_dir)
+ rollout_func = make_rollout_func(
+ curriculum=curriculum,
+ pool=pool,
+ model=model,
+ tokenizer=tokenizer,
+ system_prompt=SYSTEM_PROMPT,
+ max_turns=int(cfg["max_turns"]),
+ max_total_tokens=max_total_tokens,
+ sampling=sampling,
+ log_episode=lambda task, results: ep_logger.log(task, results, curriculum),
+ )
+
+ dataset = _build_dummy_dataset(max_steps * int(cfg["num_generations"]))
+ grpo_cfg = _build_grpo_config(
+ output_dir=output_dir,
+ cfg=cfg,
+ max_steps=max_steps,
+ max_completion_length=max_completion_length,
+ max_prompt_length=max_prompt_length,
+ )
+
+ trainer = GRPOTrainer(
+ model=model,
+ processing_class=tokenizer,
+ reward_funcs=[reward_task, reward_achieved, reward_progress],
+ train_dataset=dataset,
+ args=grpo_cfg,
+ rollout_func=rollout_func,
+ peft_config=None if sft_adapter else _lora_config(cfg),
+ )
+
+ try:
+ trainer.train()
+ finally:
+ try:
+ pool.close()
+ except Exception:
+ logger.exception("Pool close error after training")
+ try:
+ plot_rewards(ep_logger.csv_path, output_dir / "reward_plot.png")
+ except Exception as e:
+ logger.warning("plot_rewards failed: %s", e)
+
+ trainer.save_model(str(output_dir))
+ logger.info("Adapter saved to %s", output_dir)
+
+ if push_to_hub and hub_repo:
+ trainer.push_to_hub(repo_id=hub_repo)
+ logger.info("Adapter pushed to https://huggingface.co/%s", hub_repo)
+
+ return output_dir
+
+
+# ============================================================
+# CLI
+# ============================================================
+
+
+def _parse_args() -> argparse.Namespace:
+ p = argparse.ArgumentParser(description=__doc__)
+ p.add_argument("--mode", choices=["train", "optuna", "full"], default="train")
+ p.add_argument("--base-model", default=PolicySpec.base_model)
+ p.add_argument("--sft-adapter", default=PolicySpec.sft_adapter,
+ help="HF repo id of the SFT adapter (use empty string to disable)")
+ p.add_argument("--env-url", default="http://localhost:8000")
+ p.add_argument("--output-dir", default=None)
+
+ # Train-mode hyperparams (mirror DEFAULT_CFG keys)
+ p.add_argument("--num-generations", type=int, default=DEFAULT_CFG["num_generations"])
+ p.add_argument("--max-turns", type=int, default=DEFAULT_CFG["max_turns"])
+ p.add_argument("--max-steps", type=int, default=200)
+ p.add_argument("--learning-rate", type=float, default=DEFAULT_CFG["learning_rate"])
+ p.add_argument("--beta", type=float, default=DEFAULT_CFG["beta"])
+ p.add_argument("--temperature", type=float, default=DEFAULT_CFG["temperature"])
+ p.add_argument("--top-p", type=float, default=DEFAULT_CFG["top_p"])
+ p.add_argument("--lora-r", type=int, default=DEFAULT_CFG["lora_r"])
+ p.add_argument("--lora-alpha-mul", type=int, default=DEFAULT_CFG["lora_alpha_mul"])
+ p.add_argument("--max-prompt-length", type=int, default=2048)
+ p.add_argument("--max-completion-length", type=int, default=256)
+ p.add_argument("--max-total-tokens", type=int, default=4096)
+
+ # Optuna-specific
+ p.add_argument("--n-trials", type=int, default=6)
+ p.add_argument("--trial-max-steps", type=int, default=30)
+ p.add_argument("--val-tasks-per-tier", type=int, default=2)
+
+ p.add_argument("--push-to-hub", action="store_true")
+ p.add_argument("--hub-repo", default=None)
+ return p.parse_args()
+
+
+def _resolve_output_dir(args: argparse.Namespace) -> Path:
+ if args.output_dir:
+ return Path(args.output_dir)
+ ts = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
+ return Path("outputs") / f"aws-rl-grpo-{ts}"
+
+
+def _cli_cfg(args: argparse.Namespace) -> dict[str, Any]:
+ return {
+ "learning_rate": args.learning_rate,
+ "beta": args.beta,
+ "num_generations": args.num_generations,
+ "temperature": args.temperature,
+ "top_p": args.top_p,
+ "lora_r": args.lora_r,
+ "lora_alpha_mul": args.lora_alpha_mul,
+ "max_turns": args.max_turns,
+ }
+
+
+def main() -> None:
+ logging.basicConfig(
+ level=logging.INFO,
+ format="%(asctime)s %(levelname)s %(name)s %(message)s",
+ )
+ args = _parse_args()
+ output_dir = _resolve_output_dir(args)
+ output_dir.mkdir(parents=True, exist_ok=True)
+ sft_adapter = args.sft_adapter or None
+
+ if args.mode in ("optuna", "full"):
+ val_ids = pick_validation_task_ids(k_per_tier=args.val_tasks_per_tier)
+ with open(output_dir / "val_task_ids.json", "w") as f:
+ json.dump(val_ids, f)
+ study = optuna_search(
+ n_trials=args.n_trials,
+ trial_max_steps=args.trial_max_steps,
+ val_task_ids=val_ids,
+ base_model=args.base_model,
+ sft_adapter=sft_adapter,
+ env_url=args.env_url,
+ output_dir=output_dir,
+ max_total_tokens=args.max_total_tokens,
+ max_completion_length=args.max_completion_length,
+ max_prompt_length=args.max_prompt_length,
+ )
+ if args.mode == "optuna":
+ return
+ cfg = {**DEFAULT_CFG, **dict(study.best_params)}
+ else:
+ cfg = _cli_cfg(args)
+
+ run_training(
+ cfg,
+ base_model=args.base_model,
+ sft_adapter=sft_adapter,
+ env_url=args.env_url,
+ output_dir=output_dir,
+ max_steps=args.max_steps,
+ max_total_tokens=args.max_total_tokens,
+ max_completion_length=args.max_completion_length,
+ max_prompt_length=args.max_prompt_length,
+ push_to_hub=args.push_to_hub,
+ hub_repo=args.hub_repo,
+ )
+
+
+if __name__ == "__main__":
+ main()
diff --git a/train_grpo_lora_final.ipynb b/train_grpo_lora_final.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..5d1f937809a6d1a0b8720d844ddcc833fb20bc72
--- /dev/null
+++ b/train_grpo_lora_final.ipynb
@@ -0,0 +1,16195 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "c108b1a2",
+ "metadata": {
+ "id": "c108b1a2"
+ },
+ "source": [
+ "# GRPO Fine-Tuning on the AWS RL Environment\n",
+ "\n",
+ "**Curriculum-driven GRPO**, built on top of the existing SFT LoRA adapter ([`Sizzing/aws-rl-sft-qwen25coder3b-adapter`](https://huggingface.co/Sizzing/aws-rl-sft-qwen25coder3b-adapter)). The priority-queue curriculum in [`server/services/curriculum.py`](https://github.com/UdayKiranPadhy/aws-rl-env/blob/master/server/services/curriculum.py) picks each training task based on novelty, weakness, and spaced repetition; TRL's `GRPOTrainer` owns the generate/score/update loop; rewards flow back into the curriculum through the reward function to close the mastery loop.\n",
+ "\n",
+ "Hyperparameter-tuned with Optuna, logged to Weights & Biases, checkpointed for safe resume, and published to a **separate** HuggingFace Hub repo so both the SFT and GRPO adapters coexist side-by-side.\n",
+ "\n",
+ "### Architecture\n",
+ "```\n",
+ "Hosted env server (Docker, AWS_RL_ENV_POOL_SIZE=8)\n",
+ " ▲ HTTPS tunnel\n",
+ " │ Colab / Kaggle VM (T4)\n",
+ " │ └─ main python\n",
+ " │ 8-way httpx pool (rewards) ├─ Unsloth: base + SFT adapter (trainable)\n",
+ " ├──────────────────────── │\n",
+ " │ ├─ TRL GRPOTrainer\n",
+ " │ 8-way GrpoPool WS (eval) │ ├─ train_ds = stream from Curriculum\n",
+ " └──────────────────────── │ ├─ G generations / prompt\n",
+ " │ ├─ reward_fn:\n",
+ " │ │ a) score via /reset + /step\n",
+ " │ │ b) curriculum.record_result(...)\n",
+ " │ └─ group-advantage + PPO-clip on LoRA\n",
+ " ├─ Optuna (sqlite, resumable)\n",
+ " └─ push → Sizzing/aws-rl-grpo-qwen25coder3b-adapter\n",
+ "```\n",
+ "\n",
+ "### Why curriculum-driven GRPO?\n",
+ "Plain dataset iteration is agnostic to the model’s current weaknesses. The curriculum surfaces novel + weak tasks more often, spaced-repeats mastered ones, and promotes tier only when the agent demonstrates sustained competence. GRPO's group-relative advantage + the curriculum's per-task mastery signal compose: a group of G completions on a hard task yields a high-variance advantage signal exactly when it matters.\n",
+ "\n",
+ "### Headline metrics (reported in the eval cells)\n",
+ "| Axis | SFT baseline | GRPO target | Stretch |\n",
+ "|----------------------|-------------:|------------:|--------:|\n",
+ "| `env_reward_mean` | ~0.85 | ≥0.92 | ≥0.97 |\n",
+ "| `env_success_rate` | ~85% | ≥92% | ≥97% |\n",
+ "| `recovery_rate` | ~40% | ≥60% | ≥75% |\n",
+ "| `drift_repair_rate` | ~30% | ≥55% | ≥70% |\n",
+ "| `hints_per_solved` | ~0.8 | ≤0.5 | ≤0.2 |\n",
+ "| `steps_to_solve` | ~6 | ≤5 | ≤4 |"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3f7aa285",
+ "metadata": {
+ "id": "3f7aa285"
+ },
+ "source": [
+ "## 1 · Install dependencies\n",
+ "\n",
+ "Mirrors the SFT notebook's pinning strategy. Key constraints: `trl>=0.16` for `GRPOTrainer`, `transformers>=4.50,<5.0` for Unsloth compatibility (the SFT notebook ran into this too), `--force-reinstall --no-deps` on `transformers` so TRL doesn't pull an incompatible version."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "2f683e16",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "2f683e16",
+ "outputId": "cadbf031-23d4-4b43-fc9a-a59aa5dc7103"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/1.8 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m68.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25h"
+ ]
+ }
+ ],
+ "source": [
+ "%pip install -q --upgrade pip\n",
+ "%pip install -q \"unsloth\"\n",
+ "%pip install -q \"trl>=0.18.2,<=0.24.0,!=0.19.0\" \"peft\" \"accelerate\" \"datasets\" \"bitsandbytes\"\n",
+ "%pip install -q \"transformers>=4.50,<5.0\" --force-reinstall --no-deps\n",
+ "%pip install -q \"optuna\"\n",
+ "%pip install -q \"httpx\" \"websockets\" \"pyyaml\" \"python-dotenv\"\n",
+ "%pip install -q \"huggingface_hub>=0.34,<1.0\"\n",
+ "%pip install -q \"openenv-core\"\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "logging-setup-md",
+ "metadata": {
+ "id": "logging-setup-md"
+ },
+ "source": [
+ "### 1b · Logging & warning suppression\n",
+ "\n",
+ "Set up structured logging and suppress known benign warnings (PEFT config keys, notebook escape sequences, transformers do_sample advisory)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "logging-setup",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "logging-setup",
+ "outputId": "8857f297-9d17-4e62-e663-af002807003f"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:52:11 | INFO | grpo | Logging configured; benign warnings suppressed.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import logging\n",
+ "import sys\n",
+ "import warnings\n",
+ "\n",
+ "# ── Structured logging ──────────────────────────────────────────────\n",
+ "logging.basicConfig(\n",
+ " level=logging.INFO,\n",
+ " format=\"%(asctime)s | %(levelname)-7s | %(name)s | %(message)s\",\n",
+ " datefmt=\"%H:%M:%S\",\n",
+ " stream=sys.stdout,\n",
+ " force=True,\n",
+ ")\n",
+ "log = logging.getLogger(\"grpo\")\n",
+ "\n",
+ "# ── Suppress known benign warnings ──────────────────────────────────\n",
+ "# PEFT adapter was saved with a newer version; extra keys are safely ignored.\n",
+ "warnings.filterwarnings(\n",
+ " \"ignore\",\n",
+ " message=r\"Unexpected keyword arguments.*for class LoraConfig\",\n",
+ " category=UserWarning,\n",
+ ")\n",
+ "# The notebook package itself has an invalid escape sequence in its banner.\n",
+ "warnings.filterwarnings(\n",
+ " \"ignore\",\n",
+ " message=r\"invalid escape sequence\",\n",
+ " category=SyntaxWarning,\n",
+ ")\n",
+ "# Transformers logs \"do_sample is False but temperature is set\" when we\n",
+ "# intentionally use greedy decoding with temperature=1.0 (the default).\n",
+ "warnings.filterwarnings(\n",
+ " \"ignore\",\n",
+ " message=r\".*`do_sample` is set to `False`.*`temperature`.*\",\n",
+ " category=UserWarning,\n",
+ ")\n",
+ "\n",
+ "log.info(\"Logging configured; benign warnings suppressed.\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ce043e2c",
+ "metadata": {
+ "id": "ce043e2c"
+ },
+ "source": [
+ "## 2 · Clone the AWS RL env repo\n",
+ "\n",
+ "We need the `client.AwsRlEnv` class, `models.py` pydantic types, `scripts/grpo_pool.py`, the curriculum loader, and the task YAMLs — these power the multi-step evaluator. We do **not** install or run any env server locally; the env is hosted elsewhere."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "2c0842fb",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "2c0842fb",
+ "outputId": "5ecf6f16-713b-4d20-bfeb-1450798b90c9"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:52:16 | INFO | grpo | Repo at /content/aws-rl-env — ready. sys.path[0]=/content/aws-rl-env\n"
+ ]
+ }
+ ],
+ "source": [
+ "from __future__ import annotations\n",
+ "import os, sys, subprocess, shutil\n",
+ "from pathlib import Path\n",
+ "\n",
+ "REPO_URL = \"https://github.com/UdayKiranPadhy/aws-rl-env.git\"\n",
+ "\n",
+ "# Detect host in priority order: Kaggle first (it often has /content too),\n",
+ "# then Colab, then fall back to CWD for local runs.\n",
+ "if Path(\"/kaggle/working\").exists():\n",
+ " REPO_DIR = Path(\"/kaggle/working/aws-rl-env\")\n",
+ "elif Path(\"/content\").exists():\n",
+ " REPO_DIR = Path(\"/content/aws-rl-env\")\n",
+ "else:\n",
+ " REPO_DIR = (Path.cwd() / \"aws-rl-env\").resolve()\n",
+ "\n",
+ "if not REPO_DIR.exists():\n",
+ " subprocess.run([\"git\", \"clone\", \"--depth\", \"1\", REPO_URL, str(REPO_DIR)], check=True)\n",
+ "\n",
+ "# If a prior partial clone left no models.py, redo it.\n",
+ "if not (REPO_DIR / \"models.py\").exists():\n",
+ " shutil.rmtree(REPO_DIR, ignore_errors=True)\n",
+ " subprocess.run([\"git\", \"clone\", \"--depth\", \"1\", REPO_URL, str(REPO_DIR)], check=True)\n",
+ "\n",
+ "if str(REPO_DIR) not in sys.path:\n",
+ " sys.path.insert(0, str(REPO_DIR))\n",
+ "\n",
+ "assert (REPO_DIR / \"models.py\").exists(), f\"models.py missing under {REPO_DIR}\"\n",
+ "log.info(\"Repo at %s — ready. sys.path[0]=%s\", REPO_DIR, sys.path[0])\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "253e6837",
+ "metadata": {
+ "id": "253e6837"
+ },
+ "source": [
+ "## 3 · Runtime detection\n",
+ "\n",
+ "Matches the SFT notebook so we pick `fp16` on T4 (bf16 unsupported) and `bf16` on A100/H100. Also sets the PyTorch allocator env var that cut OOMs on long Unsloth runs."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "cf5059b1",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "cf5059b1",
+ "outputId": "a5d04464-de76-4ccd-ef8b-02ac996bb034"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:52:29 | INFO | grpo | GPU: Tesla T4 | fp16=True bf16=False | OUT_DIR=/content/out\n"
+ ]
+ }
+ ],
+ "source": [
+ "from dataclasses import dataclass\n",
+ "import torch\n",
+ "\n",
+ "IS_COLAB = True\n",
+ "IS_KAGGLE = False\n",
+ "\n",
+ "OUT_DIR = Path(\"/content/out\") if IS_COLAB else Path(\"/kaggle/working\") if IS_KAGGLE else Path.cwd() / \"out\"\n",
+ "OUT_DIR.mkdir(parents=True, exist_ok=True)\n",
+ "\n",
+ "os.environ.setdefault(\"PYTORCH_ALLOC_CONF\", \"expandable_segments:True\")\n",
+ "\n",
+ "\n",
+ "@dataclass(frozen=True)\n",
+ "class Runtime:\n",
+ " gpu_name: str\n",
+ " use_fp16: bool\n",
+ " use_bf16: bool\n",
+ "\n",
+ "\n",
+ "def detect_runtime() -> Runtime:\n",
+ " if not torch.cuda.is_available():\n",
+ " raise RuntimeError(\"No GPU detected. This notebook needs CUDA (T4/A100/H100).\")\n",
+ " name = torch.cuda.get_device_name(0)\n",
+ " is_t4 = \"T4\" in name\n",
+ " return Runtime(gpu_name=name, use_fp16=is_t4, use_bf16=not is_t4)\n",
+ "\n",
+ "\n",
+ "RT = detect_runtime()\n",
+ "log.info(\"GPU: %s | fp16=%s bf16=%s | OUT_DIR=%s\", RT.gpu_name, RT.use_fp16, RT.use_bf16, OUT_DIR)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "93c46602",
+ "metadata": {
+ "id": "93c46602"
+ },
+ "source": [
+ "## 4 · Training configuration\n",
+ "\n",
+ "One frozen `TrainingConfig` dataclass holds every tunable hyperparameter. Optuna hands trials a mutated copy of this same dataclass, so the trial path and the final-run path go through identical code.\n",
+ "\n",
+ "Separate `ModelSpec` and `PathsSpec` keep non-tunable identifiers out of the search space."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "59787b12",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "59787b12",
+ "outputId": "eded1e8f-7933-4625-fdde-fa3352cf8b0d"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:52:32 | INFO | grpo | ModelSpec: ModelSpec(base_model='unsloth/Qwen2.5-Coder-3B-Instruct-bnb-4bit', sft_adapter='Sizzing/aws-rl-sft-qwen25coder3b-adapter', grpo_adapter='Sizzing/aws-rl-grpo-qwen25coder3b-adapter', dataset_repo='Sizzing/aws-rl-sft', max_seq_length=3072)\n",
+ "14:52:32 | INFO | grpo | TrainingConfig defaults: TrainingConfig(learning_rate=5e-06, beta=0.04, num_generations=8, temperature=0.9, top_p=0.95, max_prompt_length=512, max_completion_length=768, per_device_train_batch_size=2, gradient_accumulation_steps=8, num_train_epochs=1, save_steps=25, save_total_limit=3, eval_steps=50, warmup_ratio=0.05, seed=42)\n",
+ "14:52:32 | INFO | grpo | PipelineConfig: PipelineConfig(env_pool_size=8, n_trials=4, trial_max_steps=10, final_max_steps=35, val_subset_size=20, eval_reserve_cap=100, optuna_tier_counts=(('warmup', 2), ('beginner', 2), ('intermediate', 2), ('advanced', 3), ('expert', 3)))\n"
+ ]
+ }
+ ],
+ "source": [
+ "from dataclasses import replace\n",
+ "\n",
+ "\n",
+ "@dataclass(frozen=True)\n",
+ "class ModelSpec:\n",
+ " base_model: str = \"unsloth/Qwen2.5-Coder-3B-Instruct-bnb-4bit\"\n",
+ " sft_adapter: str = \"Sizzing/aws-rl-sft-qwen25coder3b-adapter\"\n",
+ " grpo_adapter: str = \"Sizzing/aws-rl-grpo-qwen25coder3b-adapter\" # NEW repo — SFT repo untouched\n",
+ " dataset_repo: str = \"Sizzing/aws-rl-sft\"\n",
+ " max_seq_length: int = 3072\n",
+ "\n",
+ "\n",
+ "@dataclass(frozen=True)\n",
+ "class TrainingConfig:\n",
+ " # GRPO knobs (Optuna-tunable)\n",
+ " learning_rate: float = 5e-6 # AdamW learning rate;\n",
+ " beta: float = 0.04 # KL coef vs. reference (frozen SFT adapter)\n",
+ " num_generations: int = 8 # G in GRPO\n",
+ " temperature: float = 0.9 # Sampling temp during generation\n",
+ " top_p: float = 0.95 # Nucleus sampling cutoff\n",
+ " max_prompt_length: int = 512 # Hard truncate on the prompt side\n",
+ " max_completion_length: int = 768 # Max tokens on the completion side;\n",
+ " per_device_train_batch_size: int = 2 # Batch per GPU\n",
+ " gradient_accumulation_steps: int = 8 # \tEffective batch = pdtbs × grad_accum (= 16 now)\n",
+ " num_train_epochs: int = 1 # ignored for IterableDataset; max_steps drives termination\n",
+ " save_steps: int = 25 # How often the final run writes a checkpoint-N\n",
+ " save_total_limit: int = 3 # Max number of checkpoints to keep; older ones get deleted\n",
+ " eval_steps: int = 50 # How often to run evaluation\n",
+ " warmup_ratio: float = 0.05\n",
+ " seed: int = 42 # Seeds GRPOConfig + Optuna's TPESampler\n",
+ "\n",
+ "\n",
+ "@dataclass(frozen=True)\n",
+ "class PipelineConfig:\n",
+ " env_pool_size: int = 8\n",
+ " n_trials: int = 4 # Optuna trials for hyperparameter search; each trial trains a GRPO agent from the same SFT starting point, but with different hyperparameters.\n",
+ " trial_max_steps: int = 10 # max_steps for each Optuna trial; keeps trial runtime manageable and encourages faster feedback on hyperparameter choices. The final evaluation after all trials will use a longer max_steps to allow the best trial more time to shine.\n",
+ " final_max_steps: int = 35 # GRPO steps for the post-Optuna final run\n",
+ " val_subset_size: int = 20\n",
+ " eval_reserve_cap: int = 100\n",
+ " # 12-task pool used for both Optuna trial training and trial scoring.\n",
+ " # Tuple-of-tuples keeps the dataclass frozen/hashable.\n",
+ " optuna_tier_counts: tuple = (\n",
+ " (\"warmup\", 2), (\"beginner\", 2), (\"intermediate\", 2),\n",
+ " (\"advanced\", 3), (\"expert\", 3),\n",
+ " )\n",
+ "\n",
+ "\n",
+ "MODEL = ModelSpec()\n",
+ "TRAIN = TrainingConfig()\n",
+ "PIPE = PipelineConfig()\n",
+ "\n",
+ "log.info(\"ModelSpec: %s\", MODEL)\n",
+ "log.info(\"TrainingConfig defaults: %s\", TRAIN)\n",
+ "log.info(\"PipelineConfig: %s\", PIPE)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5dcff29c",
+ "metadata": {
+ "id": "5dcff29c"
+ },
+ "source": [
+ "## 5 · Authenticate: HF Hub + env URL"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "e58946d9",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "e58946d9",
+ "outputId": "eb9d4b8b-05e3-4206-e14e-f170ed809a17"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "No files have been modified since last commit. Skipping to prevent empty commit.\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:52:38 | WARNING | huggingface_hub.hf_api | No files have been modified since last commit. Skipping to prevent empty commit.\n",
+ "14:52:38 | INFO | grpo | All secrets loaded; HF write access to Sizzing/aws-rl-grpo-qwen25coder3b-adapter verified.\n"
+ ]
+ }
+ ],
+ "source": [
+ "def _load_secret(name: str) -> str:\n",
+ " \"\"\"Read a secret from Colab userdata, Kaggle UserSecrets, or the env.\"\"\"\n",
+ " if IS_COLAB:\n",
+ " from google.colab import userdata\n",
+ " try: return userdata.get(name)\n",
+ " except Exception: pass\n",
+ " if IS_KAGGLE:\n",
+ " from kaggle_secrets import UserSecretsClient\n",
+ " try: return UserSecretsClient().get_secret(name)\n",
+ " except Exception: pass\n",
+ " val = os.environ.get(name)\n",
+ " if not val:\n",
+ " raise RuntimeError(f\"Secret {name!r} is missing. Set it in Colab/Kaggle secrets or as an env var.\")\n",
+ " return val\n",
+ "\n",
+ "\n",
+ "HF_TOKEN = _load_secret(\"HF_TOKEN\")\n",
+ "ENV_BASE_URL = _load_secret(\"AWS_RL_ENV_BASE_URL\").rstrip(\"/\")\n",
+ "\n",
+ "from huggingface_hub import login as hf_login, HfApi\n",
+ "\n",
+ "hf_login(token=HF_TOKEN, add_to_git_credential=False)\n",
+ "\n",
+ "\n",
+ "def verify_hub_write_scope(repo_id: str) -> None:\n",
+ " \"\"\"Ensure the HF token can create repos under the target org before training.\n",
+ "\n",
+ " Without this, we'd discover permission failures *after* a multi-hour run.\n",
+ " \"\"\"\n",
+ " api = HfApi(token=HF_TOKEN)\n",
+ " api.create_repo(repo_id=repo_id, private=True, exist_ok=True, repo_type=\"model\")\n",
+ " probe = OUT_DIR / \".hub_write_probe.txt\"\n",
+ " probe.write_text(\"ok\")\n",
+ " api.upload_file(path_or_fileobj=str(probe), path_in_repo=\".hub_write_probe.txt\",\n",
+ " repo_id=repo_id, commit_message=\"probe: verify write scope\")\n",
+ " probe.unlink()\n",
+ "\n",
+ "\n",
+ "verify_hub_write_scope(MODEL.grpo_adapter)\n",
+ "log.info(\"All secrets loaded; HF write access to %s verified.\", MODEL.grpo_adapter)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a6a47eb8",
+ "metadata": {
+ "id": "a6a47eb8"
+ },
+ "source": [
+ "## 6 · Connect to the hosted env + health check\n",
+ "\n",
+ "The env server runs **outside** this VM. We only assert reachability and that its internal pool has 8 slots (required for parallel rollouts). If either fails, we stop **before** loading the model."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "e30369da",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "e30369da",
+ "outputId": "b9a5cfa8-eaee-4f64-c157-cd2b2b241ff5"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:52:44 | INFO | httpx | HTTP Request: GET https://sizzing-aws-rl-env.hf.space/schema \"HTTP/1.1 200 OK\"\n",
+ "14:52:44 | INFO | grpo | Env reachable. Action schema keys: ['action', 'observation', 'state']\n",
+ "14:52:44 | INFO | grpo | POOL_SIZE=8 assumed — verified by GrpoPool connection below.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import httpx\n",
+ "\n",
+ "\n",
+ "def probe_env_http(base_url: str) -> dict:\n",
+ " \"\"\"Cheap reachability check: GET /schema. Raises on HTTP error.\n",
+ "\n",
+ " Does NOT try to validate pool size from /state — AwsRlState doesn't\n",
+ " expose it. Pool capacity is verified later via a real GrpoPool\n",
+ " connection attempt (§6b) which is the only honest way to check.\n",
+ " \"\"\"\n",
+ " with httpx.Client(base_url=base_url, timeout=10.0) as c:\n",
+ " schema = c.get(\"/schema\").raise_for_status().json()\n",
+ " return {\"schema\": schema}\n",
+ "\n",
+ "\n",
+ "probe = probe_env_http(ENV_BASE_URL)\n",
+ "log.info(\"Env reachable. Action schema keys: %s\", list(probe['schema'].keys()))\n",
+ "log.info(\"POOL_SIZE=%d assumed — verified by GrpoPool connection below.\", PIPE.env_pool_size)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b35c3272",
+ "metadata": {
+ "id": "b35c3272"
+ },
+ "source": [
+ "## 7 · Curriculum-driven prompt stream + fixed val / reserve sets\n",
+ "\n",
+ "Instead of feeding a static dataset, we stream prompts from the repo's [`Curriculum`](https://github.com/UdayKiranPadhy/aws-rl-env/blob/master/server/services/curriculum.py) — the same priority-queue curriculum the env already implements:\n",
+ "\n",
+ "- **novelty bonus** for untried tasks (+100)\n",
+ "- **weakness weighting** `(1 − recent_success_rate) × 50` per task\n",
+ "- **spaced repetition** on graduated tasks at 3→66→12→24→48 episode intervals\n",
+ "- **recency penalty** to avoid drilling the same task back-to-back\n",
+ "- **tier promotion** with fast-track when success rate crosses threshold\n",
+ "\n",
+ "TRL's `GRPOTrainer` accepts a `datasets.IterableDataset`; we wrap `curriculum.next_task()` in a generator and feed it in. The feedback loop closes inside the reward function (next cell): after scoring a group of G completions for a task, it calls `curriculum.record_result(task, achieved, mean_reward)`, which updates mastery, promotes tiers, and re-ranks the priority queue for the next step.\n",
+ "\n",
+ "`VAL_DS` (fixed 20-row subset from the HF dataset's `validation` split) and `RESERVE_DS` (up to 100 rows from `reserve`) stay fixed for comparable before/after evaluation."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "0d3fe743",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 647,
+ "referenced_widgets": [
+ "17e4a25f8b0a4293b192beda65e888ab",
+ "312d279277ea415ba2940bc879e72e5c",
+ "8f3f631215e146528c4fee4c5cb4a453",
+ "fa9d568f23674c6e9740955ce8d0dda0",
+ "3a9e6d83ca3a48fcb61fbb85df7dfbc2",
+ "b6f758d29ec74a49b851eabb537efbab",
+ "a38fb4652a5e4b52b9704ba7dc0b7dc5",
+ "1b41774ddcdb475d9215076cc31d2857",
+ "693f88f916a6449ca4e6a931fad75dc7",
+ "780970fdf6434c24b97e97ae738eff4b",
+ "5c6f9b2415754d9d956f22ff9eb55d79",
+ "96e4ee7ccd294abc95cdda282ff68217",
+ "e2fc8e26f04d40f59973c2e9fce8821f",
+ "a1ee88211ba14bdca07d9dc4862e3780",
+ "c7195e122f8e49508fa9a8c766e43085",
+ "27584397f5d14462bd9bc3932083f044",
+ "a864b9a6bcb44885b956cd4b59ae1f74",
+ "d6eae3b5673e4f6197f2fb48601d0661",
+ "3bad0119c77242e98b525b075996fbd8",
+ "b04a5d15e84f4cd28130f233e556fd12",
+ "880d55cbe923497f95f7575b5e85cfad",
+ "aa5b6888b7f84df190935eb5efaf49d9",
+ "71e32bfc45574278b0f7f1956cf268bd",
+ "3380c456828945d9ac666617d06740fc",
+ "404dbe67ed784f069143c973dc845e40",
+ "4ce611000a534d948d455f92ecee576b",
+ "8c96ae914728462fbd9b32fd08cd8187",
+ "9040b30667794322bff110267b8ed9cd",
+ "b06a5846c2c04291a99d9627c47bd327",
+ "291744bd1f894ca8945f9be975b6e624",
+ "a92f2302bd6a4ac5a483b4b21ed157eb",
+ "d95309efa2914257be7eeb1e7ece3fde",
+ "2efa16125e694584b6a5438f5f925009",
+ "5454a54bf5af4336b3c904f563973fd6",
+ "6d768d2eff3e463cb8d9f51a33a7ca98",
+ "de2681feaa2e4b52972a37855d2ee8e5",
+ "d9e8fd4643044efabc576be5be5c4694",
+ "177a3f0d07c5494abc3d25acc492f24f",
+ "fd24a9a430c8476f8e70f50590541b71",
+ "321146c007014d4cacc70d8653036451",
+ "71a8a6f25a9742b19097b59e3d34cbf4",
+ "d54e0916ad0e43ceb348fcc06af24717",
+ "cdb7fb82b1f34c728b08706905c0b411",
+ "d0adec364aca47858042a8877918d321",
+ "a04ffa2985424737825292f54a43a9d4",
+ "ed3a163a822a461f87deb14ec2d577ed",
+ "da313ab92bf3493986ffcf338da00bd8",
+ "19d9a45f1ba642db99e239e0a8fd5bbf",
+ "bde264b24d2b4d52bba0980ebc4bece6",
+ "5e499677de5043df92f3b5653f81d59b",
+ "ca41efa2e37c41789257075279609832",
+ "79ccc0b15d4f4668801e93f0099665f2",
+ "c83934fee9864d9c914153a678593a84",
+ "7f192f04e4e44f0fa7144d7f1fa236ec",
+ "4d0b57cf6a1f4509955c32781dad9afd",
+ "f97157719bdf40a88e1730674f621bd9",
+ "6a381c46cd6d48a1aae6c99ab20b21e4",
+ "7c937e894bd841d489ec031e8be9fe2e",
+ "d0bd273d343b4963a3fcb3c0a67ff497",
+ "6aa5eabdb2d54130b03cfff6d3fcff9a",
+ "e25dff488fd749b4b35c06704bc51c09",
+ "0771f43fb5a14d38b4f6f502a64079d9",
+ "e2f519926c564da8bbca7de0b68abd0e",
+ "c81aa39a8c9441049b863b1257c1a5e8",
+ "0546ae7051234b8db6e970a1d3cff61b",
+ "8e446f7eafe6440c8d727e6956409446",
+ "20914c591fc74055bcca0eb8ac4e5926",
+ "37d9d6c95bba42e8a096cf5275a480fd",
+ "047c53a5b7e74be68acd1045b2e4e283",
+ "1fb215d781c545e1b44459499c38ad69",
+ "59d71306ba244bfd9f1ec700214964f8",
+ "f25fe777177f4969859c68717c8e3e48",
+ "8b8345d415254c5f9e1e9fc2d40389d0",
+ "a5f5680a1d76403799529cd0967ba535",
+ "dead8a53066c477a9782b8c7338ac848",
+ "0c88e7079c654e79b855aa29078a36bc",
+ "e753ece3c0c8413c910e36a96ba77b98",
+ "90147fec0d48464bbd76deb157226203",
+ "97dccf77527e4494818ed252eb9e96b6",
+ "4e7c82ed075a46fa8b9e2a57fea59fc0",
+ "a58cb1b5661a410fa6abe2b267579295",
+ "3dbb2e81f2f4447382e7355d0bd80cce",
+ "b019ce4903714cb3b5a1ffd059d18c6d",
+ "0e878c2d72104893a978a30d7ac53f1e",
+ "3c5334f626ca4cb7b54c7ed19ae9da7b",
+ "469bcc09c4224d7fb3e7c1d62e87699d",
+ "0cfad13926b34df0841d1d163334bad3",
+ "1ad2a4de697e4e3e905087ed94b921ba",
+ "a3e8d1e2cd794ec290dc71820af6f24f",
+ "67277d4907ac46b287640fff3a2eee62",
+ "5b1488d801d64a10bbdc28a9c011d5c3",
+ "cd3801cce52f41b38ecde5f781bea2b9",
+ "e503d1497c2b4af2b52b04113794063d",
+ "ac6e615ab24c4c80b47d60f31fa09430",
+ "f8d419e8c75649eba3f4a148da3016d3",
+ "792f08a4d86f4c849b429487eb286d80",
+ "2a194e7be5ed4e00b7adabce5f93e810",
+ "c66c7b3404ca4beb813036e806757136",
+ "381d7a2e92de47d5878e71fc2f644024",
+ "546dfd22f8c64319aecbcd01ac858cf6",
+ "c5c6b045ea13420393b303f5c7547ee2",
+ "f44955735e8b451f90b271d6d0b1c405",
+ "229a210fcb3942458bba7605de6c6b02",
+ "11ae5fffb510410e97093de938669e50",
+ "fb8b4b4e475a4783986bf9c6a54ce21a",
+ "4495fed8673a414ab8f9e5a2a8d355b2",
+ "f6254de7f5c34fb0abe37459c559eecd",
+ "d98452df2c144e7fa197c6bf8c7a84aa",
+ "a2566c92ce2f4c5ea41f523eaa517091",
+ "02772bbc7feb49dbb8427d4c52211b68",
+ "15044ec892644e459b2009de7a74f27d",
+ "659ca47987dc4ee4bcc9575a6f3a5d3a",
+ "06f127e6780f47cda98a37c538450249",
+ "2497ba48b5254eedbc94c0fedc50b324",
+ "7e977d8fd3f1475fac6b26ec618edf81",
+ "d521058b79b848d08dcaf3295c5b6541",
+ "ee90c4835dee4529bd4263fa89137ff9",
+ "9d37f3cc93e54609bb22c9af78552827",
+ "c3811a5a59cc457ab99516a13e7aa2f4",
+ "ebbcbcad06334b7e896371f5f0b8c8ac",
+ "65a4b5d545564dbaa0baea82817ae11f"
+ ]
+ },
+ "id": "0d3fe743",
+ "outputId": "04eddbf2-9478-49a0-d0ad-7b1695250dda"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:52:47 | INFO | numexpr.utils | NumExpr defaulting to 2 threads.\n",
+ "14:52:48 | INFO | datasets | TensorFlow version 2.19.0 available.\n",
+ "14:52:48 | INFO | datasets | JAX version 0.7.2 available.\n",
+ "14:53:02 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "14:53:02 | INFO | server.services.curriculum | Loaded 25 beginner tasks total\n",
+ "14:53:02 | INFO | server.services.curriculum | Loaded 25 intermediate tasks total\n",
+ "14:53:02 | INFO | server.services.curriculum | Loaded 25 advanced tasks total\n",
+ "14:53:03 | INFO | server.services.curriculum | Loaded 9 supplementary expert tasks from drift.yaml\n",
+ "14:53:03 | INFO | server.services.curriculum | Loaded 33 expert tasks total\n",
+ "14:53:03 | INFO | grpo | Loading dataset from Sizzing/aws-rl-sft …\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "README.md: 0.00B [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "17e4a25f8b0a4293b192beda65e888ab"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "data/train-00000-of-00001.parquet: 0%| | 0.00/1.92M [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "96e4ee7ccd294abc95cdda282ff68217"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "data/validation-00000-of-00001.parquet: 0%| | 0.00/194k [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "71e32bfc45574278b0f7f1956cf268bd"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "data/reserve-00000-of-00001.parquet: 0%| | 0.00/261k [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "5454a54bf5af4336b3c904f563973fd6"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Generating train split: 0%| | 0/1500 [00:00, ? examples/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "a04ffa2985424737825292f54a43a9d4"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Generating validation split: 0%| | 0/150 [00:00, ? examples/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "f97157719bdf40a88e1730674f621bd9"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Generating reserve split: 0%| | 0/200 [00:00, ? examples/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "20914c591fc74055bcca0eb8ac4e5926"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Filter: 0%| | 0/150 [00:00, ? examples/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "90147fec0d48464bbd76deb157226203"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Map: 0%| | 0/20 [00:00, ? examples/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "a3e8d1e2cd794ec290dc71820af6f24f"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Filter: 0%| | 0/200 [00:00, ? examples/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "546dfd22f8c64319aecbcd01ac858cf6"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Map: 0%| | 0/112 [00:00, ? examples/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "15044ec892644e459b2009de7a74f27d"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:53:13 | INFO | grpo | Optuna task pool: 12 rows by tier={'warmup': 2, 'beginner': 2, 'intermediate': 2, 'advanced': 3, 'expert': 3}\n",
+ "14:53:13 | INFO | grpo | TASK_MAP: 133 tasks across 5 tiers\n",
+ "14:53:13 | INFO | grpo | DRIFT_TASK_IDS: 9 drift tasks\n",
+ "14:53:13 | INFO | grpo | VAL_DS: 20 rows (fixed, for before/after comparison)\n",
+ "14:53:13 | INFO | grpo | RESERVE_DS: 112 rows (multi-step eval)\n",
+ "14:53:13 | INFO | grpo | OPTUNA_DS: 12 rows (used for trial training + trial val eval)\n"
+ ]
+ }
+ ],
+ "source": [
+ "from datasets import load_dataset, Dataset\n",
+ "from models import Task, TaskDifficulty\n",
+ "from server.services.curriculum import Curriculum, load_tier\n",
+ "import yaml\n",
+ "\n",
+ "\n",
+ "def build_task_map(tasks_dir: Path) -> dict[int, Task]:\n",
+ " \"\"\"Flatten every task YAML into a dict keyed by task_id.\n",
+ "\n",
+ " The reward function only has task_id to work with; this map lets it\n",
+ " recover the full Task object needed to serialise over HTTP to /reset.\n",
+ " \"\"\"\n",
+ " m: dict[int, Task] = {}\n",
+ " for tier in TaskDifficulty:\n",
+ " try:\n",
+ " for t in load_tier(tier, tasks_dir):\n",
+ " m[int(t.task_id)] = t\n",
+ " except FileNotFoundError:\n",
+ " continue\n",
+ " return m\n",
+ "\n",
+ "\n",
+ "def load_drift_task_ids(tasks_dir: Path) -> set[int]:\n",
+ " \"\"\"Drift tasks live in drift.yaml and get folded into the EXPERT tier by\n",
+ " the curriculum loader. We scan the file directly so we can still identify\n",
+ " them for drift_repair_rate in multi-step eval.\n",
+ " \"\"\"\n",
+ " ids: set[int] = set()\n",
+ " drift_path = tasks_dir / \"drift.yaml\"\n",
+ " if drift_path.exists():\n",
+ " with open(drift_path) as f:\n",
+ " for entry in (yaml.safe_load(f) or []):\n",
+ " ids.add(int(entry[\"task_id\"]))\n",
+ " return ids\n",
+ "\n",
+ "\n",
+ "SYSTEM_PROMPT = (\n",
+ " \"You are an expert AWS Operations agent. You operate a simulated AWS cloud by \"\n",
+ " \"emitting one AWS CLI command per turn. The conversation may include prior \"\n",
+ " \"commands and their outputs from earlier in this episode — use them to decide \"\n",
+ " \"your next move.\\n\\n\"\n",
+ " \"First reason about your next move inside a ... block: identify \"\n",
+ " \"the AWS service, the right subcommand, required arguments, and any constraints \"\n",
+ " \"from the task. Keep the reasoning concise (a few short sentences).\\n\\n\"\n",
+ " \"After , on a NEW LINE, output EXACTLY ONE AWS CLI command starting \"\n",
+ " \"with \\\"aws \\\". The command line must contain only the command — no markdown, \"\n",
+ " \"no backticks, no quotes around it, and no trailing commentary.\"\n",
+ ")\n",
+ "\n",
+ "\n",
+ "def task_to_row(task: Task) -> dict:\n",
+ " \"\"\"Convert a Task into the (prompt, task_id, difficulty) schema the\n",
+ " curriculum-aware sampler reads. `remove_unused_columns=False` in the\n",
+ " trainer config keeps `difficulty` on the dataset; reward funcs accept\n",
+ " **kw so the extra column is harmlessly ignored there.\n",
+ " \"\"\"\n",
+ " return {\n",
+ " \"prompt\": [\n",
+ " {\"role\": \"system\", \"content\": SYSTEM_PROMPT},\n",
+ " {\"role\": \"user\", \"content\": f\"TASK: {task.description}\"},\n",
+ " ],\n",
+ " \"task_id\": int(task.task_id),\n",
+ " \"difficulty\": task.difficulty.value,\n",
+ " }\n",
+ "\n",
+ "\n",
+ "def make_curriculum_dataset(curriculum: Curriculum, n_rows: int) -> Dataset:\n",
+ " \"\"\"Pre-materialise N curriculum-picked prompts as a finite `datasets.Dataset`.\n",
+ "\n",
+ " TRL's GRPOTrainer explicitly rejects IterableDataset (see TRL issue #3213:\n",
+ " ``NotImplementedError: Iterable datasets are not yet supported``). That\n",
+ " kills the original on-demand `curriculum.next_task()` streaming design —\n",
+ " the trainer must see a Dataset with a known `__len__`.\n",
+ "\n",
+ " Compromise: sample `n_rows` prompts up front. The curriculum's novelty +\n",
+ " weakness + recency heuristics still apply *across the draw* (every\n",
+ " `next_task()` pops the current top-of-queue and ages neighbouring tasks\n",
+ " via recency), so we get a sensibly ordered warm-start sample — not\n",
+ " uniform-random. What we lose is live re-ranking between steps: mastery\n",
+ " updates made by the reward function during training don't feed back\n",
+ " into selection until a fresh dataset is built. `curriculum.record_result`\n",
+ " still runs inside the reward function so mastery metrics remain accurate\n",
+ " for end-of-run stats.\n",
+ "\n",
+ " Size `n_rows` to `max_steps * per_device_train_batch_size *\n",
+ " gradient_accumulation_steps`, plus a buffer so `num_train_epochs=1`\n",
+ " never exhausts the dataset before `max_steps` terminates training.\n",
+ " \"\"\"\n",
+ " return Dataset.from_list(\n",
+ " [task_to_row(curriculum.next_task()) for _ in range(n_rows)]\n",
+ " )\n",
+ "\n",
+ "\n",
+ "def make_full_curriculum_dataset(tasks_dir: Path) -> Dataset:\n",
+ " \"\"\"Build a *superset* dataset spanning every difficulty tier.\n",
+ "\n",
+ " This replaces `make_curriculum_dataset` for curriculum-driven training:\n",
+ " instead of drawing N prompts up front (which freezes the training data\n",
+ " to whatever tier the curriculum happened to start in), we materialise\n",
+ " EVERY task with its `difficulty` tag and let `CurriculumTierSampler`\n",
+ " dynamically pick indices from the curriculum's current tier at\n",
+ " iteration time. Tier promotion inside the reward callback then\n",
+ " immediately affects which prompts the next batch pulls.\n",
+ " \"\"\"\n",
+ " rows: list[dict] = []\n",
+ " for tier in TaskDifficulty:\n",
+ " for task in load_tier(tier, tasks_dir):\n",
+ " rows.append(task_to_row(task))\n",
+ " if not rows:\n",
+ " raise RuntimeError(f\"No tasks found under {tasks_dir}\")\n",
+ " ds = Dataset.from_list(rows)\n",
+ " log.info(\n",
+ " \"Full curriculum dataset: %d rows across tiers %s\",\n",
+ " len(ds),\n",
+ " sorted({r[\"difficulty\"] for r in rows}),\n",
+ " )\n",
+ " return ds\n",
+ "\n",
+ "\n",
+ "def make_optuna_task_dataset(task_map: dict[int, Task],\n",
+ " tier_counts: tuple,\n",
+ " seed: int = 42) -> Dataset:\n",
+ " \"\"\"Deterministic small task pool for Optuna trials.\n",
+ "\n",
+ " Picks N tasks per tier from `task_map` (sorted by task_id then shuffled\n",
+ " with a fixed seed so the pool is identical across re-runs). Returns a\n",
+ " Dataset with the same row schema as `make_full_curriculum_dataset`.\n",
+ " Used both as trial train_ds (curriculum sampler cycles within tier\n",
+ " pools) and as the single-step eval set for `trial_objective`.\n",
+ " \"\"\"\n",
+ " import random\n",
+ " rng = random.Random(seed)\n",
+ " rows: list[dict] = []\n",
+ " for tier_name, n in tier_counts:\n",
+ " pool = sorted(\n",
+ " (t for t in task_map.values() if t.difficulty.value == tier_name),\n",
+ " key=lambda t: int(t.task_id),\n",
+ " )\n",
+ " rng.shuffle(pool)\n",
+ " for t in pool[:n]:\n",
+ " rows.append(task_to_row(t))\n",
+ " if not rows:\n",
+ " raise RuntimeError(\"Optuna pool came out empty — check tier_counts\")\n",
+ " ds = Dataset.from_list(rows)\n",
+ " log.info(\"Optuna task pool: %d rows by tier=%s\",\n",
+ " len(ds), {k: n for k, n in tier_counts})\n",
+ " return ds\n",
+ "\n",
+ "\n",
+ "def _load_raw_dataset(dataset_repo: str) -> dict:\n",
+ " \"\"\"Load the HF dataset once; cached for reuse by val + reserve builders.\"\"\"\n",
+ " log.info(\"Loading dataset from %s …\", dataset_repo)\n",
+ " return load_dataset(dataset_repo, token=HF_TOKEN)\n",
+ "\n",
+ "\n",
+ "_RAW_DS_CACHE: dict = {}\n",
+ "\n",
+ "\n",
+ "def _get_raw(dataset_repo: str):\n",
+ " if dataset_repo not in _RAW_DS_CACHE:\n",
+ " _RAW_DS_CACHE[dataset_repo] = _load_raw_dataset(dataset_repo)\n",
+ " return _RAW_DS_CACHE[dataset_repo]\n",
+ "\n",
+ "\n",
+ "def build_val_dataset(dataset_repo: str, task_map: dict[int, Task],\n",
+ " val_size: int, seed: int = 42) -> Dataset:\n",
+ " \"\"\"Fixed validation subset for comparable before/after eval.\"\"\"\n",
+ " raw = _get_raw(dataset_repo)\n",
+ " val_single = raw[\"validation\"].filter(\n",
+ " lambda r: r[\"step_idx\"] == 0 and int(r[\"task_id\"]) in task_map\n",
+ " )\n",
+ " val = val_single.shuffle(seed=seed).select(\n",
+ " range(min(val_size, len(val_single)))\n",
+ " )\n",
+ " return val.map(\n",
+ " lambda r: {\"prompt\": r[\"messages\"][:2], \"task_id\": int(r[\"task_id\"])},\n",
+ " remove_columns=[c for c in val.column_names if c not in (\"prompt\", \"task_id\")],\n",
+ " )\n",
+ "\n",
+ "\n",
+ "def build_reserve_dataset(dataset_repo: str,\n",
+ " task_map: dict[int, Task]) -> Dataset | None:\n",
+ " \"\"\"Reserve split for the multi-step eval.\"\"\"\n",
+ " raw = _get_raw(dataset_repo)\n",
+ " if \"reserve\" not in raw:\n",
+ " return None\n",
+ " reserve_single = raw[\"reserve\"].filter(\n",
+ " lambda r: r[\"step_idx\"] == 0 and int(r[\"task_id\"]) in task_map\n",
+ " )\n",
+ " return reserve_single.map(\n",
+ " lambda r: {\"prompt\": r[\"messages\"][:2], \"task_id\": int(r[\"task_id\"])},\n",
+ " remove_columns=[c for c in reserve_single.column_names\n",
+ " if c not in (\"prompt\", \"task_id\")],\n",
+ " )\n",
+ "\n",
+ "\n",
+ "_tasks_dir = REPO_DIR / \"server\" / \"services\" / \"tasks\"\n",
+ "TASK_MAP = build_task_map(_tasks_dir)\n",
+ "DRIFT_TASK_IDS = load_drift_task_ids(_tasks_dir)\n",
+ "VAL_DS = build_val_dataset(MODEL.dataset_repo, TASK_MAP,\n",
+ " PIPE.val_subset_size, TRAIN.seed)\n",
+ "RESERVE_DS = build_reserve_dataset(MODEL.dataset_repo, TASK_MAP)\n",
+ "OPTUNA_DS = make_optuna_task_dataset(TASK_MAP, PIPE.optuna_tier_counts, TRAIN.seed)\n",
+ "\n",
+ "log.info(\"TASK_MAP: %d tasks across %d tiers\", len(TASK_MAP), len({t.difficulty for t in TASK_MAP.values()}))\n",
+ "log.info(\"DRIFT_TASK_IDS: %d drift tasks\", len(DRIFT_TASK_IDS))\n",
+ "log.info(\"VAL_DS: %d rows (fixed, for before/after comparison)\", len(VAL_DS))\n",
+ "log.info(\"RESERVE_DS: %d rows (multi-step eval)\", len(RESERVE_DS) if RESERVE_DS else 0)\n",
+ "log.info(\"OPTUNA_DS: %d rows (used for trial training + trial val eval)\", len(OPTUNA_DS))\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ebc9f27e",
+ "metadata": {
+ "id": "ebc9f27e"
+ },
+ "source": [
+ "## 8 · Reward functions + curriculum feedback\n",
+ "\n",
+ "Three reward functions passed to `GRPOTrainer.reward_funcs`:\n",
+ "\n",
+ "| Reward | Weight | Signal |\n",
+ "|------------------|-------:|------------------------------------------------------------|\n",
+ "| `env_reward` | 1.0 | Real env reward from `/reset` + `/step` against the task |\n",
+ "| `format_reward` | 0.15 | 1.0 if completion starts with `aws `, else 0.0 |\n",
+ "| `length_reward` | 0.05 | Soft length prior: 1.0 ≤120 chars, decays to 0.0 by 400 |\n",
+ "\n",
+ "`env_reward` also closes the curriculum loop. TRL emits the batch as `batch_size × num_generations` flattened completions with `task_id` repeated G times per prompt. We group by task_id, and for each group call `curriculum.record_result(task, achieved=any(r≥1.0), reward=mean)`. That one line is the bridge: TRL owns iteration, the curriculum owns task selection, and the reward function owns the feedback edge. No custom training loop; all the quality-of-life of TRL (checkpoint, resume, Optuna) is preserved.\n",
+ "\n",
+ "Thread safety: env HTTP calls run on the pool threads, but reward aggregation + `record_result` both happen on the main thread after the pool join, so no locking is needed.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "Locjvlb14umT",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "Locjvlb14umT",
+ "outputId": "e9ed9e06-45f1-493b-a2be-ef1bc4302c6e"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:53:16 | INFO | grpo | Reward smoke test on task 0: [1.0, 1.0]\n",
+ "14:53:16 | INFO | grpo | Env counters: {'success': 2, 'timeout': 0, 'conn_err': 0, 'reconnect': 0, 'last_error': None}\n"
+ ]
+ }
+ ],
+ "source": [
+ "import asyncio\n",
+ "import re\n",
+ "import threading\n",
+ "import traceback\n",
+ "from collections import defaultdict\n",
+ "from typing import Callable, Optional\n",
+ "\n",
+ "from client import AwsRlEnv\n",
+ "from models import AwsRlAction\n",
+ "from websockets.exceptions import ConnectionClosed\n",
+ "\n",
+ "\n",
+ "_THINK_BLOCK = re.compile(r\"]*>.*?\", re.DOTALL | re.IGNORECASE)\n",
+ "_OPEN_THINK = re.compile(r\"]*>.*\", re.DOTALL | re.IGNORECASE)\n",
+ "\n",
+ "\n",
+ "def extract_aws_command(raw: str) -> str:\n",
+ " # Drop any balanced ... spans first.\n",
+ " cleaned = _THINK_BLOCK.sub(\"\", raw)\n",
+ " # If a is still open (no matching ), everything after\n",
+ " # it is reasoning-in-progress, not a command — cut it.\n",
+ " cleaned = _OPEN_THINK.sub(\"\", cleaned)\n",
+ " for line in cleaned.splitlines():\n",
+ " line = line.strip().strip(\"`\").strip()\n",
+ " if line.startswith(\"aws \"):\n",
+ " return line\n",
+ " return \"aws help\"\n",
+ "\n",
+ "\n",
+ "class EnvRewardClient:\n",
+ " \"\"\"Persistent-WebSocket reward client against a pooled env server.\n",
+ "\n",
+ " Why WebSocket and not HTTP /reset + /step: under `AWS_RL_ENV_POOL_SIZE>1`\n",
+ " the server's HTTP path uses an env *factory* — every request builds a\n",
+ " fresh `AwsRlEnvironment` from the pool factory, so `/step` on request 2\n",
+ " lands on a different env than `/reset` on request 1 and trips\n",
+ " ``assert self._episode is not None, \"Call reset() before step()\"``.\n",
+ " Only WebSocket sessions hold a MiniStack slot across calls.\n",
+ "\n",
+ " Design:\n",
+ " - Dedicated background thread owns an asyncio loop.\n",
+ " - On startup, N AwsRlEnv WebSocket sessions connect in parallel and\n",
+ " sit in an asyncio.Queue acting as a free-list.\n",
+ " - score_batch() is synchronous (TRL calls reward funcs sync): it\n",
+ " submits one async task per (task, command) pair to the loop via\n",
+ " run_coroutine_threadsafe, each task acquires a free session from\n",
+ " the queue, does reset+step, returns the env to the queue.\n",
+ " - Reconnect-on-failure: Cloudflare tunnels can idle-close WS\n",
+ " sessions, but the client keeps a reference to the (now-closed)\n",
+ " socket so OpenEnv's _ensure_connected() is a no-op. We catch\n",
+ " ConnectionClosed explicitly, call disconnect(), reconnect, and\n",
+ " retry once before giving up.\n",
+ "\n",
+ " Counters (success / timeout / conn_err / reconnect) let the trainer\n",
+ " log env health without inspecting internal state. `last_error`\n",
+ " captures the most recent exception. `verbose_errors=True` prints\n",
+ " full tracebacks per failure (noisy — only enable while debugging).\n",
+ " \"\"\"\n",
+ "\n",
+ " def __init__(\n",
+ " self,\n",
+ " base_url: str,\n",
+ " pool_size: int = 8,\n",
+ " timeout_s: float = 60.0,\n",
+ " verbose_errors: bool = False,\n",
+ " ):\n",
+ " self.base_url = base_url\n",
+ " self.pool_size = pool_size\n",
+ " self.timeout_s = timeout_s\n",
+ " self.verbose_errors = verbose_errors\n",
+ " self.success = 0\n",
+ " self.timeout = 0\n",
+ " self.conn_err = 0\n",
+ " self.reconnect = 0\n",
+ " self.last_error: Optional[str] = None\n",
+ " self._loop: Optional[asyncio.AbstractEventLoop] = None\n",
+ " self._thread: Optional[threading.Thread] = None\n",
+ " self._queue: Optional[asyncio.Queue] = None\n",
+ " self._envs: list = []\n",
+ " self._ready = threading.Event()\n",
+ " self._setup_error: Optional[BaseException] = None\n",
+ " self._start()\n",
+ "\n",
+ " def _start(self) -> None:\n",
+ " def run():\n",
+ " loop = asyncio.new_event_loop()\n",
+ " self._loop = loop\n",
+ " asyncio.set_event_loop(loop)\n",
+ " try:\n",
+ " loop.run_until_complete(self._setup())\n",
+ " except BaseException as e:\n",
+ " self._setup_error = e\n",
+ " self._ready.set()\n",
+ " return\n",
+ " self._ready.set()\n",
+ " loop.run_forever()\n",
+ "\n",
+ " self._thread = threading.Thread(target=run, daemon=True, name=\"env-reward\")\n",
+ " self._thread.start()\n",
+ " self._ready.wait()\n",
+ " if self._setup_error is not None:\n",
+ " raise RuntimeError(\n",
+ " f\"EnvRewardClient failed to connect {self.pool_size} WS sessions \"\n",
+ " f\"to {self.base_url}: {self._setup_error!r}\"\n",
+ " )\n",
+ "\n",
+ " async def _setup(self) -> None:\n",
+ " self._queue = asyncio.Queue(self.pool_size)\n",
+ " self._envs = [AwsRlEnv(base_url=self.base_url) for _ in range(self.pool_size)]\n",
+ " try:\n",
+ " await asyncio.gather(*(e.connect() for e in self._envs))\n",
+ " except BaseException:\n",
+ " await asyncio.gather(\n",
+ " *(e.close() for e in self._envs), return_exceptions=True\n",
+ " )\n",
+ " raise\n",
+ " for e in self._envs:\n",
+ " self._queue.put_nowait(e)\n",
+ "\n",
+ " async def _reconnect(self, env) -> None:\n",
+ " \"\"\"Discard the dead socket and open a fresh WS session in-place.\"\"\"\n",
+ " self.reconnect += 1\n",
+ " try:\n",
+ " await env.disconnect()\n",
+ " except Exception:\n",
+ " pass\n",
+ " await env.connect()\n",
+ "\n",
+ " async def _reset_and_step(self, env, task: Task, command: str) -> float:\n",
+ " await asyncio.wait_for(env.reset(task=task), timeout=self.timeout_s)\n",
+ " res = await asyncio.wait_for(\n",
+ " env.step(AwsRlAction(command=command)), timeout=self.timeout_s\n",
+ " )\n",
+ " return float(res.reward)\n",
+ "\n",
+ " async def _score_one(self, task: Task, command: str) -> float:\n",
+ " env = await self._queue.get()\n",
+ " try:\n",
+ " try:\n",
+ " reward = await self._reset_and_step(env, task, command)\n",
+ " self.success += 1\n",
+ " return reward\n",
+ " except ConnectionClosed as e:\n",
+ " # Cloudflare / server idle-closed the socket. Reconnect and retry.\n",
+ " self.last_error = f\"reconnect after {type(e).__name__}: {e}\"\n",
+ " if self.verbose_errors:\n",
+ " print(f\"[reward] {self.last_error} — reconnecting\")\n",
+ " await self._reconnect(env)\n",
+ " reward = await self._reset_and_step(env, task, command)\n",
+ " self.success += 1\n",
+ " return reward\n",
+ " except asyncio.TimeoutError:\n",
+ " self.timeout += 1\n",
+ " self.last_error = \"asyncio.TimeoutError\"\n",
+ " if self.verbose_errors:\n",
+ " traceback.print_exc()\n",
+ " return 0.0\n",
+ " except Exception as e:\n",
+ " self.conn_err += 1\n",
+ " self.last_error = f\"{type(e).__name__}: {e}\"\n",
+ " if self.verbose_errors:\n",
+ " traceback.print_exc()\n",
+ " return 0.0\n",
+ " finally:\n",
+ " self._queue.put_nowait(env)\n",
+ "\n",
+ " async def _score_batch_async(\n",
+ " self, tasks: list, commands: list[str]\n",
+ " ) -> list[float]:\n",
+ " return list(\n",
+ " await asyncio.gather(\n",
+ " *(self._score_one(t, c) for t, c in zip(tasks, commands))\n",
+ " )\n",
+ " )\n",
+ "\n",
+ " def score_batch(self, tasks: list, commands: list[str]) -> list[float]:\n",
+ " \"\"\"Parallel scoring; preserves input order.\"\"\"\n",
+ " assert self._loop is not None\n",
+ " fut = asyncio.run_coroutine_threadsafe(\n",
+ " self._score_batch_async(tasks, commands), self._loop\n",
+ " )\n",
+ " return fut.result()\n",
+ "\n",
+ " async def _rollout_one_async(\n",
+ " self,\n",
+ " task: Task,\n",
+ " first_command: str,\n",
+ " generate_next, # sync callable (history) -> str\n",
+ " max_steps: int,\n",
+ " ) -> float:\n",
+ " \"\"\"Interactive multi-turn rollout on a single env session.\n",
+ "\n",
+ " Plays `first_command` as turn 1 (this is what TRL just generated),\n",
+ " then for turns 2..max_steps asks `generate_next` for the next\n",
+ " command given the running (cmd, output) history. Used by\n",
+ " `score_batch_interactive` to give the trainer the same multi-step\n",
+ " rollout semantics as eval-time `run_episode`.\n",
+ "\n",
+ " `generate_next` is sync because the policy lives on the main\n",
+ " thread's GPU; we call it from this background-thread coroutine\n",
+ " via `loop.run_in_executor(None, ...)` so it doesn't block the\n",
+ " asyncio loop.\n",
+ " \"\"\"\n",
+ " env = await self._queue.get()\n",
+ " try:\n",
+ " try:\n",
+ " await asyncio.wait_for(env.reset(task=task), timeout=self.timeout_s)\n",
+ " history: list[tuple[str, str]] = []\n",
+ " reward = 0.0\n",
+ " cmd = first_command\n",
+ " loop = asyncio.get_running_loop()\n",
+ " for turn in range(max_steps):\n",
+ " res = await asyncio.wait_for(\n",
+ " env.step(AwsRlAction(command=cmd)),\n",
+ " timeout=self.timeout_s,\n",
+ " )\n",
+ " reward = float(res.reward)\n",
+ " obs = getattr(res, \"observation\", None)\n",
+ " history.append((cmd, getattr(obs, \"command_output\", \"\") or \"\"))\n",
+ " done_flag = getattr(res, \"done\", False) or getattr(\n",
+ " obs, \"task_achieved\", False\n",
+ " )\n",
+ " if done_flag or turn == max_steps - 1:\n",
+ " break\n",
+ " # Hop to a worker thread for the (sync, GPU-bound) generation.\n",
+ " cmd = await loop.run_in_executor(\n",
+ " None, generate_next, tuple(history)\n",
+ " )\n",
+ " self.success += 1\n",
+ " return reward\n",
+ " except ConnectionClosed as e:\n",
+ " # Don't auto-retry mid-episode: a fresh reset would wipe\n",
+ " # tracker state and any partial credit from earlier turns.\n",
+ " self.last_error = f\"{type(e).__name__}: {e} (mid-rollout)\"\n",
+ " if self.verbose_errors:\n",
+ " print(f\"[reward] {self.last_error}\")\n",
+ " self.conn_err += 1\n",
+ " return 0.0\n",
+ " except asyncio.TimeoutError:\n",
+ " self.timeout += 1\n",
+ " self.last_error = \"asyncio.TimeoutError\"\n",
+ " if self.verbose_errors:\n",
+ " traceback.print_exc()\n",
+ " return 0.0\n",
+ " except Exception as e:\n",
+ " self.conn_err += 1\n",
+ " self.last_error = f\"{type(e).__name__}: {e}\"\n",
+ " if self.verbose_errors:\n",
+ " traceback.print_exc()\n",
+ " return 0.0\n",
+ " finally:\n",
+ " self._queue.put_nowait(env)\n",
+ "\n",
+ " def score_batch_interactive(\n",
+ " self,\n",
+ " tasks: list,\n",
+ " first_commands: list[str],\n",
+ " generate_next_per_rollout: list, # list[Callable[[history], str]]\n",
+ " max_steps: int = 5,\n",
+ " ) -> list[float]:\n",
+ " \"\"\"Parallel multi-turn scoring; preserves input order.\n",
+ "\n",
+ " Each rollout takes ONE command at a time: TRL's completion\n",
+ " supplies turn 1, then `generate_next_per_rollout[i](history)`\n",
+ " is called for each subsequent turn of rollout `i` until\n",
+ " `done=True` or `max_steps` is reached. Up to `pool_size`\n",
+ " rollouts run in parallel against the WS pool — but the caller\n",
+ " is expected to serialise GPU-bound generates inside the\n",
+ " closures themselves (one shared lock), since concurrent\n",
+ " generates on a single accelerator only fight for the same\n",
+ " memory.\n",
+ " \"\"\"\n",
+ " assert self._loop is not None\n",
+ " assert len(tasks) == len(first_commands) == len(generate_next_per_rollout)\n",
+ "\n",
+ " async def _gather():\n",
+ " return list(await asyncio.gather(*(\n",
+ " self._rollout_one_async(t, c, gen, max_steps)\n",
+ " for t, c, gen in zip(\n",
+ " tasks, first_commands, generate_next_per_rollout,\n",
+ " )\n",
+ " )))\n",
+ "\n",
+ " fut = asyncio.run_coroutine_threadsafe(_gather(), self._loop)\n",
+ " return fut.result()\n",
+ "\n",
+ " def drain_counters(self) -> dict:\n",
+ " out = {\n",
+ " \"success\": self.success,\n",
+ " \"timeout\": self.timeout,\n",
+ " \"conn_err\": self.conn_err,\n",
+ " \"reconnect\": self.reconnect,\n",
+ " \"last_error\": self.last_error,\n",
+ " }\n",
+ " self.success = self.timeout = self.conn_err = self.reconnect = 0\n",
+ " self.last_error = None\n",
+ " return out\n",
+ "\n",
+ " def close(self) -> None:\n",
+ " if self._loop is None or not self._loop.is_running():\n",
+ " return\n",
+ "\n",
+ " async def _close():\n",
+ " await asyncio.gather(\n",
+ " *(e.disconnect() for e in self._envs), return_exceptions=True\n",
+ " )\n",
+ "\n",
+ " try:\n",
+ " asyncio.run_coroutine_threadsafe(_close(), self._loop).result(timeout=30)\n",
+ " except Exception:\n",
+ " pass\n",
+ " self._loop.call_soon_threadsafe(self._loop.stop)\n",
+ " if self._thread is not None:\n",
+ " self._thread.join(timeout=5)\n",
+ "\n",
+ "\n",
+ "def build_reward_funcs(env: EnvRewardClient,\n",
+ " task_map: dict[int, Task],\n",
+ " curriculum: Optional[Curriculum] = None,\n",
+ " model=None,\n",
+ " tokenizer=None,\n",
+ " max_rollout_steps: int = 5,\n",
+ " ) -> tuple[Callable, Callable, Callable]:\n",
+ " \"\"\"Return (env_reward, format_reward, length_reward).\n",
+ "\n",
+ " When `curriculum` is provided, env_reward calls curriculum.record_result()\n",
+ " once per unique task_id in the batch — one record = one group = one\n",
+ " curriculum episode. This is what makes the training loop curriculum-driven\n",
+ " even while TRL owns the outer iteration.\n",
+ "\n",
+ " When `model` and `tokenizer` are provided, env_reward runs INTERACTIVE\n",
+ " multi-turn rollouts: TRL's completion supplies the first command, then\n",
+ " the policy is re-queried after each env step (with running command/output\n",
+ " history) for up to `max_rollout_steps - 1` more turns. This is what lets\n",
+ " multi-step (intermediate/advanced/expert) tasks actually achieve during\n",
+ " training. Without `model`, env_reward falls back to single-step scoring.\n",
+ " \"\"\"\n",
+ " def _text_of(c) -> str:\n",
+ " return c if isinstance(c, str) else c[0][\"content\"]\n",
+ "\n",
+ " # Pre-build the multi-turn generate_next closure once. Only used when\n",
+ " # `model` was supplied — single-step path skips it entirely.\n",
+ " if model is not None and tokenizer is not None:\n",
+ " import torch as _torch # local import to avoid hard dep if unused\n",
+ " _gen_lock = threading.Lock() # GPU serialisation across rollouts\n",
+ "\n",
+ " def _generate_next_for_task(task: Task, history) -> str:\n",
+ " \"\"\"Sync per-turn generation: build prompt with running history,\n",
+ " decode one command, return the extracted `aws ...` line.\n",
+ " Runs on a worker thread off the event loop (see\n",
+ " `_rollout_one_async`); the lock prevents concurrent rollouts\n",
+ " from racing on the same GPU.\"\"\"\n",
+ " messages = [\n",
+ " {\"role\": \"system\", \"content\": SYSTEM_PROMPT},\n",
+ " {\"role\": \"user\", \"content\": f\"TASK: {task.description}\"},\n",
+ " ]\n",
+ " for cmd, out in list(history)[-4:]:\n",
+ " messages.append({\"role\": \"assistant\", \"content\": cmd})\n",
+ " messages.append({\"role\": \"user\", \"content\": f\"OUTPUT:\\n{out[:400]}\"})\n",
+ " prompt_text = tokenizer.apply_chat_template(\n",
+ " messages, tokenize=False, add_generation_prompt=True,\n",
+ " )\n",
+ " with _gen_lock:\n",
+ " inputs = tokenizer(prompt_text, return_tensors=\"pt\").to(model.device)\n",
+ " with _torch.inference_mode():\n",
+ " ids = model.generate(\n",
+ " **inputs,\n",
+ " max_new_tokens=256,\n",
+ " do_sample=True, temperature=0.7, top_p=0.9,\n",
+ " pad_token_id=tokenizer.eos_token_id,\n",
+ " )\n",
+ " text = tokenizer.decode(\n",
+ " ids[0, inputs.input_ids.shape[1]:], skip_special_tokens=True,\n",
+ " )\n",
+ " return extract_aws_command(text)\n",
+ " else:\n",
+ " _generate_next_for_task = None\n",
+ "\n",
+ " def env_reward(prompts, completions, task_id=None, **kw):\n",
+ " tids = task_id if task_id is not None else kw[\"task_id\"]\n",
+ " tasks = [task_map[int(t)] for t in tids]\n",
+ " cmds = [extract_aws_command(_text_of(c)) for c in completions]\n",
+ "\n",
+ " if _generate_next_for_task is not None:\n",
+ " # Interactive multi-turn: one task-bound generate_next closure\n",
+ " # per rollout; env.step calls fan out across the WS pool, while\n",
+ " # the shared `_gen_lock` inside the closure keeps generates\n",
+ " # serial on the single GPU.\n",
+ " gens = [\n",
+ " (lambda hist, _t=t: _generate_next_for_task(_t, hist))\n",
+ " for t in tasks\n",
+ " ]\n",
+ " rewards = env.score_batch_interactive(\n",
+ " tasks, cmds, gens, max_steps=max_rollout_steps,\n",
+ " )\n",
+ " else:\n",
+ " rewards = env.score_batch(tasks, cmds)\n",
+ "\n",
+ " # Group by task_id and feed each group back to the curriculum. TRL emits\n",
+ " # G completions per prompt consecutively (all sharing one task_id), so\n",
+ " # grouping recovers the GRPO semantics cleanly: one record per prompt,\n",
+ " # achieved iff any rollout hit reward>=1.0, recorded reward = group mean.\n",
+ " if curriculum is not None:\n",
+ " by_tid: dict[int, list[float]] = defaultdict(list)\n",
+ " for tid, r in zip(tids, rewards):\n",
+ " by_tid[int(tid)].append(r)\n",
+ " for tid, group in by_tid.items():\n",
+ " curriculum.record_result(\n",
+ " task_map[tid],\n",
+ " achieved=any(r >= 1.0 for r in group),\n",
+ " reward=sum(group) / len(group),\n",
+ " )\n",
+ " return rewards\n",
+ "\n",
+ " def format_reward(prompts, completions, **kw):\n",
+ " # Thinking is now allowed before the command, so the old\n",
+ " # \"first char must be aws \" check would score 0 on every\n",
+ " # well-formed ... + aws ... output. Instead\n",
+ " # require that *some* line of the completion starts with\n",
+ " # \"aws \" — the same contract extract_aws_command() relies on.\n",
+ " out = []\n",
+ " for c in completions:\n",
+ " txt = _text_of(c)\n",
+ " has_cmd = any(\n",
+ " line.strip().strip(\"`\").strip().startswith(\"aws \")\n",
+ " for line in txt.splitlines()\n",
+ " )\n",
+ " out.append(1.0 if has_cmd else 0.0)\n",
+ " return out\n",
+ "\n",
+ " def length_reward(prompts, completions, **kw):\n",
+ " # With ... the completion can reasonably run to a\n",
+ " # couple of thousand characters; the old 120-char cap would pin\n",
+ " # length_reward to ~0 on every thinking output. Grade the extracted\n",
+ " # command line for concision (commands themselves are still short)\n",
+ " # and only mildly penalise extreme verbosity in the surrounding\n",
+ " # reasoning so the model is nudged away from rambling.\n",
+ " out = []\n",
+ " for c in completions:\n",
+ " txt = _text_of(c)\n",
+ " cmd = extract_aws_command(txt)\n",
+ " cmd_n = len(cmd)\n",
+ " cmd_score = 1.0 if cmd_n <= 120 else max(\n",
+ " 0.0, 1.0 - (cmd_n - 120) / 280.0\n",
+ " )\n",
+ " total_n = len(txt)\n",
+ " verbosity_score = 1.0 if total_n <= 2000 else max(\n",
+ " 0.0, 1.0 - (total_n - 2000) / 2000.0\n",
+ " )\n",
+ " out.append(0.5 * cmd_score + 0.5 * verbosity_score)\n",
+ " return out\n",
+ "\n",
+ " return env_reward, format_reward, length_reward\n",
+ "\n",
+ "\n",
+ "# Re-run protection: if this cell has been run before, the old ENV_CLIENT's\n",
+ "# background thread is still holding 8 WebSocket sessions. Close it cleanly\n",
+ "# (sends {\"type\":\"close\"} so the server's /ws handler reaches its finally\n",
+ "# block and calls _destroy_session → releases the MiniStack slot). Without\n",
+ "# this, every re-run compounds the leak until the server hits 8/8 capacity.\n",
+ "try:\n",
+ " _prev = ENV_CLIENT # noqa: F821\n",
+ "except NameError:\n",
+ " pass\n",
+ "else:\n",
+ " log.info(\"Closing previous ENV_CLIENT to release its WS sessions…\")\n",
+ " try:\n",
+ " _prev.close()\n",
+ " except Exception as _e:\n",
+ " log.warning(\"Ignored error during previous close: %r\", _e)\n",
+ "\n",
+ "# verbose_errors=True for the first run so the smoke test surfaces any WS /\n",
+ "# reset / step exception with a full traceback. Flip off after it passes.\n",
+ "ENV_CLIENT = EnvRewardClient(\n",
+ " base_url=ENV_BASE_URL,\n",
+ " pool_size=PIPE.env_pool_size,\n",
+ " verbose_errors=True,\n",
+ ")\n",
+ "\n",
+ "# Smoke test uses a non-curriculum client to avoid polluting any curriculum state.\n",
+ "# Task 0 (\"List all S3 buckets\") matches the `aws s3 ls` completion.\n",
+ "_smoke_task = TASK_MAP[0]\n",
+ "_smoke_env, _smoke_fmt, _smoke_len = build_reward_funcs(ENV_CLIENT, TASK_MAP, curriculum=None)\n",
+ "_smoke = _smoke_env(\n",
+ " prompts=[None] * 2,\n",
+ " completions=[\"aws s3 ls\", \"aws s3 ls\"],\n",
+ " task_id=[_smoke_task.task_id, _smoke_task.task_id],\n",
+ ")\n",
+ "log.info(\"Reward smoke test on task %s: %s\", _smoke_task.task_id, _smoke)\n",
+ "log.info(\"Env counters: %s\", ENV_CLIENT.drain_counters())\n",
+ "assert min(_smoke) > 0.5, \"Reward smoke test failed — env or reward wiring broken\"\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "99f34cfe",
+ "metadata": {
+ "id": "99f34cfe"
+ },
+ "source": [
+ "## 9 · Load the SFT adapter as the starting policy\n",
+ "\n",
+ "We go through `PeftModel.from_pretrained(base, sft_adapter, is_trainable=True)` explicitly (rather than `FastLanguageModel.from_pretrained(adapter_repo)`) so there is no ambiguity about the adapter landing in trainable mode — GRPO must be able to update the LoRA weights.\n",
+ "\n",
+ "This helper is also used later by the final-run and Optuna-trial paths, so it lives in its own cell."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "e360207d",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 531,
+ "referenced_widgets": [
+ "6f08a4702611494e9331f49a3a117c53",
+ "2adf38f2dd4f4c68896ab3f124fd2a10",
+ "118388f7fc3d4d4ba811d43a763e92b4",
+ "0a657273364b488b802e3c1eb6467ba5",
+ "307cbbbd2871496fbca0d986ad54b9ac",
+ "c4614ab14e1642dca6f5a4899fae90ef",
+ "e1808c94a664458486380230d17039af",
+ "d0161222380b4ec1a8c43d2498423352",
+ "8a5e6316093b4a05abe2710ff1d33c5e",
+ "b959577f9e134fb7bb41c7dd3a441d32",
+ "45eee0aa85594ee3a9f19cab1900093d",
+ "bcb703307a8246329992c3267cdcb08a",
+ "be412634d9b34d4d94a0807b97de39e2",
+ "79b86eda52fe4b12a0b54ffaf15cca96",
+ "f3c926804133410a9059e5cdfeb67cde",
+ "1d8f62c4fdf74eeb8bdc830b4af0670c",
+ "087774b0f7d844438df2aee7ce5fff0b",
+ "3f85a045eb424e8c80d9ae09e41acc9b",
+ "dd3eab3700ad450c8080bb5432071f7b",
+ "a9db83f0d10b4fd1b4ee3b90d4a7a278",
+ "c6eddaca9a3448ee9a25588c279f8e33",
+ "5d521ff47a70480f9c8b97cd826bebff",
+ "ebcb37ad6120423ab909be13bc4d6b84",
+ "28d61b8e55ff4504a285e9e1ab903089",
+ "844b6af01fdd4db3812f07a9f0dcc6e0",
+ "13c198104606425a81c28ef3a0f32242",
+ "c13f9ab3802c4d98b8d294809fe46469",
+ "5efcbdf41907478a833af69d6def7a49",
+ "cfd968bbff354bf88ed711f5a2ce00dd",
+ "a893af26a62542338423ca1a6abbb909",
+ "d50bf1b19f4245eb848a624107a31d35",
+ "a5ba2b09c1984e71bb50d7729da606ca",
+ "83cb6dd3b5da4834b7eceabd5d6fdef6",
+ "3e38fbdb2f6e48dc955399660dbebdfe",
+ "a7633c89057946f182f36821c4b0922e",
+ "95710dea79ec4ecf82d9a8f3cc14085b",
+ "a1dafa7165424f02bdfb5b2bf4b59645",
+ "9f4ac913e08240f4b74eb1eb0f272c9c",
+ "b77f5bf34be84809a753ea0e5f0f3b77",
+ "f74a9bbe540e465080e66ac51e10f1b2",
+ "6d71da9ff2fb48bc8c62b6fcb30bcd01",
+ "e78a1c8d4fe64494b51a895f9e122dbb",
+ "c8e70a9813584680b5ed699573e6d970",
+ "5059f8e3218f40ee8f240601b270d409",
+ "c8c63f9906cb43a481fc175377e9e60a",
+ "7646fb6a28b14180940f77fdfc943ce5",
+ "d8474024afd74bfe8d0ff74f7bc5ea43",
+ "78148f6b76b34c3ebfdf938adda1d4e9",
+ "626d457483f545919a5f79032d9abfe3",
+ "2390a3cfeafa498585d6003ace58cca2",
+ "e51bd69bca6a49ec9f70946a68417d01",
+ "3d4a1f40d0da4b64aef61bc8d5d30e14",
+ "87bfbaf9e43345078ee5bc6d2d709fa3",
+ "76a70e18ee6f49d1a8463637f849a74f",
+ "8af833fdea064d3a95d3b7c2d0b92ea9",
+ "1d50a009a977463e9f97635a5c4f2bbb",
+ "1dc52591ca824509b66a32e5bf4f6648",
+ "4412b8c647ae4c20801a5c265412e022",
+ "d4467d98b75c40d699ed4165bb75df6f",
+ "43dd31d1dde142fabc248ea37f94c3c9",
+ "b754710638044958993eb5bec000fed0",
+ "51a672bd7cd24564b8d8ea431d318e59",
+ "80542974d6a84c78a15de58878c18193",
+ "0ac221560f904fa98329a17b0b5166a9",
+ "578a784c18e64ee3b6c2d5f671c36b69",
+ "cdebf7a618af49e3a0c8c5057c0aeaed",
+ "c989e566fe0942ff8550634b750c1fbf",
+ "73f9006bf8214a0096bfafddabe258d6",
+ "140220fc61e44bd1bd775c724d3d43d9",
+ "f30f63c2ac614bcfb2c5fc90200785fa",
+ "4b2326ccbab641f78b5e162dee0f75c1",
+ "7fe4b6172dd149819ddf2762b87d37e9",
+ "c4b7ed116d494b84a133207912453294",
+ "5f574598039c467fb83aced764c7936a",
+ "18ceaac5a73049cf87a1991beae0dfdf",
+ "4ff08209c30b4475b4077329df0a50dc",
+ "a8c91fffccd149eab9be4887c94a3bc3",
+ "d274ca5e4dc84f4ca7bea1208cb2094f",
+ "51f03a809ced4e299439005861dbebee",
+ "7340e1e900094ac1aaf4fbf22286a9da",
+ "1e4e1e42ce174c38bf46c99743aec1a3",
+ "fc561191f4cd43d8a975602e3c4593a4",
+ "67b8d4f7124141bfa58fbb9cc3633773",
+ "a73ce2691f974691af0e5ad183accca5",
+ "aaf8549415914e949d716e50629ebcc6",
+ "9ee227074084483bb665250eef98c70e",
+ "598e07a9cf414c8d9416d57969b654c4",
+ "083d9eb499e4470fadda78b6e30ccc7c",
+ "a480c0315a1149a696d2064f85213810",
+ "0a803d22ea0f44e1a87beb30cc5e77e1",
+ "11722376e3ce45f683cff6a5f6e78506",
+ "5d11b2d362b54ae29a2fd907a3c21c38",
+ "8215e6b72df4433fbba64e75feab0f94",
+ "06be388f07064b21b25deeb7a53dda81",
+ "3e295a5c888642ac8e3fd245a8a97a45",
+ "3a2ac1f4812449a0b4259e7b4f947033",
+ "129041f3428e4d828b4a97132fb8baa2",
+ "d91bc462a3a24c1b831ea1643515ab97",
+ "90c96b4ed8b04448bff93459a933bfd8",
+ "a35302dc34af43428820d9cac53b82ad",
+ "74411d1cf20d443a812eb988d8166fd7",
+ "d1ed9ce40bde41b5bcb75dfd51e28b91",
+ "1da5f8f77f67429cb81ffc2bc53c3b23",
+ "70ae6a670fe04c2698d44c4bea2789b1",
+ "dabe8e2299284bbb8433ad7175694af6",
+ "30e8681cc91d43068ad37853fcec6b5a",
+ "57da93e71ec144cba2bb2c3fe97880d6",
+ "278b869a2efb4f449ef6f37477882234",
+ "dcf32037f343407a90ee026a51078efe",
+ "772555eaceeb44f9a94ef4b79a2b27e6"
+ ]
+ },
+ "id": "e360207d",
+ "outputId": "e8587f47-92cf-4090-86c7-caa75d5cdabf"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "🦥 Unsloth: Will patch your computer to enable 2x faster free finetuning.\n",
+ "🦥 Unsloth Zoo will now patch everything to make training faster!\n",
+ "==((====))== Unsloth 2026.4.8: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "model.safetensors: 0%| | 0.00/2.05G [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "6f08a4702611494e9331f49a3a117c53"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "generation_config.json: 0%| | 0.00/266 [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "bcb703307a8246329992c3267cdcb08a"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "tokenizer_config.json: 0.00B [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "ebcb37ad6120423ab909be13bc4d6b84"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "vocab.json: 0.00B [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "3e38fbdb2f6e48dc955399660dbebdfe"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "merges.txt: 0.00B [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "c8c63f9906cb43a481fc175377e9e60a"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "added_tokens.json: 0%| | 0.00/632 [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "1d50a009a977463e9f97635a5c4f2bbb"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "special_tokens_map.json: 0%| | 0.00/613 [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "c989e566fe0942ff8550634b750c1fbf"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "tokenizer.json: 0.00B [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "d274ca5e4dc84f4ca7bea1208cb2094f"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "adapter_config.json: 0.00B [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "a480c0315a1149a696d2064f85213810"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "adapter_model.safetensors: 0%| | 0.00/14.8M [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "a35302dc34af43428820d9cac53b82ad"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:54:46 | INFO | grpo | Loaded Sizzing/aws-rl-sft-qwen25coder3b-adapter. Trainable params: 288 tensors; sample: ['base_model.model.model.layers.0.self_attn.q_proj.lora_A.default.weight', 'base_model.model.model.layers.0.self_attn.q_proj.lora_B.default.weight', 'base_model.model.model.layers.0.self_attn.k_proj.lora_A.default.weight']\n",
+ "14:54:48 | INFO | grpo | Model load path verified.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import gc\n",
+ "\n",
+ "\n",
+ "def load_policy(spec: ModelSpec, trainable: bool = True):\n",
+ " \"\"\"Load base (4-bit) + SFT adapter.\n",
+ "\n",
+ " `trainable=True` gives a PeftModel with is_trainable=True — the correct\n",
+ " mode for GRPO. `trainable=False` loads the adapter for inference only\n",
+ " and invokes `FastLanguageModel.for_inference` for Unsloth's fused\n",
+ " inference kernels (used during evaluation).\n",
+ " \"\"\"\n",
+ " from unsloth import FastLanguageModel\n",
+ " from peft import PeftModel\n",
+ "\n",
+ " base, tokenizer = FastLanguageModel.from_pretrained(\n",
+ " model_name=spec.base_model,\n",
+ " max_seq_length=spec.max_seq_length,\n",
+ " load_in_4bit=True,\n",
+ " )\n",
+ " model = PeftModel.from_pretrained(base, spec.sft_adapter, is_trainable=trainable)\n",
+ " if trainable:\n",
+ " FastLanguageModel.for_training(model)\n",
+ " # PeftModel.from_pretrained doesn't wire up the input-require-grads\n",
+ " # forward hook on the embeddings. With Unsloth's gradient\n",
+ " # checkpointing + 4-bit frozen base, that breaks the autograd path\n",
+ " # between the loss and the trainable LoRA adapters — backward\n",
+ " # errors with \"element 0 of tensors does not require grad\". The\n",
+ " # hook marks the embedding output as requires_grad so gradients\n",
+ " # can flow into the adapters. FastLanguageModel.get_peft_model\n",
+ " # does this automatically; we don't use that path because we're\n",
+ " # loading an existing SFT adapter, not creating a fresh one.\n",
+ " if hasattr(model, \"enable_input_require_grads\"):\n",
+ " model.enable_input_require_grads()\n",
+ " else:\n",
+ " FastLanguageModel.for_inference(model)\n",
+ " return model, tokenizer\n",
+ "\n",
+ "\n",
+ "def free_model(model) -> None:\n",
+ " \"\"\"Release GPU memory held by a model + its optimizer state.\"\"\"\n",
+ " del model\n",
+ " gc.collect()\n",
+ " torch.cuda.empty_cache()\n",
+ "\n",
+ "\n",
+ "# Sanity: load + confirm LoRA params are trainable.\n",
+ "_probe_model, _probe_tok = load_policy(MODEL, trainable=True)\n",
+ "_trainable = [n for n, p in _probe_model.named_parameters() if p.requires_grad]\n",
+ "log.info(\"Loaded %s. Trainable params: %d tensors; sample: %s\", MODEL.sft_adapter, len(_trainable), _trainable[:3])\n",
+ "assert any(\"lora\" in n.lower() for n in _trainable), \"No LoRA params marked trainable — load path is wrong\"\n",
+ "free_model(_probe_model)\n",
+ "del _probe_tok\n",
+ "gc.collect(); torch.cuda.empty_cache()\n",
+ "log.info(\"Model load path verified.\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "13c4aa8f",
+ "metadata": {
+ "id": "13c4aa8f"
+ },
+ "source": [
+ "## 10 · Baseline eval — SFT adapter, single-step env reward\n",
+ "\n",
+ "Single-pass eval on the val set. This is the \"before\" column of the headline comparison. The richer *multi-step* eval happens later; this one is only here to confirm the SFT-loaded model outputs sane commands against the env **before** we start GRPO.\n",
+ "\n",
+ "Written as a small `evaluate_single_step` helper because GRPO's inner trial loop needs the same logic."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "eval-single-step",
+ "metadata": {
+ "id": "eval-single-step",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "outputId": "41ff1041-4807-41a3-d2cc-bdc6c89a985b"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "==((====))== Unsloth 2026.4.8: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n",
+ "14:56:31 | INFO | grpo | SFT baseline (single-step, val): {'env_reward_mean': 0.9, 'env_success_rate': 0.85, 'format_pct': 1.0, 'n': 20}\n"
+ ]
+ }
+ ],
+ "source": [
+ "import json\n",
+ "import statistics as _stats\n",
+ "from dataclasses import asdict\n",
+ "\n",
+ "\n",
+ "@dataclass\n",
+ "class SingleStepMetrics:\n",
+ " \"\"\"One row of headline comparison numbers.\"\"\"\n",
+ " env_reward_mean: float\n",
+ " env_success_rate: float # fraction with reward >= 1.0\n",
+ " format_pct: float\n",
+ " n: int\n",
+ "\n",
+ " def as_dict(self) -> dict:\n",
+ " return asdict(self)\n",
+ "\n",
+ "\n",
+ "def evaluate_single_step(model, tokenizer, dataset, env: EnvRewardClient,\n",
+ " task_map: dict[int, Task],\n",
+ " max_new_tokens: int = 128) -> SingleStepMetrics:\n",
+ " \"\"\"Generate one command per prompt, score against the env, summarize.\"\"\"\n",
+ " from unsloth import FastLanguageModel\n",
+ "\n",
+ " FastLanguageModel.for_inference(model)\n",
+ " formats: list[float] = []\n",
+ " tasks_to_score: list[Task] = []\n",
+ " cmds_to_score: list[str] = []\n",
+ "\n",
+ " for row in dataset:\n",
+ " prompt_text = tokenizer.apply_chat_template(\n",
+ " row[\"prompt\"], tokenize=False, add_generation_prompt=True,\n",
+ " )\n",
+ " inputs = tokenizer(prompt_text, return_tensors=\"pt\").to(model.device)\n",
+ " with torch.inference_mode():\n",
+ " ids = model.generate(\n",
+ " **inputs,\n",
+ " max_new_tokens=max_new_tokens,\n",
+ " do_sample=False,\n",
+ " pad_token_id=tokenizer.eos_token_id,\n",
+ " )\n",
+ " text = tokenizer.decode(\n",
+ " ids[0, inputs.input_ids.shape[1]:], skip_special_tokens=True,\n",
+ " )\n",
+ " # Match the training-time format_reward contract: accept any\n",
+ " # line starting with \"aws \" so a ... prefix does\n",
+ " # not score 0 for format.\n",
+ " has_cmd = any(\n",
+ " line.strip().strip(\"`\").strip().startswith(\"aws \")\n",
+ " for line in text.splitlines()\n",
+ " )\n",
+ " formats.append(1.0 if has_cmd else 0.0)\n",
+ " tasks_to_score.append(task_map[int(row[\"task_id\"])])\n",
+ " cmds_to_score.append(extract_aws_command(text))\n",
+ "\n",
+ " # Score all env rewards in parallel across the 8 server slots\n",
+ " rewards = env.score_batch(tasks_to_score, cmds_to_score)\n",
+ "\n",
+ " FastLanguageModel.for_training(model)\n",
+ "\n",
+ " return SingleStepMetrics(\n",
+ " env_reward_mean=float(_stats.mean(rewards)),\n",
+ " env_success_rate=sum(r >= 1.0 for r in rewards) / len(rewards),\n",
+ " format_pct=float(_stats.mean(formats)),\n",
+ " n=len(rewards),\n",
+ " )\n",
+ "\n",
+ "\n",
+ "# Run the SFT-only baseline and persist it alongside Optuna + checkpoints\n",
+ "_baseline_model, _baseline_tok = load_policy(MODEL, trainable=False)\n",
+ "baseline_metrics = evaluate_single_step(\n",
+ " _baseline_model, _baseline_tok, VAL_DS, ENV_CLIENT, TASK_MAP,\n",
+ " max_new_tokens=TRAIN.max_completion_length,\n",
+ ")\n",
+ "(OUT_DIR / \"baseline_single_step.json\").write_text(json.dumps(baseline_metrics.as_dict(), indent=2))\n",
+ "free_model(_baseline_model); del _baseline_tok\n",
+ "gc.collect(); torch.cuda.empty_cache()\n",
+ "\n",
+ "log.info(\"SFT baseline (single-step, val): %s\", baseline_metrics.as_dict())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "b439f160",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "b439f160",
+ "outputId": "98e86e8f-3142-46df-8403-7835d07ce8a9"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:56:31 | INFO | grpo | Loading optuna and defining trial objective...\n",
+ "14:56:31 | INFO | grpo | Curriculum-driven Optuna objective defined.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import optuna\n",
+ "import time\n",
+ "\n",
+ "log.info(\"Loading optuna and defining trial objective...\")\n",
+ "\n",
+ "\n",
+ "def suggest_training_config(trial: optuna.Trial, defaults: TrainingConfig) -> TrainingConfig:\n",
+ " \"\"\"Return a mutated copy of `defaults` with Optuna-sampled hparams.\n",
+ "\n",
+ " One function, one diff — keeps the search space auditable.\n",
+ " \"\"\"\n",
+ " return replace(\n",
+ " defaults,\n",
+ " learning_rate = trial.suggest_float(\"learning_rate\", 1e-6, 5e-5, log=True),\n",
+ " beta = trial.suggest_float(\"beta\", 0.0, 0.1),\n",
+ " temperature = trial.suggest_float(\"temperature\", 0.7, 1.0),\n",
+ " )\n",
+ "\n",
+ "\n",
+ "def trial_objective(trial: optuna.Trial) -> float:\n",
+ " \"\"\"Short curriculum-driven GRPO run + val eval. Returns mean env reward\n",
+ " on the small Optuna task pool.\"\"\"\n",
+ " trial_cfg = suggest_training_config(trial, TRAIN)\n",
+ " output_dir = str(OUT_DIR / f\"optuna/trial-{trial.number}\")\n",
+ " log.info(\"[trial %d] starting | cfg=%s\", trial.number, {\n",
+ " \"lr\": trial_cfg.learning_rate, \"beta\": trial_cfg.beta,\n",
+ " \"temp\": trial_cfg.temperature,\n",
+ " })\n",
+ "\n",
+ " # Fresh curriculum per trial — otherwise mastery and tier progression bleed\n",
+ " # across trials, making Optuna's hparam comparison unfair.\n",
+ " trial_curriculum = Curriculum(tasks_dir=_tasks_dir)\n",
+ " # Small fixed task pool (12 rows: warmup-2, beginner-2, intermediate-2,\n",
+ " # advanced-3, expert-3). CurriculumTierSampler still cycles within whatever\n",
+ " # tier the curriculum is on; with only 2-3 rows per tier the sampler\n",
+ " # simply re-shuffles those indices each cycle.\n",
+ " trial_train_ds = OPTUNA_DS\n",
+ " trial_num_samples = int(\n",
+ " PIPE.trial_max_steps\n",
+ " * trial_cfg.per_device_train_batch_size\n",
+ " * trial_cfg.gradient_accumulation_steps\n",
+ " * 1.2\n",
+ " )\n",
+ " log.info(\"[trial %d] loading SFT policy (4-bit Qwen2.5-Coder-3B)...\", trial.number)\n",
+ " _t0 = time.time()\n",
+ " model, tokenizer = load_policy(MODEL, trainable=True)\n",
+ " log.info(\"[trial %d] policy loaded in %.1fs\", trial.number, time.time() - _t0)\n",
+ "\n",
+ " trial_env_r, trial_fmt_r, trial_len_r = build_reward_funcs(\n",
+ " ENV_CLIENT, TASK_MAP, trial_curriculum,\n",
+ " model=model, tokenizer=tokenizer,\n",
+ " )\n",
+ "\n",
+ " trainer = build_trainer(\n",
+ " model, tokenizer,\n",
+ " train_ds=trial_train_ds,\n",
+ " eval_ds=OPTUNA_DS,\n",
+ " reward_funcs=(trial_env_r, trial_fmt_r, trial_len_r),\n",
+ " cfg=trial_cfg,\n",
+ " output_dir=output_dir,\n",
+ " run_name=f\"optuna-trial-{trial.number}\",\n",
+ " use_fp16=RT.use_fp16, use_bf16=RT.use_bf16,\n",
+ " max_steps=PIPE.trial_max_steps,\n",
+ " save_strategy=\"no\",\n",
+ " curriculum=trial_curriculum,\n",
+ " num_samples=trial_num_samples,\n",
+ " )\n",
+ "\n",
+ " try:\n",
+ " log.info(\"[trial %d] starting train() for %d steps...\",\n",
+ " trial.number, PIPE.trial_max_steps)\n",
+ " _t1 = time.time()\n",
+ " trainer.train()\n",
+ " log.info(\"[trial %d] train() finished in %.1fs\", trial.number, time.time() - _t1)\n",
+ " # Persist trainer_state.json for later plotting. save_strategy=\"no\"\n",
+ " # means TRL never writes checkpoints during training, so without\n",
+ " # this call there'd be no on-disk log history for this trial once\n",
+ " # the process exits.\n",
+ " trial_out = Path(output_dir)\n",
+ " trial_out.mkdir(parents=True, exist_ok=True)\n",
+ " (trial_out / \"trainer_state.json\").write_text(\n",
+ " json.dumps(\n",
+ " {\"log_history\": trainer.state.log_history,\n",
+ " \"global_step\": trainer.state.global_step,\n",
+ " \"trial_number\": trial.number},\n",
+ " indent=2, default=str,\n",
+ " )\n",
+ " )\n",
+ " # Score the trial on the same small Optuna task pool.\n",
+ " log.info(\"[trial %d] running single-step eval on %d tasks...\",\n",
+ " trial.number, len(OPTUNA_DS))\n",
+ " _t2 = time.time()\n",
+ " metrics = evaluate_single_step(\n",
+ " trainer.model, tokenizer, OPTUNA_DS, ENV_CLIENT, TASK_MAP,\n",
+ " max_new_tokens=trial_cfg.max_completion_length,\n",
+ " )\n",
+ " log.info(\"[trial %d] eval finished in %.1fs\", trial.number, time.time() - _t2)\n",
+ " score = metrics.env_reward_mean\n",
+ " # Also capture single-step eval metrics per trial for offline plotting.\n",
+ " (trial_out / \"single_step_metrics.json\").write_text(\n",
+ " json.dumps(metrics.as_dict(), indent=2)\n",
+ " )\n",
+ " log.info(\n",
+ " \"[trial %d] DONE | env_reward_mean=%.4f success=%.3f tier=%s graduated=%d\",\n",
+ " trial.number, score, metrics.env_success_rate,\n",
+ " trial_curriculum.current_difficulty.value,\n",
+ " len(trial_curriculum.get_stats().get(\"graduated_tasks\", [])),\n",
+ " )\n",
+ " finally:\n",
+ " free_model(trainer); free_model(model); del tokenizer\n",
+ " gc.collect(); torch.cuda.empty_cache()\n",
+ "\n",
+ " trial.report(score, step=PIPE.trial_max_steps)\n",
+ " if trial.should_prune():\n",
+ " raise optuna.TrialPruned()\n",
+ " return score\n",
+ "\n",
+ "\n",
+ "log.info(\"Curriculum-driven Optuna objective defined.\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "6f37100a",
+ "metadata": {
+ "id": "6f37100a",
+ "outputId": "09fc6f50-5d1e-467a-f410-35d549bc33f4",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:56:32 | INFO | grpo | GRPOTrainer factory ready.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import random\n",
+ "import time\n",
+ "from collections import defaultdict\n",
+ "from collections.abc import Iterable\n",
+ "\n",
+ "import torch\n",
+ "from trl import GRPOConfig, GRPOTrainer\n",
+ "from transformers import TrainerCallback\n",
+ "\n",
+ "\n",
+ "class CurriculumTierSampler(torch.utils.data.Sampler[int]):\n",
+ " \"\"\"Reactive sampler: yields dataset indices from the curriculum's\n",
+ " *current* tier, re-checked on every yield.\n",
+ "\n",
+ " The usual approach — pre-materialising a fixed dataset from the\n",
+ " curriculum — freezes the training data to whatever tier the curriculum\n",
+ " started in, because `curriculum.next_task()` never calls\n",
+ " `record_result` and so `_maybe_promote` can't fire during the draw.\n",
+ " Here the dataset is a *superset* of all tiers (see\n",
+ " make_full_curriculum_dataset) and this sampler picks indices only\n",
+ " from rows whose `difficulty` matches the curriculum's current tier.\n",
+ " When `env_reward` promotes the curriculum mid-training, the very\n",
+ " next yield flips onto the new tier's index pool.\n",
+ "\n",
+ " Implementation notes:\n",
+ " * `__len__` is required for HF Trainer's max_steps math. We return\n",
+ " `num_samples`, which the caller sizes as\n",
+ " `max_steps * pdtbs * grad_accum * buffer`.\n",
+ " * Index pools are built once at construction from the dataset's\n",
+ " `difficulty` column; only the active pool + cursor are mutated\n",
+ " during iteration, which keeps per-step overhead O(1).\n",
+ " * If the curriculum's current tier has no tasks in the dataset\n",
+ " (mis-configured YAML), we fall back to the union of all tiers so\n",
+ " training doesn't deadlock.\n",
+ " \"\"\"\n",
+ "\n",
+ " def __init__(self, dataset, curriculum, num_samples: int) -> None:\n",
+ " self.dataset = dataset\n",
+ " self.curriculum = curriculum\n",
+ " self.num_samples = int(num_samples)\n",
+ " difficulties = list(dataset[\"difficulty\"])\n",
+ " self._pools: dict[str, list[int]] = defaultdict(list)\n",
+ " for idx, diff in enumerate(difficulties):\n",
+ " self._pools[diff].append(idx)\n",
+ " self._all_indices = list(range(len(difficulties)))\n",
+ " log.info(\n",
+ " \"CurriculumTierSampler: num_samples=%d, tier sizes=%s\",\n",
+ " self.num_samples,\n",
+ " {k: len(v) for k, v in self._pools.items()},\n",
+ " )\n",
+ "\n",
+ " def _pool_for(self, tier_value: str) -> list[int]:\n",
+ " pool = self._pools.get(tier_value) or self._all_indices\n",
+ " return list(pool)\n",
+ "\n",
+ " def __len__(self) -> int:\n",
+ " return self.num_samples\n",
+ "\n",
+ " def __iter__(self):\n",
+ " count = 0\n",
+ " cur_tier: str | None = None\n",
+ " pool: list[int] = []\n",
+ " cursor = 0\n",
+ " while count < self.num_samples:\n",
+ " new_tier = self.curriculum.current_difficulty.value\n",
+ " if new_tier != cur_tier:\n",
+ " cur_tier = new_tier\n",
+ " pool = self._pool_for(cur_tier)\n",
+ " random.shuffle(pool)\n",
+ " cursor = 0\n",
+ " if cursor >= len(pool):\n",
+ " random.shuffle(pool)\n",
+ " cursor = 0\n",
+ " yield pool[cursor]\n",
+ " cursor += 1\n",
+ " count += 1\n",
+ "\n",
+ "\n",
+ "class CurriculumPromotionCallback(TrainerCallback):\n",
+ " \"\"\"Observability: log when the curriculum promotes.\"\"\"\n",
+ "\n",
+ " def __init__(self, curriculum) -> None:\n",
+ " self.curriculum = curriculum\n",
+ " self._last_tier: str | None = None\n",
+ "\n",
+ " def on_step_end(self, args, state, control, **kw):\n",
+ " tier = self.curriculum.current_difficulty.value\n",
+ " if tier != self._last_tier:\n",
+ " if self._last_tier is not None:\n",
+ " log.info(\n",
+ " \"[CurriculumPromotionCallback] tier promoted %s -> %s at step %d\",\n",
+ " self._last_tier, tier, state.global_step,\n",
+ " )\n",
+ " self._last_tier = tier\n",
+ "\n",
+ "\n",
+ "class EnvHealthCallback(TrainerCallback):\n",
+ " \"\"\"Log env health counters + drain them every N steps.\n",
+ "\n",
+ " Also provides an early-warning bail-out: if every scoring call in a\n",
+ " window came back as timeout/conn_err, the hosted env is probably down\n",
+ " and we want to stop training rather than polluting the adapter with\n",
+ " zero-reward updates.\n",
+ " \"\"\"\n",
+ "\n",
+ " def __init__(self, env_client: EnvRewardClient, probe_every: int = 50,\n",
+ " fail_threshold: int = 32) -> None:\n",
+ " self.env = env_client\n",
+ " self.probe_every = probe_every\n",
+ " self.fail_threshold = fail_threshold\n",
+ "\n",
+ " def on_log(self, args, state, control, logs=None, **kw):\n",
+ " if state.global_step == 0 or state.global_step % self.probe_every != 0:\n",
+ " return\n",
+ " counters = self.env.drain_counters()\n",
+ " log.info(\"[env counters] step=%d %s\", state.global_step, counters)\n",
+ " if counters[\"timeout\"] + counters[\"conn_err\"] >= self.fail_threshold:\n",
+ " log.error(\"[EnvHealthCallback] %s at step %d — stopping training.\",\n",
+ " counters, state.global_step)\n",
+ " control.should_training_stop = True\n",
+ "\n",
+ "\n",
+ "class ProgressLogCallback(TrainerCallback):\n",
+ " \"\"\"Mirror TRL's scalar logs (loss, reward, kl, ...) to the Python logger.\n",
+ "\n",
+ " TRL writes its scalars via `Trainer.log`, which goes to `state.log_history`\n",
+ " and to whichever integrations are listed in `report_to`. With\n",
+ " `report_to=\"none\"` there is no on-screen feedback during training — just\n",
+ " a tqdm bar that Jupyter sometimes hides. This callback hooks `on_log` and\n",
+ " forwards the scalar dict through `log.info` every step, plus a heartbeat\n",
+ " line on `on_step_end` every `heartbeat_every` steps so you always see\n",
+ " *something* even when TRL hasn't emitted a scalar yet (e.g. the opening\n",
+ " generation phase before the first optimizer step).\n",
+ " \"\"\"\n",
+ "\n",
+ " def __init__(self, heartbeat_every: int = 1, run_label: str = \"\") -> None:\n",
+ " self.heartbeat_every = max(1, int(heartbeat_every))\n",
+ " self.run_label = run_label\n",
+ " self._t_start: float | None = None\n",
+ " self._t_last: float | None = None\n",
+ "\n",
+ " def on_train_begin(self, args, state, control, **kw):\n",
+ " self._t_start = time.time()\n",
+ " self._t_last = self._t_start\n",
+ " log.info(\"%s train_begin | max_steps=%s\", self._tag(), args.max_steps)\n",
+ "\n",
+ " def on_step_end(self, args, state, control, **kw):\n",
+ " if state.global_step % self.heartbeat_every != 0:\n",
+ " return\n",
+ " now = time.time()\n",
+ " dt = now - (self._t_last or now)\n",
+ " self._t_last = now\n",
+ " log.info(\"%s step %d/%s (+%.1fs)\",\n",
+ " self._tag(), state.global_step, args.max_steps, dt)\n",
+ "\n",
+ " def on_log(self, args, state, control, logs=None, **kw):\n",
+ " if not logs:\n",
+ " return\n",
+ " # Drop noisy / non-scalar fields and round for legibility.\n",
+ " scalars = {k: (round(v, 4) if isinstance(v, float) else v)\n",
+ " for k, v in logs.items()\n",
+ " if isinstance(v, (int, float))}\n",
+ " if scalars:\n",
+ " log.info(\"%s log step=%d %s\",\n",
+ " self._tag(), state.global_step, scalars)\n",
+ "\n",
+ " def on_train_end(self, args, state, control, **kw):\n",
+ " elapsed = time.time() - (self._t_start or time.time())\n",
+ " log.info(\"%s train_end | global_step=%d elapsed=%.1fs\",\n",
+ " self._tag(), state.global_step, elapsed)\n",
+ "\n",
+ " def _tag(self) -> str:\n",
+ " return f\"[{self.run_label}]\" if self.run_label else \"[train]\"\n",
+ "\n",
+ "\n",
+ "def build_trainer(model, tokenizer, train_ds, eval_ds,\n",
+ " reward_funcs: Iterable[Callable],\n",
+ " cfg: TrainingConfig, *,\n",
+ " output_dir: str, run_name: str,\n",
+ " use_fp16: bool, use_bf16: bool,\n",
+ " max_steps: int | None = None,\n",
+ " save_strategy: str = \"steps\",\n",
+ " eval_strategy: str = \"steps\",\n",
+ " curriculum=None,\n",
+ " num_samples: int | None = None) -> GRPOTrainer:\n",
+ " \"\"\"Assemble a GRPOTrainer from a typed TrainingConfig.\n",
+ "\n",
+ " When `curriculum` is supplied, the trainer's train sampler is\n",
+ " replaced with a CurriculumTierSampler that yields dataset indices\n",
+ " from the curriculum's current tier — reactive to promotion. The\n",
+ " dataset passed in as `train_ds` must carry a `difficulty` column\n",
+ " (use make_full_curriculum_dataset). `num_samples` sizes the\n",
+ " sampler; callers typically set it to\n",
+ " `max_steps * per_device_train_batch_size * gradient_accumulation_steps * 1.2`.\n",
+ " \"\"\"\n",
+ " args = GRPOConfig(\n",
+ " output_dir=output_dir, run_name=run_name,\n",
+ " num_generations=cfg.num_generations, beta=cfg.beta,\n",
+ " temperature=cfg.temperature, top_p=cfg.top_p,\n",
+ " max_prompt_length=cfg.max_prompt_length,\n",
+ " max_completion_length=cfg.max_completion_length,\n",
+ " learning_rate=cfg.learning_rate, lr_scheduler_type=\"cosine\",\n",
+ " optim=\"adamw_8bit\", weight_decay=0.0, max_grad_norm=1.0,\n",
+ " warmup_ratio=cfg.warmup_ratio,\n",
+ " per_device_train_batch_size=cfg.per_device_train_batch_size,\n",
+ " # TRL's GRPOConfig asserts per_device_eval_batch_size * num_processes is\n",
+ " # divisible by num_generations (one eval prompt produces G completions;\n",
+ " # anything smaller can't form a group). Defaulting it to num_generations\n",
+ " # is the smallest value that satisfies the check on a single-process\n",
+ " # setup — matches how GRPOTrainer batches eval internally.\n",
+ " per_device_eval_batch_size=cfg.num_generations,\n",
+ " gradient_accumulation_steps=cfg.gradient_accumulation_steps,\n",
+ " num_train_epochs=cfg.num_train_epochs,\n",
+ " max_steps=(max_steps if max_steps is not None else -1),\n",
+ " fp16=use_fp16, bf16=use_bf16,\n",
+ " # Mid-training eval is disabled for GRPO: TRL's prediction_step\n",
+ " # calls _generate_and_score_completions, which reshapes rewards\n",
+ " # as (-1, num_generations). At eval time the effective per-prompt\n",
+ " # completion count can differ from num_generations, so the view\n",
+ " # errors with \"shape '[-1, G]' is invalid for input of size N\".\n",
+ " # The notebook runs its own before/after eval via evaluate_single_step,\n",
+ " # so we lose nothing by skipping TRL's eval loop here.\n",
+ " eval_strategy=eval_strategy, eval_steps=cfg.eval_steps,\n",
+ " save_strategy=save_strategy, save_steps=cfg.save_steps,\n",
+ " save_total_limit=cfg.save_total_limit,\n",
+ " logging_steps=1, report_to=\"none\", seed=cfg.seed,\n",
+ " remove_unused_columns=False, # CRITICAL: preserves task_id for reward_fns\n",
+ " disable_tqdm=False,\n",
+ " )\n",
+ " callbacks = [\n",
+ " EnvHealthCallback(ENV_CLIENT),\n",
+ " ProgressLogCallback(heartbeat_every=1, run_label=run_name),\n",
+ " ]\n",
+ " if curriculum is not None:\n",
+ " callbacks.append(CurriculumPromotionCallback(curriculum))\n",
+ "\n",
+ " trainer = GRPOTrainer(\n",
+ " model=model, processing_class=tokenizer,\n",
+ " reward_funcs=list(reward_funcs),\n",
+ " reward_weights=[1.0, 0.15, 0.05],\n",
+ " args=args, train_dataset=train_ds, eval_dataset=eval_ds,\n",
+ " callbacks=callbacks,\n",
+ " )\n",
+ "\n",
+ " if curriculum is not None:\n",
+ " if num_samples is None:\n",
+ " raise ValueError(\"num_samples is required when curriculum is set\")\n",
+ " if \"difficulty\" not in train_ds.column_names:\n",
+ " raise ValueError(\n",
+ " \"curriculum-driven training needs a `difficulty` column on \"\n",
+ " \"train_ds — use make_full_curriculum_dataset().\"\n",
+ " )\n",
+ " _sampler = CurriculumTierSampler(\n",
+ " dataset=train_ds, curriculum=curriculum, num_samples=num_samples,\n",
+ " )\n",
+ " # Monkey-patch the trainer's sampler factory so the DataLoader,\n",
+ " # which is built lazily inside trainer.train(), pulls from our\n",
+ " # tier-reactive sampler instead of the default RandomSampler.\n",
+ " # Using MethodType keeps `self` binding correct on the bound call.\n",
+ " import types\n",
+ " def _curriculum_train_sampler(self):\n",
+ " return _sampler\n",
+ " trainer._get_train_sampler = types.MethodType(\n",
+ " _curriculum_train_sampler, trainer,\n",
+ " )\n",
+ "\n",
+ " return trainer\n",
+ "\n",
+ "\n",
+ "log.info(\"GRPOTrainer factory ready.\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5a29cad6",
+ "metadata": {
+ "id": "5a29cad6"
+ },
+ "source": [
+ "## 12 · Optuna hyperparameter search\n",
+ "\n",
+ "Six short trials (30 GRPO steps each, 80-row training subset). Each trial returns the mean **env reward on the held-out val set** — the one metric we actually want to maximize.\n",
+ "\n",
+ "- **Resumable**: sqlite storage + `load_if_exists=True`. A dropped Colab session picks up where it left off.\n",
+ "- **Pruned**: `MedianPruner` — kill trials that are trending below the median after 10 steps.\n",
+ "- **Search space** chosen to bracket the GRPO-on-3B defaults reported in the DeepSeek-Math paper."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "0b184374",
+ "metadata": {
+ "id": "0b184374",
+ "outputId": "11dc0d5c-9899-4aa1-ee6d-749e14ea3a04",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "[I 2026-04-25 14:56:34,668] A new study created in RDB with name: aws-rl-grpo-search\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Optuna study 'aws-rl-grpo-search': 0 completed, 4 remaining.\n",
+ "14:56:34 | INFO | grpo | [trial 0] starting | cfg={'lr': 4.328450221293881e-06, 'beta': 0.09507143064099162, 'temp': 0.9195981825434215}\n",
+ "14:56:34 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "14:56:34 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "14:56:34 | INFO | grpo | [trial 0] loading SFT policy (4-bit Qwen2.5-Coder-3B)...\n",
+ "==((====))== Unsloth 2026.4.8: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n",
+ "14:56:52 | INFO | grpo | [trial 0] policy loaded in 17.9s\n",
+ "14:56:52 | INFO | grpo | CurriculumTierSampler: num_samples=192, tier sizes={'warmup': 2, 'beginner': 2, 'intermediate': 2, 'advanced': 3, 'expert': 3}\n",
+ "14:56:52 | INFO | grpo | [trial 0] starting train() for 10 steps...\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 12 | Num Epochs = 5 | Total steps = 10\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 7,372,800 of 3,093,311,488 (0.24% trained)\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:56:55 | INFO | grpo | [optuna-trial-0] train_begin | max_steps=10\n",
+ "Unsloth: Will smartly offload gradients to save VRAM!\n",
+ "14:59:00 | INFO | server.services.curriculum | Episode 1: task=33 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "14:59:00 | INFO | server.services.curriculum | Episode 2: task=37 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "14:59:43 | INFO | grpo | [optuna-trial-0] step 1/10 (+168.1s)\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [10/10 16:25, Epoch 5/5]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Step | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ "
"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "14:59:43 | INFO | grpo | [optuna-trial-0] log step=1 {'loss': -0.0219, 'grad_norm': 0.2647, 'learning_rate': 0.0, 'num_tokens': 3329.0, 'completions/mean_length': 42.0625, 'completions/min_length': 24.0, 'completions/max_length': 54.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 42.0625, 'completions/min_terminated_length': 24.0, 'completions/max_terminated_length': 54.0, 'rewards/env_reward/mean': 0.9375, 'rewards/env_reward/std': 0.25, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.9375, 'reward_std': 0.1768, 'frac_reward_zero_std': 0.5, 'completion_length': 42.0625, 'kl': 0.1109, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 0.6667}\n",
+ "15:01:26 | INFO | server.services.curriculum | Loaded 25 beginner tasks total\n",
+ "15:01:26 | INFO | server.services.curriculum | PROMOTED from warmup to beginner (rate=1.00, FAST-TRACK)\n",
+ "15:01:26 | INFO | server.services.curriculum | Episode 3: task=33 difficulty=warmup achieved=True tier_rate=0.00\n",
+ "15:01:26 | INFO | server.services.curriculum | Episode 4: task=37 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:01:29 | INFO | grpo | [optuna-trial-0] step 2/10 (+106.0s)\n",
+ "15:01:29 | INFO | grpo | [CurriculumPromotionCallback] tier promoted warmup -> beginner at step 2\n",
+ "15:01:29 | INFO | grpo | [optuna-trial-0] log step=2 {'loss': -0.009, 'grad_norm': 0.5444, 'learning_rate': 0.0, 'num_tokens': 6695.0, 'completions/mean_length': 44.375, 'completions/min_length': 33.0, 'completions/max_length': 64.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 44.375, 'completions/min_terminated_length': 33.0, 'completions/max_terminated_length': 64.0, 'rewards/env_reward/mean': 0.75, 'rewards/env_reward/std': 0.4472, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.75, 'reward_std': 0.4356, 'frac_reward_zero_std': 0.0, 'completion_length': 42.375, 'kl': 0.0906, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 1.0}\n",
+ "15:02:10 | INFO | server.services.curriculum | Episode 5: task=8 difficulty=beginner achieved=True tier_rate=1.00\n",
+ "15:02:10 | INFO | server.services.curriculum | Loaded 25 intermediate tasks total\n",
+ "15:02:10 | INFO | server.services.curriculum | PROMOTED from beginner to intermediate (rate=1.00, FAST-TRACK)\n",
+ "15:02:10 | INFO | server.services.curriculum | Episode 6: task=53 difficulty=beginner achieved=True tier_rate=0.00\n",
+ "15:02:13 | INFO | grpo | [optuna-trial-0] step 3/10 (+44.4s)\n",
+ "15:02:13 | INFO | grpo | [CurriculumPromotionCallback] tier promoted beginner -> intermediate at step 3\n",
+ "15:02:13 | INFO | grpo | [optuna-trial-0] log step=3 {'loss': -0.1569, 'grad_norm': 0.1853, 'learning_rate': 0.0, 'completion_length': 48.25, 'kl': 0.1154, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 10256.0, 'completions/mean_length': 51.5625, 'completions/min_length': 29.0, 'completions/max_length': 72.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 51.5625, 'completions/min_terminated_length': 29.0, 'completions/max_terminated_length': 72.0, 'rewards/env_reward/mean': 0.875, 'rewards/env_reward/std': 0.3416, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.875, 'reward_std': 0.2315, 'frac_reward_zero_std': 0.5, 'epoch': 1.6667}\n",
+ "15:02:16 | INFO | grpo | [optuna-trial-0] step 4/10 (+3.1s)\n",
+ "15:02:17 | INFO | grpo | [optuna-trial-0] log step=4 {'loss': 0.2385, 'grad_norm': 0.3908, 'learning_rate': 0.0, 'completion_length': 53.0, 'kl': 0.1076, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 2.0}\n",
+ "15:03:37 | INFO | server.services.curriculum | Episode 7: task=11 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:03:37 | INFO | server.services.curriculum | Episode 8: task=84 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:03:45 | INFO | grpo | [optuna-trial-0] step 5/10 (+88.1s)\n",
+ "15:03:45 | INFO | grpo | [optuna-trial-0] log step=5 {'loss': -0.0531, 'grad_norm': 0.3091, 'learning_rate': 0.0, 'num_tokens': 14343.0, 'completions/mean_length': 71.4375, 'completions/min_length': 47.0, 'completions/max_length': 124.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 71.4375, 'completions/min_terminated_length': 47.0, 'completions/max_terminated_length': 124.0, 'rewards/env_reward/mean': 0.8125, 'rewards/env_reward/std': 0.4031, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.8125, 'reward_std': 0.4082, 'frac_reward_zero_std': 0.0, 'completion_length': 71.4375, 'kl': 0.2469, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 2.6667}\n",
+ "15:04:56 | INFO | server.services.curriculum | Loaded 25 advanced tasks total\n",
+ "15:04:56 | INFO | server.services.curriculum | PROMOTED from intermediate to advanced (rate=1.00, FAST-TRACK)\n",
+ "15:04:56 | INFO | server.services.curriculum | Episode 9: task=84 difficulty=intermediate achieved=True tier_rate=0.00\n",
+ "15:04:56 | INFO | server.services.curriculum | Episode 10: task=11 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:04:59 | INFO | grpo | [optuna-trial-0] step 6/10 (+74.5s)\n",
+ "15:04:59 | INFO | grpo | [CurriculumPromotionCallback] tier promoted intermediate -> advanced at step 6\n",
+ "15:04:59 | INFO | grpo | [optuna-trial-0] log step=6 {'loss': 0.0077, 'grad_norm': 0.4035, 'learning_rate': 0.0, 'num_tokens': 18336.0, 'completions/mean_length': 65.5625, 'completions/min_length': 45.0, 'completions/max_length': 102.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 65.5625, 'completions/min_terminated_length': 45.0, 'completions/max_terminated_length': 102.0, 'rewards/env_reward/mean': 0.875, 'rewards/env_reward/std': 0.3416, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9985, 'rewards/length_reward/std': 0.0058, 'reward': 2.8735, 'reward_std': 0.353, 'frac_reward_zero_std': 0.0, 'completion_length': 68.375, 'kl': 0.2219, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 3.0}\n",
+ "15:08:41 | INFO | server.services.curriculum | Episode 11: task=95 difficulty=advanced achieved=True tier_rate=1.00\n",
+ "15:08:41 | INFO | server.services.curriculum | Episode 12: task=97 difficulty=advanced achieved=False tier_rate=0.61\n",
+ "15:08:41 | INFO | server.services.curriculum | Episode 13: task=96 difficulty=advanced achieved=False tier_rate=0.42\n",
+ "15:08:45 | INFO | grpo | [optuna-trial-0] step 7/10 (+226.0s)\n",
+ "15:08:45 | INFO | grpo | [optuna-trial-0] log step=7 {'loss': -0.1714, 'grad_norm': 0.2604, 'learning_rate': 0.0, 'completion_length': 73.0, 'kl': 0.2541, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 23311.0, 'completions/mean_length': 85.5625, 'completions/min_length': 41.0, 'completions/max_length': 135.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 85.5625, 'completions/min_terminated_length': 41.0, 'completions/max_terminated_length': 135.0, 'rewards/env_reward/mean': 0.6746, 'rewards/env_reward/std': 0.2689, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9403, 'rewards/length_reward/std': 0.0799, 'reward': 2.6149, 'reward_std': 0.3057, 'frac_reward_zero_std': 0.0, 'epoch': 3.6667}\n",
+ "15:08:49 | INFO | grpo | [optuna-trial-0] step 8/10 (+4.1s)\n",
+ "15:08:49 | INFO | grpo | [optuna-trial-0] log step=8 {'loss': 0.5884, 'grad_norm': 0.2926, 'learning_rate': 0.0, 'completion_length': 87.875, 'kl': 0.1595, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.0}\n",
+ "15:12:13 | INFO | server.services.curriculum | Episode 14: task=96 difficulty=advanced achieved=False tier_rate=0.31\n",
+ "15:12:13 | INFO | server.services.curriculum | Episode 15: task=97 difficulty=advanced achieved=False tier_rate=0.23\n",
+ "15:12:13 | INFO | server.services.curriculum | Episode 16: task=95 difficulty=advanced achieved=True tier_rate=0.40\n",
+ "15:12:21 | INFO | grpo | [optuna-trial-0] step 9/10 (+212.1s)\n",
+ "15:12:21 | INFO | grpo | [optuna-trial-0] log step=9 {'loss': 0.0684, 'grad_norm': 0.2102, 'learning_rate': 0.0, 'num_tokens': 28312.0, 'completions/mean_length': 87.1875, 'completions/min_length': 50.0, 'completions/max_length': 114.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 87.1875, 'completions/min_terminated_length': 50.0, 'completions/max_terminated_length': 114.0, 'rewards/env_reward/mean': 0.6315, 'rewards/env_reward/std': 0.2486, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9085, 'rewards/length_reward/std': 0.0836, 'reward': 2.5399, 'reward_std': 0.234, 'frac_reward_zero_std': 0.0, 'completion_length': 87.1875, 'kl': 0.1919, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.6667}\n",
+ "15:16:04 | INFO | server.services.curriculum | Episode 17: task=96 difficulty=advanced achieved=False tier_rate=0.32\n",
+ "15:16:04 | INFO | server.services.curriculum | Episode 18: task=97 difficulty=advanced achieved=False tier_rate=0.26\n",
+ "15:16:04 | INFO | server.services.curriculum | Task 95 GRADUATED (rate=1.00) — scheduling spaced repetition\n",
+ "15:16:04 | INFO | server.services.curriculum | Episode 19: task=95 difficulty=advanced achieved=True tier_rate=0.40\n",
+ "15:16:09 | INFO | grpo | [optuna-trial-0] step 10/10 (+227.5s)\n",
+ "15:16:09 | INFO | grpo | [optuna-trial-0] log step=10 {'loss': 0.1819, 'grad_norm': 0.255, 'learning_rate': 0.0, 'num_tokens': 33437.0, 'completions/mean_length': 95.1875, 'completions/min_length': 52.0, 'completions/max_length': 157.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 95.1875, 'completions/min_terminated_length': 52.0, 'completions/max_terminated_length': 157.0, 'rewards/env_reward/mean': 0.6533, 'rewards/env_reward/std': 0.2474, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9344, 'rewards/length_reward/std': 0.079, 'reward': 2.5877, 'reward_std': 0.2937, 'frac_reward_zero_std': 0.0, 'completion_length': 99.0, 'kl': 0.1798, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 5.0}\n",
+ "15:16:09 | INFO | grpo | [optuna-trial-0] log step=10 {'train_runtime': 1153.87, 'train_samples_per_second': 0.139, 'train_steps_per_second': 0.009, 'total_flos': 0.0, 'train_loss': 0.0673, 'epoch': 5.0}\n",
+ "15:16:09 | INFO | grpo | [optuna-trial-0] train_end | global_step=10 elapsed=1153.9s\n",
+ "15:16:10 | INFO | grpo | [trial 0] train() finished in 1157.6s\n",
+ "15:16:10 | INFO | grpo | [trial 0] running single-step eval on 12 tasks...\n",
+ "15:17:24 | INFO | grpo | [trial 0] eval finished in 74.1s\n",
+ "15:17:24 | INFO | grpo | [trial 0] DONE | env_reward_mean=0.4727 success=0.250 tier=advanced graduated=1\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "[I 2026-04-25 15:17:27,865] Trial 0 finished with value: 0.4726666666666667 and parameters: {'learning_rate': 4.328450221293881e-06, 'beta': 0.09507143064099162, 'temperature': 0.9195981825434215}. Best is trial 0 with value: 0.4726666666666667.\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "15:17:27 | INFO | grpo | [trial 1] starting | cfg={'lr': 1.0401663679887314e-05, 'beta': 0.015601864044243652, 'temp': 0.7467983561008608}\n",
+ "15:17:27 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "15:17:27 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "15:17:27 | INFO | grpo | [trial 1] loading SFT policy (4-bit Qwen2.5-Coder-3B)...\n",
+ "==((====))== Unsloth 2026.4.8: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n",
+ "15:17:46 | INFO | grpo | [trial 1] policy loaded in 18.6s\n",
+ "15:17:46 | INFO | grpo | CurriculumTierSampler: num_samples=192, tier sizes={'warmup': 2, 'beginner': 2, 'intermediate': 2, 'advanced': 3, 'expert': 3}\n",
+ "15:17:46 | INFO | grpo | [trial 1] starting train() for 10 steps...\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 12 | Num Epochs = 5 | Total steps = 10\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 7,372,800 of 3,093,311,488 (0.24% trained)\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "15:17:51 | INFO | grpo | [optuna-trial-1] train_begin | max_steps=10\n",
+ "Unsloth: Will smartly offload gradients to save VRAM!\n",
+ "15:19:25 | INFO | server.services.curriculum | Episode 1: task=33 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:19:25 | INFO | server.services.curriculum | Episode 2: task=37 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:19:35 | INFO | grpo | [optuna-trial-1] step 1/10 (+104.0s)\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [10/10 15:26, Epoch 5/5]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Step | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ "
"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "15:19:35 | INFO | grpo | [optuna-trial-1] log step=1 {'loss': -0.0156, 'grad_norm': 0.4741, 'learning_rate': 0.0, 'num_tokens': 3281.0, 'completions/mean_length': 39.0625, 'completions/min_length': 24.0, 'completions/max_length': 52.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 39.0625, 'completions/min_terminated_length': 24.0, 'completions/max_terminated_length': 52.0, 'rewards/env_reward/mean': 0.8125, 'rewards/env_reward/std': 0.4031, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.8125, 'reward_std': 0.4082, 'frac_reward_zero_std': 0.0, 'completion_length': 39.0625, 'kl': 0.1399, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 0.6667}\n",
+ "15:20:00 | INFO | server.services.curriculum | Loaded 25 beginner tasks total\n",
+ "15:20:00 | INFO | server.services.curriculum | PROMOTED from warmup to beginner (rate=1.00, FAST-TRACK)\n",
+ "15:20:00 | INFO | server.services.curriculum | Episode 3: task=37 difficulty=warmup achieved=True tier_rate=0.00\n",
+ "15:20:00 | INFO | server.services.curriculum | Episode 4: task=33 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:20:03 | INFO | grpo | [optuna-trial-1] step 2/10 (+28.3s)\n",
+ "15:20:03 | INFO | grpo | [CurriculumPromotionCallback] tier promoted warmup -> beginner at step 2\n",
+ "15:20:03 | INFO | grpo | [optuna-trial-1] log step=2 {'loss': -0.1774, 'grad_norm': 0.353, 'learning_rate': 0.0, 'num_tokens': 6596.0, 'completions/mean_length': 41.1875, 'completions/min_length': 28.0, 'completions/max_length': 64.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 41.1875, 'completions/min_terminated_length': 28.0, 'completions/max_terminated_length': 64.0, 'rewards/env_reward/mean': 0.8125, 'rewards/env_reward/std': 0.4031, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.8125, 'reward_std': 0.4082, 'frac_reward_zero_std': 0.0, 'completion_length': 43.625, 'kl': 0.1407, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 1.0}\n",
+ "15:20:42 | INFO | server.services.curriculum | Episode 5: task=8 difficulty=beginner achieved=True tier_rate=1.00\n",
+ "15:20:42 | INFO | server.services.curriculum | Loaded 25 intermediate tasks total\n",
+ "15:20:42 | INFO | server.services.curriculum | PROMOTED from beginner to intermediate (rate=1.00, FAST-TRACK)\n",
+ "15:20:42 | INFO | server.services.curriculum | Episode 6: task=53 difficulty=beginner achieved=True tier_rate=0.00\n",
+ "15:20:45 | INFO | grpo | [optuna-trial-1] step 3/10 (+41.9s)\n",
+ "15:20:45 | INFO | grpo | [CurriculumPromotionCallback] tier promoted beginner -> intermediate at step 3\n",
+ "15:20:45 | INFO | grpo | [optuna-trial-1] log step=3 {'loss': 0.1491, 'grad_norm': 0.4402, 'learning_rate': 0.0, 'completion_length': 42.3125, 'kl': 0.1222, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 10133.0, 'completions/mean_length': 50.0625, 'completions/min_length': 32.0, 'completions/max_length': 71.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 50.0625, 'completions/min_terminated_length': 32.0, 'completions/max_terminated_length': 71.0, 'rewards/env_reward/mean': 0.9375, 'rewards/env_reward/std': 0.25, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.9375, 'reward_std': 0.1768, 'frac_reward_zero_std': 0.5, 'epoch': 1.6667}\n",
+ "15:20:48 | INFO | grpo | [optuna-trial-1] step 4/10 (+3.1s)\n",
+ "15:20:48 | INFO | grpo | [optuna-trial-1] log step=4 {'loss': -0.1253, 'grad_norm': 0.0936, 'learning_rate': 0.0, 'completion_length': 54.25, 'kl': 0.0941, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 2.0}\n",
+ "15:22:06 | INFO | server.services.curriculum | Episode 7: task=84 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:22:06 | INFO | server.services.curriculum | Episode 8: task=11 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:22:13 | INFO | grpo | [optuna-trial-1] step 5/10 (+85.2s)\n",
+ "15:22:13 | INFO | grpo | [optuna-trial-1] log step=5 {'loss': 0.0238, 'grad_norm': 0.2486, 'learning_rate': 0.0, 'num_tokens': 14299.0, 'completions/mean_length': 76.375, 'completions/min_length': 41.0, 'completions/max_length': 120.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 76.375, 'completions/min_terminated_length': 41.0, 'completions/max_terminated_length': 120.0, 'rewards/env_reward/mean': 0.75, 'rewards/env_reward/std': 0.4472, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.75, 'reward_std': 0.2673, 'frac_reward_zero_std': 0.5, 'completion_length': 76.375, 'kl': 0.2785, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 2.6667}\n",
+ "15:23:23 | INFO | server.services.curriculum | Loaded 25 advanced tasks total\n",
+ "15:23:23 | INFO | server.services.curriculum | PROMOTED from intermediate to advanced (rate=1.00, FAST-TRACK)\n",
+ "15:23:23 | INFO | server.services.curriculum | Episode 9: task=84 difficulty=intermediate achieved=True tier_rate=0.00\n",
+ "15:23:23 | INFO | server.services.curriculum | Episode 10: task=11 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:23:27 | INFO | grpo | [optuna-trial-1] step 6/10 (+73.4s)\n",
+ "15:23:27 | INFO | grpo | [CurriculumPromotionCallback] tier promoted intermediate -> advanced at step 6\n",
+ "15:23:27 | INFO | grpo | [optuna-trial-1] log step=6 {'loss': 0.4783, 'grad_norm': 0.742, 'learning_rate': 0.0, 'num_tokens': 18486.0, 'completions/mean_length': 77.6875, 'completions/min_length': 39.0, 'completions/max_length': 149.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 77.6875, 'completions/min_terminated_length': 39.0, 'completions/max_terminated_length': 149.0, 'rewards/env_reward/mean': 0.875, 'rewards/env_reward/std': 0.3416, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.875, 'reward_std': 0.3536, 'frac_reward_zero_std': 0.0, 'completion_length': 71.875, 'kl': 0.2911, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 3.0}\n",
+ "15:27:13 | INFO | server.services.curriculum | Episode 11: task=95 difficulty=advanced achieved=True tier_rate=1.00\n",
+ "15:27:13 | INFO | server.services.curriculum | Episode 12: task=96 difficulty=advanced achieved=False tier_rate=0.61\n",
+ "15:27:13 | INFO | server.services.curriculum | Episode 13: task=97 difficulty=advanced achieved=False tier_rate=0.42\n",
+ "15:27:17 | INFO | grpo | [optuna-trial-1] step 7/10 (+230.2s)\n",
+ "15:27:17 | INFO | grpo | [optuna-trial-1] log step=7 {'loss': -0.3887, 'grad_norm': 0.1856, 'learning_rate': 0.0, 'completion_length': 82.9375, 'kl': 0.2783, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 23490.0, 'completions/mean_length': 87.625, 'completions/min_length': 50.0, 'completions/max_length': 138.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 87.625, 'completions/min_terminated_length': 50.0, 'completions/max_terminated_length': 138.0, 'rewards/env_reward/mean': 0.571, 'rewards/env_reward/std': 0.2182, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9311, 'rewards/length_reward/std': 0.0807, 'reward': 2.5022, 'reward_std': 0.2092, 'frac_reward_zero_std': 0.0, 'epoch': 3.6667}\n",
+ "15:27:21 | INFO | grpo | [optuna-trial-1] step 8/10 (+4.1s)\n",
+ "15:27:21 | INFO | grpo | [optuna-trial-1] log step=8 {'loss': 0.4028, 'grad_norm': 0.2385, 'learning_rate': 0.0, 'completion_length': 92.875, 'kl': 0.1724, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.0}\n",
+ "15:31:04 | INFO | server.services.curriculum | Episode 14: task=97 difficulty=advanced achieved=False tier_rate=0.31\n",
+ "15:31:04 | INFO | server.services.curriculum | Episode 15: task=95 difficulty=advanced achieved=True tier_rate=0.47\n",
+ "15:31:04 | INFO | server.services.curriculum | Episode 16: task=96 difficulty=advanced achieved=False tier_rate=0.37\n",
+ "15:31:13 | INFO | grpo | [optuna-trial-1] step 9/10 (+231.8s)\n",
+ "15:31:13 | INFO | grpo | [optuna-trial-1] log step=9 {'loss': 0.0169, 'grad_norm': 0.1892, 'learning_rate': 0.0, 'num_tokens': 28516.0, 'completions/mean_length': 88.75, 'completions/min_length': 52.0, 'completions/max_length': 137.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 88.75, 'completions/min_terminated_length': 52.0, 'completions/max_terminated_length': 137.0, 'rewards/env_reward/mean': 0.6006, 'rewards/env_reward/std': 0.2428, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9484, 'rewards/length_reward/std': 0.0792, 'reward': 2.5491, 'reward_std': 0.2824, 'frac_reward_zero_std': 0.0, 'completion_length': 88.75, 'kl': 0.2088, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.6667}\n",
+ "15:34:57 | INFO | server.services.curriculum | Episode 17: task=96 difficulty=advanced achieved=False tier_rate=0.29\n",
+ "15:34:57 | INFO | server.services.curriculum | Task 95 GRADUATED (rate=1.00) — scheduling spaced repetition\n",
+ "15:34:57 | INFO | server.services.curriculum | Episode 18: task=95 difficulty=advanced achieved=True tier_rate=0.43\n",
+ "15:34:57 | INFO | server.services.curriculum | Episode 19: task=97 difficulty=advanced achieved=False tier_rate=0.35\n",
+ "15:35:01 | INFO | grpo | [optuna-trial-1] step 10/10 (+228.8s)\n",
+ "15:35:01 | INFO | grpo | [optuna-trial-1] log step=10 {'loss': -0.0104, 'grad_norm': 0.341, 'learning_rate': 0.0, 'num_tokens': 33471.0, 'completions/mean_length': 84.5625, 'completions/min_length': 46.0, 'completions/max_length': 127.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 84.5625, 'completions/min_terminated_length': 46.0, 'completions/max_terminated_length': 127.0, 'rewards/env_reward/mean': 0.6242, 'rewards/env_reward/std': 0.224, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9379, 'rewards/length_reward/std': 0.0828, 'reward': 2.5621, 'reward_std': 0.2517, 'frac_reward_zero_std': 0.0, 'completion_length': 85.0, 'kl': 0.1966, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 5.0}\n",
+ "15:35:01 | INFO | grpo | [optuna-trial-1] log step=10 {'train_runtime': 1030.7831, 'train_samples_per_second': 0.155, 'train_steps_per_second': 0.01, 'total_flos': 0.0, 'train_loss': 0.0353, 'epoch': 5.0}\n",
+ "15:35:01 | INFO | grpo | [optuna-trial-1] train_end | global_step=10 elapsed=1030.8s\n",
+ "15:35:03 | INFO | grpo | [trial 1] train() finished in 1036.9s\n",
+ "15:35:03 | INFO | grpo | [trial 1] running single-step eval on 12 tasks...\n",
+ "15:36:20 | INFO | grpo | [trial 1] eval finished in 76.5s\n",
+ "15:36:20 | INFO | grpo | [trial 1] DONE | env_reward_mean=0.4687 success=0.250 tier=advanced graduated=1\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "[I 2026-04-25 15:36:23,361] Trial 1 finished with value: 0.4686666666666667 and parameters: {'learning_rate': 1.0401663679887314e-05, 'beta': 0.015601864044243652, 'temperature': 0.7467983561008608}. Best is trial 0 with value: 0.4726666666666667.\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "15:36:23 | INFO | grpo | [trial 2] starting | cfg={'lr': 1.255111517297383e-06, 'beta': 0.08661761457749352, 'temp': 0.8803345035229626}\n",
+ "15:36:23 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "15:36:23 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "15:36:23 | INFO | grpo | [trial 2] loading SFT policy (4-bit Qwen2.5-Coder-3B)...\n",
+ "==((====))== Unsloth 2026.4.8: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n",
+ "15:36:42 | INFO | grpo | [trial 2] policy loaded in 19.0s\n",
+ "15:36:42 | INFO | grpo | CurriculumTierSampler: num_samples=192, tier sizes={'warmup': 2, 'beginner': 2, 'intermediate': 2, 'advanced': 3, 'expert': 3}\n",
+ "15:36:42 | INFO | grpo | [trial 2] starting train() for 10 steps...\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 12 | Num Epochs = 5 | Total steps = 10\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 7,372,800 of 3,093,311,488 (0.24% trained)\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "15:36:46 | INFO | grpo | [optuna-trial-2] train_begin | max_steps=10\n",
+ "Unsloth: Will smartly offload gradients to save VRAM!\n",
+ "15:37:10 | INFO | server.services.curriculum | Episode 1: task=33 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:37:10 | INFO | server.services.curriculum | Episode 2: task=37 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:37:19 | INFO | grpo | [optuna-trial-2] step 1/10 (+32.4s)\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [10/10 16:00, Epoch 5/5]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Step | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ "
"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "15:37:19 | INFO | grpo | [optuna-trial-2] log step=1 {'loss': -0.0615, 'grad_norm': 0.4482, 'learning_rate': 0.0, 'num_tokens': 3294.0, 'completions/mean_length': 39.875, 'completions/min_length': 24.0, 'completions/max_length': 54.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 39.875, 'completions/min_terminated_length': 24.0, 'completions/max_terminated_length': 54.0, 'rewards/env_reward/mean': 0.875, 'rewards/env_reward/std': 0.3416, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.875, 'reward_std': 0.3536, 'frac_reward_zero_std': 0.0, 'completion_length': 39.875, 'kl': 0.1186, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 0.6667}\n",
+ "15:37:45 | INFO | server.services.curriculum | Loaded 25 beginner tasks total\n",
+ "15:37:45 | INFO | server.services.curriculum | PROMOTED from warmup to beginner (rate=1.00, FAST-TRACK)\n",
+ "15:37:45 | INFO | server.services.curriculum | Episode 3: task=37 difficulty=warmup achieved=True tier_rate=0.00\n",
+ "15:37:45 | INFO | server.services.curriculum | Episode 4: task=33 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:37:48 | INFO | grpo | [optuna-trial-2] step 2/10 (+29.2s)\n",
+ "15:37:48 | INFO | grpo | [CurriculumPromotionCallback] tier promoted warmup -> beginner at step 2\n",
+ "15:37:48 | INFO | grpo | [optuna-trial-2] log step=2 {'loss': -0.2559, 'grad_norm': 0.6131, 'learning_rate': 0.0, 'num_tokens': 6624.0, 'completions/mean_length': 42.125, 'completions/min_length': 25.0, 'completions/max_length': 61.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 42.125, 'completions/min_terminated_length': 25.0, 'completions/max_terminated_length': 61.0, 'rewards/env_reward/mean': 0.75, 'rewards/env_reward/std': 0.4472, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.75, 'reward_std': 0.4629, 'frac_reward_zero_std': 0.0, 'completion_length': 42.0, 'kl': 0.182, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 1.0}\n",
+ "15:38:32 | INFO | server.services.curriculum | Episode 5: task=53 difficulty=beginner achieved=True tier_rate=1.00\n",
+ "15:38:32 | INFO | server.services.curriculum | Loaded 25 intermediate tasks total\n",
+ "15:38:32 | INFO | server.services.curriculum | PROMOTED from beginner to intermediate (rate=1.00, FAST-TRACK)\n",
+ "15:38:32 | INFO | server.services.curriculum | Episode 6: task=8 difficulty=beginner achieved=True tier_rate=0.00\n",
+ "15:38:35 | INFO | grpo | [optuna-trial-2] step 3/10 (+47.3s)\n",
+ "15:38:35 | INFO | grpo | [CurriculumPromotionCallback] tier promoted beginner -> intermediate at step 3\n",
+ "15:38:35 | INFO | grpo | [optuna-trial-2] log step=3 {'loss': 0.2396, 'grad_norm': 0.3564, 'learning_rate': 0.0, 'completion_length': 48.1875, 'kl': 0.0953, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 10195.0, 'completions/mean_length': 52.1875, 'completions/min_length': 43.0, 'completions/max_length': 69.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 52.1875, 'completions/min_terminated_length': 43.0, 'completions/max_terminated_length': 69.0, 'rewards/env_reward/mean': 0.9375, 'rewards/env_reward/std': 0.25, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.9375, 'reward_std': 0.1768, 'frac_reward_zero_std': 0.5, 'epoch': 1.6667}\n",
+ "15:38:38 | INFO | grpo | [optuna-trial-2] step 4/10 (+3.3s)\n",
+ "15:38:38 | INFO | grpo | [optuna-trial-2] log step=4 {'loss': -0.2103, 'grad_norm': 0.1872, 'learning_rate': 0.0, 'completion_length': 50.25, 'kl': 0.117, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 2.0}\n",
+ "15:40:06 | INFO | server.services.curriculum | Episode 7: task=11 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:40:06 | INFO | server.services.curriculum | Episode 8: task=84 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:40:12 | INFO | grpo | [optuna-trial-2] step 5/10 (+93.9s)\n",
+ "15:40:12 | INFO | grpo | [optuna-trial-2] log step=5 {'loss': 0.0727, 'grad_norm': 0.2555, 'learning_rate': 0.0, 'num_tokens': 14229.0, 'completions/mean_length': 68.125, 'completions/min_length': 41.0, 'completions/max_length': 102.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 68.125, 'completions/min_terminated_length': 41.0, 'completions/max_terminated_length': 102.0, 'rewards/env_reward/mean': 0.875, 'rewards/env_reward/std': 0.3416, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.875, 'reward_std': 0.3536, 'frac_reward_zero_std': 0.0, 'completion_length': 68.125, 'kl': 0.2631, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 2.6667}\n",
+ "15:42:00 | INFO | server.services.curriculum | Loaded 25 advanced tasks total\n",
+ "15:42:00 | INFO | server.services.curriculum | PROMOTED from intermediate to advanced (rate=1.00, FAST-TRACK)\n",
+ "15:42:00 | INFO | server.services.curriculum | Episode 9: task=84 difficulty=intermediate achieved=True tier_rate=0.00\n",
+ "15:42:00 | INFO | server.services.curriculum | Episode 10: task=11 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:42:04 | INFO | grpo | [optuna-trial-2] step 6/10 (+111.3s)\n",
+ "15:42:04 | INFO | grpo | [CurriculumPromotionCallback] tier promoted intermediate -> advanced at step 6\n",
+ "15:42:04 | INFO | grpo | [optuna-trial-2] log step=6 {'loss': 0.289, 'grad_norm': 0.7695, 'learning_rate': 0.0, 'num_tokens': 18160.0, 'completions/mean_length': 61.6875, 'completions/min_length': 36.0, 'completions/max_length': 81.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 61.6875, 'completions/min_terminated_length': 36.0, 'completions/max_terminated_length': 81.0, 'rewards/env_reward/mean': 0.6875, 'rewards/env_reward/std': 0.4787, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9984, 'rewards/length_reward/std': 0.0062, 'reward': 2.6859, 'reward_std': 0.4924, 'frac_reward_zero_std': 0.0, 'completion_length': 57.875, 'kl': 0.3904, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 3.0}\n",
+ "15:45:46 | INFO | server.services.curriculum | Episode 11: task=95 difficulty=advanced achieved=True tier_rate=1.00\n",
+ "15:45:46 | INFO | server.services.curriculum | Episode 12: task=96 difficulty=advanced achieved=False tier_rate=0.61\n",
+ "15:45:46 | INFO | server.services.curriculum | Episode 13: task=97 difficulty=advanced achieved=False tier_rate=0.42\n",
+ "15:45:50 | INFO | grpo | [optuna-trial-2] step 7/10 (+225.9s)\n",
+ "15:45:50 | INFO | grpo | [optuna-trial-2] log step=7 {'loss': -0.1, 'grad_norm': 0.3597, 'learning_rate': 0.0, 'completion_length': 73.25, 'kl': 0.2593, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 23010.0, 'completions/mean_length': 77.625, 'completions/min_length': 41.0, 'completions/max_length': 116.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 77.625, 'completions/min_terminated_length': 41.0, 'completions/max_terminated_length': 116.0, 'rewards/env_reward/mean': 0.6021, 'rewards/env_reward/std': 0.2387, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9379, 'rewards/length_reward/std': 0.0828, 'reward': 2.54, 'reward_std': 0.2429, 'frac_reward_zero_std': 0.0, 'epoch': 3.6667}\n",
+ "15:45:54 | INFO | grpo | [optuna-trial-2] step 8/10 (+4.0s)\n",
+ "15:45:54 | INFO | grpo | [optuna-trial-2] log step=8 {'loss': 0.2722, 'grad_norm': 0.2342, 'learning_rate': 0.0, 'completion_length': 74.25, 'kl': 0.2081, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.0}\n",
+ "15:49:30 | INFO | server.services.curriculum | Episode 14: task=96 difficulty=advanced achieved=False tier_rate=0.31\n",
+ "15:49:30 | INFO | server.services.curriculum | Episode 15: task=95 difficulty=advanced achieved=True tier_rate=0.47\n",
+ "15:49:30 | INFO | server.services.curriculum | Episode 16: task=97 difficulty=advanced achieved=False tier_rate=0.37\n",
+ "15:49:38 | INFO | grpo | [optuna-trial-2] step 9/10 (+224.5s)\n",
+ "15:49:38 | INFO | grpo | [optuna-trial-2] log step=9 {'loss': 0.0158, 'grad_norm': 0.2369, 'learning_rate': 0.0, 'num_tokens': 27900.0, 'completions/mean_length': 80.125, 'completions/min_length': 36.0, 'completions/max_length': 139.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 80.125, 'completions/min_terminated_length': 36.0, 'completions/max_terminated_length': 139.0, 'rewards/env_reward/mean': 0.5644, 'rewards/env_reward/std': 0.2448, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9235, 'rewards/length_reward/std': 0.0927, 'reward': 2.4879, 'reward_std': 0.2535, 'frac_reward_zero_std': 0.0, 'completion_length': 80.125, 'kl': 0.2495, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.6667}\n",
+ "15:53:15 | INFO | server.services.curriculum | Task 95 GRADUATED (rate=1.00) — scheduling spaced repetition\n",
+ "15:53:15 | INFO | server.services.curriculum | Episode 17: task=95 difficulty=advanced achieved=True tier_rate=0.50\n",
+ "15:53:15 | INFO | server.services.curriculum | Episode 18: task=97 difficulty=advanced achieved=False tier_rate=0.40\n",
+ "15:53:15 | INFO | server.services.curriculum | Episode 19: task=96 difficulty=advanced achieved=False tier_rate=0.33\n",
+ "15:53:19 | INFO | grpo | [optuna-trial-2] step 10/10 (+221.0s)\n",
+ "15:53:19 | INFO | grpo | [optuna-trial-2] log step=10 {'loss': -0.3654, 'grad_norm': 0.265, 'learning_rate': 0.0, 'num_tokens': 32841.0, 'completions/mean_length': 83.3125, 'completions/min_length': 32.0, 'completions/max_length': 159.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 83.3125, 'completions/min_terminated_length': 32.0, 'completions/max_terminated_length': 159.0, 'rewards/env_reward/mean': 0.5631, 'rewards/env_reward/std': 0.3121, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9087, 'rewards/length_reward/std': 0.0968, 'reward': 2.4718, 'reward_std': 0.3662, 'frac_reward_zero_std': 0.0, 'completion_length': 65.75, 'kl': 0.3361, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 5.0}\n",
+ "15:53:19 | INFO | grpo | [optuna-trial-2] log step=10 {'train_runtime': 992.7264, 'train_samples_per_second': 0.161, 'train_steps_per_second': 0.01, 'total_flos': 0.0, 'train_loss': -0.0104, 'epoch': 5.0}\n",
+ "15:53:19 | INFO | grpo | [optuna-trial-2] train_end | global_step=10 elapsed=992.7s\n",
+ "15:53:20 | INFO | grpo | [trial 2] train() finished in 998.5s\n",
+ "15:53:20 | INFO | grpo | [trial 2] running single-step eval on 12 tasks...\n",
+ "15:54:35 | INFO | grpo | [trial 2] eval finished in 75.0s\n",
+ "15:54:35 | INFO | grpo | [trial 2] DONE | env_reward_mean=0.4687 success=0.250 tier=advanced graduated=1\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "[I 2026-04-25 15:54:38,863] Trial 2 pruned. \n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "15:54:38 | INFO | grpo | [trial 3] starting | cfg={'lr': 1.5958573588141284e-05, 'beta': 0.0020584494295802446, 'temp': 0.9909729556485982}\n",
+ "15:54:38 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "15:54:38 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "15:54:38 | INFO | grpo | [trial 3] loading SFT policy (4-bit Qwen2.5-Coder-3B)...\n",
+ "==((====))== Unsloth 2026.4.8: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n",
+ "15:54:57 | INFO | grpo | [trial 3] policy loaded in 18.2s\n",
+ "15:54:57 | INFO | grpo | CurriculumTierSampler: num_samples=192, tier sizes={'warmup': 2, 'beginner': 2, 'intermediate': 2, 'advanced': 3, 'expert': 3}\n",
+ "15:54:57 | INFO | grpo | [trial 3] starting train() for 10 steps...\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 12 | Num Epochs = 5 | Total steps = 10\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 7,372,800 of 3,093,311,488 (0.24% trained)\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "15:55:01 | INFO | grpo | [optuna-trial-3] train_begin | max_steps=10\n",
+ "Unsloth: Will smartly offload gradients to save VRAM!\n",
+ "15:55:26 | INFO | server.services.curriculum | Episode 1: task=33 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:55:26 | INFO | server.services.curriculum | Episode 2: task=37 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:55:35 | INFO | grpo | [optuna-trial-3] step 1/10 (+34.0s)\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [10/10 15:06, Epoch 5/5]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Step | \n",
+ " Training Loss | \n",
+ " Validation Loss | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ "
"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "15:55:35 | INFO | grpo | [optuna-trial-3] log step=1 {'loss': -0.062, 'grad_norm': 0.3466, 'learning_rate': 0.0, 'num_tokens': 3349.0, 'completions/mean_length': 43.3125, 'completions/min_length': 24.0, 'completions/max_length': 61.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 43.3125, 'completions/min_terminated_length': 24.0, 'completions/max_terminated_length': 61.0, 'rewards/env_reward/mean': 0.8125, 'rewards/env_reward/std': 0.4031, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.8125, 'reward_std': 0.4082, 'frac_reward_zero_std': 0.0, 'completion_length': 43.3125, 'kl': 0.1133, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 0.6667}\n",
+ "15:56:04 | INFO | server.services.curriculum | Loaded 25 beginner tasks total\n",
+ "15:56:04 | INFO | server.services.curriculum | PROMOTED from warmup to beginner (rate=1.00, FAST-TRACK)\n",
+ "15:56:04 | INFO | server.services.curriculum | Episode 3: task=37 difficulty=warmup achieved=True tier_rate=0.00\n",
+ "15:56:04 | INFO | server.services.curriculum | Episode 4: task=33 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "15:56:07 | INFO | grpo | [optuna-trial-3] step 2/10 (+32.6s)\n",
+ "15:56:07 | INFO | grpo | [CurriculumPromotionCallback] tier promoted warmup -> beginner at step 2\n",
+ "15:56:07 | INFO | grpo | [optuna-trial-3] log step=2 {'loss': -0.0776, 'grad_norm': 0.4329, 'learning_rate': 0.0, 'num_tokens': 6727.0, 'completions/mean_length': 45.125, 'completions/min_length': 25.0, 'completions/max_length': 70.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 45.125, 'completions/min_terminated_length': 25.0, 'completions/max_terminated_length': 70.0, 'rewards/env_reward/mean': 0.75, 'rewards/env_reward/std': 0.4472, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.75, 'reward_std': 0.4629, 'frac_reward_zero_std': 0.0, 'completion_length': 49.75, 'kl': 0.1218, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 1.0}\n",
+ "15:56:38 | INFO | server.services.curriculum | Episode 5: task=53 difficulty=beginner achieved=True tier_rate=1.00\n",
+ "15:56:38 | INFO | server.services.curriculum | Loaded 25 intermediate tasks total\n",
+ "15:56:38 | INFO | server.services.curriculum | PROMOTED from beginner to intermediate (rate=1.00, FAST-TRACK)\n",
+ "15:56:38 | INFO | server.services.curriculum | Episode 6: task=8 difficulty=beginner achieved=True tier_rate=0.00\n",
+ "15:56:41 | INFO | grpo | [optuna-trial-3] step 3/10 (+34.4s)\n",
+ "15:56:41 | INFO | grpo | [CurriculumPromotionCallback] tier promoted beginner -> intermediate at step 3\n",
+ "15:56:41 | INFO | grpo | [optuna-trial-3] log step=3 {'loss': -0.0391, 'grad_norm': 0.2092, 'learning_rate': 0.0, 'completion_length': 50.875, 'kl': 0.0939, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 10356.0, 'completions/mean_length': 55.8125, 'completions/min_length': 35.0, 'completions/max_length': 80.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 55.8125, 'completions/min_terminated_length': 35.0, 'completions/max_terminated_length': 80.0, 'rewards/env_reward/mean': 1.0, 'rewards/env_reward/std': 0.0, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 3.0, 'reward_std': 0.0, 'frac_reward_zero_std': 1.0, 'epoch': 1.6667}\n",
+ "15:56:45 | INFO | grpo | [optuna-trial-3] step 4/10 (+3.0s)\n",
+ "15:56:45 | INFO | grpo | [optuna-trial-3] log step=4 {'loss': 0.0002, 'grad_norm': 0.0008, 'learning_rate': 0.0, 'completion_length': 50.375, 'kl': 0.0983, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 2.0}\n",
+ "15:58:11 | INFO | server.services.curriculum | Episode 7: task=11 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:58:11 | INFO | server.services.curriculum | Episode 8: task=84 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:58:18 | INFO | grpo | [optuna-trial-3] step 5/10 (+93.1s)\n",
+ "15:58:18 | INFO | grpo | [optuna-trial-3] log step=5 {'loss': 0.0104, 'grad_norm': 0.247, 'learning_rate': 0.0, 'num_tokens': 14590.0, 'completions/mean_length': 80.625, 'completions/min_length': 49.0, 'completions/max_length': 114.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 80.625, 'completions/min_terminated_length': 49.0, 'completions/max_terminated_length': 114.0, 'rewards/env_reward/mean': 0.75, 'rewards/env_reward/std': 0.4472, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9989, 'rewards/length_reward/std': 0.0045, 'reward': 2.7489, 'reward_std': 0.465, 'frac_reward_zero_std': 0.0, 'completion_length': 80.625, 'kl': 0.1865, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 2.6667}\n",
+ "15:59:38 | INFO | server.services.curriculum | Loaded 25 advanced tasks total\n",
+ "15:59:38 | INFO | server.services.curriculum | PROMOTED from intermediate to advanced (rate=1.00, FAST-TRACK)\n",
+ "15:59:38 | INFO | server.services.curriculum | Episode 9: task=84 difficulty=intermediate achieved=True tier_rate=0.00\n",
+ "15:59:38 | INFO | server.services.curriculum | Episode 10: task=11 difficulty=intermediate achieved=True tier_rate=1.00\n",
+ "15:59:41 | INFO | grpo | [optuna-trial-3] step 6/10 (+83.4s)\n",
+ "15:59:41 | INFO | grpo | [CurriculumPromotionCallback] tier promoted intermediate -> advanced at step 6\n",
+ "15:59:41 | INFO | grpo | [optuna-trial-3] log step=6 {'loss': 0.0046, 'grad_norm': 0.3215, 'learning_rate': 0.0, 'num_tokens': 18686.0, 'completions/mean_length': 72.0, 'completions/min_length': 50.0, 'completions/max_length': 121.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 72.0, 'completions/min_terminated_length': 50.0, 'completions/max_terminated_length': 121.0, 'rewards/env_reward/mean': 0.875, 'rewards/env_reward/std': 0.3416, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9961, 'rewards/length_reward/std': 0.0156, 'reward': 2.8711, 'reward_std': 0.3523, 'frac_reward_zero_std': 0.0, 'completion_length': 72.625, 'kl': 0.2362, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 3.0}\n",
+ "16:03:16 | INFO | server.services.curriculum | Episode 11: task=97 difficulty=advanced achieved=False tier_rate=0.46\n",
+ "16:03:16 | INFO | server.services.curriculum | Episode 12: task=96 difficulty=advanced achieved=False tier_rate=0.28\n",
+ "16:03:16 | INFO | server.services.curriculum | Episode 13: task=95 difficulty=advanced achieved=True tier_rate=0.51\n",
+ "16:03:20 | INFO | grpo | [optuna-trial-3] step 7/10 (+218.4s)\n",
+ "16:03:20 | INFO | grpo | [optuna-trial-3] log step=7 {'loss': 0.0912, 'grad_norm': 0.2479, 'learning_rate': 0.0, 'completion_length': 82.3125, 'kl': 0.1815, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 23688.0, 'completions/mean_length': 87.5, 'completions/min_length': 32.0, 'completions/max_length': 132.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 87.5, 'completions/min_terminated_length': 32.0, 'completions/max_terminated_length': 132.0, 'rewards/env_reward/mean': 0.601, 'rewards/env_reward/std': 0.2852, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9089, 'rewards/length_reward/std': 0.0832, 'reward': 2.51, 'reward_std': 0.3004, 'frac_reward_zero_std': 0.0, 'epoch': 3.6667}\n",
+ "16:03:24 | INFO | grpo | [optuna-trial-3] step 8/10 (+4.0s)\n",
+ "16:03:24 | INFO | grpo | [optuna-trial-3] log step=8 {'loss': 0.0237, 'grad_norm': 0.1846, 'learning_rate': 0.0, 'completion_length': 81.75, 'kl': 0.2095, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.0}\n",
+ "16:06:54 | INFO | server.services.curriculum | Episode 14: task=97 difficulty=advanced achieved=False tier_rate=0.37\n",
+ "16:06:54 | INFO | server.services.curriculum | Episode 15: task=95 difficulty=advanced achieved=True tier_rate=0.52\n",
+ "16:06:54 | INFO | server.services.curriculum | Episode 16: task=96 difficulty=advanced achieved=False tier_rate=0.41\n",
+ "16:07:03 | INFO | grpo | [optuna-trial-3] step 9/10 (+219.1s)\n",
+ "16:07:03 | INFO | grpo | [optuna-trial-3] log step=9 {'loss': 0.0859, 'grad_norm': 0.1679, 'learning_rate': 0.0, 'num_tokens': 28764.0, 'completions/mean_length': 91.75, 'completions/min_length': 32.0, 'completions/max_length': 141.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 91.75, 'completions/min_terminated_length': 32.0, 'completions/max_terminated_length': 141.0, 'rewards/env_reward/mean': 0.6329, 'rewards/env_reward/std': 0.268, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.918, 'rewards/length_reward/std': 0.0851, 'reward': 2.5509, 'reward_std': 0.3024, 'frac_reward_zero_std': 0.0, 'completion_length': 91.75, 'kl': 0.1948, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.6667}\n",
+ "16:10:37 | INFO | server.services.curriculum | Episode 17: task=96 difficulty=advanced achieved=False tier_rate=0.32\n",
+ "16:10:37 | INFO | server.services.curriculum | Episode 18: task=97 difficulty=advanced achieved=False tier_rate=0.26\n",
+ "16:10:37 | INFO | server.services.curriculum | Task 95 GRADUATED (rate=1.00) — scheduling spaced repetition\n",
+ "16:10:37 | INFO | server.services.curriculum | Episode 19: task=95 difficulty=advanced achieved=True tier_rate=0.40\n",
+ "16:10:41 | INFO | grpo | [optuna-trial-3] step 10/10 (+218.2s)\n",
+ "16:10:41 | INFO | grpo | [optuna-trial-3] log step=10 {'loss': -0.0137, 'grad_norm': 0.2202, 'learning_rate': 0.0, 'num_tokens': 33936.0, 'completions/mean_length': 98.125, 'completions/min_length': 57.0, 'completions/max_length': 143.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 98.125, 'completions/min_terminated_length': 57.0, 'completions/max_terminated_length': 143.0, 'rewards/env_reward/mean': 0.7233, 'rewards/env_reward/std': 0.2071, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9179, 'rewards/length_reward/std': 0.0851, 'reward': 2.6412, 'reward_std': 0.2571, 'frac_reward_zero_std': 0.0, 'completion_length': 99.375, 'kl': 0.1591, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 5.0}\n",
+ "16:10:41 | INFO | grpo | [optuna-trial-3] log step=10 {'train_runtime': 940.2587, 'train_samples_per_second': 0.17, 'train_steps_per_second': 0.011, 'total_flos': 0.0, 'train_loss': 0.0024, 'epoch': 5.0}\n",
+ "16:10:41 | INFO | grpo | [optuna-trial-3] train_end | global_step=10 elapsed=940.3s\n",
+ "16:10:42 | INFO | grpo | [trial 3] train() finished in 945.2s\n",
+ "16:10:42 | INFO | grpo | [trial 3] running single-step eval on 12 tasks...\n",
+ "16:12:01 | INFO | grpo | [trial 3] eval finished in 78.8s\n",
+ "16:12:01 | INFO | grpo | [trial 3] DONE | env_reward_mean=0.5520 success=0.333 tier=advanced graduated=1\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "[I 2026-04-25 16:12:04,437] Trial 3 finished with value: 0.552 and parameters: {'learning_rate': 1.5958573588141284e-05, 'beta': 0.0020584494295802446, 'temperature': 0.9909729556485982}. Best is trial 3 with value: 0.552.\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Best trial env_reward_mean = 0.5520\n",
+ "Best params: {'learning_rate': 1.5958573588141284e-05, 'beta': 0.0020584494295802446, 'temperature': 0.9909729556485982}\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Reclaim VRAM before starting trials. If the user ran the final-run cell\n",
+ "# first (e.g. because optuna_best.json didn't exist on a prior session),\n",
+ "# `final_model` / `final_trainer` / `_probe_model` may still be resident\n",
+ "# on the GPU. Each trial loads a fresh 4-bit Qwen (~6 GB) via\n",
+ "# load_policy, and on a 14.5 GB T4 the second model won't fit alongside\n",
+ "# leftovers, so BitsAndBytes falls back to CPU offload and errors out\n",
+ "# (\"Some modules are dispatched on the CPU or the disk\").\n",
+ "for _name in (\"final_trainer\", \"final_model\", \"final_tok\", \"_probe_model\", \"_probe_tok\", \"_baseline_model\", \"_baseline_tok\"):\n",
+ " if _name in globals():\n",
+ " try:\n",
+ " _obj = globals().pop(_name)\n",
+ " del _obj\n",
+ " except Exception:\n",
+ " pass\n",
+ "gc.collect()\n",
+ "try:\n",
+ " torch.cuda.empty_cache()\n",
+ "except Exception:\n",
+ " pass\n",
+ "\n",
+ "STUDY_DB = OUT_DIR / \"optuna.db\"\n",
+ "STUDY_NAME = \"aws-rl-grpo-search\"\n",
+ "\n",
+ "study = optuna.create_study(\n",
+ " direction=\"maximize\",\n",
+ " sampler=optuna.samplers.TPESampler(seed=TRAIN.seed),\n",
+ " pruner=optuna.pruners.MedianPruner(n_startup_trials=2, n_warmup_steps=10),\n",
+ " study_name=STUDY_NAME,\n",
+ " storage=f\"sqlite:///{STUDY_DB}\",\n",
+ " load_if_exists=True,\n",
+ ")\n",
+ "\n",
+ "completed = sum(1 for t in study.trials if t.state.name == \"COMPLETE\")\n",
+ "remaining = max(0, PIPE.n_trials - completed)\n",
+ "print(f\"Optuna study '{STUDY_NAME}': {completed} completed, {remaining} remaining.\")\n",
+ "\n",
+ "if remaining > 0:\n",
+ " study.optimize(trial_objective, n_trials=remaining)\n",
+ "\n",
+ "best_cfg = replace(TRAIN, **{\n",
+ " k: v for k, v in study.best_params.items() if k in TrainingConfig.__dataclass_fields__\n",
+ "})\n",
+ "(OUT_DIR / \"optuna_best.json\").write_text(json.dumps({\n",
+ " \"best_value\": study.best_value,\n",
+ " \"best_params\": study.best_params,\n",
+ " \"resolved_config\": asdict(best_cfg),\n",
+ "}, indent=2))\n",
+ "\n",
+ "print(f\"Best trial env_reward_mean = {study.best_value:.4f}\")\n",
+ "print(f\"Best params: {study.best_params}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "278540e2",
+ "metadata": {
+ "id": "278540e2",
+ "outputId": "a99f73e2-0907-4a46-86fc-ccf61a361cb8",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "/tmp/ipykernel_1159/2728918386.py:17: ExperimentalWarning: optuna.visualization.matplotlib._optimization_history.plot_optimization_history is experimental (supported from v2.2.0). The interface can change in the future.\n",
+ " ax = fn(study)\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "16:12:05 | INFO | grpo | Saved /content/out/graphs/00_optuna_history.png\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "/tmp/ipykernel_1159/2728918386.py:17: ExperimentalWarning: optuna.visualization.matplotlib._parallel_coordinate.plot_parallel_coordinate is experimental (supported from v2.2.0). The interface can change in the future.\n",
+ " ax = fn(study)\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "16:12:05 | INFO | grpo | Saved /content/out/graphs/00_optuna_parallel.png\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "/tmp/ipykernel_1159/2728918386.py:17: ExperimentalWarning: optuna.visualization.matplotlib._param_importances.plot_param_importances is experimental (supported from v2.2.0). The interface can change in the future.\n",
+ " ax = fn(study)\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "16:12:06 | INFO | grpo | Saved /content/out/graphs/00_optuna_importances.png\n"
+ ]
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "from optuna.visualization.matplotlib import (\n",
+ " plot_optimization_history,\n",
+ " plot_parallel_coordinate,\n",
+ " plot_param_importances,\n",
+ ")\n",
+ "\n",
+ "GRAPHS_DIR = OUT_DIR / \"graphs\"\n",
+ "GRAPHS_DIR.mkdir(parents=True, exist_ok=True)\n",
+ "\n",
+ "for name, fn in [\n",
+ " (\"history\", plot_optimization_history),\n",
+ " (\"parallel\", plot_parallel_coordinate),\n",
+ " (\"importances\", plot_param_importances),\n",
+ "]:\n",
+ " try:\n",
+ " ax = fn(study)\n",
+ " fig = ax.figure\n",
+ " out_png = GRAPHS_DIR / f\"00_optuna_{name}.png\"\n",
+ " fig.savefig(out_png, dpi=150, bbox_inches=\"tight\")\n",
+ " plt.close(fig)\n",
+ " log.info(\"Saved %s\", out_png)\n",
+ " except Exception as e:\n",
+ " log.warning(\"Optuna %s plot skipped: %s\", name, e)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c8528094",
+ "metadata": {
+ "id": "c8528094"
+ },
+ "source": [
+ "## 14 · Final GRPO run — best hparams, full data, checkpointed\n",
+ "\n",
+ "Uses the Optuna winner on the full 1-epoch training set with periodic checkpoints (`save_steps=25`, `save_total_limit=3`). `CheckpointManager.latest()` auto-detects a prior checkpoint so re-running this cell after a disconnect resumes safely.\n",
+ "\n",
+ "Wandb run `final-grpo` gets a stable run id so resumed training stitches into the same panel instead of creating a fresh chart."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "74e46eed",
+ "metadata": {
+ "id": "74e46eed",
+ "outputId": "d0bb5912-5962-42d9-eba6-64bf73663c86",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "16:12:28 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "16:12:28 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "16:12:28 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "16:12:28 | INFO | server.services.curriculum | Loaded 25 beginner tasks total\n",
+ "16:12:28 | INFO | server.services.curriculum | Loaded 25 intermediate tasks total\n",
+ "16:12:28 | INFO | server.services.curriculum | Loaded 25 advanced tasks total\n",
+ "16:12:28 | INFO | server.services.curriculum | Loaded 9 supplementary expert tasks from drift.yaml\n",
+ "16:12:28 | INFO | server.services.curriculum | Loaded 33 expert tasks total\n",
+ "16:12:28 | INFO | grpo | Full curriculum dataset: 133 rows across tiers ['advanced', 'beginner', 'expert', 'intermediate', 'warmup']\n",
+ "==((====))== Unsloth 2026.4.8: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n",
+ "16:12:48 | INFO | grpo | CurriculumTierSampler: num_samples=672, tier sizes={'warmup': 25, 'beginner': 25, 'intermediate': 25, 'advanced': 25, 'expert': 33}\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
+ " \\\\ /| Num examples = 133 | Num Epochs = 6 | Total steps = 35\n",
+ "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 8\n",
+ "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 8 x 1) = 16\n",
+ " \"-____-\" Trainable parameters = 7,372,800 of 3,093,311,488 (0.24% trained)\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "16:12:52 | INFO | grpo | [final-grpo] train_begin | max_steps=35\n",
+ "Unsloth: Will smartly offload gradients to save VRAM!\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 1: task=37 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 2: task=33 difficulty=warmup achieved=False tier_rate=0.46\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 3: task=30 difficulty=warmup achieved=True tier_rate=0.67\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 4: task=40 difficulty=warmup achieved=True tier_rate=0.77\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 5: task=39 difficulty=warmup achieved=False tier_rate=0.56\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 6: task=27 difficulty=warmup achieved=False tier_rate=0.43\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 7: task=5 difficulty=warmup achieved=True tier_rate=0.55\n",
+ "16:13:18 | INFO | server.services.curriculum | Loaded 25 beginner tasks total\n",
+ "16:13:18 | INFO | server.services.curriculum | PROMOTED from warmup to beginner (rate=0.65)\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 8: task=31 difficulty=warmup achieved=True tier_rate=0.00\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 9: task=36 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 10: task=42 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:18 | INFO | server.services.curriculum | Loaded 25 intermediate tasks total\n",
+ "16:13:18 | INFO | server.services.curriculum | PROMOTED from beginner to intermediate (rate=1.00, FAST-TRACK)\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 11: task=32 difficulty=warmup achieved=True tier_rate=0.00\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 12: task=38 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 13: task=1 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:18 | INFO | server.services.curriculum | Loaded 25 advanced tasks total\n",
+ "16:13:18 | INFO | server.services.curriculum | PROMOTED from intermediate to advanced (rate=1.00, FAST-TRACK)\n",
+ "16:13:18 | INFO | server.services.curriculum | Episode 14: task=35 difficulty=warmup achieved=True tier_rate=0.00\n",
+ "16:13:19 | INFO | server.services.curriculum | Episode 15: task=43 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:19 | INFO | server.services.curriculum | Episode 16: task=34 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:25 | INFO | grpo | [final-grpo] step 1/35 (+33.1s)\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " [35/35 1:53:41, Epoch 5/6]\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Step | \n",
+ " Training Loss | \n",
+ " reward | \n",
+ " reward_std | \n",
+ " completions / mean_length | \n",
+ " completions / min_length | \n",
+ " completions / max_length | \n",
+ " completions / clipped_ratio | \n",
+ " completions / mean_terminated_length | \n",
+ " completions / min_terminated_length | \n",
+ " completions / max_terminated_length | \n",
+ " kl | \n",
+ " rewards / env_reward / mean | \n",
+ " rewards / env_reward / std | \n",
+ " rewards / format_reward / mean | \n",
+ " rewards / format_reward / std | \n",
+ " rewards / length_reward / mean | \n",
+ " rewards / length_reward / std | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1 | \n",
+ " 0.031300 | \n",
+ " 2.812500 | \n",
+ " 0.258775 | \n",
+ " 37.625000 | \n",
+ " 21.000000 | \n",
+ " 69.000000 | \n",
+ " 0.000000 | \n",
+ " 37.625000 | \n",
+ " 21.000000 | \n",
+ " 69.000000 | \n",
+ " 0.160042 | \n",
+ " 0.812500 | \n",
+ " 0.403113 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 0.001200 | \n",
+ " 2.937500 | \n",
+ " 0.176777 | \n",
+ " 44.812500 | \n",
+ " 17.000000 | \n",
+ " 75.000000 | \n",
+ " 0.000000 | \n",
+ " 44.812500 | \n",
+ " 17.000000 | \n",
+ " 75.000000 | \n",
+ " 0.141318 | \n",
+ " 0.937500 | \n",
+ " 0.250000 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " -0.052300 | \n",
+ " 2.218824 | \n",
+ " 0.336094 | \n",
+ " 109.687500 | \n",
+ " 62.000000 | \n",
+ " 242.000000 | \n",
+ " 0.000000 | \n",
+ " 109.687500 | \n",
+ " 62.000000 | \n",
+ " 242.000000 | \n",
+ " 0.176999 | \n",
+ " 0.311905 | \n",
+ " 0.275233 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.906920 | \n",
+ " 0.159451 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0.037300 | \n",
+ " 2.217083 | \n",
+ " 0.357512 | \n",
+ " 80.812500 | \n",
+ " 40.000000 | \n",
+ " 144.000000 | \n",
+ " 0.000000 | \n",
+ " 80.812500 | \n",
+ " 40.000000 | \n",
+ " 144.000000 | \n",
+ " 0.138093 | \n",
+ " 0.276458 | \n",
+ " 0.319758 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.940625 | \n",
+ " 0.116300 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " 0.057100 | \n",
+ " 2.230664 | \n",
+ " 0.419722 | \n",
+ " 67.250000 | \n",
+ " 16.000000 | \n",
+ " 128.000000 | \n",
+ " 0.000000 | \n",
+ " 67.250000 | \n",
+ " 16.000000 | \n",
+ " 128.000000 | \n",
+ " 0.194109 | \n",
+ " 0.281333 | \n",
+ " 0.370841 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.949330 | \n",
+ " 0.106090 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " 0.357500 | \n",
+ " 2.306159 | \n",
+ " 0.492075 | \n",
+ " 89.375000 | \n",
+ " 31.000000 | \n",
+ " 165.000000 | \n",
+ " 0.000000 | \n",
+ " 89.375000 | \n",
+ " 31.000000 | \n",
+ " 165.000000 | \n",
+ " 0.111130 | \n",
+ " 0.379708 | \n",
+ " 0.410870 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.926451 | \n",
+ " 0.142032 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " 0.142100 | \n",
+ " 2.151121 | \n",
+ " 0.471804 | \n",
+ " 97.125000 | \n",
+ " 47.000000 | \n",
+ " 235.000000 | \n",
+ " 0.000000 | \n",
+ " 97.125000 | \n",
+ " 47.000000 | \n",
+ " 235.000000 | \n",
+ " 0.151401 | \n",
+ " 0.255250 | \n",
+ " 0.376225 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.895871 | \n",
+ " 0.149889 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " -0.187200 | \n",
+ " 2.124732 | \n",
+ " 0.502367 | \n",
+ " 90.187500 | \n",
+ " 30.000000 | \n",
+ " 191.000000 | \n",
+ " 0.000000 | \n",
+ " 90.187500 | \n",
+ " 30.000000 | \n",
+ " 191.000000 | \n",
+ " 0.128590 | \n",
+ " 0.247500 | \n",
+ " 0.385668 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.877232 | \n",
+ " 0.184127 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " 0.313800 | \n",
+ " 2.191510 | \n",
+ " 0.337312 | \n",
+ " 95.375000 | \n",
+ " 28.000000 | \n",
+ " 304.000000 | \n",
+ " 0.000000 | \n",
+ " 95.375000 | \n",
+ " 28.000000 | \n",
+ " 304.000000 | \n",
+ " 0.114644 | \n",
+ " 0.257917 | \n",
+ " 0.271222 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.933594 | \n",
+ " 0.140376 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " 0.086600 | \n",
+ " 2.191076 | \n",
+ " 0.368338 | \n",
+ " 90.625000 | \n",
+ " 43.000000 | \n",
+ " 164.000000 | \n",
+ " 0.000000 | \n",
+ " 90.625000 | \n",
+ " 43.000000 | \n",
+ " 164.000000 | \n",
+ " 0.218185 | \n",
+ " 0.255250 | \n",
+ " 0.345282 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.935826 | \n",
+ " 0.107090 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " 0.082000 | \n",
+ " 2.178192 | \n",
+ " 0.651144 | \n",
+ " 81.500000 | \n",
+ " 41.000000 | \n",
+ " 194.000000 | \n",
+ " 0.000000 | \n",
+ " 81.500000 | \n",
+ " 41.000000 | \n",
+ " 194.000000 | \n",
+ " 0.161027 | \n",
+ " 0.366250 | \n",
+ " 0.454663 | \n",
+ " 0.875000 | \n",
+ " 0.341565 | \n",
+ " 0.936942 | \n",
+ " 0.140284 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " -0.059300 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " 0.124533 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " 0.121100 | \n",
+ " 2.170278 | \n",
+ " 0.327316 | \n",
+ " 85.562500 | \n",
+ " 32.000000 | \n",
+ " 182.000000 | \n",
+ " 0.000000 | \n",
+ " 85.562500 | \n",
+ " 32.000000 | \n",
+ " 182.000000 | \n",
+ " 0.153166 | \n",
+ " 0.229542 | \n",
+ " 0.332980 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.940737 | \n",
+ " 0.086682 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " 0.096800 | \n",
+ " 2.279671 | \n",
+ " 0.478157 | \n",
+ " 90.500000 | \n",
+ " 43.000000 | \n",
+ " 146.000000 | \n",
+ " 0.000000 | \n",
+ " 90.500000 | \n",
+ " 43.000000 | \n",
+ " 146.000000 | \n",
+ " 0.139773 | \n",
+ " 0.366167 | \n",
+ " 0.413176 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.913504 | \n",
+ " 0.121488 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " -0.086600 | \n",
+ " 2.160243 | \n",
+ " 0.439549 | \n",
+ " 94.687500 | \n",
+ " 35.000000 | \n",
+ " 190.000000 | \n",
+ " 0.000000 | \n",
+ " 94.687500 | \n",
+ " 35.000000 | \n",
+ " 190.000000 | \n",
+ " 0.134489 | \n",
+ " 0.255667 | \n",
+ " 0.367089 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.904576 | \n",
+ " 0.151924 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " 0.273100 | \n",
+ " 2.080617 | \n",
+ " 0.317456 | \n",
+ " 85.250000 | \n",
+ " 41.000000 | \n",
+ " 173.000000 | \n",
+ " 0.000000 | \n",
+ " 85.250000 | \n",
+ " 41.000000 | \n",
+ " 173.000000 | \n",
+ " 0.095647 | \n",
+ " 0.160417 | \n",
+ " 0.264797 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.920201 | \n",
+ " 0.136706 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " 0.101900 | \n",
+ " 2.154089 | \n",
+ " 0.354279 | \n",
+ " 87.937500 | \n",
+ " 31.000000 | \n",
+ " 167.000000 | \n",
+ " 0.000000 | \n",
+ " 87.937500 | \n",
+ " 31.000000 | \n",
+ " 167.000000 | \n",
+ " 0.114641 | \n",
+ " 0.237125 | \n",
+ " 0.382496 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.916964 | \n",
+ " 0.125563 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " 0.220700 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " 0.133991 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " -0.185200 | \n",
+ " 2.238287 | \n",
+ " 0.477100 | \n",
+ " 97.937500 | \n",
+ " 44.000000 | \n",
+ " 264.000000 | \n",
+ " 0.000000 | \n",
+ " 97.937500 | \n",
+ " 44.000000 | \n",
+ " 264.000000 | \n",
+ " 0.118545 | \n",
+ " 0.336167 | \n",
+ " 0.411662 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.902121 | \n",
+ " 0.145469 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " 0.092800 | \n",
+ " 2.203935 | \n",
+ " 0.325608 | \n",
+ " 78.000000 | \n",
+ " 17.000000 | \n",
+ " 193.000000 | \n",
+ " 0.000000 | \n",
+ " 78.000000 | \n",
+ " 17.000000 | \n",
+ " 193.000000 | \n",
+ " 0.180682 | \n",
+ " 0.249917 | \n",
+ " 0.278480 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.954018 | \n",
+ " 0.101084 | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " 0.422200 | \n",
+ " 2.030964 | \n",
+ " 0.218128 | \n",
+ " 89.812500 | \n",
+ " 38.000000 | \n",
+ " 153.000000 | \n",
+ " 0.000000 | \n",
+ " 89.812500 | \n",
+ " 38.000000 | \n",
+ " 153.000000 | \n",
+ " 0.111527 | \n",
+ " 0.126500 | \n",
+ " 0.123676 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.904464 | \n",
+ " 0.136333 | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " -0.037300 | \n",
+ " 2.281430 | \n",
+ " 0.393560 | \n",
+ " 93.937500 | \n",
+ " 28.000000 | \n",
+ " 291.000000 | \n",
+ " 0.000000 | \n",
+ " 93.937500 | \n",
+ " 28.000000 | \n",
+ " 291.000000 | \n",
+ " 0.136868 | \n",
+ " 0.315917 | \n",
+ " 0.349466 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.965513 | \n",
+ " 0.071431 | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " 0.168600 | \n",
+ " 2.088906 | \n",
+ " 0.333982 | \n",
+ " 105.187500 | \n",
+ " 41.000000 | \n",
+ " 303.000000 | \n",
+ " 0.000000 | \n",
+ " 105.187500 | \n",
+ " 41.000000 | \n",
+ " 303.000000 | \n",
+ " 0.155864 | \n",
+ " 0.188125 | \n",
+ " 0.246369 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.900781 | \n",
+ " 0.161908 | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " -0.062900 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " 0.154525 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " 0.051900 | \n",
+ " 2.305393 | \n",
+ " 0.466432 | \n",
+ " 83.312500 | \n",
+ " 36.000000 | \n",
+ " 252.000000 | \n",
+ " 0.000000 | \n",
+ " 83.312500 | \n",
+ " 36.000000 | \n",
+ " 252.000000 | \n",
+ " 0.132387 | \n",
+ " 0.373250 | \n",
+ " 0.413329 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.932143 | \n",
+ " 0.140355 | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " 0.084700 | \n",
+ " 2.113897 | \n",
+ " 0.425687 | \n",
+ " 128.187500 | \n",
+ " 42.000000 | \n",
+ " 768.000000 | \n",
+ " 0.062500 | \n",
+ " 85.533340 | \n",
+ " 42.000000 | \n",
+ " 154.000000 | \n",
+ " 0.160988 | \n",
+ " 0.275417 | \n",
+ " 0.372592 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.838480 | \n",
+ " 0.198759 | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " 0.110000 | \n",
+ " 2.273376 | \n",
+ " 0.454805 | \n",
+ " 76.562500 | \n",
+ " 25.000000 | \n",
+ " 145.000000 | \n",
+ " 0.000000 | \n",
+ " 76.562500 | \n",
+ " 25.000000 | \n",
+ " 145.000000 | \n",
+ " 0.191511 | \n",
+ " 0.335542 | \n",
+ " 0.412224 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.937835 | \n",
+ " 0.095236 | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " -0.054000 | \n",
+ " 2.070119 | \n",
+ " 0.438839 | \n",
+ " 95.250000 | \n",
+ " 29.000000 | \n",
+ " 170.000000 | \n",
+ " 0.000000 | \n",
+ " 95.250000 | \n",
+ " 29.000000 | \n",
+ " 170.000000 | \n",
+ " 0.155994 | \n",
+ " 0.224583 | \n",
+ " 0.310373 | \n",
+ " 0.937500 | \n",
+ " 0.250000 | \n",
+ " 0.908036 | \n",
+ " 0.120603 | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " 0.132400 | \n",
+ " 2.138022 | \n",
+ " 0.302719 | \n",
+ " 81.937500 | \n",
+ " 24.000000 | \n",
+ " 168.000000 | \n",
+ " 0.000000 | \n",
+ " 81.937500 | \n",
+ " 24.000000 | \n",
+ " 168.000000 | \n",
+ " 0.139455 | \n",
+ " 0.217375 | \n",
+ " 0.252687 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.920647 | \n",
+ " 0.142823 | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " 0.637700 | \n",
+ " 2.181848 | \n",
+ " 0.346811 | \n",
+ " 73.187500 | \n",
+ " 38.000000 | \n",
+ " 151.000000 | \n",
+ " 0.000000 | \n",
+ " 73.187500 | \n",
+ " 38.000000 | \n",
+ " 151.000000 | \n",
+ " 0.171576 | \n",
+ " 0.231625 | \n",
+ " 0.326569 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.950223 | \n",
+ " 0.086972 | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " -0.112300 | \n",
+ " 2.351836 | \n",
+ " 0.442533 | \n",
+ " 88.812500 | \n",
+ " 47.000000 | \n",
+ " 147.000000 | \n",
+ " 0.000000 | \n",
+ " 88.812500 | \n",
+ " 47.000000 | \n",
+ " 147.000000 | \n",
+ " 0.162624 | \n",
+ " 0.394917 | \n",
+ " 0.418818 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.956920 | \n",
+ " 0.104350 | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " 0.163400 | \n",
+ " 2.198289 | \n",
+ " 0.489258 | \n",
+ " 83.937500 | \n",
+ " 29.000000 | \n",
+ " 182.000000 | \n",
+ " 0.000000 | \n",
+ " 83.937500 | \n",
+ " 29.000000 | \n",
+ " 182.000000 | \n",
+ " 0.142202 | \n",
+ " 0.295833 | \n",
+ " 0.389247 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.902455 | \n",
+ " 0.138221 | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " 0.187300 | \n",
+ " 2.262478 | \n",
+ " 0.567792 | \n",
+ " 101.812500 | \n",
+ " 32.000000 | \n",
+ " 194.000000 | \n",
+ " 0.000000 | \n",
+ " 101.812500 | \n",
+ " 32.000000 | \n",
+ " 194.000000 | \n",
+ " 0.158527 | \n",
+ " 0.389375 | \n",
+ " 0.448248 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.873103 | \n",
+ " 0.162099 | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " -0.209300 | \n",
+ " 2.182246 | \n",
+ " 0.270923 | \n",
+ " 80.437500 | \n",
+ " 26.000000 | \n",
+ " 129.000000 | \n",
+ " 0.000000 | \n",
+ " 80.437500 | \n",
+ " 26.000000 | \n",
+ " 129.000000 | \n",
+ " 0.134107 | \n",
+ " 0.236375 | \n",
+ " 0.231756 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.945871 | \n",
+ " 0.073594 | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " -0.061500 | \n",
+ " 2.124198 | \n",
+ " 0.254833 | \n",
+ " 83.875000 | \n",
+ " 30.000000 | \n",
+ " 249.000000 | \n",
+ " 0.000000 | \n",
+ " 83.875000 | \n",
+ " 30.000000 | \n",
+ " 249.000000 | \n",
+ " 0.125973 | \n",
+ " 0.192167 | \n",
+ " 0.186760 | \n",
+ " 1.000000 | \n",
+ " 0.000000 | \n",
+ " 0.932031 | \n",
+ " 0.122966 | \n",
+ "
\n",
+ " \n",
+ "
"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "16:13:25 | INFO | grpo | [final-grpo] log step=1 {'loss': 0.0313, 'grad_norm': 0.5735, 'learning_rate': 0.0, 'num_tokens': 3235.0, 'completions/mean_length': 37.625, 'completions/min_length': 21.0, 'completions/max_length': 69.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 37.625, 'completions/min_terminated_length': 21.0, 'completions/max_terminated_length': 69.0, 'rewards/env_reward/mean': 0.8125, 'rewards/env_reward/std': 0.4031, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.8125, 'reward_std': 0.2588, 'frac_reward_zero_std': 0.5, 'completion_length': 37.625, 'kl': 0.16, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 0.1905}\n",
+ "16:13:51 | INFO | server.services.curriculum | Loaded 9 supplementary expert tasks from drift.yaml\n",
+ "16:13:51 | INFO | server.services.curriculum | Loaded 33 expert tasks total\n",
+ "16:13:51 | INFO | server.services.curriculum | PROMOTED from advanced to expert (rate=1.00, FAST-TRACK)\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 17: task=44 difficulty=warmup achieved=True tier_rate=0.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 18: task=29 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 19: task=34 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 20: task=38 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 21: task=35 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 22: task=3 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 23: task=37 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 24: task=43 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 25: task=36 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 26: task=0 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 27: task=4 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 28: task=28 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 29: task=41 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 30: task=1 difficulty=warmup achieved=True tier_rate=1.00\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 31: task=33 difficulty=warmup achieved=False tier_rate=0.83\n",
+ "16:13:51 | INFO | server.services.curriculum | Episode 32: task=5 difficulty=warmup achieved=True tier_rate=0.86\n",
+ "16:13:57 | INFO | grpo | [final-grpo] step 2/35 (+31.9s)\n",
+ "16:13:57 | INFO | grpo | [CurriculumPromotionCallback] tier promoted advanced -> expert at step 2\n",
+ "16:13:57 | INFO | grpo | [final-grpo] log step=2 {'loss': 0.0012, 'grad_norm': 0.2202, 'learning_rate': 0.0, 'num_tokens': 6578.0, 'completions/mean_length': 44.8125, 'completions/min_length': 17.0, 'completions/max_length': 75.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 44.8125, 'completions/min_terminated_length': 17.0, 'completions/max_terminated_length': 75.0, 'rewards/env_reward/mean': 0.9375, 'rewards/env_reward/std': 0.25, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 1.0, 'rewards/length_reward/std': 0.0, 'reward': 2.9375, 'reward_std': 0.1768, 'frac_reward_zero_std': 0.5, 'completion_length': 44.8125, 'kl': 0.1413, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 0.381}\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 33: task=100 difficulty=advanced achieved=False tier_rate=0.72\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 34: task=103 difficulty=advanced achieved=False tier_rate=0.61\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 35: task=97 difficulty=advanced achieved=False tier_rate=0.51\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 36: task=90 difficulty=advanced achieved=False tier_rate=0.43\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 37: task=95 difficulty=advanced achieved=False tier_rate=0.36\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 38: task=91 difficulty=advanced achieved=False tier_rate=0.31\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 39: task=101 difficulty=advanced achieved=False tier_rate=0.26\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 40: task=104 difficulty=advanced achieved=False tier_rate=0.22\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 41: task=105 difficulty=advanced achieved=False tier_rate=0.19\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 42: task=17 difficulty=advanced achieved=False tier_rate=0.16\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 43: task=107 difficulty=advanced achieved=False tier_rate=0.13\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 44: task=108 difficulty=advanced achieved=False tier_rate=0.11\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 45: task=92 difficulty=advanced achieved=False tier_rate=0.10\n",
+ "16:17:48 | INFO | server.services.curriculum | Episode 46: task=106 difficulty=advanced achieved=False tier_rate=0.08\n",
+ "16:17:58 | INFO | grpo | [final-grpo] step 3/35 (+241.3s)\n",
+ "16:17:58 | INFO | grpo | [final-grpo] log step=3 {'loss': -0.0523, 'grad_norm': 0.2405, 'learning_rate': 0.0, 'num_tokens': 11951.0, 'completions/mean_length': 109.6875, 'completions/min_length': 62.0, 'completions/max_length': 242.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 109.6875, 'completions/min_terminated_length': 62.0, 'completions/max_terminated_length': 242.0, 'rewards/env_reward/mean': 0.3119, 'rewards/env_reward/std': 0.2752, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9069, 'rewards/length_reward/std': 0.1595, 'reward': 2.2188, 'reward_std': 0.3361, 'frac_reward_zero_std': 0.0, 'completion_length': 109.6875, 'kl': 0.177, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 0.5714}\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 47: task=111 difficulty=expert achieved=False tier_rate=0.07\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 48: task=119 difficulty=expert achieved=True tier_rate=0.21\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 49: task=129 difficulty=expert achieved=False tier_rate=0.18\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 50: task=121 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 51: task=23 difficulty=expert achieved=False tier_rate=0.13\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 52: task=139 difficulty=expert achieved=False tier_rate=0.11\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 53: task=124 difficulty=expert achieved=False tier_rate=0.09\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 54: task=22 difficulty=expert achieved=False tier_rate=0.08\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 55: task=114 difficulty=expert achieved=False tier_rate=0.07\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 56: task=134 difficulty=expert achieved=False tier_rate=0.06\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 57: task=133 difficulty=expert achieved=False tier_rate=0.05\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 58: task=21 difficulty=expert achieved=True tier_rate=0.19\n",
+ "16:21:17 | INFO | server.services.curriculum | Episode 59: task=123 difficulty=expert achieved=False tier_rate=0.16\n",
+ "16:21:18 | INFO | server.services.curriculum | Episode 60: task=120 difficulty=expert achieved=False tier_rate=0.14\n",
+ "16:21:18 | INFO | server.services.curriculum | Episode 61: task=116 difficulty=expert achieved=False tier_rate=0.12\n",
+ "16:21:18 | INFO | server.services.curriculum | Episode 62: task=122 difficulty=expert achieved=False tier_rate=0.10\n",
+ "16:21:27 | INFO | grpo | [final-grpo] step 4/35 (+208.5s)\n",
+ "16:21:27 | INFO | grpo | [final-grpo] log step=4 {'loss': 0.0373, 'grad_norm': 0.248, 'learning_rate': 0.0, 'num_tokens': 17137.0, 'completions/mean_length': 80.8125, 'completions/min_length': 40.0, 'completions/max_length': 144.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 80.8125, 'completions/min_terminated_length': 40.0, 'completions/max_terminated_length': 144.0, 'rewards/env_reward/mean': 0.2765, 'rewards/env_reward/std': 0.3198, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9406, 'rewards/length_reward/std': 0.1163, 'reward': 2.2171, 'reward_std': 0.3575, 'frac_reward_zero_std': 0.0, 'completion_length': 80.8125, 'kl': 0.1381, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 0.7619}\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 63: task=135 difficulty=expert achieved=False tier_rate=0.08\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 64: task=24 difficulty=expert achieved=False tier_rate=0.07\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 65: task=128 difficulty=expert achieved=False tier_rate=0.06\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 66: task=18 difficulty=expert achieved=False tier_rate=0.05\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 67: task=123 difficulty=expert achieved=False tier_rate=0.04\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 68: task=25 difficulty=expert achieved=False tier_rate=0.04\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 69: task=127 difficulty=expert achieved=True tier_rate=0.18\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 70: task=120 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 71: task=131 difficulty=expert achieved=False tier_rate=0.13\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 72: task=23 difficulty=expert achieved=False tier_rate=0.11\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 73: task=126 difficulty=expert achieved=False tier_rate=0.09\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 74: task=119 difficulty=expert achieved=True tier_rate=0.23\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 75: task=110 difficulty=expert achieved=True tier_rate=0.35\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 76: task=134 difficulty=expert achieved=False tier_rate=0.29\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 77: task=22 difficulty=expert achieved=False tier_rate=0.25\n",
+ "16:24:24 | INFO | server.services.curriculum | Episode 78: task=118 difficulty=expert achieved=False tier_rate=0.21\n",
+ "16:24:33 | INFO | grpo | [final-grpo] step 5/35 (+186.4s)\n",
+ "16:24:33 | INFO | grpo | [final-grpo] log step=5 {'loss': 0.0571, 'grad_norm': 0.2858, 'learning_rate': 0.0, 'num_tokens': 21998.0, 'completions/mean_length': 67.25, 'completions/min_length': 16.0, 'completions/max_length': 128.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 67.25, 'completions/min_terminated_length': 16.0, 'completions/max_terminated_length': 128.0, 'rewards/env_reward/mean': 0.2813, 'rewards/env_reward/std': 0.3708, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9493, 'rewards/length_reward/std': 0.1061, 'reward': 2.2307, 'reward_std': 0.4197, 'frac_reward_zero_std': 0.0, 'completion_length': 67.25, 'kl': 0.1941, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 0.9524}\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 79: task=125 difficulty=expert achieved=False tier_rate=0.18\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 80: task=113 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 81: task=120 difficulty=expert achieved=False tier_rate=0.13\n",
+ "16:27:39 | INFO | server.services.curriculum | Task 119 GRADUATED (rate=1.00) — scheduling spaced repetition\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 82: task=119 difficulty=expert achieved=True tier_rate=0.26\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 83: task=109 difficulty=expert achieved=True tier_rate=0.37\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 84: task=115 difficulty=expert achieved=False tier_rate=0.32\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 85: task=20 difficulty=expert achieved=True tier_rate=0.42\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 86: task=114 difficulty=expert achieved=False tier_rate=0.36\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 87: task=23 difficulty=expert achieved=True tier_rate=0.45\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 88: task=19 difficulty=expert achieved=False tier_rate=0.38\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 89: task=117 difficulty=expert achieved=False tier_rate=0.33\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 90: task=134 difficulty=expert achieved=False tier_rate=0.28\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 91: task=129 difficulty=expert achieved=False tier_rate=0.24\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 92: task=133 difficulty=expert achieved=False tier_rate=0.20\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 93: task=135 difficulty=expert achieved=False tier_rate=0.17\n",
+ "16:27:39 | INFO | server.services.curriculum | Episode 94: task=127 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:27:42 | INFO | grpo | [final-grpo] step 6/35 (+188.7s)\n",
+ "16:27:42 | INFO | grpo | [final-grpo] log step=6 {'loss': 0.3575, 'grad_norm': 0.4507, 'learning_rate': 0.0, 'num_tokens': 27280.0, 'completions/mean_length': 89.375, 'completions/min_length': 31.0, 'completions/max_length': 165.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 89.375, 'completions/min_terminated_length': 31.0, 'completions/max_terminated_length': 165.0, 'rewards/env_reward/mean': 0.3797, 'rewards/env_reward/std': 0.4109, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9265, 'rewards/length_reward/std': 0.142, 'reward': 2.3062, 'reward_std': 0.4921, 'frac_reward_zero_std': 0.0, 'completion_length': 109.25, 'kl': 0.1111, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 1.0}\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 95: task=131 difficulty=expert achieved=False tier_rate=0.12\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 96: task=117 difficulty=expert achieved=False tier_rate=0.10\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 97: task=114 difficulty=expert achieved=False tier_rate=0.09\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 98: task=110 difficulty=expert achieved=True tier_rate=0.23\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 99: task=18 difficulty=expert achieved=False tier_rate=0.19\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 100: task=115 difficulty=expert achieved=False tier_rate=0.16\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 101: task=124 difficulty=expert achieved=False tier_rate=0.14\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 102: task=20 difficulty=expert achieved=True tier_rate=0.27\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 103: task=118 difficulty=expert achieved=False tier_rate=0.23\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 104: task=113 difficulty=expert achieved=False tier_rate=0.19\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 105: task=121 difficulty=expert achieved=True tier_rate=0.31\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 106: task=23 difficulty=expert achieved=False tier_rate=0.27\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 107: task=24 difficulty=expert achieved=False tier_rate=0.23\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 108: task=139 difficulty=expert achieved=False tier_rate=0.19\n",
+ "16:31:20 | INFO | server.services.curriculum | Episode 109: task=134 difficulty=expert achieved=False tier_rate=0.16\n",
+ "16:31:22 | INFO | grpo | [final-grpo] step 7/35 (+220.6s)\n",
+ "16:31:22 | INFO | grpo | [final-grpo] log step=7 {'loss': 0.1421, 'grad_norm': 0.2291, 'learning_rate': 0.0, 'completion_length': 87.5625, 'kl': 0.1514, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 32677.0, 'completions/mean_length': 97.125, 'completions/min_length': 47.0, 'completions/max_length': 235.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 97.125, 'completions/min_terminated_length': 47.0, 'completions/max_terminated_length': 235.0, 'rewards/env_reward/mean': 0.2553, 'rewards/env_reward/std': 0.3762, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.8959, 'rewards/length_reward/std': 0.1499, 'reward': 2.1511, 'reward_std': 0.4718, 'frac_reward_zero_std': 0.0, 'epoch': 1.1905}\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 110: task=126 difficulty=expert achieved=False tier_rate=0.14\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 111: task=129 difficulty=expert achieved=False tier_rate=0.12\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 112: task=139 difficulty=expert achieved=True tier_rate=0.25\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 113: task=113 difficulty=expert achieved=False tier_rate=0.21\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 114: task=124 difficulty=expert achieved=False tier_rate=0.18\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 115: task=131 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 116: task=19 difficulty=expert achieved=False tier_rate=0.13\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 117: task=125 difficulty=expert achieved=False tier_rate=0.11\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 118: task=22 difficulty=expert achieved=False tier_rate=0.09\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 119: task=115 difficulty=expert achieved=False tier_rate=0.08\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 120: task=23 difficulty=expert achieved=False tier_rate=0.07\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 121: task=116 difficulty=expert achieved=False tier_rate=0.06\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 122: task=111 difficulty=expert achieved=True tier_rate=0.20\n",
+ "16:35:24 | INFO | server.services.curriculum | Task 20 GRADUATED (rate=1.00) — scheduling spaced repetition\n",
+ "16:35:24 | INFO | server.services.curriculum | Episode 123: task=20 difficulty=expert achieved=True tier_rate=0.32\n",
+ "16:35:26 | INFO | grpo | [final-grpo] step 8/35 (+244.0s)\n",
+ "16:35:26 | INFO | grpo | [final-grpo] log step=8 {'loss': -0.1872, 'grad_norm': 0.3587, 'learning_rate': 0.0, 'completion_length': 80.6875, 'kl': 0.1286, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 38011.0, 'completions/mean_length': 90.1875, 'completions/min_length': 30.0, 'completions/max_length': 191.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 90.1875, 'completions/min_terminated_length': 30.0, 'completions/max_terminated_length': 191.0, 'rewards/env_reward/mean': 0.2475, 'rewards/env_reward/std': 0.3857, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.8772, 'rewards/length_reward/std': 0.1841, 'reward': 2.1247, 'reward_std': 0.5024, 'frac_reward_zero_std': 0.0, 'epoch': 1.381}\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 124: task=125 difficulty=expert achieved=False tier_rate=0.27\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 125: task=128 difficulty=expert achieved=False tier_rate=0.23\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 126: task=119 difficulty=expert achieved=True tier_rate=0.35\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 127: task=24 difficulty=expert achieved=False tier_rate=0.29\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 128: task=109 difficulty=expert achieved=False tier_rate=0.25\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 129: task=123 difficulty=expert achieved=False tier_rate=0.21\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 130: task=134 difficulty=expert achieved=False tier_rate=0.18\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 131: task=122 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 132: task=135 difficulty=expert achieved=False tier_rate=0.13\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 133: task=110 difficulty=expert achieved=False tier_rate=0.11\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 134: task=115 difficulty=expert achieved=False tier_rate=0.09\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 135: task=111 difficulty=expert achieved=False tier_rate=0.08\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 136: task=126 difficulty=expert achieved=False tier_rate=0.07\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 137: task=23 difficulty=expert achieved=False tier_rate=0.06\n",
+ "16:39:55 | INFO | server.services.curriculum | Episode 138: task=133 difficulty=expert achieved=False tier_rate=0.05\n",
+ "16:39:58 | INFO | grpo | [final-grpo] step 9/35 (+271.4s)\n",
+ "16:39:58 | INFO | grpo | [final-grpo] log step=9 {'loss': 0.3138, 'grad_norm': 0.3186, 'learning_rate': 0.0, 'completion_length': 102.5, 'kl': 0.1146, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 43444.0, 'completions/mean_length': 95.375, 'completions/min_length': 28.0, 'completions/max_length': 304.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 95.375, 'completions/min_terminated_length': 28.0, 'completions/max_terminated_length': 304.0, 'rewards/env_reward/mean': 0.2579, 'rewards/env_reward/std': 0.2712, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9336, 'rewards/length_reward/std': 0.1404, 'reward': 2.1915, 'reward_std': 0.3373, 'frac_reward_zero_std': 0.0, 'epoch': 1.5714}\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 139: task=114 difficulty=expert achieved=False tier_rate=0.04\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 140: task=111 difficulty=expert achieved=False tier_rate=0.04\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 141: task=115 difficulty=expert achieved=False tier_rate=0.03\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 142: task=18 difficulty=expert achieved=False tier_rate=0.03\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 143: task=129 difficulty=expert achieved=False tier_rate=0.02\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 144: task=24 difficulty=expert achieved=False tier_rate=0.02\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 145: task=19 difficulty=expert achieved=False tier_rate=0.02\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 146: task=113 difficulty=expert achieved=False tier_rate=0.01\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 147: task=127 difficulty=expert achieved=False tier_rate=0.01\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 148: task=124 difficulty=expert achieved=False tier_rate=0.01\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 149: task=20 difficulty=expert achieved=True tier_rate=0.16\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 150: task=116 difficulty=expert achieved=False tier_rate=0.13\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 151: task=135 difficulty=expert achieved=False tier_rate=0.11\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 152: task=117 difficulty=expert achieved=False tier_rate=0.10\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 153: task=118 difficulty=expert achieved=False tier_rate=0.08\n",
+ "16:43:37 | INFO | server.services.curriculum | Episode 154: task=119 difficulty=expert achieved=True tier_rate=0.22\n",
+ "16:43:39 | INFO | grpo | [final-grpo] step 10/35 (+221.3s)\n",
+ "16:43:39 | INFO | grpo | [final-grpo] log step=10 {'loss': 0.0866, 'grad_norm': 0.2433, 'learning_rate': 0.0, 'completion_length': 90.8125, 'kl': 0.2182, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 48768.0, 'completions/mean_length': 90.625, 'completions/min_length': 43.0, 'completions/max_length': 164.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 90.625, 'completions/min_terminated_length': 43.0, 'completions/max_terminated_length': 164.0, 'rewards/env_reward/mean': 0.2552, 'rewards/env_reward/std': 0.3453, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9358, 'rewards/length_reward/std': 0.1071, 'reward': 2.1911, 'reward_std': 0.3683, 'frac_reward_zero_std': 0.0, 'epoch': 1.7619}\n",
+ "16:47:05 | INFO | server.services.curriculum | Task 110 GRADUATED (rate=0.73) — scheduling spaced repetition\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 155: task=110 difficulty=expert achieved=True tier_rate=0.34\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 156: task=125 difficulty=expert achieved=False tier_rate=0.29\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 157: task=121 difficulty=expert achieved=False tier_rate=0.24\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 158: task=129 difficulty=expert achieved=False tier_rate=0.21\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 159: task=18 difficulty=expert achieved=False tier_rate=0.18\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 160: task=126 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 161: task=20 difficulty=expert achieved=True tier_rate=0.28\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 162: task=113 difficulty=expert achieved=False tier_rate=0.24\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 163: task=127 difficulty=expert achieved=True tier_rate=0.35\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 164: task=19 difficulty=expert achieved=False tier_rate=0.30\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 165: task=114 difficulty=expert achieved=False tier_rate=0.25\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 166: task=109 difficulty=expert achieved=False tier_rate=0.22\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 167: task=131 difficulty=expert achieved=False tier_rate=0.18\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 168: task=133 difficulty=expert achieved=False tier_rate=0.16\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 169: task=119 difficulty=expert achieved=True tier_rate=0.28\n",
+ "16:47:05 | INFO | server.services.curriculum | Episode 170: task=139 difficulty=expert achieved=True tier_rate=0.39\n",
+ "16:47:08 | INFO | grpo | [final-grpo] step 11/35 (+208.5s)\n",
+ "16:47:08 | INFO | grpo | [final-grpo] log step=11 {'loss': 0.082, 'grad_norm': 0.1954, 'learning_rate': 0.0, 'completion_length': 98.75, 'kl': 0.161, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 53925.0, 'completions/mean_length': 81.5, 'completions/min_length': 41.0, 'completions/max_length': 194.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 81.5, 'completions/min_terminated_length': 41.0, 'completions/max_terminated_length': 194.0, 'rewards/env_reward/mean': 0.3662, 'rewards/env_reward/std': 0.4547, 'rewards/format_reward/mean': 0.875, 'rewards/format_reward/std': 0.3416, 'rewards/length_reward/mean': 0.9369, 'rewards/length_reward/std': 0.1403, 'reward': 2.1782, 'reward_std': 0.6511, 'frac_reward_zero_std': 0.0, 'epoch': 1.9524}\n",
+ "16:47:10 | INFO | grpo | [final-grpo] step 12/35 (+2.4s)\n",
+ "16:47:10 | INFO | grpo | [final-grpo] log step=12 {'loss': -0.0593, 'grad_norm': 0.2592, 'learning_rate': 0.0, 'completion_length': 71.75, 'kl': 0.1245, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 2.0}\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 171: task=128 difficulty=expert achieved=False tier_rate=0.33\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 172: task=133 difficulty=expert achieved=False tier_rate=0.28\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 173: task=139 difficulty=expert achieved=False tier_rate=0.24\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 174: task=123 difficulty=expert achieved=True tier_rate=0.35\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 175: task=127 difficulty=expert achieved=True tier_rate=0.45\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 176: task=109 difficulty=expert achieved=False tier_rate=0.38\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 177: task=120 difficulty=expert achieved=False tier_rate=0.33\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 178: task=25 difficulty=expert achieved=False tier_rate=0.28\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 179: task=115 difficulty=expert achieved=False tier_rate=0.24\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 180: task=125 difficulty=expert achieved=False tier_rate=0.20\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 181: task=23 difficulty=expert achieved=False tier_rate=0.17\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 182: task=121 difficulty=expert achieved=False tier_rate=0.14\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 183: task=113 difficulty=expert achieved=False tier_rate=0.12\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 184: task=114 difficulty=expert achieved=False tier_rate=0.10\n",
+ "16:50:32 | INFO | server.services.curriculum | Episode 185: task=21 difficulty=expert achieved=False tier_rate=0.09\n",
+ "16:50:37 | INFO | grpo | [final-grpo] step 13/35 (+206.5s)\n",
+ "16:50:37 | INFO | grpo | [final-grpo] log step=13 {'loss': 0.1211, 'grad_norm': 0.3559, 'learning_rate': 0.0, 'completion_length': 73.3125, 'kl': 0.1532, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 59226.0, 'completions/mean_length': 85.5625, 'completions/min_length': 32.0, 'completions/max_length': 182.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 85.5625, 'completions/min_terminated_length': 32.0, 'completions/max_terminated_length': 182.0, 'rewards/env_reward/mean': 0.2295, 'rewards/env_reward/std': 0.333, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9407, 'rewards/length_reward/std': 0.0867, 'reward': 2.1703, 'reward_std': 0.3273, 'frac_reward_zero_std': 0.0, 'epoch': 2.1905}\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 186: task=114 difficulty=expert achieved=False tier_rate=0.08\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 187: task=139 difficulty=expert achieved=True tier_rate=0.21\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 188: task=113 difficulty=expert achieved=False tier_rate=0.18\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 189: task=128 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 190: task=120 difficulty=expert achieved=False tier_rate=0.13\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 191: task=135 difficulty=expert achieved=False tier_rate=0.11\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 192: task=21 difficulty=expert achieved=True tier_rate=0.24\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 193: task=117 difficulty=expert achieved=False tier_rate=0.21\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 194: task=19 difficulty=expert achieved=False tier_rate=0.18\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 195: task=116 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:53:50 | INFO | server.services.curriculum | Task 127 GRADUATED (rate=0.73) — scheduling spaced repetition\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 196: task=127 difficulty=expert achieved=True tier_rate=0.28\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 197: task=110 difficulty=expert achieved=True tier_rate=0.39\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 198: task=24 difficulty=expert achieved=False tier_rate=0.33\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 199: task=124 difficulty=expert achieved=False tier_rate=0.28\n",
+ "16:53:50 | INFO | server.services.curriculum | Episode 200: task=134 difficulty=expert achieved=False tier_rate=0.24\n",
+ "16:53:55 | INFO | grpo | [final-grpo] step 14/35 (+198.0s)\n",
+ "16:53:55 | INFO | grpo | [final-grpo] log step=14 {'loss': 0.0968, 'grad_norm': 0.252, 'learning_rate': 0.0, 'completion_length': 100.5625, 'kl': 0.1398, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 64542.0, 'completions/mean_length': 90.5, 'completions/min_length': 43.0, 'completions/max_length': 146.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 90.5, 'completions/min_terminated_length': 43.0, 'completions/max_terminated_length': 146.0, 'rewards/env_reward/mean': 0.3662, 'rewards/env_reward/std': 0.4132, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9135, 'rewards/length_reward/std': 0.1215, 'reward': 2.2797, 'reward_std': 0.4782, 'frac_reward_zero_std': 0.0, 'epoch': 2.381}\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 201: task=133 difficulty=expert achieved=False tier_rate=0.20\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 202: task=109 difficulty=expert achieved=False tier_rate=0.17\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 203: task=115 difficulty=expert achieved=False tier_rate=0.15\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 204: task=139 difficulty=expert achieved=False tier_rate=0.12\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 205: task=121 difficulty=expert achieved=False tier_rate=0.11\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 206: task=113 difficulty=expert achieved=False tier_rate=0.09\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 207: task=114 difficulty=expert achieved=False tier_rate=0.08\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 208: task=120 difficulty=expert achieved=False tier_rate=0.06\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 209: task=134 difficulty=expert achieved=False tier_rate=0.05\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 210: task=122 difficulty=expert achieved=False tier_rate=0.05\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 211: task=20 difficulty=expert achieved=True tier_rate=0.19\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 212: task=117 difficulty=expert achieved=False tier_rate=0.16\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 213: task=116 difficulty=expert achieved=False tier_rate=0.14\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 214: task=110 difficulty=expert achieved=True tier_rate=0.27\n",
+ "16:57:43 | INFO | server.services.curriculum | Episode 215: task=126 difficulty=expert achieved=False tier_rate=0.23\n",
+ "16:57:48 | INFO | grpo | [final-grpo] step 15/35 (+233.5s)\n",
+ "16:57:48 | INFO | grpo | [final-grpo] log step=15 {'loss': -0.0866, 'grad_norm': 0.2542, 'learning_rate': 0.0, 'completion_length': 84.375, 'kl': 0.1345, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 69954.0, 'completions/mean_length': 94.6875, 'completions/min_length': 35.0, 'completions/max_length': 190.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 94.6875, 'completions/min_terminated_length': 35.0, 'completions/max_terminated_length': 190.0, 'rewards/env_reward/mean': 0.2557, 'rewards/env_reward/std': 0.3671, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9046, 'rewards/length_reward/std': 0.1519, 'reward': 2.1602, 'reward_std': 0.4395, 'frac_reward_zero_std': 0.0, 'epoch': 2.5714}\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 216: task=116 difficulty=expert achieved=False tier_rate=0.19\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 217: task=124 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 218: task=126 difficulty=expert achieved=False tier_rate=0.14\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 219: task=131 difficulty=expert achieved=True tier_rate=0.27\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 220: task=23 difficulty=expert achieved=False tier_rate=0.23\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 221: task=134 difficulty=expert achieved=False tier_rate=0.19\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 222: task=113 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 223: task=123 difficulty=expert achieved=False tier_rate=0.14\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 224: task=139 difficulty=expert achieved=False tier_rate=0.12\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 225: task=21 difficulty=expert achieved=False tier_rate=0.10\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 226: task=109 difficulty=expert achieved=False tier_rate=0.09\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 227: task=18 difficulty=expert achieved=False tier_rate=0.07\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 228: task=111 difficulty=expert achieved=False tier_rate=0.06\n",
+ "17:01:26 | INFO | server.services.curriculum | Episode 229: task=24 difficulty=expert achieved=False tier_rate=0.05\n",
+ "17:01:30 | INFO | grpo | [final-grpo] step 16/35 (+222.3s)\n",
+ "17:01:30 | INFO | grpo | [final-grpo] log step=16 {'loss': 0.2731, 'grad_norm': 0.221, 'learning_rate': 0.0, 'completion_length': 99.0, 'kl': 0.0956, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 75206.0, 'completions/mean_length': 85.25, 'completions/min_length': 41.0, 'completions/max_length': 173.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 85.25, 'completions/min_terminated_length': 41.0, 'completions/max_terminated_length': 173.0, 'rewards/env_reward/mean': 0.1604, 'rewards/env_reward/std': 0.2648, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9202, 'rewards/length_reward/std': 0.1367, 'reward': 2.0806, 'reward_std': 0.3175, 'frac_reward_zero_std': 0.0, 'epoch': 2.7619}\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 230: task=115 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 231: task=114 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 232: task=125 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 233: task=128 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 234: task=135 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 235: task=134 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 236: task=133 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 237: task=126 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 238: task=23 difficulty=expert achieved=True tier_rate=0.16\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 239: task=110 difficulty=expert achieved=True tier_rate=0.29\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 240: task=117 difficulty=expert achieved=False tier_rate=0.24\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 241: task=19 difficulty=expert achieved=False tier_rate=0.21\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 242: task=109 difficulty=expert achieved=False tier_rate=0.18\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 243: task=119 difficulty=expert achieved=True tier_rate=0.30\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 244: task=124 difficulty=expert achieved=False tier_rate=0.26\n",
+ "17:05:28 | INFO | server.services.curriculum | Episode 245: task=18 difficulty=expert achieved=False tier_rate=0.22\n",
+ "17:05:32 | INFO | grpo | [final-grpo] step 17/35 (+241.9s)\n",
+ "17:05:32 | INFO | grpo | [final-grpo] log step=17 {'loss': 0.1019, 'grad_norm': 0.2589, 'learning_rate': 0.0, 'completion_length': 87.6875, 'kl': 0.1146, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 80407.0, 'completions/mean_length': 87.9375, 'completions/min_length': 31.0, 'completions/max_length': 167.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 87.9375, 'completions/min_terminated_length': 31.0, 'completions/max_terminated_length': 167.0, 'rewards/env_reward/mean': 0.2371, 'rewards/env_reward/std': 0.3825, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.917, 'rewards/length_reward/std': 0.1256, 'reward': 2.1541, 'reward_std': 0.3543, 'frac_reward_zero_std': 0.0, 'epoch': 2.9524}\n",
+ "17:05:35 | INFO | grpo | [final-grpo] step 18/35 (+2.3s)\n",
+ "17:05:35 | INFO | grpo | [final-grpo] log step=18 {'loss': 0.2207, 'grad_norm': 0.5284, 'learning_rate': 0.0, 'completion_length': 79.0, 'kl': 0.134, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 3.0}\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 246: task=126 difficulty=expert achieved=False tier_rate=0.18\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 247: task=109 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 248: task=23 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 249: task=129 difficulty=expert achieved=False tier_rate=0.11\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 250: task=24 difficulty=expert achieved=False tier_rate=0.10\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 251: task=118 difficulty=expert achieved=False tier_rate=0.08\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 252: task=119 difficulty=expert achieved=True tier_rate=0.22\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 253: task=22 difficulty=expert achieved=False tier_rate=0.19\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 254: task=18 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 255: task=139 difficulty=expert achieved=True tier_rate=0.28\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 256: task=21 difficulty=expert achieved=True tier_rate=0.39\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 257: task=133 difficulty=expert achieved=False tier_rate=0.33\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 258: task=122 difficulty=expert achieved=False tier_rate=0.28\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 259: task=110 difficulty=expert achieved=True tier_rate=0.39\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 260: task=123 difficulty=expert achieved=False tier_rate=0.33\n",
+ "17:08:52 | INFO | server.services.curriculum | Episode 261: task=115 difficulty=expert achieved=False tier_rate=0.28\n",
+ "17:09:00 | INFO | grpo | [final-grpo] step 19/35 (+205.3s)\n",
+ "17:09:00 | INFO | grpo | [final-grpo] log step=19 {'loss': -0.1852, 'grad_norm': 0.2376, 'learning_rate': 0.0, 'completion_length': 89.8125, 'kl': 0.1185, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 85782.0, 'completions/mean_length': 97.9375, 'completions/min_length': 44.0, 'completions/max_length': 264.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 97.9375, 'completions/min_terminated_length': 44.0, 'completions/max_terminated_length': 264.0, 'rewards/env_reward/mean': 0.3362, 'rewards/env_reward/std': 0.4117, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9021, 'rewards/length_reward/std': 0.1455, 'reward': 2.2383, 'reward_std': 0.4771, 'frac_reward_zero_std': 0.0, 'epoch': 3.1905}\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 262: task=119 difficulty=expert achieved=False tier_rate=0.24\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 263: task=111 difficulty=expert achieved=True tier_rate=0.35\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 264: task=124 difficulty=expert achieved=False tier_rate=0.30\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 265: task=25 difficulty=expert achieved=False tier_rate=0.26\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 266: task=120 difficulty=expert achieved=False tier_rate=0.22\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 267: task=128 difficulty=expert achieved=False tier_rate=0.18\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 268: task=122 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 269: task=126 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 270: task=19 difficulty=expert achieved=False tier_rate=0.11\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 271: task=115 difficulty=expert achieved=False tier_rate=0.10\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 272: task=114 difficulty=expert achieved=False tier_rate=0.08\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 273: task=135 difficulty=expert achieved=False tier_rate=0.07\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 274: task=123 difficulty=expert achieved=False tier_rate=0.06\n",
+ "17:12:16 | INFO | server.services.curriculum | Episode 275: task=134 difficulty=expert achieved=False tier_rate=0.05\n",
+ "17:12:24 | INFO | grpo | [final-grpo] step 20/35 (+203.7s)\n",
+ "17:12:24 | INFO | grpo | [final-grpo] log step=20 {'loss': 0.0928, 'grad_norm': 0.2356, 'learning_rate': 0.0, 'completion_length': 74.3125, 'kl': 0.1807, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 90979.0, 'completions/mean_length': 78.0, 'completions/min_length': 17.0, 'completions/max_length': 193.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 78.0, 'completions/min_terminated_length': 17.0, 'completions/max_terminated_length': 193.0, 'rewards/env_reward/mean': 0.2499, 'rewards/env_reward/std': 0.2785, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.954, 'rewards/length_reward/std': 0.1011, 'reward': 2.2039, 'reward_std': 0.3256, 'frac_reward_zero_std': 0.0, 'epoch': 3.381}\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 276: task=19 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 277: task=134 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 278: task=121 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 279: task=21 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 280: task=25 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 281: task=131 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 282: task=24 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 283: task=114 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 284: task=115 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 285: task=139 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 286: task=23 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 287: task=125 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 288: task=128 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 289: task=113 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:16:21 | INFO | server.services.curriculum | Episode 290: task=116 difficulty=expert achieved=False tier_rate=0.00\n",
+ "17:16:28 | INFO | grpo | [final-grpo] step 21/35 (+244.0s)\n",
+ "17:16:28 | INFO | grpo | [final-grpo] log step=21 {'loss': 0.4222, 'grad_norm': 0.2285, 'learning_rate': 0.0, 'completion_length': 107.375, 'kl': 0.1115, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 96292.0, 'completions/mean_length': 89.8125, 'completions/min_length': 38.0, 'completions/max_length': 153.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 89.8125, 'completions/min_terminated_length': 38.0, 'completions/max_terminated_length': 153.0, 'rewards/env_reward/mean': 0.1265, 'rewards/env_reward/std': 0.1237, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9045, 'rewards/length_reward/std': 0.1363, 'reward': 2.031, 'reward_std': 0.2181, 'frac_reward_zero_std': 0.0, 'epoch': 3.5714}\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 291: task=129 difficulty=expert achieved=False tier_rate=0.00\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 292: task=133 difficulty=expert achieved=False tier_rate=0.00\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 293: task=119 difficulty=expert achieved=True tier_rate=0.15\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 294: task=128 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 295: task=134 difficulty=expert achieved=False tier_rate=0.11\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 296: task=123 difficulty=expert achieved=False tier_rate=0.09\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 297: task=19 difficulty=expert achieved=False tier_rate=0.08\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 298: task=118 difficulty=expert achieved=False tier_rate=0.07\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 299: task=18 difficulty=expert achieved=False tier_rate=0.06\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 300: task=114 difficulty=expert achieved=False tier_rate=0.05\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 301: task=124 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:19:54 | INFO | server.services.curriculum | Task 127 UN-GRADUATED (rate=0.57) — resetting to active\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 302: task=127 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 303: task=111 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 304: task=121 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:19:54 | INFO | server.services.curriculum | Episode 305: task=110 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:20:02 | INFO | grpo | [final-grpo] step 22/35 (+214.2s)\n",
+ "17:20:02 | INFO | grpo | [final-grpo] log step=22 {'loss': -0.0373, 'grad_norm': 0.2382, 'learning_rate': 0.0, 'completion_length': 83.25, 'kl': 0.1369, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 101634.0, 'completions/mean_length': 93.9375, 'completions/min_length': 28.0, 'completions/max_length': 291.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 93.9375, 'completions/min_terminated_length': 28.0, 'completions/max_terminated_length': 291.0, 'rewards/env_reward/mean': 0.3159, 'rewards/env_reward/std': 0.3495, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9655, 'rewards/length_reward/std': 0.0714, 'reward': 2.2814, 'reward_std': 0.3936, 'frac_reward_zero_std': 0.0, 'epoch': 3.7619}\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 306: task=117 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 307: task=125 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 308: task=19 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 309: task=123 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 310: task=118 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 311: task=111 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 312: task=129 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 313: task=22 difficulty=expert achieved=True tier_rate=0.16\n",
+ "17:24:01 | INFO | server.services.curriculum | Task 110 UN-GRADUATED (rate=0.59) — resetting to active\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 314: task=110 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 315: task=115 difficulty=expert achieved=False tier_rate=0.11\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 316: task=109 difficulty=expert achieved=False tier_rate=0.10\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 317: task=18 difficulty=expert achieved=False tier_rate=0.08\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 318: task=133 difficulty=expert achieved=False tier_rate=0.07\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 319: task=128 difficulty=expert achieved=False tier_rate=0.06\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 320: task=120 difficulty=expert achieved=False tier_rate=0.05\n",
+ "17:24:01 | INFO | server.services.curriculum | Episode 321: task=126 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:24:09 | INFO | grpo | [final-grpo] step 23/35 (+247.2s)\n",
+ "17:24:09 | INFO | grpo | [final-grpo] log step=23 {'loss': 0.1686, 'grad_norm': 0.2184, 'learning_rate': 0.0, 'completion_length': 105.1875, 'kl': 0.1559, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 107148.0, 'completions/mean_length': 105.1875, 'completions/min_length': 41.0, 'completions/max_length': 303.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 105.1875, 'completions/min_terminated_length': 41.0, 'completions/max_terminated_length': 303.0, 'rewards/env_reward/mean': 0.1881, 'rewards/env_reward/std': 0.2464, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9008, 'rewards/length_reward/std': 0.1619, 'reward': 2.0889, 'reward_std': 0.334, 'frac_reward_zero_std': 0.0, 'epoch': 3.9524}\n",
+ "17:24:12 | INFO | grpo | [final-grpo] step 24/35 (+2.9s)\n",
+ "17:24:12 | INFO | grpo | [final-grpo] log step=24 {'loss': -0.0629, 'grad_norm': 0.1749, 'learning_rate': 0.0, 'completion_length': 91.25, 'kl': 0.1545, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.0}\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 322: task=20 difficulty=expert achieved=True tier_rate=0.19\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 323: task=134 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 324: task=18 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 325: task=126 difficulty=expert achieved=False tier_rate=0.11\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 326: task=121 difficulty=expert achieved=False tier_rate=0.10\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 327: task=127 difficulty=expert achieved=True tier_rate=0.23\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 328: task=19 difficulty=expert achieved=False tier_rate=0.20\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 329: task=25 difficulty=expert achieved=False tier_rate=0.17\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 330: task=131 difficulty=expert achieved=False tier_rate=0.14\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 331: task=23 difficulty=expert achieved=False tier_rate=0.12\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 332: task=21 difficulty=expert achieved=False tier_rate=0.10\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 333: task=119 difficulty=expert achieved=True tier_rate=0.24\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 334: task=128 difficulty=expert achieved=False tier_rate=0.20\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 335: task=118 difficulty=expert achieved=False tier_rate=0.17\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 336: task=116 difficulty=expert achieved=False tier_rate=0.15\n",
+ "17:27:15 | INFO | server.services.curriculum | Episode 337: task=22 difficulty=expert achieved=True tier_rate=0.27\n",
+ "17:27:25 | INFO | grpo | [final-grpo] step 25/35 (+193.1s)\n",
+ "17:27:25 | INFO | grpo | [final-grpo] log step=25 {'loss': 0.0519, 'grad_norm': 0.2533, 'learning_rate': 0.0, 'num_tokens': 112197.0, 'completions/mean_length': 83.3125, 'completions/min_length': 36.0, 'completions/max_length': 252.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 83.3125, 'completions/min_terminated_length': 36.0, 'completions/max_terminated_length': 252.0, 'rewards/env_reward/mean': 0.3733, 'rewards/env_reward/std': 0.4133, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9321, 'rewards/length_reward/std': 0.1404, 'reward': 2.3054, 'reward_std': 0.4664, 'frac_reward_zero_std': 0.0, 'completion_length': 83.3125, 'kl': 0.1324, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.1905}\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 338: task=115 difficulty=expert achieved=False tier_rate=0.23\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 339: task=126 difficulty=expert achieved=False tier_rate=0.20\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 340: task=122 difficulty=expert achieved=False tier_rate=0.17\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 341: task=118 difficulty=expert achieved=False tier_rate=0.14\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 342: task=133 difficulty=expert achieved=False tier_rate=0.12\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 343: task=129 difficulty=expert achieved=False tier_rate=0.10\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 344: task=114 difficulty=expert achieved=False tier_rate=0.09\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 345: task=18 difficulty=expert achieved=False tier_rate=0.07\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 346: task=116 difficulty=expert achieved=False tier_rate=0.06\n",
+ "17:33:40 | INFO | server.services.curriculum | Task 127 GRADUATED (rate=0.72) — scheduling spaced repetition\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 347: task=127 difficulty=expert achieved=True tier_rate=0.20\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 348: task=25 difficulty=expert achieved=False tier_rate=0.17\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 349: task=110 difficulty=expert achieved=True tier_rate=0.30\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 350: task=21 difficulty=expert achieved=True tier_rate=0.40\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 351: task=128 difficulty=expert achieved=False tier_rate=0.34\n",
+ "17:33:40 | INFO | server.services.curriculum | Episode 352: task=123 difficulty=expert achieved=False tier_rate=0.29\n",
+ "17:33:59 | INFO | grpo | [final-grpo] step 26/35 (+394.3s)\n",
+ "17:33:59 | INFO | grpo | [final-grpo] log step=26 {'loss': 0.0847, 'grad_norm': 0.2684, 'learning_rate': 0.0, 'num_tokens': 118063.0, 'completions/mean_length': 128.1875, 'completions/min_length': 42.0, 'completions/max_length': 768.0, 'completions/clipped_ratio': 0.0625, 'completions/mean_terminated_length': 85.5333, 'completions/min_terminated_length': 42.0, 'completions/max_terminated_length': 154.0, 'rewards/env_reward/mean': 0.2754, 'rewards/env_reward/std': 0.3726, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.8385, 'rewards/length_reward/std': 0.1988, 'reward': 2.1139, 'reward_std': 0.4257, 'frac_reward_zero_std': 0.0, 'completion_length': 128.1875, 'kl': 0.161, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.381}\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 353: task=127 difficulty=expert achieved=True tier_rate=0.40\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 354: task=19 difficulty=expert achieved=False tier_rate=0.34\n",
+ "17:37:05 | INFO | server.services.curriculum | Task 110 GRADUATED (rate=0.71) — scheduling spaced repetition\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 355: task=110 difficulty=expert achieved=True tier_rate=0.44\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 356: task=126 difficulty=expert achieved=False tier_rate=0.37\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 357: task=123 difficulty=expert achieved=True tier_rate=0.47\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 358: task=131 difficulty=expert achieved=False tier_rate=0.40\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 359: task=115 difficulty=expert achieved=False tier_rate=0.34\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 360: task=24 difficulty=expert achieved=False tier_rate=0.29\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 361: task=117 difficulty=expert achieved=False tier_rate=0.24\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 362: task=21 difficulty=expert achieved=False tier_rate=0.21\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 363: task=129 difficulty=expert achieved=False tier_rate=0.18\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 364: task=111 difficulty=expert achieved=False tier_rate=0.15\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 365: task=125 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:37:05 | INFO | server.services.curriculum | Episode 366: task=124 difficulty=expert achieved=False tier_rate=0.11\n",
+ "17:37:14 | INFO | grpo | [final-grpo] step 27/35 (+195.2s)\n",
+ "17:37:14 | INFO | grpo | [final-grpo] log step=27 {'loss': 0.11, 'grad_norm': 0.1977, 'learning_rate': 0.0, 'num_tokens': 123203.0, 'completions/mean_length': 76.5625, 'completions/min_length': 25.0, 'completions/max_length': 145.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 76.5625, 'completions/min_terminated_length': 25.0, 'completions/max_terminated_length': 145.0, 'rewards/env_reward/mean': 0.3355, 'rewards/env_reward/std': 0.4122, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9378, 'rewards/length_reward/std': 0.0952, 'reward': 2.2734, 'reward_std': 0.4548, 'frac_reward_zero_std': 0.0, 'completion_length': 76.5625, 'kl': 0.1915, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.5714}\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 367: task=123 difficulty=expert achieved=False tier_rate=0.09\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 368: task=125 difficulty=expert achieved=False tier_rate=0.08\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 369: task=24 difficulty=expert achieved=False tier_rate=0.07\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 370: task=19 difficulty=expert achieved=False tier_rate=0.06\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 371: task=22 difficulty=expert achieved=False tier_rate=0.05\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 372: task=117 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 373: task=124 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 374: task=114 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 375: task=23 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 376: task=21 difficulty=expert achieved=True tier_rate=0.17\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 377: task=121 difficulty=expert achieved=False tier_rate=0.15\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 378: task=116 difficulty=expert achieved=False tier_rate=0.12\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 379: task=139 difficulty=expert achieved=False tier_rate=0.11\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 380: task=25 difficulty=expert achieved=False tier_rate=0.09\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 381: task=115 difficulty=expert achieved=False tier_rate=0.08\n",
+ "17:41:08 | INFO | server.services.curriculum | Episode 382: task=126 difficulty=expert achieved=False tier_rate=0.06\n",
+ "17:41:17 | INFO | grpo | [final-grpo] step 28/35 (+243.0s)\n",
+ "17:41:17 | INFO | grpo | [final-grpo] log step=28 {'loss': -0.054, 'grad_norm': 0.2198, 'learning_rate': 0.0, 'num_tokens': 128577.0, 'completions/mean_length': 95.25, 'completions/min_length': 29.0, 'completions/max_length': 170.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 95.25, 'completions/min_terminated_length': 29.0, 'completions/max_terminated_length': 170.0, 'rewards/env_reward/mean': 0.2246, 'rewards/env_reward/std': 0.3104, 'rewards/format_reward/mean': 0.9375, 'rewards/format_reward/std': 0.25, 'rewards/length_reward/mean': 0.908, 'rewards/length_reward/std': 0.1206, 'reward': 2.0701, 'reward_std': 0.4388, 'frac_reward_zero_std': 0.0, 'completion_length': 95.25, 'kl': 0.156, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.7619}\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 383: task=23 difficulty=expert achieved=False tier_rate=0.05\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 384: task=120 difficulty=expert achieved=False tier_rate=0.05\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 385: task=111 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 386: task=110 difficulty=expert achieved=True tier_rate=0.18\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 387: task=134 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 388: task=135 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 389: task=19 difficulty=expert achieved=False tier_rate=0.11\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 390: task=128 difficulty=expert achieved=False tier_rate=0.10\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 391: task=114 difficulty=expert achieved=False tier_rate=0.08\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 392: task=20 difficulty=expert achieved=False tier_rate=0.07\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 393: task=129 difficulty=expert achieved=False tier_rate=0.06\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 394: task=139 difficulty=expert achieved=False tier_rate=0.05\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 395: task=25 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 396: task=131 difficulty=expert achieved=False tier_rate=0.04\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 397: task=113 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:44:43 | INFO | server.services.curriculum | Episode 398: task=115 difficulty=expert achieved=False tier_rate=0.03\n",
+ "17:44:53 | INFO | grpo | [final-grpo] step 29/35 (+215.2s)\n",
+ "17:44:53 | INFO | grpo | [final-grpo] log step=29 {'loss': 0.1324, 'grad_norm': 0.3037, 'learning_rate': 0.0, 'num_tokens': 133793.0, 'completions/mean_length': 81.9375, 'completions/min_length': 24.0, 'completions/max_length': 168.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 81.9375, 'completions/min_terminated_length': 24.0, 'completions/max_terminated_length': 168.0, 'rewards/env_reward/mean': 0.2174, 'rewards/env_reward/std': 0.2527, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9206, 'rewards/length_reward/std': 0.1428, 'reward': 2.138, 'reward_std': 0.3027, 'frac_reward_zero_std': 0.0, 'completion_length': 81.9375, 'kl': 0.1395, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 4.9524}\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 399: task=23 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 400: task=126 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 401: task=19 difficulty=expert achieved=False tier_rate=0.02\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 402: task=115 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 403: task=116 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 404: task=128 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 405: task=133 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 406: task=22 difficulty=expert achieved=False tier_rate=0.01\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 407: task=110 difficulty=expert achieved=True tier_rate=0.16\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 408: task=135 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 409: task=134 difficulty=expert achieved=True tier_rate=0.26\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 410: task=25 difficulty=expert achieved=False tier_rate=0.22\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 411: task=124 difficulty=expert achieved=False tier_rate=0.19\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 412: task=139 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 413: task=18 difficulty=expert achieved=False tier_rate=0.14\n",
+ "17:48:07 | INFO | server.services.curriculum | Episode 414: task=117 difficulty=expert achieved=False tier_rate=0.12\n",
+ "17:48:09 | INFO | grpo | [final-grpo] step 30/35 (+196.5s)\n",
+ "17:48:09 | INFO | grpo | [final-grpo] log step=30 {'loss': 0.6377, 'grad_norm': 0.2491, 'learning_rate': 0.0, 'num_tokens': 138737.0, 'completions/mean_length': 73.1875, 'completions/min_length': 38.0, 'completions/max_length': 151.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 73.1875, 'completions/min_terminated_length': 38.0, 'completions/max_terminated_length': 151.0, 'rewards/env_reward/mean': 0.2316, 'rewards/env_reward/std': 0.3266, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9502, 'rewards/length_reward/std': 0.087, 'reward': 2.1818, 'reward_std': 0.3468, 'frac_reward_zero_std': 0.0, 'completion_length': 84.25, 'kl': 0.1716, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'epoch': 5.0}\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 415: task=123 difficulty=expert achieved=False tier_rate=0.10\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 416: task=124 difficulty=expert achieved=False tier_rate=0.08\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 417: task=134 difficulty=expert achieved=False tier_rate=0.07\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 418: task=23 difficulty=expert achieved=True tier_rate=0.21\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 419: task=111 difficulty=expert achieved=False tier_rate=0.18\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 420: task=120 difficulty=expert achieved=False tier_rate=0.15\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 421: task=118 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 422: task=129 difficulty=expert achieved=False tier_rate=0.11\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 423: task=18 difficulty=expert achieved=False tier_rate=0.09\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 424: task=128 difficulty=expert achieved=False tier_rate=0.08\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 425: task=22 difficulty=expert achieved=True tier_rate=0.22\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 426: task=121 difficulty=expert achieved=False tier_rate=0.18\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 427: task=113 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 428: task=139 difficulty=expert achieved=True tier_rate=0.28\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 429: task=25 difficulty=expert achieved=False tier_rate=0.24\n",
+ "17:51:37 | INFO | server.services.curriculum | Episode 430: task=20 difficulty=expert achieved=True tier_rate=0.35\n",
+ "17:51:40 | INFO | grpo | [final-grpo] step 31/35 (+210.4s)\n",
+ "17:51:40 | INFO | grpo | [final-grpo] log step=31 {'loss': -0.1123, 'grad_norm': 0.2871, 'learning_rate': 0.0, 'completion_length': 70.0625, 'kl': 0.1626, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 144036.0, 'completions/mean_length': 88.8125, 'completions/min_length': 47.0, 'completions/max_length': 147.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 88.8125, 'completions/min_terminated_length': 47.0, 'completions/max_terminated_length': 147.0, 'rewards/env_reward/mean': 0.3949, 'rewards/env_reward/std': 0.4188, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9569, 'rewards/length_reward/std': 0.1044, 'reward': 2.3518, 'reward_std': 0.4425, 'frac_reward_zero_std': 0.0, 'epoch': 5.1905}\n",
+ "17:55:22 | INFO | server.services.curriculum | Task 127 UN-GRADUATED (rate=0.62) — resetting to active\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 431: task=127 difficulty=expert achieved=False tier_rate=0.30\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 432: task=120 difficulty=expert achieved=False tier_rate=0.26\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 433: task=111 difficulty=expert achieved=True tier_rate=0.37\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 434: task=133 difficulty=expert achieved=False tier_rate=0.31\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 435: task=118 difficulty=expert achieved=False tier_rate=0.27\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 436: task=124 difficulty=expert achieved=False tier_rate=0.23\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 437: task=115 difficulty=expert achieved=False tier_rate=0.19\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 438: task=114 difficulty=expert achieved=False tier_rate=0.16\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 439: task=25 difficulty=expert achieved=False tier_rate=0.14\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 440: task=110 difficulty=expert achieved=True tier_rate=0.27\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 441: task=20 difficulty=expert achieved=True tier_rate=0.38\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 442: task=113 difficulty=expert achieved=False tier_rate=0.32\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 443: task=126 difficulty=expert achieved=False tier_rate=0.27\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 444: task=123 difficulty=expert achieved=False tier_rate=0.23\n",
+ "17:55:22 | INFO | server.services.curriculum | Episode 445: task=117 difficulty=expert achieved=False tier_rate=0.20\n",
+ "17:55:24 | INFO | grpo | [final-grpo] step 32/35 (+224.6s)\n",
+ "17:55:24 | INFO | grpo | [final-grpo] log step=32 {'loss': 0.1634, 'grad_norm': 0.3088, 'learning_rate': 0.0, 'completion_length': 101.25, 'kl': 0.1422, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 149315.0, 'completions/mean_length': 83.9375, 'completions/min_length': 29.0, 'completions/max_length': 182.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 83.9375, 'completions/min_terminated_length': 29.0, 'completions/max_terminated_length': 182.0, 'rewards/env_reward/mean': 0.2958, 'rewards/env_reward/std': 0.3892, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9025, 'rewards/length_reward/std': 0.1382, 'reward': 2.1983, 'reward_std': 0.4893, 'frac_reward_zero_std': 0.0, 'epoch': 5.381}\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 446: task=131 difficulty=expert achieved=False tier_rate=0.17\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 447: task=110 difficulty=expert achieved=True tier_rate=0.29\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 448: task=111 difficulty=expert achieved=False tier_rate=0.25\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 449: task=21 difficulty=expert achieved=False tier_rate=0.21\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 450: task=113 difficulty=expert achieved=False tier_rate=0.18\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 451: task=125 difficulty=expert achieved=False tier_rate=0.15\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 452: task=118 difficulty=expert achieved=False tier_rate=0.13\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 453: task=20 difficulty=expert achieved=True tier_rate=0.26\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 454: task=119 difficulty=expert achieved=True tier_rate=0.37\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 455: task=128 difficulty=expert achieved=False tier_rate=0.32\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 456: task=124 difficulty=expert achieved=True tier_rate=0.42\n",
+ "17:58:55 | INFO | server.services.curriculum | Task 127 GRADUATED (rate=0.72) — scheduling spaced repetition\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 457: task=127 difficulty=expert achieved=True tier_rate=0.51\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 458: task=116 difficulty=expert achieved=False tier_rate=0.43\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 459: task=115 difficulty=expert achieved=False tier_rate=0.37\n",
+ "17:58:55 | INFO | server.services.curriculum | Episode 460: task=109 difficulty=expert achieved=False tier_rate=0.31\n",
+ "17:58:58 | INFO | grpo | [final-grpo] step 33/35 (+213.5s)\n",
+ "17:58:58 | INFO | grpo | [final-grpo] log step=33 {'loss': 0.1873, 'grad_norm': 0.2613, 'learning_rate': 0.0, 'completion_length': 87.125, 'kl': 0.1585, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 154858.0, 'completions/mean_length': 101.8125, 'completions/min_length': 32.0, 'completions/max_length': 194.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 101.8125, 'completions/min_terminated_length': 32.0, 'completions/max_terminated_length': 194.0, 'rewards/env_reward/mean': 0.3894, 'rewards/env_reward/std': 0.4482, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.8731, 'rewards/length_reward/std': 0.1621, 'reward': 2.2625, 'reward_std': 0.5678, 'frac_reward_zero_std': 0.0, 'epoch': 5.5714}\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 461: task=139 difficulty=expert achieved=False tier_rate=0.26\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 462: task=122 difficulty=expert achieved=False tier_rate=0.22\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 463: task=129 difficulty=expert achieved=False tier_rate=0.19\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 464: task=117 difficulty=expert achieved=False tier_rate=0.16\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 465: task=134 difficulty=expert achieved=False tier_rate=0.14\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 466: task=125 difficulty=expert achieved=False tier_rate=0.12\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 467: task=133 difficulty=expert achieved=False tier_rate=0.10\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 468: task=126 difficulty=expert achieved=False tier_rate=0.08\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 469: task=23 difficulty=expert achieved=False tier_rate=0.07\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 470: task=124 difficulty=expert achieved=False tier_rate=0.06\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 471: task=20 difficulty=expert achieved=False tier_rate=0.05\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 472: task=25 difficulty=expert achieved=False tier_rate=0.04\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 473: task=114 difficulty=expert achieved=False tier_rate=0.04\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 474: task=135 difficulty=expert achieved=False tier_rate=0.03\n",
+ "18:02:28 | INFO | server.services.curriculum | Episode 475: task=131 difficulty=expert achieved=False tier_rate=0.03\n",
+ "18:02:30 | INFO | grpo | [final-grpo] step 34/35 (+212.6s)\n",
+ "18:02:30 | INFO | grpo | [final-grpo] log step=34 {'loss': -0.2093, 'grad_norm': 0.2516, 'learning_rate': 0.0, 'completion_length': 94.5, 'kl': 0.1341, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 160004.0, 'completions/mean_length': 80.4375, 'completions/min_length': 26.0, 'completions/max_length': 129.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 80.4375, 'completions/min_terminated_length': 26.0, 'completions/max_terminated_length': 129.0, 'rewards/env_reward/mean': 0.2364, 'rewards/env_reward/std': 0.2318, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.9459, 'rewards/length_reward/std': 0.0736, 'reward': 2.1822, 'reward_std': 0.2709, 'frac_reward_zero_std': 0.0, 'epoch': 5.7619}\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 476: task=122 difficulty=expert achieved=False tier_rate=0.02\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 477: task=25 difficulty=expert achieved=False tier_rate=0.02\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 478: task=131 difficulty=expert achieved=False tier_rate=0.02\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 479: task=129 difficulty=expert achieved=False tier_rate=0.01\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 480: task=115 difficulty=expert achieved=False tier_rate=0.01\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 481: task=120 difficulty=expert achieved=False tier_rate=0.01\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 482: task=126 difficulty=expert achieved=False tier_rate=0.01\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 483: task=117 difficulty=expert achieved=False tier_rate=0.01\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 484: task=128 difficulty=expert achieved=False tier_rate=0.01\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 485: task=134 difficulty=expert achieved=False tier_rate=0.01\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 486: task=23 difficulty=expert achieved=False tier_rate=0.00\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 487: task=123 difficulty=expert achieved=False tier_rate=0.00\n",
+ "18:07:03 | INFO | server.services.curriculum | Task 20 UN-GRADUATED (rate=0.57) — resetting to active\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 488: task=20 difficulty=expert achieved=False tier_rate=0.00\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 489: task=116 difficulty=expert achieved=False tier_rate=0.00\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 490: task=133 difficulty=expert achieved=False tier_rate=0.00\n",
+ "18:07:03 | INFO | server.services.curriculum | Episode 491: task=125 difficulty=expert achieved=False tier_rate=0.00\n",
+ "18:07:06 | INFO | grpo | [final-grpo] step 35/35 (+275.5s)\n",
+ "18:07:06 | INFO | grpo | [final-grpo] log step=35 {'loss': -0.0615, 'grad_norm': 0.2404, 'learning_rate': 0.0, 'completion_length': 74.375, 'kl': 0.126, 'clip_ratio/low_mean': 0.0, 'clip_ratio/low_min': 0.0, 'clip_ratio/high_mean': 0.0, 'clip_ratio/high_max': 0.0, 'clip_ratio/region_mean': 0.0, 'num_tokens': 165202.0, 'completions/mean_length': 83.875, 'completions/min_length': 30.0, 'completions/max_length': 249.0, 'completions/clipped_ratio': 0.0, 'completions/mean_terminated_length': 83.875, 'completions/min_terminated_length': 30.0, 'completions/max_terminated_length': 249.0, 'rewards/env_reward/mean': 0.1922, 'rewards/env_reward/std': 0.1868, 'rewards/format_reward/mean': 1.0, 'rewards/format_reward/std': 0.0, 'rewards/length_reward/mean': 0.932, 'rewards/length_reward/std': 0.123, 'reward': 2.1242, 'reward_std': 0.2548, 'frac_reward_zero_std': 0.0, 'epoch': 5.9524}\n",
+ "18:07:07 | INFO | grpo | [final-grpo] log step=35 {'train_runtime': 6855.0451, 'train_samples_per_second': 0.082, 'train_steps_per_second': 0.005, 'total_flos': 0.0, 'train_loss': 0.0819, 'epoch': 5.9524}\n",
+ "18:07:07 | INFO | grpo | [final-grpo] train_end | global_step=35 elapsed=6855.0s\n",
+ "18:07:08 | INFO | grpo | Final curriculum stats: {'episode_count': 491, 'tier': 'expert', 'tier_episodes': 474, 'tier_success_rate': 0.002, 'graduated_tasks': [110, 119, 127], 'weak_spots': [18, 19, 20, 21, 22, 23, 109, 111, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 24, 25, 128, 129, 131, 133, 134, 135, 139], 'skill_profile': {37: 1.0, 33: 0.0, 30: 1.0, 40: 1.0, 39: 0.0, 27: 0.0, 5: 1.0, 31: 1.0, 36: 1.0, 42: 1.0, 32: 1.0, 38: 1.0, 1: 1.0, 35: 1.0, 43: 1.0, 34: 1.0, 44: 1.0, 29: 1.0, 3: 1.0, 0: 1.0, 4: 1.0, 28: 1.0, 41: 1.0, 100: 0.0, 103: 0.0, 97: 0.0, 90: 0.0, 95: 0.0, 91: 0.0, 101: 0.0, 104: 0.0, 105: 0.0, 17: 0.0, 107: 0.0, 108: 0.0, 92: 0.0, 106: 0.0, 111: 0.22, 119: 0.89, 129: 0.0, 121: 0.05, 23: 0.18, 139: 0.27, 124: 0.16, 22: 0.42, 114: 0.0, 134: 0.11, 133: 0.0, 21: 0.39, 123: 0.1, 120: 0.0, 116: 0.0, 122: 0.0, 135: 0.0, 24: 0.0, 128: 0.0, 18: 0.0, 25: 0.0, 127: 0.72, 131: 0.06, 126: 0.0, 110: 0.87, 118: 0.0, 125: 0.0, 113: 0.0, 109: 0.04, 115: 0.0, 20: 0.57, 19: 0.0, 117: 0.0}, 'spaced_rep_due': [110, 119, 127], 'avg_reward_last_10': 0.176}\n",
+ "18:07:09 | INFO | grpo | Saved GRPO adapter to /content/out/grpo_adapter\n"
+ ]
+ }
+ ],
+ "source": [
+ "import json\n",
+ "from dataclasses import asdict\n",
+ "\n",
+ "\n",
+ "class CheckpointManager:\n",
+ " \"\"\"Find the latest `checkpoint-N/` under `root` for safe resume.\"\"\"\n",
+ "\n",
+ " def __init__(self, root: Path) -> None:\n",
+ " self.root = root\n",
+ "\n",
+ " def latest(self) -> str | None:\n",
+ " if not self.root.exists():\n",
+ " return None\n",
+ " ckpts = sorted(\n",
+ " (d for d in self.root.glob(\"checkpoint-*\") if d.is_dir()),\n",
+ " key=lambda d: int(d.name.split(\"-\")[-1]),\n",
+ " )\n",
+ " return str(ckpts[-1]) if ckpts else None\n",
+ "\n",
+ "\n",
+ "FINAL_RUN_DIR = OUT_DIR / \"final_grpo\"\n",
+ "ckpt_mgr = CheckpointManager(FINAL_RUN_DIR)\n",
+ "resume_from = ckpt_mgr.latest()\n",
+ "\n",
+ "# Make the final-run cell re-runnable after a kernel restart: if `best_cfg` is\n",
+ "# not in the namespace (Optuna didn't run this session), recover it from the\n",
+ "# persisted optuna_best.json; if that's missing too, fall back to TRAIN\n",
+ "# defaults so the run still launches on the sane baseline hparams.\n",
+ "try:\n",
+ " best_cfg\n",
+ "except NameError:\n",
+ " _best_path = OUT_DIR / \"optuna_best.json\"\n",
+ " if _best_path.exists():\n",
+ " _resolved = json.loads(_best_path.read_text())[\"resolved_config\"]\n",
+ " best_cfg = replace(TRAIN, **{\n",
+ " k: v for k, v in _resolved.items()\n",
+ " if k in TrainingConfig.__dataclass_fields__\n",
+ " })\n",
+ " log.info(\"Recovered best_cfg from %s\", _best_path)\n",
+ " else:\n",
+ " best_cfg = TRAIN\n",
+ " log.info(\"No Optuna results found; using TRAIN defaults for best_cfg\")\n",
+ "\n",
+ "# Master curriculum for the final run — single instance that progresses\n",
+ "# through tiers as the agent demonstrates mastery. Lives for the whole run.\n",
+ "FINAL_CURRICULUM = Curriculum(tasks_dir=_tasks_dir)\n",
+ "# Superset dataset (all tiers). The CurriculumTierSampler (wired in\n",
+ "# build_trainer) filters indices by FINAL_CURRICULUM.current_difficulty\n",
+ "# on every yield, so promotion during training takes effect on the very\n",
+ "# next batch instead of being frozen out by an up-front materialisation.\n",
+ "FINAL_TRAIN_DS = make_full_curriculum_dataset(_tasks_dir)\n",
+ "_final_num_samples = int(\n",
+ " PIPE.final_max_steps\n",
+ " * best_cfg.per_device_train_batch_size\n",
+ " * best_cfg.gradient_accumulation_steps\n",
+ " * 1.2\n",
+ ")\n",
+ "final_model, final_tok = load_policy(MODEL, trainable=True)\n",
+ "\n",
+ "final_env_r, final_fmt_r, final_len_r = build_reward_funcs(\n",
+ " ENV_CLIENT, TASK_MAP, FINAL_CURRICULUM,\n",
+ " model=final_model, tokenizer=final_tok,\n",
+ ")\n",
+ "\n",
+ "final_trainer = build_trainer(\n",
+ " final_model, final_tok,\n",
+ " train_ds=FINAL_TRAIN_DS,\n",
+ " eval_ds=VAL_DS,\n",
+ " reward_funcs=(final_env_r, final_fmt_r, final_len_r),\n",
+ " cfg=best_cfg,\n",
+ " output_dir=str(FINAL_RUN_DIR),\n",
+ " run_name=\"final-grpo\",\n",
+ " use_fp16=RT.use_fp16, use_bf16=RT.use_bf16,\n",
+ " max_steps=PIPE.final_max_steps,\n",
+ " save_strategy=\"steps\",\n",
+ " # Skip TRL's mid-training eval — its GRPO prediction_step reshapes\n",
+ " # rewards as (-1, num_generations) which blows up when eval generates\n",
+ " # a different completion count per prompt than training. We do full\n",
+ " # env-reward eval outside TRL via evaluate_single_step anyway.\n",
+ " eval_strategy=\"no\",\n",
+ " curriculum=FINAL_CURRICULUM,\n",
+ " num_samples=_final_num_samples,\n",
+ ")\n",
+ "\n",
+ "if resume_from:\n",
+ " log.info(\"Resuming GRPO from %s\", resume_from)\n",
+ "final_trainer.train(resume_from_checkpoint=resume_from)\n",
+ "\n",
+ "# Log final curriculum stats so we can see tier progression / mastery counts\n",
+ "final_stats = FINAL_CURRICULUM.get_stats()\n",
+ "log.info(\"Final curriculum stats: %s\", final_stats)\n",
+ "\n",
+ "# Persist the final LoRA adapter locally before anything else touches VRAM\n",
+ "adapter_local = OUT_DIR / \"grpo_adapter\"\n",
+ "final_trainer.model.save_pretrained(str(adapter_local))\n",
+ "final_tok.save_pretrained(str(adapter_local))\n",
+ "log.info(\"Saved GRPO adapter to %s\", adapter_local)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "09e8f092",
+ "metadata": {
+ "id": "09e8f092"
+ },
+ "source": [
+ "## 15 · Multi-step evaluation harness\n",
+ "\n",
+ "Training was single-step for TRL compatibility; *evaluation* runs full episodes so we can measure:\n",
+ "\n",
+ "- per-tier task success\n",
+ "- hints used per solved task\n",
+ "- recovery rate after chaos injection\n",
+ "- drift repair rate\n",
+ "- steps to solve\n",
+ "- rollback count (safety)\n",
+ "- generalization gap (reserve vs train-held-out)\n",
+ "\n",
+ "The pattern mirrors [`scripts/grpo_train.py`](https://github.com/UdayKiranPadhy/aws-rl-env/blob/master/scripts/grpo_train.py)'s `run_single_rollout`, but uses `GrpoPool` for 8-way concurrent rollouts so a 100-task eval finishes in ~7 minutes."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "d18fb6e4",
+ "metadata": {
+ "id": "d18fb6e4",
+ "outputId": "7503d657-b50e-4704-a31a-08a47c0f3c77",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "18:07:19 | INFO | grpo | run_episode defined.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import asyncio\n",
+ "from collections import defaultdict\n",
+ "from models import AwsRlAction\n",
+ "from client import AwsRlEnv\n",
+ "from scripts.grpo_pool import GrpoPool\n",
+ "\n",
+ "\n",
+ "# Multi-step eval uses a richer prompt that includes command history.\n",
+ "# Separate from the single-step SYSTEM_PROMPT to avoid shadowing it.\n",
+ "EVAL_SYSTEM_PROMPT = (\n",
+ " \"You are an expert AWS SRE agent. You operate a simulated AWS cloud by \"\n",
+ " \"emitting one AWS CLI command at a time. You will see the task description \"\n",
+ " \"and the most recent command output.\\n\\n\"\n",
+ " \"First reason about your next move inside a ... block: use \"\n",
+ " \"the latest OUTPUT to decide what to do next, pick the AWS service and \"\n",
+ " \"subcommand, and list the arguments you need. Keep the reasoning brief.\\n\\n\"\n",
+ " \"After
, on a NEW LINE, output EXACTLY ONE AWS CLI command starting \"\n",
+ " \"with 'aws '. The command line must contain only the command \\u2014 no \"\n",
+ " \"markdown, no backticks, no quotes around it, and no trailing commentary.\"\n",
+ ")\n",
+ "\n",
+ "\n",
+ "def build_multi_step_prompt(tokenizer, task: Task,\n",
+ " history: list[tuple[str, str]]) -> str:\n",
+ " \"\"\"Assemble chat-style prompt including the last few (cmd, output) turns.\"\"\"\n",
+ " messages = [\n",
+ " {\"role\": \"system\", \"content\": EVAL_SYSTEM_PROMPT},\n",
+ " {\"role\": \"user\", \"content\": f\"TASK: {task.description}\"},\n",
+ " ]\n",
+ " for cmd, out in history[-4:]: # last 4 turns fit in 512 tokens\n",
+ " messages.append({\"role\": \"assistant\", \"content\": cmd})\n",
+ " messages.append({\"role\": \"user\", \"content\": f\"OUTPUT:\\n{out[:400]}\"})\n",
+ " return tokenizer.apply_chat_template(\n",
+ " messages, tokenize=False, add_generation_prompt=True,\n",
+ " )\n",
+ "\n",
+ "\n",
+ "@dataclass\n",
+ "class EpisodeResult:\n",
+ " task_id: int\n",
+ " tier: str\n",
+ " is_drift: bool\n",
+ " achieved: bool\n",
+ " terminal_reward: float\n",
+ " steps_taken: int\n",
+ " hints_used: int\n",
+ " chaos_occurred: bool\n",
+ " command_failures: int\n",
+ "\n",
+ "\n",
+ "async def run_episode(env: AwsRlEnv, model, tokenizer,\n",
+ " task: Task, drift_ids: set[int],\n",
+ " max_steps: int = 15,\n",
+ " # Bumped 96 → 512 so per-step generation has room\n",
+ " # for a … block plus the command.\n",
+ " max_new_tokens: int = 512) -> EpisodeResult:\n",
+ " \"\"\"Roll one episode against one env session. Sampling temperature is low\n",
+ " to reflect deployment behaviour rather than training-time exploration.\"\"\"\n",
+ " device = next(model.parameters()).device\n",
+ " res = await env.reset(task=task)\n",
+ " history: list[tuple[str, str]] = []\n",
+ " steps_taken = 0\n",
+ " command_failures = 0\n",
+ " terminal_reward = 0.0\n",
+ " achieved = False\n",
+ "\n",
+ " for _ in range(max_steps):\n",
+ " steps_taken += 1\n",
+ " prompt = build_multi_step_prompt(tokenizer, task, history)\n",
+ " inputs = tokenizer(prompt, return_tensors=\"pt\").to(device)\n",
+ " with torch.inference_mode():\n",
+ " ids = model.generate(\n",
+ " **inputs,\n",
+ " max_new_tokens=max_new_tokens,\n",
+ " do_sample=True,\n",
+ " temperature=0.4,\n",
+ " top_p=0.9,\n",
+ " pad_token_id=tokenizer.eos_token_id,\n",
+ " )\n",
+ " text = tokenizer.decode(\n",
+ " ids[0, inputs.input_ids.shape[1]:], skip_special_tokens=True,\n",
+ " )\n",
+ " cmd = extract_aws_command(text)\n",
+ " res = await env.step(AwsRlAction(command=cmd))\n",
+ " terminal_reward = float(res.reward)\n",
+ " obs = res.observation\n",
+ " if not obs.command_success:\n",
+ " command_failures += 1\n",
+ " history.append((cmd, obs.command_output or \"\"))\n",
+ " if obs.task_achieved:\n",
+ " achieved = True\n",
+ " if res.done:\n",
+ " break\n",
+ "\n",
+ " # One final /state poll for chaos flag — TrackerState doesn't expose\n",
+ " # rollback counts, so we skip that metric rather than report zeros.\n",
+ " try:\n",
+ " state = await env.state()\n",
+ " chaos = bool(getattr(state, \"chaos_occurred\", False))\n",
+ " except Exception:\n",
+ " chaos = False\n",
+ "\n",
+ " return EpisodeResult(\n",
+ " task_id=int(task.task_id),\n",
+ " tier=task.difficulty.value,\n",
+ " is_drift=int(task.task_id) in drift_ids,\n",
+ " achieved=achieved,\n",
+ " terminal_reward=terminal_reward,\n",
+ " steps_taken=steps_taken,\n",
+ " hints_used=int(getattr(res.observation, \"hints_used\", 0) or 0),\n",
+ " chaos_occurred=chaos,\n",
+ " command_failures=command_failures,\n",
+ " )\n",
+ "\n",
+ "\n",
+ "log.info(\"run_episode defined.\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "4f4dacfe",
+ "metadata": {
+ "id": "4f4dacfe",
+ "outputId": "b702b6ec-93bb-4d62-cdaf-d04b6e9f872c",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "18:26:40 | INFO | grpo | evaluate_multi_step defined.\n"
+ ]
+ }
+ ],
+ "source": [
+ "@dataclass\n",
+ "class RichMetrics:\n",
+ " \"\"\"All the metrics the hackathon judges care about.\"\"\"\n",
+ " success_by_tier: dict\n",
+ " reward_by_tier: dict\n",
+ " overall_success_rate: float\n",
+ " overall_reward_mean: float\n",
+ " hints_per_solved: float\n",
+ " recovery_rate: float\n",
+ " drift_repair_rate: float\n",
+ " steps_to_solve: float\n",
+ " destructive_fail_rate: float\n",
+ " n_episodes: int\n",
+ "\n",
+ " def as_dict(self) -> dict:\n",
+ " return asdict(self)\n",
+ "\n",
+ "\n",
+ "def summarize_episodes(results: list[EpisodeResult]) -> RichMetrics:\n",
+ " \"\"\"Aggregate per-tier and overall stats from a list of EpisodeResults.\n",
+ "\n",
+ " Drift detection uses the per-result `is_drift` flag (set from DRIFT_TASK_IDS)\n",
+ " rather than a tier string — drift tasks live inside the EXPERT tier files.\n",
+ " \"\"\"\n",
+ " by_tier: dict[str, list[EpisodeResult]] = defaultdict(list)\n",
+ " for r in results:\n",
+ " by_tier[r.tier].append(r)\n",
+ "\n",
+ " success_by_tier = {tier: sum(r.achieved for r in xs) / max(1, len(xs))\n",
+ " for tier, xs in by_tier.items()}\n",
+ " reward_by_tier = {tier: (sum(r.terminal_reward for r in xs) / max(1, len(xs)))\n",
+ " for tier, xs in by_tier.items()}\n",
+ "\n",
+ " solved = [r for r in results if r.achieved]\n",
+ " chaos_episodes = [r for r in results if r.chaos_occurred]\n",
+ " drift_episodes = [r for r in results if r.is_drift]\n",
+ "\n",
+ " return RichMetrics(\n",
+ " success_by_tier=success_by_tier,\n",
+ " reward_by_tier=reward_by_tier,\n",
+ " overall_success_rate=len(solved) / max(1, len(results)),\n",
+ " overall_reward_mean=sum(r.terminal_reward for r in results) / max(1, len(results)),\n",
+ " hints_per_solved=(sum(r.hints_used for r in solved) / len(solved)) if solved else 0.0,\n",
+ " recovery_rate=(sum(r.achieved for r in chaos_episodes) / len(chaos_episodes))\n",
+ " if chaos_episodes else 0.0,\n",
+ " drift_repair_rate=(sum(r.achieved for r in drift_episodes) / len(drift_episodes))\n",
+ " if drift_episodes else 0.0,\n",
+ " steps_to_solve=(sum(r.steps_taken for r in solved) / len(solved)) if solved else 0.0,\n",
+ " destructive_fail_rate=sum(r.command_failures > 0 for r in results) / max(1, len(results)),\n",
+ " n_episodes=len(results),\n",
+ " )\n",
+ "\n",
+ "\n",
+ "async def evaluate_multi_step(base_url: str, task_ids: list[int],\n",
+ " task_map: dict[int, Task],\n",
+ " drift_ids: set[int],\n",
+ " model, tokenizer,\n",
+ " pool_size: int = 8,\n",
+ " max_steps: int = 15) -> RichMetrics:\n",
+ " \"\"\"Run one episode per task_id across `pool_size` concurrent env sessions.\n",
+ "\n",
+ " Opens a fresh GrpoPool per chunk. Reusing a single pool across chunks\n",
+ " fails because the env server / Cloudflare tunnel closes the WebSocket\n",
+ " (code 1000) once an episode terminates or the connection idles during\n",
+ " a long generate() call; the next chunk's reset() then raises\n",
+ " ConnectionClosedOK on a dead socket. Per-chunk pools cost N WebSocket\n",
+ " handshakes per chunk but keep the eval correct.\n",
+ " \"\"\"\n",
+ " results: list[EpisodeResult] = []\n",
+ " chunks = [task_ids[i:i + pool_size]\n",
+ " for i in range(0, len(task_ids), pool_size)]\n",
+ " log.info(\"multi-step eval: %d tasks in %d chunks (pool_size=%d)\",\n",
+ " len(task_ids), len(chunks), pool_size)\n",
+ " for ci, chunk in enumerate(chunks, 1):\n",
+ " async with GrpoPool(base_url=base_url, size=len(chunk)) as pool:\n",
+ " coros = [run_episode(env, model, tokenizer, task_map[tid],\n",
+ " drift_ids, max_steps=max_steps)\n",
+ " for env, tid in zip(pool.envs, chunk)]\n",
+ " chunk_results = await asyncio.gather(*coros, return_exceptions=True)\n",
+ " ok = sum(1 for r in chunk_results if isinstance(r, EpisodeResult))\n",
+ " log.info(\"chunk %d/%d: %d/%d episodes ok\",\n",
+ " ci, len(chunks), ok, len(chunk))\n",
+ " for r in chunk_results:\n",
+ " if isinstance(r, EpisodeResult):\n",
+ " results.append(r)\n",
+ " else:\n",
+ " log.warning(\"[eval] episode raised %s: %s\",\n",
+ " type(r).__name__, r)\n",
+ " if not results:\n",
+ " log.error(\"multi-step eval produced 0 results — env connection problem?\")\n",
+ " return summarize_episodes(results)\n",
+ "\n",
+ "\n",
+ "def select_eval_task_ids(reserve_ds, drift_ids: set[int], cap: int) -> list[int]:\n",
+ " \"\"\"Task ids for the multi-step eval: reserve split + every drift task.\"\"\"\n",
+ " tids = [int(r[\"task_id\"]) for r in reserve_ds][:cap] if reserve_ds else []\n",
+ " for did in drift_ids:\n",
+ " if did not in tids:\n",
+ " tids.append(did)\n",
+ " return tids\n",
+ "\n",
+ "\n",
+ "log.info(\"evaluate_multi_step defined.\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e40d1ce7",
+ "metadata": {
+ "id": "e40d1ce7"
+ },
+ "source": [
+ "## 16 · Before / after multi-step evaluation\n",
+ "\n",
+ "Runs the rich multi-step evaluator once with the **SFT-only** model (baseline) and once with the **final GRPO** model, then prints a delta table. Per-tier and overall comparisons are plotted by the matplotlib cell below.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "id": "69073028",
+ "metadata": {
+ "id": "69073028",
+ "outputId": "673ea74b-90bc-4de1-84c8-2c38bafe1779",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "18:26:42 | INFO | grpo | Multi-step eval on 109 tasks (9 drift).\n",
+ "18:26:43 | INFO | grpo | Closed ENV_CLIENT; waiting 3s for server to release 8 MiniStack slots.\n",
+ "18:26:46 | INFO | grpo | Evaluating SFT baseline (multi-step)...\n",
+ "==((====))== Unsloth 2026.4.8: Fast Qwen2 patching. Transformers: 4.57.6.\n",
+ " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.563 GB. Platform: Linux.\n",
+ "O^O/ \\_/ \\ Torch: 2.10.0+cu128. CUDA: 7.5. CUDA Toolkit: 12.8. Triton: 3.6.0\n",
+ "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.35. FA2 = False]\n",
+ " \"-____-\" Free license: http://github.com/unslothai/unsloth\n",
+ "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n",
+ "18:27:05 | INFO | grpo | multi-step eval: 109 tasks in 14 chunks (pool_size=8)\n",
+ "18:27:05 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:27:05 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:27:06 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:27:50 | INFO | grpo | chunk 1/14: 8/8 episodes ok\n",
+ "18:27:50 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:27:50 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:27:51 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:29:02 | INFO | grpo | chunk 2/14: 8/8 episodes ok\n",
+ "18:29:02 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:29:02 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:29:03 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:30:40 | INFO | grpo | chunk 3/14: 8/8 episodes ok\n",
+ "18:30:40 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:30:40 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:30:41 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:31:13 | INFO | grpo | chunk 4/14: 8/8 episodes ok\n",
+ "18:31:13 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:31:13 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:31:14 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:31:39 | INFO | grpo | chunk 5/14: 8/8 episodes ok\n",
+ "18:31:39 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:31:39 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:31:40 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:32:33 | INFO | grpo | chunk 6/14: 8/8 episodes ok\n",
+ "18:32:33 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:32:33 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:32:34 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:33:21 | INFO | grpo | chunk 7/14: 5/8 episodes ok\n",
+ "18:33:21 | WARNING | grpo | [eval] episode raised ConnectionClosedError: received 1011 (internal error) keepalive ping timeout; then sent 1011 (internal error) keepalive ping timeout\n",
+ "18:33:21 | WARNING | grpo | [eval] episode raised ConnectionClosedError: received 1011 (internal error) keepalive ping timeout; then sent 1011 (internal error) keepalive ping timeout\n",
+ "18:33:21 | WARNING | grpo | [eval] episode raised ConnectionClosedError: received 1011 (internal error) keepalive ping timeout; then sent 1011 (internal error) keepalive ping timeout\n",
+ "18:33:21 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:33:21 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:33:22 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:34:27 | INFO | grpo | chunk 8/14: 8/8 episodes ok\n",
+ "18:34:27 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:34:27 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:34:28 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:35:18 | INFO | grpo | chunk 9/14: 8/8 episodes ok\n",
+ "18:35:18 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:35:18 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:35:19 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:36:00 | INFO | grpo | chunk 10/14: 8/8 episodes ok\n",
+ "18:36:00 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:36:00 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:36:01 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:36:31 | INFO | grpo | chunk 11/14: 8/8 episodes ok\n",
+ "18:36:31 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:36:31 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:36:32 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:37:07 | INFO | grpo | chunk 12/14: 8/8 episodes ok\n",
+ "18:37:07 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:37:07 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:37:08 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:39:41 | INFO | grpo | chunk 13/14: 8/8 episodes ok\n",
+ "18:39:41 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:39:41 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:39:42 | INFO | scripts.grpo_pool | GrpoPool connected: 5 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:43:13 | INFO | grpo | chunk 14/14: 5/5 episodes ok\n",
+ "18:43:15 | INFO | grpo | Evaluating GRPO-trained model (multi-step)...\n",
+ "18:43:15 | INFO | grpo | multi-step eval: 109 tasks in 14 chunks (pool_size=8)\n",
+ "18:43:15 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:43:15 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:43:17 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:44:18 | INFO | grpo | chunk 1/14: 8/8 episodes ok\n",
+ "18:44:18 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:44:18 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:44:19 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:46:05 | INFO | grpo | chunk 2/14: 8/8 episodes ok\n",
+ "18:46:05 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:46:05 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:46:06 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:46:56 | INFO | grpo | chunk 3/14: 8/8 episodes ok\n",
+ "18:46:56 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:46:56 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:46:57 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:47:48 | INFO | grpo | chunk 4/14: 8/8 episodes ok\n",
+ "18:47:48 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:47:48 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:47:49 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:48:12 | INFO | grpo | chunk 5/14: 8/8 episodes ok\n",
+ "18:48:12 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:48:12 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:48:13 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:49:06 | INFO | grpo | chunk 6/14: 8/8 episodes ok\n",
+ "18:49:06 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:49:06 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:49:07 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:49:48 | INFO | grpo | chunk 7/14: 8/8 episodes ok\n",
+ "18:49:48 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:49:48 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:49:49 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:50:54 | INFO | grpo | chunk 8/14: 8/8 episodes ok\n",
+ "18:50:54 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:50:54 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:50:55 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:51:55 | INFO | grpo | chunk 9/14: 8/8 episodes ok\n",
+ "18:51:55 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:51:55 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:51:56 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:52:41 | INFO | grpo | chunk 10/14: 8/8 episodes ok\n",
+ "18:52:41 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:52:41 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:52:43 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:53:11 | INFO | grpo | chunk 11/14: 8/8 episodes ok\n",
+ "18:53:11 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:53:11 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:53:12 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:53:50 | INFO | grpo | chunk 12/14: 8/8 episodes ok\n",
+ "18:53:50 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:53:50 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:53:51 | INFO | scripts.grpo_pool | GrpoPool connected: 8 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:56:21 | INFO | grpo | chunk 13/14: 8/8 episodes ok\n",
+ "18:56:21 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:56:21 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:56:22 | INFO | scripts.grpo_pool | GrpoPool connected: 5 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "18:58:59 | INFO | grpo | chunk 14/14: 5/5 episodes ok\n",
+ "18:58:59 | INFO | grpo | SFT vs GRPO deltas: {}\n",
+ "\n",
+ "| Metric | SFT baseline | GRPO | Delta |\n",
+ "|----------------------------|-------------:|------------:|-------:|\n",
+ "| overall_success_rate | 0.868 | 0.862 | -0.006 |\n",
+ "| overall_reward_mean | 0.883 | 0.877 | -0.006 |\n",
+ "| hints_per_solved | 0.000 | 0.000 | +0.000 |\n",
+ "| recovery_rate | 0.333 | 0.000 | -0.333 |\n",
+ "| drift_repair_rate | 0.222 | 0.222 | +0.000 |\n",
+ "| steps_to_solve | 1.446 | 1.553 | +0.108 |\n",
+ "| destructive_fail_rate | 0.151 | 0.147 | -0.004 |\n",
+ "| success[beginner] | 0.962 | 1.000 | +0.038 |\n",
+ "| success[expert] | 0.222 | 0.222 | +0.000 |\n",
+ "| success[intermediate] | 0.810 | 0.870 | +0.060 |\n",
+ "| success[warmup] | 0.960 | 0.902 | -0.058 |\n"
+ ]
+ }
+ ],
+ "source": [
+ "def _flatten_metrics(m: RichMetrics, prefix: str) -> dict:\n",
+ " out = {}\n",
+ " for k, v in m.as_dict().items():\n",
+ " if isinstance(v, dict):\n",
+ " for tier, val in v.items():\n",
+ " out[f\"{prefix}/{k}/{tier}\"] = val\n",
+ " else:\n",
+ " out[f\"{prefix}/{k}\"] = v\n",
+ " return out\n",
+ "\n",
+ "\n",
+ "def _delta_metrics(before: RichMetrics, after: RichMetrics) -> dict:\n",
+ " b, a = before.as_dict(), after.as_dict()\n",
+ " delta: dict[str, float] = {}\n",
+ " for k in a:\n",
+ " if isinstance(a[k], dict):\n",
+ " for tier, v in a[k].items():\n",
+ " bv = b.get(k, {}).get(tier, 0.0)\n",
+ " delta[f\"eval/delta_{k}/{tier}\"] = v - bv\n",
+ " elif isinstance(a[k], (int, float)):\n",
+ " delta[f\"eval/delta_{k}\"] = a[k] - b[k]\n",
+ " return delta\n",
+ "\n",
+ "\n",
+ "EVAL_TASK_IDS = select_eval_task_ids(RESERVE_DS, DRIFT_TASK_IDS, cap=PIPE.eval_reserve_cap)\n",
+ "log.info(\"Multi-step eval on %d tasks (%d drift).\",\n",
+ " len(EVAL_TASK_IDS),\n",
+ " sum(1 for t in EVAL_TASK_IDS if t in DRIFT_TASK_IDS))\n",
+ "\n",
+ "# Release ENV_CLIENT's 8 WebSocket sessions so the server's MiniStack\n",
+ "# slots are free for GrpoPool. Without this, every eval episode dies\n",
+ "# instantly with ConnectionClosedOK / CAPACITY_REACHED because all 8\n",
+ "# slots are still held by the training reward client.\n",
+ "try:\n",
+ " ENV_CLIENT.close()\n",
+ " log.info(\"Closed ENV_CLIENT; waiting 3s for server to release 8 MiniStack slots.\")\n",
+ " await asyncio.sleep(3)\n",
+ "except Exception as e:\n",
+ " log.warning(\"ENV_CLIENT.close() raised %s: %s\", type(e).__name__, e)\n",
+ "\n",
+ "# --- SFT baseline ---\n",
+ "log.info(\"Evaluating SFT baseline (multi-step)...\")\n",
+ "sft_model, sft_tok = load_policy(MODEL, trainable=False)\n",
+ "sft_metrics = await evaluate_multi_step(\n",
+ " ENV_BASE_URL, EVAL_TASK_IDS, TASK_MAP, DRIFT_TASK_IDS,\n",
+ " sft_model, sft_tok, pool_size=PIPE.env_pool_size,\n",
+ ")\n",
+ "free_model(sft_model); del sft_tok\n",
+ "gc.collect(); torch.cuda.empty_cache()\n",
+ "(OUT_DIR / \"baseline_multi_step.json\").write_text(json.dumps(sft_metrics.as_dict(), indent=2))\n",
+ "\n",
+ "# --- GRPO after ---\n",
+ "log.info(\"Evaluating GRPO-trained model (multi-step)...\")\n",
+ "from unsloth import FastLanguageModel\n",
+ "if \"final_trainer\" not in globals() or \"final_tok\" not in globals():\n",
+ " from peft import PeftModel\n",
+ " _grpo_dir = OUT_DIR / \"grpo_adapter\"\n",
+ " log.info(\"final_trainer not in globals; reloading GRPO adapter from %s...\", _grpo_dir)\n",
+ " _base, final_tok = FastLanguageModel.from_pretrained(\n",
+ " model_name=MODEL.base_model,\n",
+ " max_seq_length=MODEL.max_seq_length,\n",
+ " load_in_4bit=True,\n",
+ " )\n",
+ " _grpo_model = PeftModel.from_pretrained(_base, str(_grpo_dir), is_trainable=False)\n",
+ " class _TrainerShim:\n",
+ " pass\n",
+ " final_trainer = _TrainerShim()\n",
+ " final_trainer.model = _grpo_model\n",
+ "FastLanguageModel.for_inference(final_trainer.model)\n",
+ "grpo_metrics = await evaluate_multi_step(\n",
+ " ENV_BASE_URL, EVAL_TASK_IDS, TASK_MAP, DRIFT_TASK_IDS,\n",
+ " final_trainer.model, final_tok, pool_size=PIPE.env_pool_size,\n",
+ ")\n",
+ "(OUT_DIR / \"grpo_multi_step.json\").write_text(json.dumps(grpo_metrics.as_dict(), indent=2))\n",
+ "\n",
+ "deltas = _delta_metrics(sft_metrics, grpo_metrics)\n",
+ "log.info(\"SFT vs GRPO deltas: %s\",\n",
+ " {k: round(v, 4) for k, v in deltas.items()\n",
+ " if isinstance(v, (int, float)) and \"/\" not in k})\n",
+ "\n",
+ "def _render_row(name, b, a):\n",
+ " return f\"| {name:<26} | {b:>12.3f} | {a:>12.3f} | {a - b:+.3f} |\"\n",
+ "\n",
+ "print(\"\\n| Metric | SFT baseline | GRPO | Delta |\")\n",
+ "print(\"|----------------------------|-------------:|------------:|-------:|\")\n",
+ "print(_render_row(\"overall_success_rate\", sft_metrics.overall_success_rate, grpo_metrics.overall_success_rate))\n",
+ "print(_render_row(\"overall_reward_mean\", sft_metrics.overall_reward_mean, grpo_metrics.overall_reward_mean))\n",
+ "print(_render_row(\"hints_per_solved\", sft_metrics.hints_per_solved, grpo_metrics.hints_per_solved))\n",
+ "print(_render_row(\"recovery_rate\", sft_metrics.recovery_rate, grpo_metrics.recovery_rate))\n",
+ "print(_render_row(\"drift_repair_rate\", sft_metrics.drift_repair_rate, grpo_metrics.drift_repair_rate))\n",
+ "print(_render_row(\"steps_to_solve\", sft_metrics.steps_to_solve, grpo_metrics.steps_to_solve))\n",
+ "print(_render_row(\"destructive_fail_rate\", sft_metrics.destructive_fail_rate, grpo_metrics.destructive_fail_rate))\n",
+ "\n",
+ "for tier in sorted(set(sft_metrics.success_by_tier) | set(grpo_metrics.success_by_tier)):\n",
+ " b = sft_metrics.success_by_tier.get(tier, 0.0)\n",
+ " a = grpo_metrics.success_by_tier.get(tier, 0.0)\n",
+ " print(_render_row(f\"success[{tier}]\", b, a))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "00a1c8e5",
+ "metadata": {
+ "id": "00a1c8e5"
+ },
+ "source": [
+ "## 17 · Qualitative rollouts — one task per tier\n",
+ "\n",
+ "A small set of showable transcripts (task, generated command, env output, reward). Judges love seeing actual agent behaviour, not just numbers."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "id": "5c75fb46",
+ "metadata": {
+ "id": "5c75fb46",
+ "outputId": "99f3a5c1-e1d4-4308-c281-8c5f8f69720e",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "18:59:10 | INFO | server.services.curriculum | Loaded 25 warmup tasks total\n",
+ "18:59:10 | INFO | server.services.curriculum | Curriculum initialised — starting at warmup with 25 tasks\n",
+ "18:59:11 | INFO | scripts.grpo_pool | GrpoPool connected: 5 sessions against https://sizzing-aws-rl-env.hf.space\n",
+ "[\n",
+ " {\n",
+ " \"tier\": \"warmup\",\n",
+ " \"task_id\": 0,\n",
+ " \"description\": \"List all S3 buckets in the environment.\",\n",
+ " \"achieved\": false,\n",
+ " \"terminal_reward\": 0.0,\n",
+ " \"steps_taken\": 8\n",
+ " },\n",
+ " {\n",
+ " \"tier\": \"beginner\",\n",
+ " \"task_id\": 6,\n",
+ " \"description\": \"Create an S3 bucket named 'my-test-bucket'.\",\n",
+ " \"achieved\": true,\n",
+ " \"terminal_reward\": 1.0,\n",
+ " \"steps_taken\": 1\n",
+ " },\n",
+ " {\n",
+ " \"tier\": \"intermediate\",\n",
+ " \"task_id\": 11,\n",
+ " \"description\": \"Create an S3 bucket named 'data-pipeline' and upload a file to it.\",\n",
+ " \"achieved\": true,\n",
+ " \"terminal_reward\": 1.0,\n",
+ " \"steps_taken\": 2\n",
+ " },\n",
+ " {\n",
+ " \"tier\": \"advanced\",\n",
+ " \"task_id\": 15,\n",
+ " \"description\": \"Create a Lambda function 'processor' with an IAM execution role, then create an SQS queue 'work-items' and configure it as an event source for the Lambda function.\\n\",\n",
+ " \"achieved\": false,\n",
+ " \"terminal_reward\": 0.02,\n",
+ " \"steps_taken\": 8\n",
+ " },\n",
+ " {\n",
+ " \"tier\": \"expert\",\n",
+ " \"task_id\": 18,\n",
+ " \"description\": \"SRE Incident: A Lambda function 'order-processor' exists but its IAM role is missing the required SQS permissions. The function's event source mapping to the 'incoming-orders' SQS queue is failing. Diagnose the issue, attach the correct SQS policy to the role, and create the event source mapping.\\n\",\n",
+ " \"achieved\": false,\n",
+ " \"terminal_reward\": 0.06,\n",
+ " \"steps_taken\": 8\n",
+ " }\n",
+ "]\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "1347"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 30
+ }
+ ],
+ "source": [
+ "async def qualitative_rollouts(model, tokenizer, task_map: dict[int, Task],\n",
+ " drift_ids: set[int],\n",
+ " samples_per_tier: int = 1) -> list[dict]:\n",
+ " \"\"\"Pick one task per difficulty tier and print a full rollout transcript.\"\"\"\n",
+ " per_tier: dict[str, list[Task]] = defaultdict(list)\n",
+ " for t in task_map.values():\n",
+ " per_tier[t.difficulty.value].append(t)\n",
+ " chosen: list[Task] = []\n",
+ " for tier in [\"warmup\", \"beginner\", \"intermediate\", \"advanced\", \"expert\"]:\n",
+ " if per_tier.get(tier):\n",
+ " chosen.extend(per_tier[tier][:samples_per_tier])\n",
+ "\n",
+ " transcripts = []\n",
+ " async with GrpoPool(base_url=ENV_BASE_URL, size=min(len(chosen), PIPE.env_pool_size)) as pool:\n",
+ " for env, task in zip(pool.envs, chosen):\n",
+ " ep = await run_episode(env, model, tokenizer, task, drift_ids, max_steps=8)\n",
+ " transcripts.append({\n",
+ " \"tier\": task.difficulty.value,\n",
+ " \"task_id\": int(task.task_id),\n",
+ " \"description\": task.description,\n",
+ " \"achieved\": ep.achieved,\n",
+ " \"terminal_reward\": ep.terminal_reward,\n",
+ " \"steps_taken\": ep.steps_taken,\n",
+ " })\n",
+ " return transcripts\n",
+ "\n",
+ "\n",
+ "# Reload the GRPO adapter from disk if final_trainer was purged by an\n",
+ "# earlier VRAM reclaim (e.g. the Optuna cell). Same fallback as the\n",
+ "# multi-step eval cell: the final-run cell persists the adapter to\n",
+ "# OUT_DIR/\"grpo_adapter\", so that's the source of truth.\n",
+ "if \"final_trainer\" not in globals() or \"final_tok\" not in globals():\n",
+ " from unsloth import FastLanguageModel\n",
+ " from peft import PeftModel\n",
+ " _grpo_dir = OUT_DIR / \"grpo_adapter\"\n",
+ " print(f\"final_trainer not in globals; reloading GRPO adapter from {_grpo_dir}...\")\n",
+ " _base, final_tok = FastLanguageModel.from_pretrained(\n",
+ " model_name=MODEL.base_model,\n",
+ " max_seq_length=MODEL.max_seq_length,\n",
+ " load_in_4bit=True,\n",
+ " )\n",
+ " _grpo_model = PeftModel.from_pretrained(_base, str(_grpo_dir), is_trainable=False)\n",
+ " class _TrainerShim:\n",
+ " pass\n",
+ " final_trainer = _TrainerShim()\n",
+ " final_trainer.model = _grpo_model\n",
+ "\n",
+ "qual = await qualitative_rollouts(final_trainer.model, final_tok, TASK_MAP, DRIFT_TASK_IDS)\n",
+ "print(json.dumps(qual, indent=2, default=str))\n",
+ "(OUT_DIR / \"qualitative_rollouts.json\").write_text(json.dumps(qual, indent=2, default=str))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "graphs-md",
+ "metadata": {
+ "id": "graphs-md"
+ },
+ "source": [
+ "## 17.5 · Plot training curves and SFT vs GRPO comparison\n",
+ "\n",
+ "Emits matplotlib PNGs into `OUT_DIR / \"graphs/\"` (also zipped as `graphs.zip` for\n",
+ "easy download):\n",
+ "\n",
+ "1. `01_optuna_history.png` – per-trial objective + best-so-far.\n",
+ "2. `02_optuna_hparams.png` – hparam vs. objective scatter (one subplot per knob).\n",
+ "3. `03_optuna_trial_curves.png` – training loss / reward / reward_std / KL for\n",
+ " every trial, with the winning trial highlighted.\n",
+ "4. `04_final_run_curves.png` – same four metrics for the final GRPO run on the\n",
+ " best Optuna config.\n",
+ "5. `05_sft_vs_grpo_scalar.png` – scalar comparison (success, reward, recovery,\n",
+ " drift repair, hints/solved, steps-to-solve, destructive-fail).\n",
+ "6. `06_success_by_tier.png` / `07_reward_by_tier.png` – per-difficulty-tier\n",
+ " bars, SFT vs SFT+GRPO.\n",
+ "\n",
+ "Each section is guarded so a missing artifact (e.g. Optuna was skipped, or\n",
+ "multi-step eval hasn\\'t run yet) only skips that plot instead of failing.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "id": "graphs-plot",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "graphs-plot",
+ "outputId": "abab8fac-d13a-42e6-edaa-1b8746f8988a"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " saved 01_optuna_history.png\n",
+ " saved 02_optuna_hparams.png\n",
+ " saved 03_optuna_trial_curves.png\n",
+ " saved 04_final_run_curves.png\n",
+ " saved 05_sft_vs_grpo_scalar.png\n",
+ " saved 06_success_by_tier.png\n",
+ " saved 07_reward_by_tier.png\n",
+ "\n",
+ "Graphs: /content/out/graphs (7 PNGs)\n",
+ "Zipped: /content/out/graphs.zip\n"
+ ]
+ }
+ ],
+ "source": [
+ "import json\n",
+ "import math\n",
+ "import shutil\n",
+ "from pathlib import Path\n",
+ "\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "\n",
+ "\n",
+ "GRAPHS_DIR = OUT_DIR / \"graphs\"\n",
+ "GRAPHS_DIR.mkdir(parents=True, exist_ok=True)\n",
+ "\n",
+ "# Canonical tier ordering so bar plots read hardest-to-easiest consistently.\n",
+ "_TIER_ORDER = [\"warmup\", \"beginner\", \"intermediate\", \"advanced\", \"expert\"]\n",
+ "\n",
+ "\n",
+ "def _tier_key(t: str) -> int:\n",
+ " return _TIER_ORDER.index(t) if t in _TIER_ORDER else 99\n",
+ "\n",
+ "\n",
+ "def _load_log_history(run_dir: Path) -> list[dict]:\n",
+ " \"\"\"Prefer a top-level trainer_state.json (written by trial_objective) and\n",
+ " fall back to the latest checkpoint-N/trainer_state.json (the layout TRL\n",
+ " uses when save_strategy != \"no\", i.e. the final run).\"\"\"\n",
+ " top = run_dir / \"trainer_state.json\"\n",
+ " if top.exists():\n",
+ " return json.loads(top.read_text()).get(\"log_history\", [])\n",
+ " ckpts = sorted(\n",
+ " (d for d in run_dir.glob(\"checkpoint-*\") if d.is_dir()),\n",
+ " key=lambda d: int(d.name.split(\"-\")[-1]),\n",
+ " )\n",
+ " if not ckpts:\n",
+ " return []\n",
+ " state_path = ckpts[-1] / \"trainer_state.json\"\n",
+ " if not state_path.exists():\n",
+ " return []\n",
+ " return json.loads(state_path.read_text()).get(\"log_history\", [])\n",
+ "\n",
+ "\n",
+ "def _series(hist: list[dict], key: str) -> tuple[list[int], list[float]]:\n",
+ " \"\"\"Pull (step, value) pairs for a key from TRL's log_history, skipping\n",
+ " entries that don't carry it (eval rows only have eval_* keys, etc.).\"\"\"\n",
+ " xs, ys = [], []\n",
+ " for row in hist:\n",
+ " if key in row and isinstance(row[key], (int, float)):\n",
+ " xs.append(row.get(\"step\", len(xs)))\n",
+ " ys.append(float(row[key]))\n",
+ " return xs, ys\n",
+ "\n",
+ "\n",
+ "_saved: list[Path] = []\n",
+ "\n",
+ "\n",
+ "def _save(fig, name: str) -> None:\n",
+ " out = GRAPHS_DIR / name\n",
+ " fig.savefig(out, dpi=150, bbox_inches=\"tight\")\n",
+ " plt.close(fig)\n",
+ " _saved.append(out)\n",
+ " print(f\" saved {out.name}\")\n",
+ "\n",
+ "\n",
+ "# ---------- 1) Optuna optimization history ----------\n",
+ "try:\n",
+ " _trials = [t for t in study.trials if t.value is not None]\n",
+ " if not _trials:\n",
+ " raise RuntimeError(\"no completed Optuna trials\")\n",
+ " _nums = [t.number for t in _trials]\n",
+ " _vals = [t.value for t in _trials]\n",
+ " _best = []\n",
+ " _cur = -math.inf\n",
+ " for v in _vals:\n",
+ " _cur = max(_cur, v)\n",
+ " _best.append(_cur)\n",
+ " fig, ax = plt.subplots(figsize=(8, 4))\n",
+ " ax.plot(_nums, _vals, \"o-\", label=\"trial env_reward_mean\")\n",
+ " ax.plot(_nums, _best, \"r--\", label=\"best so far\")\n",
+ " ax.scatter([study.best_trial.number], [study.best_value],\n",
+ " s=120, facecolors=\"none\", edgecolors=\"red\", linewidths=2,\n",
+ " label=f\"best (trial {study.best_trial.number})\")\n",
+ " ax.set_xlabel(\"trial\"); ax.set_ylabel(\"val env_reward_mean\")\n",
+ " ax.set_title(\"Optuna optimization history\")\n",
+ " ax.legend(); ax.grid(alpha=0.3)\n",
+ " _save(fig, \"01_optuna_history.png\")\n",
+ "except Exception as e:\n",
+ " print(f\" skipped 01_optuna_history.png: {e}\")\n",
+ "\n",
+ "\n",
+ "# ---------- 2) Hparam vs objective scatter ----------\n",
+ "try:\n",
+ " _trials = [t for t in study.trials if t.value is not None]\n",
+ " if not _trials:\n",
+ " raise RuntimeError(\"no completed Optuna trials\")\n",
+ " _params = [\"learning_rate\", \"beta\", \"temperature\"]\n",
+ " fig, axes = plt.subplots(1, 3, figsize=(13, 4))\n",
+ " for ax, p in zip(axes.flat, _params):\n",
+ " xs = [t.params[p] for t in _trials if p in t.params]\n",
+ " ys = [t.value for t in _trials if p in t.params]\n",
+ " if not xs:\n",
+ " ax.set_visible(False); continue\n",
+ " ax.scatter(xs, ys, s=35)\n",
+ " # Highlight best trial\n",
+ " if p in study.best_params:\n",
+ " ax.scatter([study.best_params[p]], [study.best_value],\n",
+ " s=120, facecolors=\"none\", edgecolors=\"red\",\n",
+ " linewidths=2, label=\"best\")\n",
+ " ax.legend(fontsize=8)\n",
+ " if p == \"learning_rate\":\n",
+ " ax.set_xscale(\"log\")\n",
+ " ax.set_xlabel(p); ax.set_ylabel(\"env_reward_mean\")\n",
+ " ax.grid(alpha=0.3)\n",
+ " fig.suptitle(\"Hyperparameter vs objective (Optuna)\")\n",
+ " fig.tight_layout()\n",
+ " _save(fig, \"02_optuna_hparams.png\")\n",
+ "except Exception as e:\n",
+ " print(f\" skipped 02_optuna_hparams.png: {e}\")\n",
+ "\n",
+ "\n",
+ "# ---------- 3) Per-trial training curves ----------\n",
+ "try:\n",
+ " _trials = [t for t in study.trials if t.value is not None]\n",
+ " if not _trials:\n",
+ " raise RuntimeError(\"no completed Optuna trials\")\n",
+ " _metrics = [(\"loss\", \"training loss\"),\n",
+ " (\"reward\", \"reward mean\"),\n",
+ " (\"reward_std\", \"reward std (GRPO group)\"),\n",
+ " (\"kl\", \"KL to reference\")]\n",
+ " fig, axes = plt.subplots(2, 2, figsize=(13, 8))\n",
+ " _best_num = study.best_trial.number if study.best_trial else None\n",
+ " _plotted_any = False\n",
+ " for ax, (key, title) in zip(axes.flat, _metrics):\n",
+ " for t in _trials:\n",
+ " trial_dir = OUT_DIR / f\"optuna/trial-{t.number}\"\n",
+ " hist = _load_log_history(trial_dir)\n",
+ " xs, ys = _series(hist, key)\n",
+ " if not xs:\n",
+ " continue\n",
+ " _plotted_any = True\n",
+ " if t.number == _best_num:\n",
+ " ax.plot(xs, ys, color=\"tab:red\", lw=2.2,\n",
+ " label=f\"trial {t.number} (best)\")\n",
+ " else:\n",
+ " ax.plot(xs, ys, alpha=0.45, lw=1.2,\n",
+ " label=f\"trial {t.number}\")\n",
+ " ax.set_title(title); ax.set_xlabel(\"step\")\n",
+ " ax.grid(alpha=0.3)\n",
+ " if not _plotted_any:\n",
+ " raise RuntimeError(\"no per-trial log_history on disk — re-run \"\n",
+ " \"Optuna after the trial_objective patch\")\n",
+ " # One legend for the whole figure\n",
+ " handles, labels = axes.flat[0].get_legend_handles_labels()\n",
+ " if handles:\n",
+ " fig.legend(handles, labels, loc=\"lower center\",\n",
+ " ncol=min(6, len(handles)), fontsize=8,\n",
+ " bbox_to_anchor=(0.5, -0.02))\n",
+ " fig.suptitle(\"Optuna trial training curves\")\n",
+ " fig.tight_layout(rect=(0, 0.04, 1, 1))\n",
+ " _save(fig, \"03_optuna_trial_curves.png\")\n",
+ "except Exception as e:\n",
+ " print(f\" skipped 03_optuna_trial_curves.png: {e}\")\n",
+ "\n",
+ "\n",
+ "# ---------- 4) Final GRPO run curves ----------\n",
+ "try:\n",
+ " hist = _load_log_history(FINAL_RUN_DIR)\n",
+ " if not hist:\n",
+ " raise RuntimeError(f\"no log_history under {FINAL_RUN_DIR}\")\n",
+ " _metrics = [(\"loss\", \"training loss\"),\n",
+ " (\"reward\", \"reward mean\"),\n",
+ " (\"reward_std\", \"reward std (GRPO group)\"),\n",
+ " (\"kl\", \"KL to reference\"),\n",
+ " (\"learning_rate\", \"learning rate\"),\n",
+ " (\"completion_length\", \"completion length (tokens)\")]\n",
+ " fig, axes = plt.subplots(3, 2, figsize=(13, 10))\n",
+ " for ax, (key, title) in zip(axes.flat, _metrics):\n",
+ " xs, ys = _series(hist, key)\n",
+ " if not xs:\n",
+ " ax.set_visible(False); continue\n",
+ " ax.plot(xs, ys, color=\"tab:blue\")\n",
+ " ax.set_title(title); ax.set_xlabel(\"step\")\n",
+ " ax.grid(alpha=0.3)\n",
+ " if key == \"learning_rate\":\n",
+ " ax.set_yscale(\"log\")\n",
+ " fig.suptitle(\"Final GRPO run — best Optuna config\")\n",
+ " fig.tight_layout()\n",
+ " _save(fig, \"04_final_run_curves.png\")\n",
+ "except Exception as e:\n",
+ " print(f\" skipped 04_final_run_curves.png: {e}\")\n",
+ "\n",
+ "\n",
+ "# ---------- 5) SFT vs GRPO scalar comparison (multi-step eval) ----------\n",
+ "try:\n",
+ " sft = json.loads((OUT_DIR / \"baseline_multi_step.json\").read_text())\n",
+ " grpo = json.loads((OUT_DIR / \"grpo_multi_step.json\").read_text())\n",
+ " _keys = [\"overall_success_rate\", \"overall_reward_mean\",\n",
+ " \"recovery_rate\", \"drift_repair_rate\",\n",
+ " \"hints_per_solved\", \"steps_to_solve\",\n",
+ " \"destructive_fail_rate\"]\n",
+ " x = np.arange(len(_keys))\n",
+ " fig, ax = plt.subplots(figsize=(12, 5))\n",
+ " w = 0.38\n",
+ " sft_vals = [float(sft.get(k, 0.0)) for k in _keys]\n",
+ " grpo_vals = [float(grpo.get(k, 0.0)) for k in _keys]\n",
+ " b1 = ax.bar(x - w/2, sft_vals, width=w, label=\"SFT only\", color=\"tab:gray\")\n",
+ " b2 = ax.bar(x + w/2, grpo_vals, width=w, label=\"SFT + GRPO\", color=\"tab:blue\")\n",
+ " for bars, vals in ((b1, sft_vals), (b2, grpo_vals)):\n",
+ " for bar, v in zip(bars, vals):\n",
+ " ax.text(bar.get_x() + bar.get_width() / 2, v,\n",
+ " f\"{v:.2f}\", ha=\"center\", va=\"bottom\", fontsize=8)\n",
+ " ax.set_xticks(x); ax.set_xticklabels(_keys, rotation=25, ha=\"right\")\n",
+ " ax.set_title(\"Multi-step eval: SFT vs SFT+GRPO\")\n",
+ " ax.legend(); ax.grid(axis=\"y\", alpha=0.3)\n",
+ " fig.tight_layout()\n",
+ " _save(fig, \"05_sft_vs_grpo_scalar.png\")\n",
+ "except Exception as e:\n",
+ " print(f\" skipped 05_sft_vs_grpo_scalar.png: {e}\")\n",
+ "\n",
+ "\n",
+ "# ---------- 6/7) Per-tier SFT vs GRPO ----------\n",
+ "def _per_tier_plot(metric_key: str, ylabel: str, fname: str) -> None:\n",
+ " try:\n",
+ " sft = json.loads((OUT_DIR / \"baseline_multi_step.json\").read_text())\n",
+ " grpo = json.loads((OUT_DIR / \"grpo_multi_step.json\").read_text())\n",
+ " sft_t = sft.get(metric_key, {}) or {}\n",
+ " grpo_t = grpo.get(metric_key, {}) or {}\n",
+ " tiers = sorted(set(sft_t) | set(grpo_t), key=_tier_key)\n",
+ " if not tiers:\n",
+ " raise RuntimeError(f\"no tiers in {metric_key}\")\n",
+ " x = np.arange(len(tiers))\n",
+ " fig, ax = plt.subplots(figsize=(9, 4.5))\n",
+ " w = 0.38\n",
+ " ax.bar(x - w/2, [float(sft_t.get(t, 0.0)) for t in tiers],\n",
+ " width=w, label=\"SFT only\", color=\"tab:gray\")\n",
+ " ax.bar(x + w/2, [float(grpo_t.get(t, 0.0)) for t in tiers],\n",
+ " width=w, label=\"SFT + GRPO\", color=\"tab:blue\")\n",
+ " ax.set_xticks(x); ax.set_xticklabels(tiers)\n",
+ " ax.set_title(f\"{metric_key} by tier\")\n",
+ " ax.set_ylabel(ylabel)\n",
+ " ax.legend(); ax.grid(axis=\"y\", alpha=0.3)\n",
+ " fig.tight_layout()\n",
+ " _save(fig, fname)\n",
+ " except Exception as e:\n",
+ " print(f\" skipped {fname}: {e}\")\n",
+ "\n",
+ "\n",
+ "_per_tier_plot(\"success_by_tier\", \"success rate\", \"06_success_by_tier.png\")\n",
+ "_per_tier_plot(\"reward_by_tier\", \"mean terminal reward\", \"07_reward_by_tier.png\")\n",
+ "\n",
+ "\n",
+ "# ---------- Zip for easy download ----------\n",
+ "if _saved:\n",
+ " _zip_base = str(OUT_DIR / \"graphs\")\n",
+ " _zip_path = shutil.make_archive(_zip_base, \"zip\", root_dir=GRAPHS_DIR)\n",
+ " print(f\"\\nGraphs: {GRAPHS_DIR} ({len(_saved)} PNGs)\")\n",
+ " print(f\"Zipped: {_zip_path}\")\n",
+ "else:\n",
+ " print(\"\\nNo graphs were produced — every section was skipped.\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3751583b",
+ "metadata": {
+ "id": "3751583b"
+ },
+ "source": [
+ "## 18 · Publish the GRPO adapter to a new HF Hub repo\n",
+ "\n",
+ "Pushes **only** to `Sizzing/aws-rl-grpo-qwen25coder3b-adapter`. The existing SFT adapter repo `Sizzing/aws-rl-sft-qwen25coder3b-adapter` is never touched — both coexist on Hub so reviewers can load either and compare side by side.\n",
+ "\n",
+ "The model card notes the lineage (`base_model = SFT adapter`) so anyone opening the repo on Hub sees immediately that this is a second-stage RL fine-tune."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "id": "7fbbbdd6",
+ "metadata": {
+ "id": "7fbbbdd6",
+ "outputId": "a62895fb-a8f0-4c62-c77a-0ee2a5791e63",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 308,
+ "referenced_widgets": [
+ "46b9bba731834909914b99d55a2da59d",
+ "fd1263b4b2d540b5a6a80166c69167a3",
+ "dd9c86af517f4978af54e3dc45e3b022",
+ "a4308e4a03a541c38431eaa38f5fc334",
+ "4351f13bdf114a34b35551c477cbf1ed",
+ "33cfb692bf9c442d9481c204f94a4c70",
+ "1e4d6d97d08744ffb9bdfea0ac7355ce",
+ "7f32887fa2044b5d92ab4a77472f013f",
+ "e9fbb06afbfd47eab898e5150244dae6",
+ "4aa1e204bb86413891a0ce71e20c2c9b",
+ "5cf99dc423964598bcad65bd7af8f7d4",
+ "bec2b4f29cce4f1085a82823db2b0073",
+ "3a81ac9c0dfb4c95bb7a97b1490606d9",
+ "bdd3140586e045a4a484a728e345a95f",
+ "9a4b10b7e8cc4563a0859a8552e7ed73",
+ "3b6cbba8bec747acbad7e12f92de3694",
+ "a7380cd1b08b43e486c91260adba5efe",
+ "d7b73cdc816e45d78f3771bf98b73899",
+ "69c5fdb32b844bcf836da6bc9f7cdf47",
+ "c2948d5555874761a5c45b720c2ed084",
+ "88c852627f3a4fb0a8a1d1726d9333b0",
+ "52be3eb253344d549d951b42cd9ce321",
+ "4a2b386ee0a64e809f34b6e7a3522818",
+ "a4fb91c546e4496ea8814b01aceab236",
+ "5e02c1d5070d427494b82d8f0bc3428a",
+ "8bd8c1e82f054c1497d3647deda9ca12",
+ "5b10d8b29d784346a1d4947f1711718b",
+ "493202a8d8d34627a7a57ecdee0fa053",
+ "507a940c4788478894dfdbecb513389c",
+ "732702a1f01040ae9e616bd17a61f6a4",
+ "4e3ad0c2409540c784730101f0776d83",
+ "039f29287a874456a1d13f61b22deb50",
+ "c9e9cfde8a8243b392045da4b8aaa55f",
+ "fc3b7aaf6479452eb741845671e99030",
+ "d2e71087ced043abad9b917af5ee1137",
+ "67edaf56a9354569b0af1600082a04b3",
+ "49e589279da8407dacb922ee2fb97ec3",
+ "548d50a9465a4555bd06f0cdbf1ad76a",
+ "d383baec718a4c47b345df191bb1a3de",
+ "c2530298234545b68a5342a424bb55bc",
+ "692660feb4b6428c90b3e358dafc9ec6",
+ "b524bb64d9cb44eb9fba0a5fcab08027",
+ "9bfac3a984134969af1865e9e3247b3e",
+ "4ee1326ee8fa442ebccafd7055b9e94d",
+ "c51561b11eb142f2b92673b9f75480c2",
+ "aedeac83077c4555bab4d5bf82f8726a",
+ "5796c6f124e640afa197b2253b62a36d",
+ "eb164ffe4e9b47769274f144b9e2031c",
+ "74435e5413084059b4ab842e1289a293",
+ "0f73f8ba0c204af8a545b1065c2990d8",
+ "297c55455f7e4894887778c3ec6f2711",
+ "fe759eb163c44a6ea679da581e82e6f1",
+ "9877073f10c0451dbcfa43cdc07201c3",
+ "ab85d65ba3fd4658844b9366022338d8",
+ "882262dabe9441a899518008bc7100a3",
+ "95c7b80740ce4522834126e4f7f5b49c",
+ "ec02ced862304ff2b9595bc051776874",
+ "aa35b2a3818e4613a6d8a18c5383ef59",
+ "22af1447c21141a48431f7d429262b1d",
+ "0b6f3bb5c27844d9bb815d0687b37bfd",
+ "e14797502f8f496aa6f26da771f7651a",
+ "eee874569ebf4f5bbd95ac34094f07e1",
+ "818503f0a2f048d1b67cd190c29cd6d0",
+ "fcf4f286b3524fdfb4766bbdf28e05be",
+ "2952ff29012543c3a2b20e2f898a55ad",
+ "2e54e4b260904f9fabe745935a7437f2",
+ "788cce98cead47d29ea695a55360a43c",
+ "cb2aeb717cf84dfaa3d9ca99b45ee968",
+ "668cbfcd95fe47f9a144de97328129aa",
+ "349d72fcd4c4485f9719e03752b61fe8",
+ "46ceb017a2c14b37bb9a7061c5524d1a",
+ "57f648441a004caca6e6913588e038ba",
+ "0d0d7df23f8c407eafe46a73d3acc72a",
+ "dd7fd0f32f044c519f62957617bea80e",
+ "7246e69bbb244e29847a3378f8c60caa",
+ "b31cf85620ee44e0ba93500e3d07a1a4",
+ "a633898377b34182a54b18ce80bd6746",
+ "cc03a92eb183446996cc113b8403567c",
+ "e50206c1412144bb8cd9ee76e3aabfbd",
+ "9e67a0b81c7e47f5a854e38707dcb1a4",
+ "ed19cea4fb784412b33fdda4bdcda32e",
+ "f557a171fc6144708debd0a7d6cc6465",
+ "80b611532eaa43fd9985f591ed6889fc",
+ "bf34158a130e4a85ba1ca1302af907fd",
+ "a93a7f0819d948e8a8d72de18634060c",
+ "328a1f397d8046e59160c6b1544c0ee8",
+ "98d493b3fcc245deb295dd7a565de85c",
+ "0c4f462fa39945bd868690367a03f4aa"
+ ]
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "README.md: 0.00B [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "46b9bba731834909914b99d55a2da59d"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Processing Files (0 / 0) : | | 0.00B / 0.00B "
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "bec2b4f29cce4f1085a82823db2b0073"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "New Data Upload : | | 0.00B / 0.00B "
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "4a2b386ee0a64e809f34b6e7a3522818"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " ...adapter_model.safetensors: 2%|1 | 563kB / 29.5MB "
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "fc3b7aaf6479452eb741845671e99030"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "README.md: 0.00B [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "c51561b11eb142f2b92673b9f75480c2"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Processing Files (0 / 0) : | | 0.00B / 0.00B "
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "95c7b80740ce4522834126e4f7f5b49c"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "New Data Upload : | | 0.00B / 0.00B "
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "788cce98cead47d29ea695a55360a43c"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " ...mp7c5v_5a_/tokenizer.json: 100%|##########| 11.4MB / 11.4MB "
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "cc03a92eb183446996cc113b8403567c"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Pushed to https://huggingface.co/Sizzing/aws-rl-grpo-qwen25coder3b-adapter\n",
+ "SFT adapter at Sizzing/aws-rl-sft-qwen25coder3b-adapter untouched — both models available on Hub.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from datetime import datetime, timezone\n",
+ "\n",
+ "\n",
+ "def write_model_card(adapter_dir: Path, model_spec: ModelSpec,\n",
+ " cfg: TrainingConfig, grpo: RichMetrics, sft: RichMetrics) -> Path:\n",
+ " \"\"\"Emit a README.md for the pushed repo documenting training recipe + metrics.\"\"\"\n",
+ " card = f\"\"\"---\n",
+ "library_name: peft\n",
+ "base_model: {model_spec.sft_adapter}\n",
+ "pipeline_tag: text-generation\n",
+ "tags: [grpo, lora, aws, reinforcement-learning]\n",
+ "---\n",
+ "\n",
+ "# aws-rl-grpo-qwen25coder3b-adapter\n",
+ "\n",
+ "GRPO (Group Relative Policy Optimization) LoRA adapter continuing from\n",
+ "[`{model_spec.sft_adapter}`](https://huggingface.co/{model_spec.sft_adapter}).\n",
+ "Trained single-step with live AWS RL env rewards; evaluated multi-step.\n",
+ "\n",
+ "## How to load\n",
+ "\n",
+ "```python\n",
+ "from unsloth import FastLanguageModel\n",
+ "from peft import PeftModel\n",
+ "\n",
+ "base, tok = FastLanguageModel.from_pretrained(\n",
+ " \"{model_spec.base_model}\", max_seq_length={model_spec.max_seq_length}, load_in_4bit=True,\n",
+ ")\n",
+ "model = PeftModel.from_pretrained(base, \"{model_spec.grpo_adapter}\")\n",
+ "FastLanguageModel.for_inference(model)\n",
+ "```\n",
+ "\n",
+ "## Training recipe\n",
+ "\n",
+ "| Knob | Value |\n",
+ "|-----------------------|--------------------|\n",
+ "| learning_rate | {cfg.learning_rate:.2e} |\n",
+ "| beta (KL coef) | {cfg.beta:.3f} |\n",
+ "| num_generations (G) | {cfg.num_generations} |\n",
+ "| temperature | {cfg.temperature:.2f} |\n",
+ "| max_completion_length | {cfg.max_completion_length} |\n",
+ "| per-device batch | {cfg.per_device_train_batch_size} x {cfg.gradient_accumulation_steps} accum |\n",
+ "\n",
+ "## Multi-step eval (reserve + drift)\n",
+ "\n",
+ "| Metric | SFT baseline | GRPO | Delta |\n",
+ "|-----------------------|-------------:|-------:|--------:|\n",
+ "| overall_success_rate | {sft.overall_success_rate:.3f} | {grpo.overall_success_rate:.3f} | {grpo.overall_success_rate - sft.overall_success_rate:+.3f} |\n",
+ "| overall_reward_mean | {sft.overall_reward_mean:.3f} | {grpo.overall_reward_mean:.3f} | {grpo.overall_reward_mean - sft.overall_reward_mean:+.3f} |\n",
+ "| hints_per_solved | {sft.hints_per_solved:.3f} | {grpo.hints_per_solved:.3f} | {grpo.hints_per_solved - sft.hints_per_solved:+.3f} |\n",
+ "| recovery_rate | {sft.recovery_rate:.3f} | {grpo.recovery_rate:.3f} | {grpo.recovery_rate - sft.recovery_rate:+.3f} |\n",
+ "| drift_repair_rate | {sft.drift_repair_rate:.3f} | {grpo.drift_repair_rate:.3f} | {grpo.drift_repair_rate - sft.drift_repair_rate:+.3f} |\n",
+ "| steps_to_solve | {sft.steps_to_solve:.3f} | {grpo.steps_to_solve:.3f} | {grpo.steps_to_solve - sft.steps_to_solve:+.3f} |\n",
+ "\n",
+ "Trained {datetime.now(timezone.utc).isoformat(timespec='minutes')} on {RT.gpu_name}.\n",
+ "\"\"\"\n",
+ " card_path = adapter_dir / \"README.md\"\n",
+ " card_path.write_text(card)\n",
+ " return card_path\n",
+ "\n",
+ "\n",
+ "# Write card locally, then push both adapter files + card\n",
+ "adapter_local = OUT_DIR / \"grpo_adapter\"\n",
+ "write_model_card(adapter_local, MODEL, best_cfg, grpo_metrics, sft_metrics)\n",
+ "\n",
+ "commit_msg = f\"GRPO run {datetime.now(timezone.utc).isoformat(timespec='minutes')}\"\n",
+ "final_trainer.model.push_to_hub(\n",
+ " MODEL.grpo_adapter, private=True, token=HF_TOKEN, commit_message=commit_msg,\n",
+ ")\n",
+ "final_tok.push_to_hub(\n",
+ " MODEL.grpo_adapter, private=True, token=HF_TOKEN, commit_message=commit_msg,\n",
+ ")\n",
+ "HfApi(token=HF_TOKEN).upload_file(\n",
+ " path_or_fileobj=str(adapter_local / \"README.md\"),\n",
+ " path_in_repo=\"README.md\",\n",
+ " repo_id=MODEL.grpo_adapter,\n",
+ " commit_message=commit_msg,\n",
+ ")\n",
+ "print(f\"Pushed to https://huggingface.co/{MODEL.grpo_adapter}\")\n",
+ "print(f\"SFT adapter at {MODEL.sft_adapter} untouched — both models available on Hub.\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "62c7435b",
+ "metadata": {
+ "id": "62c7435b"
+ },
+ "source": [
+ "## 19 · Clean shutdown + artifact bundle\n",
+ "\n",
+ "Releases the GPU, tars `OUT_DIR` into a single downloadable archive (Colab `files.download`). Nothing else needs to be killed — the env server is hosted externally.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "id": "ae82230e",
+ "metadata": {
+ "id": "ae82230e",
+ "outputId": "ba084f01-0c7b-444a-8984-a7a0369b0ab8",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 263
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "19:05:30 | INFO | grpo | Found 10 PNGs in /content/out/graphs:\n",
+ "19:05:30 | INFO | grpo | 00_optuna_history.png (38 KB)\n",
+ "19:05:30 | INFO | grpo | 00_optuna_importances.png (39 KB)\n",
+ "19:05:30 | INFO | grpo | 00_optuna_parallel.png (97 KB)\n",
+ "19:05:30 | INFO | grpo | 01_optuna_history.png (53 KB)\n",
+ "19:05:30 | INFO | grpo | 02_optuna_hparams.png (52 KB)\n",
+ "19:05:30 | INFO | grpo | 03_optuna_trial_curves.png (270 KB)\n",
+ "19:05:30 | INFO | grpo | 04_final_run_curves.png (254 KB)\n",
+ "19:05:30 | INFO | grpo | 05_sft_vs_grpo_scalar.png (84 KB)\n",
+ "19:05:30 | INFO | grpo | 06_success_by_tier.png (33 KB)\n",
+ "19:05:30 | INFO | grpo | 07_reward_by_tier.png (34 KB)\n",
+ "19:05:41 | INFO | grpo | Zip bundle: /content/out.zip (122.2 MB)\n",
+ "19:05:41 | INFO | grpo | HF Hub: SFT=https://huggingface.co/Sizzing/aws-rl-sft-qwen25coder3b-adapter GRPO=https://huggingface.co/Sizzing/aws-rl-grpo-qwen25coder3b-adapter\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "application/javascript": [
+ "\n",
+ " async function download(id, filename, size) {\n",
+ " if (!google.colab.kernel.accessAllowed) {\n",
+ " return;\n",
+ " }\n",
+ " const div = document.createElement('div');\n",
+ " const label = document.createElement('label');\n",
+ " label.textContent = `Downloading \"${filename}\": `;\n",
+ " div.appendChild(label);\n",
+ " const progress = document.createElement('progress');\n",
+ " progress.max = size;\n",
+ " div.appendChild(progress);\n",
+ " document.body.appendChild(div);\n",
+ "\n",
+ " const buffers = [];\n",
+ " let downloaded = 0;\n",
+ "\n",
+ " const channel = await google.colab.kernel.comms.open(id);\n",
+ " // Send a message to notify the kernel that we're ready.\n",
+ " channel.send({})\n",
+ "\n",
+ " for await (const message of channel.messages) {\n",
+ " // Send a message to notify the kernel that we're ready.\n",
+ " channel.send({})\n",
+ " if (message.buffers) {\n",
+ " for (const buffer of message.buffers) {\n",
+ " buffers.push(buffer);\n",
+ " downloaded += buffer.byteLength;\n",
+ " progress.value = downloaded;\n",
+ " }\n",
+ " }\n",
+ " }\n",
+ " const blob = new Blob(buffers, {type: 'application/binary'});\n",
+ " const a = document.createElement('a');\n",
+ " a.href = window.URL.createObjectURL(blob);\n",
+ " a.download = filename;\n",
+ " div.appendChild(a);\n",
+ " a.click();\n",
+ " div.remove();\n",
+ " }\n",
+ " "
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "application/javascript": [
+ "download(\"download_464556f1-c59e-4dd9-8519-ffe991d7155a\", \"out.zip\", 122164368)"
+ ]
+ },
+ "metadata": {}
+ }
+ ],
+ "source": [
+ "import shutil\n",
+ "from pathlib import Path\n",
+ "\n",
+ "# Verify graphs were exported\n",
+ "graphs_dir = OUT_DIR / \"graphs\"\n",
+ "if graphs_dir.exists():\n",
+ " pngs = sorted(graphs_dir.glob(\"*.png\"))\n",
+ " log.info(\"Found %d PNGs in %s:\", len(pngs), graphs_dir)\n",
+ " for p in pngs:\n",
+ " log.info(\" %s (%d KB)\", p.name, p.stat().st_size // 1024)\n",
+ "else:\n",
+ " log.warning(\"No graphs dir at %s — run the matplotlib plot cell first.\", graphs_dir)\n",
+ "\n",
+ "# Release GPU\n",
+ "try:\n",
+ " free_model(final_trainer)\n",
+ " del final_trainer, final_model, final_tok\n",
+ "except Exception:\n",
+ " pass\n",
+ "gc.collect(); torch.cuda.empty_cache()\n",
+ "\n",
+ "# Build a single zip of OUT_DIR (grpo_adapter, JSON metrics, graphs/, etc.)\n",
+ "zip_path = shutil.make_archive(\n",
+ " base_name=str(OUT_DIR.parent / OUT_DIR.name),\n",
+ " format=\"zip\",\n",
+ " root_dir=OUT_DIR,\n",
+ ")\n",
+ "log.info(\"Zip bundle: %s (%.1f MB)\",\n",
+ " zip_path, Path(zip_path).stat().st_size / 1e6)\n",
+ "log.info(\"HF Hub: SFT=https://huggingface.co/%s GRPO=https://huggingface.co/%s\",\n",
+ " MODEL.sft_adapter, MODEL.grpo_adapter)\n",
+ "\n",
+ "if IS_COLAB:\n",
+ " try:\n",
+ " from google.colab import files\n",
+ " files.download(zip_path)\n",
+ " except Exception as e:\n",
+ " log.warning(\"Colab auto-download skipped: %s. Download manually from %s\",\n",
+ " e, zip_path)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "15b65aff",
+ "metadata": {
+ "id": "15b65aff"
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "accelerator": "GPU",
+ "colab": {
+ "gpuType": "T4",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.13.7"
+ },
+ "widgets": {
+ "application/vnd.jupyter.widget-state+json": {
+ "17e4a25f8b0a4293b192beda65e888ab": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_312d279277ea415ba2940bc879e72e5c",
+ "IPY_MODEL_8f3f631215e146528c4fee4c5cb4a453",
+ "IPY_MODEL_fa9d568f23674c6e9740955ce8d0dda0"
+ ],
+ "layout": "IPY_MODEL_3a9e6d83ca3a48fcb61fbb85df7dfbc2"
+ }
+ },
+ "312d279277ea415ba2940bc879e72e5c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_b6f758d29ec74a49b851eabb537efbab",
+ "placeholder": "",
+ "style": "IPY_MODEL_a38fb4652a5e4b52b9704ba7dc0b7dc5",
+ "value": "README.md: "
+ }
+ },
+ "8f3f631215e146528c4fee4c5cb4a453": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_1b41774ddcdb475d9215076cc31d2857",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_693f88f916a6449ca4e6a931fad75dc7",
+ "value": 1
+ }
+ },
+ "fa9d568f23674c6e9740955ce8d0dda0": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_780970fdf6434c24b97e97ae738eff4b",
+ "placeholder": "",
+ "style": "IPY_MODEL_5c6f9b2415754d9d956f22ff9eb55d79",
+ "value": " 4.89k/? [00:00<00:00, 97.6kB/s]"
+ }
+ },
+ "3a9e6d83ca3a48fcb61fbb85df7dfbc2": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "b6f758d29ec74a49b851eabb537efbab": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a38fb4652a5e4b52b9704ba7dc0b7dc5": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "1b41774ddcdb475d9215076cc31d2857": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "693f88f916a6449ca4e6a931fad75dc7": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "780970fdf6434c24b97e97ae738eff4b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "5c6f9b2415754d9d956f22ff9eb55d79": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "96e4ee7ccd294abc95cdda282ff68217": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_e2fc8e26f04d40f59973c2e9fce8821f",
+ "IPY_MODEL_a1ee88211ba14bdca07d9dc4862e3780",
+ "IPY_MODEL_c7195e122f8e49508fa9a8c766e43085"
+ ],
+ "layout": "IPY_MODEL_27584397f5d14462bd9bc3932083f044"
+ }
+ },
+ "e2fc8e26f04d40f59973c2e9fce8821f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a864b9a6bcb44885b956cd4b59ae1f74",
+ "placeholder": "",
+ "style": "IPY_MODEL_d6eae3b5673e4f6197f2fb48601d0661",
+ "value": "data/train-00000-of-00001.parquet: 100%"
+ }
+ },
+ "a1ee88211ba14bdca07d9dc4862e3780": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_3bad0119c77242e98b525b075996fbd8",
+ "max": 1923495,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_b04a5d15e84f4cd28130f233e556fd12",
+ "value": 1923495
+ }
+ },
+ "c7195e122f8e49508fa9a8c766e43085": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_880d55cbe923497f95f7575b5e85cfad",
+ "placeholder": "",
+ "style": "IPY_MODEL_aa5b6888b7f84df190935eb5efaf49d9",
+ "value": " 1.92M/1.92M [00:01<00:00, 9.78MB/s]"
+ }
+ },
+ "27584397f5d14462bd9bc3932083f044": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a864b9a6bcb44885b956cd4b59ae1f74": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d6eae3b5673e4f6197f2fb48601d0661": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "3bad0119c77242e98b525b075996fbd8": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "b04a5d15e84f4cd28130f233e556fd12": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "880d55cbe923497f95f7575b5e85cfad": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "aa5b6888b7f84df190935eb5efaf49d9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "71e32bfc45574278b0f7f1956cf268bd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_3380c456828945d9ac666617d06740fc",
+ "IPY_MODEL_404dbe67ed784f069143c973dc845e40",
+ "IPY_MODEL_4ce611000a534d948d455f92ecee576b"
+ ],
+ "layout": "IPY_MODEL_8c96ae914728462fbd9b32fd08cd8187"
+ }
+ },
+ "3380c456828945d9ac666617d06740fc": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_9040b30667794322bff110267b8ed9cd",
+ "placeholder": "",
+ "style": "IPY_MODEL_b06a5846c2c04291a99d9627c47bd327",
+ "value": "data/validation-00000-of-00001.parquet: 100%"
+ }
+ },
+ "404dbe67ed784f069143c973dc845e40": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_291744bd1f894ca8945f9be975b6e624",
+ "max": 193593,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_a92f2302bd6a4ac5a483b4b21ed157eb",
+ "value": 193593
+ }
+ },
+ "4ce611000a534d948d455f92ecee576b": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_d95309efa2914257be7eeb1e7ece3fde",
+ "placeholder": "",
+ "style": "IPY_MODEL_2efa16125e694584b6a5438f5f925009",
+ "value": " 194k/194k [00:00<00:00, 967kB/s]"
+ }
+ },
+ "8c96ae914728462fbd9b32fd08cd8187": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "9040b30667794322bff110267b8ed9cd": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "b06a5846c2c04291a99d9627c47bd327": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "291744bd1f894ca8945f9be975b6e624": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a92f2302bd6a4ac5a483b4b21ed157eb": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "d95309efa2914257be7eeb1e7ece3fde": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "2efa16125e694584b6a5438f5f925009": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "5454a54bf5af4336b3c904f563973fd6": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_6d768d2eff3e463cb8d9f51a33a7ca98",
+ "IPY_MODEL_de2681feaa2e4b52972a37855d2ee8e5",
+ "IPY_MODEL_d9e8fd4643044efabc576be5be5c4694"
+ ],
+ "layout": "IPY_MODEL_177a3f0d07c5494abc3d25acc492f24f"
+ }
+ },
+ "6d768d2eff3e463cb8d9f51a33a7ca98": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_fd24a9a430c8476f8e70f50590541b71",
+ "placeholder": "",
+ "style": "IPY_MODEL_321146c007014d4cacc70d8653036451",
+ "value": "data/reserve-00000-of-00001.parquet: 100%"
+ }
+ },
+ "de2681feaa2e4b52972a37855d2ee8e5": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_71a8a6f25a9742b19097b59e3d34cbf4",
+ "max": 260654,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_d54e0916ad0e43ceb348fcc06af24717",
+ "value": 260654
+ }
+ },
+ "d9e8fd4643044efabc576be5be5c4694": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_cdb7fb82b1f34c728b08706905c0b411",
+ "placeholder": "",
+ "style": "IPY_MODEL_d0adec364aca47858042a8877918d321",
+ "value": " 261k/261k [00:01<00:00, 1.29MB/s]"
+ }
+ },
+ "177a3f0d07c5494abc3d25acc492f24f": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "fd24a9a430c8476f8e70f50590541b71": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "321146c007014d4cacc70d8653036451": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "71a8a6f25a9742b19097b59e3d34cbf4": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d54e0916ad0e43ceb348fcc06af24717": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "cdb7fb82b1f34c728b08706905c0b411": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d0adec364aca47858042a8877918d321": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "a04ffa2985424737825292f54a43a9d4": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_ed3a163a822a461f87deb14ec2d577ed",
+ "IPY_MODEL_da313ab92bf3493986ffcf338da00bd8",
+ "IPY_MODEL_19d9a45f1ba642db99e239e0a8fd5bbf"
+ ],
+ "layout": "IPY_MODEL_bde264b24d2b4d52bba0980ebc4bece6"
+ }
+ },
+ "ed3a163a822a461f87deb14ec2d577ed": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_5e499677de5043df92f3b5653f81d59b",
+ "placeholder": "",
+ "style": "IPY_MODEL_ca41efa2e37c41789257075279609832",
+ "value": "Generating train split: 100%"
+ }
+ },
+ "da313ab92bf3493986ffcf338da00bd8": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_79ccc0b15d4f4668801e93f0099665f2",
+ "max": 1500,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_c83934fee9864d9c914153a678593a84",
+ "value": 1500
+ }
+ },
+ "19d9a45f1ba642db99e239e0a8fd5bbf": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_7f192f04e4e44f0fa7144d7f1fa236ec",
+ "placeholder": "",
+ "style": "IPY_MODEL_4d0b57cf6a1f4509955c32781dad9afd",
+ "value": " 1500/1500 [00:00<00:00, 22075.83 examples/s]"
+ }
+ },
+ "bde264b24d2b4d52bba0980ebc4bece6": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "5e499677de5043df92f3b5653f81d59b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "ca41efa2e37c41789257075279609832": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "79ccc0b15d4f4668801e93f0099665f2": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c83934fee9864d9c914153a678593a84": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "7f192f04e4e44f0fa7144d7f1fa236ec": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "4d0b57cf6a1f4509955c32781dad9afd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "f97157719bdf40a88e1730674f621bd9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_6a381c46cd6d48a1aae6c99ab20b21e4",
+ "IPY_MODEL_7c937e894bd841d489ec031e8be9fe2e",
+ "IPY_MODEL_d0bd273d343b4963a3fcb3c0a67ff497"
+ ],
+ "layout": "IPY_MODEL_6aa5eabdb2d54130b03cfff6d3fcff9a"
+ }
+ },
+ "6a381c46cd6d48a1aae6c99ab20b21e4": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_e25dff488fd749b4b35c06704bc51c09",
+ "placeholder": "",
+ "style": "IPY_MODEL_0771f43fb5a14d38b4f6f502a64079d9",
+ "value": "Generating validation split: 100%"
+ }
+ },
+ "7c937e894bd841d489ec031e8be9fe2e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_e2f519926c564da8bbca7de0b68abd0e",
+ "max": 150,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_c81aa39a8c9441049b863b1257c1a5e8",
+ "value": 150
+ }
+ },
+ "d0bd273d343b4963a3fcb3c0a67ff497": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_0546ae7051234b8db6e970a1d3cff61b",
+ "placeholder": "",
+ "style": "IPY_MODEL_8e446f7eafe6440c8d727e6956409446",
+ "value": " 150/150 [00:00<00:00, 2299.97 examples/s]"
+ }
+ },
+ "6aa5eabdb2d54130b03cfff6d3fcff9a": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "e25dff488fd749b4b35c06704bc51c09": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "0771f43fb5a14d38b4f6f502a64079d9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "e2f519926c564da8bbca7de0b68abd0e": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c81aa39a8c9441049b863b1257c1a5e8": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "0546ae7051234b8db6e970a1d3cff61b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "8e446f7eafe6440c8d727e6956409446": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "20914c591fc74055bcca0eb8ac4e5926": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_37d9d6c95bba42e8a096cf5275a480fd",
+ "IPY_MODEL_047c53a5b7e74be68acd1045b2e4e283",
+ "IPY_MODEL_1fb215d781c545e1b44459499c38ad69"
+ ],
+ "layout": "IPY_MODEL_59d71306ba244bfd9f1ec700214964f8"
+ }
+ },
+ "37d9d6c95bba42e8a096cf5275a480fd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_f25fe777177f4969859c68717c8e3e48",
+ "placeholder": "",
+ "style": "IPY_MODEL_8b8345d415254c5f9e1e9fc2d40389d0",
+ "value": "Generating reserve split: 100%"
+ }
+ },
+ "047c53a5b7e74be68acd1045b2e4e283": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a5f5680a1d76403799529cd0967ba535",
+ "max": 200,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_dead8a53066c477a9782b8c7338ac848",
+ "value": 200
+ }
+ },
+ "1fb215d781c545e1b44459499c38ad69": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_0c88e7079c654e79b855aa29078a36bc",
+ "placeholder": "",
+ "style": "IPY_MODEL_e753ece3c0c8413c910e36a96ba77b98",
+ "value": " 200/200 [00:00<00:00, 4656.66 examples/s]"
+ }
+ },
+ "59d71306ba244bfd9f1ec700214964f8": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "f25fe777177f4969859c68717c8e3e48": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "8b8345d415254c5f9e1e9fc2d40389d0": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "a5f5680a1d76403799529cd0967ba535": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "dead8a53066c477a9782b8c7338ac848": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "0c88e7079c654e79b855aa29078a36bc": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "e753ece3c0c8413c910e36a96ba77b98": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "90147fec0d48464bbd76deb157226203": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_97dccf77527e4494818ed252eb9e96b6",
+ "IPY_MODEL_4e7c82ed075a46fa8b9e2a57fea59fc0",
+ "IPY_MODEL_a58cb1b5661a410fa6abe2b267579295"
+ ],
+ "layout": "IPY_MODEL_3dbb2e81f2f4447382e7355d0bd80cce"
+ }
+ },
+ "97dccf77527e4494818ed252eb9e96b6": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_b019ce4903714cb3b5a1ffd059d18c6d",
+ "placeholder": "",
+ "style": "IPY_MODEL_0e878c2d72104893a978a30d7ac53f1e",
+ "value": "Filter: 100%"
+ }
+ },
+ "4e7c82ed075a46fa8b9e2a57fea59fc0": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_3c5334f626ca4cb7b54c7ed19ae9da7b",
+ "max": 150,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_469bcc09c4224d7fb3e7c1d62e87699d",
+ "value": 150
+ }
+ },
+ "a58cb1b5661a410fa6abe2b267579295": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_0cfad13926b34df0841d1d163334bad3",
+ "placeholder": "",
+ "style": "IPY_MODEL_1ad2a4de697e4e3e905087ed94b921ba",
+ "value": " 150/150 [00:00<00:00, 2718.53 examples/s]"
+ }
+ },
+ "3dbb2e81f2f4447382e7355d0bd80cce": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "b019ce4903714cb3b5a1ffd059d18c6d": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "0e878c2d72104893a978a30d7ac53f1e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "3c5334f626ca4cb7b54c7ed19ae9da7b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "469bcc09c4224d7fb3e7c1d62e87699d": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "0cfad13926b34df0841d1d163334bad3": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "1ad2a4de697e4e3e905087ed94b921ba": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "a3e8d1e2cd794ec290dc71820af6f24f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_67277d4907ac46b287640fff3a2eee62",
+ "IPY_MODEL_5b1488d801d64a10bbdc28a9c011d5c3",
+ "IPY_MODEL_cd3801cce52f41b38ecde5f781bea2b9"
+ ],
+ "layout": "IPY_MODEL_e503d1497c2b4af2b52b04113794063d"
+ }
+ },
+ "67277d4907ac46b287640fff3a2eee62": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_ac6e615ab24c4c80b47d60f31fa09430",
+ "placeholder": "",
+ "style": "IPY_MODEL_f8d419e8c75649eba3f4a148da3016d3",
+ "value": "Map: 100%"
+ }
+ },
+ "5b1488d801d64a10bbdc28a9c011d5c3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_792f08a4d86f4c849b429487eb286d80",
+ "max": 20,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_2a194e7be5ed4e00b7adabce5f93e810",
+ "value": 20
+ }
+ },
+ "cd3801cce52f41b38ecde5f781bea2b9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_c66c7b3404ca4beb813036e806757136",
+ "placeholder": "",
+ "style": "IPY_MODEL_381d7a2e92de47d5878e71fc2f644024",
+ "value": " 20/20 [00:00<00:00, 524.31 examples/s]"
+ }
+ },
+ "e503d1497c2b4af2b52b04113794063d": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "ac6e615ab24c4c80b47d60f31fa09430": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "f8d419e8c75649eba3f4a148da3016d3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "792f08a4d86f4c849b429487eb286d80": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "2a194e7be5ed4e00b7adabce5f93e810": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "c66c7b3404ca4beb813036e806757136": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "381d7a2e92de47d5878e71fc2f644024": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "546dfd22f8c64319aecbcd01ac858cf6": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_c5c6b045ea13420393b303f5c7547ee2",
+ "IPY_MODEL_f44955735e8b451f90b271d6d0b1c405",
+ "IPY_MODEL_229a210fcb3942458bba7605de6c6b02"
+ ],
+ "layout": "IPY_MODEL_11ae5fffb510410e97093de938669e50"
+ }
+ },
+ "c5c6b045ea13420393b303f5c7547ee2": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_fb8b4b4e475a4783986bf9c6a54ce21a",
+ "placeholder": "",
+ "style": "IPY_MODEL_4495fed8673a414ab8f9e5a2a8d355b2",
+ "value": "Filter: 100%"
+ }
+ },
+ "f44955735e8b451f90b271d6d0b1c405": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_f6254de7f5c34fb0abe37459c559eecd",
+ "max": 200,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_d98452df2c144e7fa197c6bf8c7a84aa",
+ "value": 200
+ }
+ },
+ "229a210fcb3942458bba7605de6c6b02": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a2566c92ce2f4c5ea41f523eaa517091",
+ "placeholder": "",
+ "style": "IPY_MODEL_02772bbc7feb49dbb8427d4c52211b68",
+ "value": " 200/200 [00:00<00:00, 3002.27 examples/s]"
+ }
+ },
+ "11ae5fffb510410e97093de938669e50": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "fb8b4b4e475a4783986bf9c6a54ce21a": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "4495fed8673a414ab8f9e5a2a8d355b2": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "f6254de7f5c34fb0abe37459c559eecd": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d98452df2c144e7fa197c6bf8c7a84aa": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "a2566c92ce2f4c5ea41f523eaa517091": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "02772bbc7feb49dbb8427d4c52211b68": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "15044ec892644e459b2009de7a74f27d": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_659ca47987dc4ee4bcc9575a6f3a5d3a",
+ "IPY_MODEL_06f127e6780f47cda98a37c538450249",
+ "IPY_MODEL_2497ba48b5254eedbc94c0fedc50b324"
+ ],
+ "layout": "IPY_MODEL_7e977d8fd3f1475fac6b26ec618edf81"
+ }
+ },
+ "659ca47987dc4ee4bcc9575a6f3a5d3a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_d521058b79b848d08dcaf3295c5b6541",
+ "placeholder": "",
+ "style": "IPY_MODEL_ee90c4835dee4529bd4263fa89137ff9",
+ "value": "Map: 100%"
+ }
+ },
+ "06f127e6780f47cda98a37c538450249": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_9d37f3cc93e54609bb22c9af78552827",
+ "max": 112,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_c3811a5a59cc457ab99516a13e7aa2f4",
+ "value": 112
+ }
+ },
+ "2497ba48b5254eedbc94c0fedc50b324": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_ebbcbcad06334b7e896371f5f0b8c8ac",
+ "placeholder": "",
+ "style": "IPY_MODEL_65a4b5d545564dbaa0baea82817ae11f",
+ "value": " 112/112 [00:00<00:00, 1274.38 examples/s]"
+ }
+ },
+ "7e977d8fd3f1475fac6b26ec618edf81": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d521058b79b848d08dcaf3295c5b6541": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "ee90c4835dee4529bd4263fa89137ff9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "9d37f3cc93e54609bb22c9af78552827": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c3811a5a59cc457ab99516a13e7aa2f4": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "ebbcbcad06334b7e896371f5f0b8c8ac": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "65a4b5d545564dbaa0baea82817ae11f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "6f08a4702611494e9331f49a3a117c53": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_2adf38f2dd4f4c68896ab3f124fd2a10",
+ "IPY_MODEL_118388f7fc3d4d4ba811d43a763e92b4",
+ "IPY_MODEL_0a657273364b488b802e3c1eb6467ba5"
+ ],
+ "layout": "IPY_MODEL_307cbbbd2871496fbca0d986ad54b9ac"
+ }
+ },
+ "2adf38f2dd4f4c68896ab3f124fd2a10": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_c4614ab14e1642dca6f5a4899fae90ef",
+ "placeholder": "",
+ "style": "IPY_MODEL_e1808c94a664458486380230d17039af",
+ "value": "model.safetensors: 100%"
+ }
+ },
+ "118388f7fc3d4d4ba811d43a763e92b4": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_d0161222380b4ec1a8c43d2498423352",
+ "max": 2054625552,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_8a5e6316093b4a05abe2710ff1d33c5e",
+ "value": 2054625552
+ }
+ },
+ "0a657273364b488b802e3c1eb6467ba5": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_b959577f9e134fb7bb41c7dd3a441d32",
+ "placeholder": "",
+ "style": "IPY_MODEL_45eee0aa85594ee3a9f19cab1900093d",
+ "value": " 2.05G/2.05G [00:15<00:00, 156MB/s]"
+ }
+ },
+ "307cbbbd2871496fbca0d986ad54b9ac": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c4614ab14e1642dca6f5a4899fae90ef": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "e1808c94a664458486380230d17039af": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "d0161222380b4ec1a8c43d2498423352": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "8a5e6316093b4a05abe2710ff1d33c5e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "b959577f9e134fb7bb41c7dd3a441d32": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "45eee0aa85594ee3a9f19cab1900093d": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "bcb703307a8246329992c3267cdcb08a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_be412634d9b34d4d94a0807b97de39e2",
+ "IPY_MODEL_79b86eda52fe4b12a0b54ffaf15cca96",
+ "IPY_MODEL_f3c926804133410a9059e5cdfeb67cde"
+ ],
+ "layout": "IPY_MODEL_1d8f62c4fdf74eeb8bdc830b4af0670c"
+ }
+ },
+ "be412634d9b34d4d94a0807b97de39e2": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_087774b0f7d844438df2aee7ce5fff0b",
+ "placeholder": "",
+ "style": "IPY_MODEL_3f85a045eb424e8c80d9ae09e41acc9b",
+ "value": "generation_config.json: 100%"
+ }
+ },
+ "79b86eda52fe4b12a0b54ffaf15cca96": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_dd3eab3700ad450c8080bb5432071f7b",
+ "max": 266,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_a9db83f0d10b4fd1b4ee3b90d4a7a278",
+ "value": 266
+ }
+ },
+ "f3c926804133410a9059e5cdfeb67cde": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_c6eddaca9a3448ee9a25588c279f8e33",
+ "placeholder": "",
+ "style": "IPY_MODEL_5d521ff47a70480f9c8b97cd826bebff",
+ "value": " 266/266 [00:00<00:00, 22.4kB/s]"
+ }
+ },
+ "1d8f62c4fdf74eeb8bdc830b4af0670c": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "087774b0f7d844438df2aee7ce5fff0b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "3f85a045eb424e8c80d9ae09e41acc9b": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "dd3eab3700ad450c8080bb5432071f7b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a9db83f0d10b4fd1b4ee3b90d4a7a278": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "c6eddaca9a3448ee9a25588c279f8e33": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "5d521ff47a70480f9c8b97cd826bebff": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "ebcb37ad6120423ab909be13bc4d6b84": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_28d61b8e55ff4504a285e9e1ab903089",
+ "IPY_MODEL_844b6af01fdd4db3812f07a9f0dcc6e0",
+ "IPY_MODEL_13c198104606425a81c28ef3a0f32242"
+ ],
+ "layout": "IPY_MODEL_c13f9ab3802c4d98b8d294809fe46469"
+ }
+ },
+ "28d61b8e55ff4504a285e9e1ab903089": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_5efcbdf41907478a833af69d6def7a49",
+ "placeholder": "",
+ "style": "IPY_MODEL_cfd968bbff354bf88ed711f5a2ce00dd",
+ "value": "tokenizer_config.json: "
+ }
+ },
+ "844b6af01fdd4db3812f07a9f0dcc6e0": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a893af26a62542338423ca1a6abbb909",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_d50bf1b19f4245eb848a624107a31d35",
+ "value": 1
+ }
+ },
+ "13c198104606425a81c28ef3a0f32242": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a5ba2b09c1984e71bb50d7729da606ca",
+ "placeholder": "",
+ "style": "IPY_MODEL_83cb6dd3b5da4834b7eceabd5d6fdef6",
+ "value": " 7.51k/? [00:00<00:00, 670kB/s]"
+ }
+ },
+ "c13f9ab3802c4d98b8d294809fe46469": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "5efcbdf41907478a833af69d6def7a49": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "cfd968bbff354bf88ed711f5a2ce00dd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "a893af26a62542338423ca1a6abbb909": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "d50bf1b19f4245eb848a624107a31d35": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "a5ba2b09c1984e71bb50d7729da606ca": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "83cb6dd3b5da4834b7eceabd5d6fdef6": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "3e38fbdb2f6e48dc955399660dbebdfe": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_a7633c89057946f182f36821c4b0922e",
+ "IPY_MODEL_95710dea79ec4ecf82d9a8f3cc14085b",
+ "IPY_MODEL_a1dafa7165424f02bdfb5b2bf4b59645"
+ ],
+ "layout": "IPY_MODEL_9f4ac913e08240f4b74eb1eb0f272c9c"
+ }
+ },
+ "a7633c89057946f182f36821c4b0922e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_b77f5bf34be84809a753ea0e5f0f3b77",
+ "placeholder": "",
+ "style": "IPY_MODEL_f74a9bbe540e465080e66ac51e10f1b2",
+ "value": "vocab.json: "
+ }
+ },
+ "95710dea79ec4ecf82d9a8f3cc14085b": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_6d71da9ff2fb48bc8c62b6fcb30bcd01",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_e78a1c8d4fe64494b51a895f9e122dbb",
+ "value": 1
+ }
+ },
+ "a1dafa7165424f02bdfb5b2bf4b59645": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_c8e70a9813584680b5ed699573e6d970",
+ "placeholder": "",
+ "style": "IPY_MODEL_5059f8e3218f40ee8f240601b270d409",
+ "value": " 2.78M/? [00:00<00:00, 59.8MB/s]"
+ }
+ },
+ "9f4ac913e08240f4b74eb1eb0f272c9c": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "b77f5bf34be84809a753ea0e5f0f3b77": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "f74a9bbe540e465080e66ac51e10f1b2": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "6d71da9ff2fb48bc8c62b6fcb30bcd01": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "e78a1c8d4fe64494b51a895f9e122dbb": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "c8e70a9813584680b5ed699573e6d970": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "5059f8e3218f40ee8f240601b270d409": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "c8c63f9906cb43a481fc175377e9e60a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_7646fb6a28b14180940f77fdfc943ce5",
+ "IPY_MODEL_d8474024afd74bfe8d0ff74f7bc5ea43",
+ "IPY_MODEL_78148f6b76b34c3ebfdf938adda1d4e9"
+ ],
+ "layout": "IPY_MODEL_626d457483f545919a5f79032d9abfe3"
+ }
+ },
+ "7646fb6a28b14180940f77fdfc943ce5": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_2390a3cfeafa498585d6003ace58cca2",
+ "placeholder": "",
+ "style": "IPY_MODEL_e51bd69bca6a49ec9f70946a68417d01",
+ "value": "merges.txt: "
+ }
+ },
+ "d8474024afd74bfe8d0ff74f7bc5ea43": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_3d4a1f40d0da4b64aef61bc8d5d30e14",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_87bfbaf9e43345078ee5bc6d2d709fa3",
+ "value": 1
+ }
+ },
+ "78148f6b76b34c3ebfdf938adda1d4e9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_76a70e18ee6f49d1a8463637f849a74f",
+ "placeholder": "",
+ "style": "IPY_MODEL_8af833fdea064d3a95d3b7c2d0b92ea9",
+ "value": " 1.67M/? [00:00<00:00, 50.6MB/s]"
+ }
+ },
+ "626d457483f545919a5f79032d9abfe3": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "2390a3cfeafa498585d6003ace58cca2": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "e51bd69bca6a49ec9f70946a68417d01": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "3d4a1f40d0da4b64aef61bc8d5d30e14": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "87bfbaf9e43345078ee5bc6d2d709fa3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "76a70e18ee6f49d1a8463637f849a74f": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "8af833fdea064d3a95d3b7c2d0b92ea9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "1d50a009a977463e9f97635a5c4f2bbb": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_1dc52591ca824509b66a32e5bf4f6648",
+ "IPY_MODEL_4412b8c647ae4c20801a5c265412e022",
+ "IPY_MODEL_d4467d98b75c40d699ed4165bb75df6f"
+ ],
+ "layout": "IPY_MODEL_43dd31d1dde142fabc248ea37f94c3c9"
+ }
+ },
+ "1dc52591ca824509b66a32e5bf4f6648": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_b754710638044958993eb5bec000fed0",
+ "placeholder": "",
+ "style": "IPY_MODEL_51a672bd7cd24564b8d8ea431d318e59",
+ "value": "added_tokens.json: 100%"
+ }
+ },
+ "4412b8c647ae4c20801a5c265412e022": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_80542974d6a84c78a15de58878c18193",
+ "max": 632,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_0ac221560f904fa98329a17b0b5166a9",
+ "value": 632
+ }
+ },
+ "d4467d98b75c40d699ed4165bb75df6f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_578a784c18e64ee3b6c2d5f671c36b69",
+ "placeholder": "",
+ "style": "IPY_MODEL_cdebf7a618af49e3a0c8c5057c0aeaed",
+ "value": " 632/632 [00:00<00:00, 37.7kB/s]"
+ }
+ },
+ "43dd31d1dde142fabc248ea37f94c3c9": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "b754710638044958993eb5bec000fed0": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "51a672bd7cd24564b8d8ea431d318e59": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "80542974d6a84c78a15de58878c18193": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "0ac221560f904fa98329a17b0b5166a9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "578a784c18e64ee3b6c2d5f671c36b69": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "cdebf7a618af49e3a0c8c5057c0aeaed": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "c989e566fe0942ff8550634b750c1fbf": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_73f9006bf8214a0096bfafddabe258d6",
+ "IPY_MODEL_140220fc61e44bd1bd775c724d3d43d9",
+ "IPY_MODEL_f30f63c2ac614bcfb2c5fc90200785fa"
+ ],
+ "layout": "IPY_MODEL_4b2326ccbab641f78b5e162dee0f75c1"
+ }
+ },
+ "73f9006bf8214a0096bfafddabe258d6": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_7fe4b6172dd149819ddf2762b87d37e9",
+ "placeholder": "",
+ "style": "IPY_MODEL_c4b7ed116d494b84a133207912453294",
+ "value": "special_tokens_map.json: 100%"
+ }
+ },
+ "140220fc61e44bd1bd775c724d3d43d9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_5f574598039c467fb83aced764c7936a",
+ "max": 613,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_18ceaac5a73049cf87a1991beae0dfdf",
+ "value": 613
+ }
+ },
+ "f30f63c2ac614bcfb2c5fc90200785fa": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_4ff08209c30b4475b4077329df0a50dc",
+ "placeholder": "",
+ "style": "IPY_MODEL_a8c91fffccd149eab9be4887c94a3bc3",
+ "value": " 613/613 [00:00<00:00, 43.4kB/s]"
+ }
+ },
+ "4b2326ccbab641f78b5e162dee0f75c1": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "7fe4b6172dd149819ddf2762b87d37e9": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c4b7ed116d494b84a133207912453294": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "5f574598039c467fb83aced764c7936a": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "18ceaac5a73049cf87a1991beae0dfdf": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "4ff08209c30b4475b4077329df0a50dc": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a8c91fffccd149eab9be4887c94a3bc3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "d274ca5e4dc84f4ca7bea1208cb2094f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_51f03a809ced4e299439005861dbebee",
+ "IPY_MODEL_7340e1e900094ac1aaf4fbf22286a9da",
+ "IPY_MODEL_1e4e1e42ce174c38bf46c99743aec1a3"
+ ],
+ "layout": "IPY_MODEL_fc561191f4cd43d8a975602e3c4593a4"
+ }
+ },
+ "51f03a809ced4e299439005861dbebee": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_67b8d4f7124141bfa58fbb9cc3633773",
+ "placeholder": "",
+ "style": "IPY_MODEL_a73ce2691f974691af0e5ad183accca5",
+ "value": "tokenizer.json: "
+ }
+ },
+ "7340e1e900094ac1aaf4fbf22286a9da": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_aaf8549415914e949d716e50629ebcc6",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_9ee227074084483bb665250eef98c70e",
+ "value": 1
+ }
+ },
+ "1e4e1e42ce174c38bf46c99743aec1a3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_598e07a9cf414c8d9416d57969b654c4",
+ "placeholder": "",
+ "style": "IPY_MODEL_083d9eb499e4470fadda78b6e30ccc7c",
+ "value": " 7.03M/? [00:00<00:00, 87.3MB/s]"
+ }
+ },
+ "fc561191f4cd43d8a975602e3c4593a4": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "67b8d4f7124141bfa58fbb9cc3633773": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a73ce2691f974691af0e5ad183accca5": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "aaf8549415914e949d716e50629ebcc6": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "9ee227074084483bb665250eef98c70e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "598e07a9cf414c8d9416d57969b654c4": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "083d9eb499e4470fadda78b6e30ccc7c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "a480c0315a1149a696d2064f85213810": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_0a803d22ea0f44e1a87beb30cc5e77e1",
+ "IPY_MODEL_11722376e3ce45f683cff6a5f6e78506",
+ "IPY_MODEL_5d11b2d362b54ae29a2fd907a3c21c38"
+ ],
+ "layout": "IPY_MODEL_8215e6b72df4433fbba64e75feab0f94"
+ }
+ },
+ "0a803d22ea0f44e1a87beb30cc5e77e1": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_06be388f07064b21b25deeb7a53dda81",
+ "placeholder": "",
+ "style": "IPY_MODEL_3e295a5c888642ac8e3fd245a8a97a45",
+ "value": "adapter_config.json: "
+ }
+ },
+ "11722376e3ce45f683cff6a5f6e78506": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_3a2ac1f4812449a0b4259e7b4f947033",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_129041f3428e4d828b4a97132fb8baa2",
+ "value": 1
+ }
+ },
+ "5d11b2d362b54ae29a2fd907a3c21c38": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_d91bc462a3a24c1b831ea1643515ab97",
+ "placeholder": "",
+ "style": "IPY_MODEL_90c96b4ed8b04448bff93459a933bfd8",
+ "value": " 1.23k/? [00:00<00:00, 108kB/s]"
+ }
+ },
+ "8215e6b72df4433fbba64e75feab0f94": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "06be388f07064b21b25deeb7a53dda81": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "3e295a5c888642ac8e3fd245a8a97a45": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "3a2ac1f4812449a0b4259e7b4f947033": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "129041f3428e4d828b4a97132fb8baa2": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "d91bc462a3a24c1b831ea1643515ab97": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "90c96b4ed8b04448bff93459a933bfd8": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "a35302dc34af43428820d9cac53b82ad": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_74411d1cf20d443a812eb988d8166fd7",
+ "IPY_MODEL_d1ed9ce40bde41b5bcb75dfd51e28b91",
+ "IPY_MODEL_1da5f8f77f67429cb81ffc2bc53c3b23"
+ ],
+ "layout": "IPY_MODEL_70ae6a670fe04c2698d44c4bea2789b1"
+ }
+ },
+ "74411d1cf20d443a812eb988d8166fd7": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_dabe8e2299284bbb8433ad7175694af6",
+ "placeholder": "",
+ "style": "IPY_MODEL_30e8681cc91d43068ad37853fcec6b5a",
+ "value": "adapter_model.safetensors: 100%"
+ }
+ },
+ "d1ed9ce40bde41b5bcb75dfd51e28b91": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_57da93e71ec144cba2bb2c3fe97880d6",
+ "max": 14783936,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_278b869a2efb4f449ef6f37477882234",
+ "value": 14783936
+ }
+ },
+ "1da5f8f77f67429cb81ffc2bc53c3b23": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_dcf32037f343407a90ee026a51078efe",
+ "placeholder": "",
+ "style": "IPY_MODEL_772555eaceeb44f9a94ef4b79a2b27e6",
+ "value": " 14.8M/14.8M [00:00<00:00, 73.7MB/s]"
+ }
+ },
+ "70ae6a670fe04c2698d44c4bea2789b1": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "dabe8e2299284bbb8433ad7175694af6": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "30e8681cc91d43068ad37853fcec6b5a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "57da93e71ec144cba2bb2c3fe97880d6": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "278b869a2efb4f449ef6f37477882234": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "dcf32037f343407a90ee026a51078efe": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "772555eaceeb44f9a94ef4b79a2b27e6": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "46b9bba731834909914b99d55a2da59d": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_fd1263b4b2d540b5a6a80166c69167a3",
+ "IPY_MODEL_dd9c86af517f4978af54e3dc45e3b022",
+ "IPY_MODEL_a4308e4a03a541c38431eaa38f5fc334"
+ ],
+ "layout": "IPY_MODEL_4351f13bdf114a34b35551c477cbf1ed"
+ }
+ },
+ "fd1263b4b2d540b5a6a80166c69167a3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_33cfb692bf9c442d9481c204f94a4c70",
+ "placeholder": "",
+ "style": "IPY_MODEL_1e4d6d97d08744ffb9bdfea0ac7355ce",
+ "value": "README.md: "
+ }
+ },
+ "dd9c86af517f4978af54e3dc45e3b022": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_7f32887fa2044b5d92ab4a77472f013f",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_e9fbb06afbfd47eab898e5150244dae6",
+ "value": 1
+ }
+ },
+ "a4308e4a03a541c38431eaa38f5fc334": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_4aa1e204bb86413891a0ce71e20c2c9b",
+ "placeholder": "",
+ "style": "IPY_MODEL_5cf99dc423964598bcad65bd7af8f7d4",
+ "value": " 1.81k/? [00:00<00:00, 144kB/s]"
+ }
+ },
+ "4351f13bdf114a34b35551c477cbf1ed": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "33cfb692bf9c442d9481c204f94a4c70": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "1e4d6d97d08744ffb9bdfea0ac7355ce": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "7f32887fa2044b5d92ab4a77472f013f": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "e9fbb06afbfd47eab898e5150244dae6": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "4aa1e204bb86413891a0ce71e20c2c9b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "5cf99dc423964598bcad65bd7af8f7d4": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "bec2b4f29cce4f1085a82823db2b0073": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_3a81ac9c0dfb4c95bb7a97b1490606d9",
+ "IPY_MODEL_bdd3140586e045a4a484a728e345a95f",
+ "IPY_MODEL_9a4b10b7e8cc4563a0859a8552e7ed73"
+ ],
+ "layout": "IPY_MODEL_3b6cbba8bec747acbad7e12f92de3694"
+ }
+ },
+ "3a81ac9c0dfb4c95bb7a97b1490606d9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a7380cd1b08b43e486c91260adba5efe",
+ "placeholder": "",
+ "style": "IPY_MODEL_d7b73cdc816e45d78f3771bf98b73899",
+ "value": "Processing Files (1 / 1) : 100%"
+ }
+ },
+ "bdd3140586e045a4a484a728e345a95f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_69c5fdb32b844bcf836da6bc9f7cdf47",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_c2948d5555874761a5c45b720c2ed084",
+ "value": 1
+ }
+ },
+ "9a4b10b7e8cc4563a0859a8552e7ed73": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_88c852627f3a4fb0a8a1d1726d9333b0",
+ "placeholder": "",
+ "style": "IPY_MODEL_52be3eb253344d549d951b42cd9ce321",
+ "value": " 29.5MB / 29.5MB, 4.22MB/s "
+ }
+ },
+ "3b6cbba8bec747acbad7e12f92de3694": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a7380cd1b08b43e486c91260adba5efe": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d7b73cdc816e45d78f3771bf98b73899": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "69c5fdb32b844bcf836da6bc9f7cdf47": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "c2948d5555874761a5c45b720c2ed084": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "88c852627f3a4fb0a8a1d1726d9333b0": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "52be3eb253344d549d951b42cd9ce321": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "4a2b386ee0a64e809f34b6e7a3522818": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_a4fb91c546e4496ea8814b01aceab236",
+ "IPY_MODEL_5e02c1d5070d427494b82d8f0bc3428a",
+ "IPY_MODEL_8bd8c1e82f054c1497d3647deda9ca12"
+ ],
+ "layout": "IPY_MODEL_5b10d8b29d784346a1d4947f1711718b"
+ }
+ },
+ "a4fb91c546e4496ea8814b01aceab236": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_493202a8d8d34627a7a57ecdee0fa053",
+ "placeholder": "",
+ "style": "IPY_MODEL_507a940c4788478894dfdbecb513389c",
+ "value": "New Data Upload : 100%"
+ }
+ },
+ "5e02c1d5070d427494b82d8f0bc3428a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_732702a1f01040ae9e616bd17a61f6a4",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_4e3ad0c2409540c784730101f0776d83",
+ "value": 1
+ }
+ },
+ "8bd8c1e82f054c1497d3647deda9ca12": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_039f29287a874456a1d13f61b22deb50",
+ "placeholder": "",
+ "style": "IPY_MODEL_c9e9cfde8a8243b392045da4b8aaa55f",
+ "value": " 29.5MB / 29.5MB, 4.22MB/s "
+ }
+ },
+ "5b10d8b29d784346a1d4947f1711718b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "493202a8d8d34627a7a57ecdee0fa053": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "507a940c4788478894dfdbecb513389c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "732702a1f01040ae9e616bd17a61f6a4": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "4e3ad0c2409540c784730101f0776d83": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "039f29287a874456a1d13f61b22deb50": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c9e9cfde8a8243b392045da4b8aaa55f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "fc3b7aaf6479452eb741845671e99030": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_d2e71087ced043abad9b917af5ee1137",
+ "IPY_MODEL_67edaf56a9354569b0af1600082a04b3",
+ "IPY_MODEL_49e589279da8407dacb922ee2fb97ec3"
+ ],
+ "layout": "IPY_MODEL_548d50a9465a4555bd06f0cdbf1ad76a"
+ }
+ },
+ "d2e71087ced043abad9b917af5ee1137": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_d383baec718a4c47b345df191bb1a3de",
+ "placeholder": "",
+ "style": "IPY_MODEL_c2530298234545b68a5342a424bb55bc",
+ "value": " ...adapter_model.safetensors: 100%"
+ }
+ },
+ "67edaf56a9354569b0af1600082a04b3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_692660feb4b6428c90b3e358dafc9ec6",
+ "max": 29529752,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_b524bb64d9cb44eb9fba0a5fcab08027",
+ "value": 29529752
+ }
+ },
+ "49e589279da8407dacb922ee2fb97ec3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_9bfac3a984134969af1865e9e3247b3e",
+ "placeholder": "",
+ "style": "IPY_MODEL_4ee1326ee8fa442ebccafd7055b9e94d",
+ "value": " 29.5MB / 29.5MB "
+ }
+ },
+ "548d50a9465a4555bd06f0cdbf1ad76a": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d383baec718a4c47b345df191bb1a3de": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c2530298234545b68a5342a424bb55bc": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "692660feb4b6428c90b3e358dafc9ec6": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "b524bb64d9cb44eb9fba0a5fcab08027": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "9bfac3a984134969af1865e9e3247b3e": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "4ee1326ee8fa442ebccafd7055b9e94d": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "c51561b11eb142f2b92673b9f75480c2": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_aedeac83077c4555bab4d5bf82f8726a",
+ "IPY_MODEL_5796c6f124e640afa197b2253b62a36d",
+ "IPY_MODEL_eb164ffe4e9b47769274f144b9e2031c"
+ ],
+ "layout": "IPY_MODEL_74435e5413084059b4ab842e1289a293"
+ }
+ },
+ "aedeac83077c4555bab4d5bf82f8726a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_0f73f8ba0c204af8a545b1065c2990d8",
+ "placeholder": "",
+ "style": "IPY_MODEL_297c55455f7e4894887778c3ec6f2711",
+ "value": "README.md: "
+ }
+ },
+ "5796c6f124e640afa197b2253b62a36d": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_fe759eb163c44a6ea679da581e82e6f1",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_9877073f10c0451dbcfa43cdc07201c3",
+ "value": 1
+ }
+ },
+ "eb164ffe4e9b47769274f144b9e2031c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_ab85d65ba3fd4658844b9366022338d8",
+ "placeholder": "",
+ "style": "IPY_MODEL_882262dabe9441a899518008bc7100a3",
+ "value": " 1.81k/? [00:00<00:00, 162kB/s]"
+ }
+ },
+ "74435e5413084059b4ab842e1289a293": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "0f73f8ba0c204af8a545b1065c2990d8": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "297c55455f7e4894887778c3ec6f2711": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "fe759eb163c44a6ea679da581e82e6f1": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "9877073f10c0451dbcfa43cdc07201c3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "ab85d65ba3fd4658844b9366022338d8": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "882262dabe9441a899518008bc7100a3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "95c7b80740ce4522834126e4f7f5b49c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_ec02ced862304ff2b9595bc051776874",
+ "IPY_MODEL_aa35b2a3818e4613a6d8a18c5383ef59",
+ "IPY_MODEL_22af1447c21141a48431f7d429262b1d"
+ ],
+ "layout": "IPY_MODEL_0b6f3bb5c27844d9bb815d0687b37bfd"
+ }
+ },
+ "ec02ced862304ff2b9595bc051776874": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_e14797502f8f496aa6f26da771f7651a",
+ "placeholder": "",
+ "style": "IPY_MODEL_eee874569ebf4f5bbd95ac34094f07e1",
+ "value": "Processing Files (1 / 1) : 100%"
+ }
+ },
+ "aa35b2a3818e4613a6d8a18c5383ef59": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_818503f0a2f048d1b67cd190c29cd6d0",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_fcf4f286b3524fdfb4766bbdf28e05be",
+ "value": 1
+ }
+ },
+ "22af1447c21141a48431f7d429262b1d": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_2952ff29012543c3a2b20e2f898a55ad",
+ "placeholder": "",
+ "style": "IPY_MODEL_2e54e4b260904f9fabe745935a7437f2",
+ "value": " 11.4MB / 11.4MB, 7.14MB/s "
+ }
+ },
+ "0b6f3bb5c27844d9bb815d0687b37bfd": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "e14797502f8f496aa6f26da771f7651a": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "eee874569ebf4f5bbd95ac34094f07e1": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "818503f0a2f048d1b67cd190c29cd6d0": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "fcf4f286b3524fdfb4766bbdf28e05be": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "2952ff29012543c3a2b20e2f898a55ad": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "2e54e4b260904f9fabe745935a7437f2": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "788cce98cead47d29ea695a55360a43c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_cb2aeb717cf84dfaa3d9ca99b45ee968",
+ "IPY_MODEL_668cbfcd95fe47f9a144de97328129aa",
+ "IPY_MODEL_349d72fcd4c4485f9719e03752b61fe8"
+ ],
+ "layout": "IPY_MODEL_46ceb017a2c14b37bb9a7061c5524d1a"
+ }
+ },
+ "cb2aeb717cf84dfaa3d9ca99b45ee968": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_57f648441a004caca6e6913588e038ba",
+ "placeholder": "",
+ "style": "IPY_MODEL_0d0d7df23f8c407eafe46a73d3acc72a",
+ "value": "New Data Upload : "
+ }
+ },
+ "668cbfcd95fe47f9a144de97328129aa": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_dd7fd0f32f044c519f62957617bea80e",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_7246e69bbb244e29847a3378f8c60caa",
+ "value": 0
+ }
+ },
+ "349d72fcd4c4485f9719e03752b61fe8": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_b31cf85620ee44e0ba93500e3d07a1a4",
+ "placeholder": "",
+ "style": "IPY_MODEL_a633898377b34182a54b18ce80bd6746",
+ "value": " 0.00B / 0.00B, 0.00B/s "
+ }
+ },
+ "46ceb017a2c14b37bb9a7061c5524d1a": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "57f648441a004caca6e6913588e038ba": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "0d0d7df23f8c407eafe46a73d3acc72a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "dd7fd0f32f044c519f62957617bea80e": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "7246e69bbb244e29847a3378f8c60caa": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "b31cf85620ee44e0ba93500e3d07a1a4": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a633898377b34182a54b18ce80bd6746": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "cc03a92eb183446996cc113b8403567c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_e50206c1412144bb8cd9ee76e3aabfbd",
+ "IPY_MODEL_9e67a0b81c7e47f5a854e38707dcb1a4",
+ "IPY_MODEL_ed19cea4fb784412b33fdda4bdcda32e"
+ ],
+ "layout": "IPY_MODEL_f557a171fc6144708debd0a7d6cc6465"
+ }
+ },
+ "e50206c1412144bb8cd9ee76e3aabfbd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_80b611532eaa43fd9985f591ed6889fc",
+ "placeholder": "",
+ "style": "IPY_MODEL_bf34158a130e4a85ba1ca1302af907fd",
+ "value": " ...mp7c5v_5a_/tokenizer.json: 100%"
+ }
+ },
+ "9e67a0b81c7e47f5a854e38707dcb1a4": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a93a7f0819d948e8a8d72de18634060c",
+ "max": 11422086,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_328a1f397d8046e59160c6b1544c0ee8",
+ "value": 11422086
+ }
+ },
+ "ed19cea4fb784412b33fdda4bdcda32e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_98d493b3fcc245deb295dd7a565de85c",
+ "placeholder": "",
+ "style": "IPY_MODEL_0c4f462fa39945bd868690367a03f4aa",
+ "value": " 11.4MB / 11.4MB "
+ }
+ },
+ "f557a171fc6144708debd0a7d6cc6465": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "80b611532eaa43fd9985f591ed6889fc": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "bf34158a130e4a85ba1ca1302af907fd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "a93a7f0819d948e8a8d72de18634060c": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "328a1f397d8046e59160c6b1544c0ee8": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "98d493b3fcc245deb295dd7a565de85c": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "0c4f462fa39945bd868690367a03f4aa": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ }
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
\ No newline at end of file
diff --git a/uv.lock b/uv.lock
index 5ebfa927deb5bcb986105c5e152c9ce485d43b52..4fb1f9800442ca2a1f3549ffe0a9ecdff30499d7 100644
--- a/uv.lock
+++ b/uv.lock
@@ -7,6 +7,24 @@ resolution-markers = [
"sys_platform != 'emscripten' and sys_platform != 'win32'",
]
+[[package]]
+name = "accelerate"
+version = "1.13.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "huggingface-hub" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "psutil" },
+ { name = "pyyaml" },
+ { name = "safetensors" },
+ { name = "torch" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/ca/14/787e5498cd062640f0f3d92ef4ae4063174f76f9afd29d13fc52a319daae/accelerate-1.13.0.tar.gz", hash = "sha256:d631b4e0f5b3de4aff2d7e9e6857d164810dfc3237d54d017f075122d057b236", size = 402835, upload-time = "2026-03-04T19:34:12.359Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/7e/46/02ac5e262d4af18054b3e922b2baedbb2a03289ee792162de60a865defc5/accelerate-1.13.0-py3-none-any.whl", hash = "sha256:cf1a3efb96c18f7b152eb0fa7490f3710b19c3f395699358f08decca2b8b62e0", size = 383744, upload-time = "2026-03-04T19:34:10.313Z" },
+]
+
[[package]]
name = "aiofile"
version = "3.9.0"
@@ -84,6 +102,20 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" },
]
+[[package]]
+name = "alembic"
+version = "1.18.4"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "mako" },
+ { name = "sqlalchemy" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/94/13/8b084e0f2efb0275a1d534838844926f798bd766566b1375174e2448cd31/alembic-1.18.4.tar.gz", hash = "sha256:cb6e1fd84b6174ab8dbb2329f86d631ba9559dd78df550b57804d607672cedbc", size = 2056725, upload-time = "2026-02-10T16:00:47.195Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d2/29/6533c317b74f707ea28f8d633734dbda2119bbadfc61b2f3640ba835d0f7/alembic-1.18.4-py3-none-any.whl", hash = "sha256:a5ed4adcf6d8a4cb575f3d759f071b03cd6e5c7618eb796cb52497be25bfe19a", size = 263893, upload-time = "2026-02-10T16:00:49.997Z" },
+]
+
[[package]]
name = "annotated-doc"
version = "0.0.4"
@@ -240,6 +272,22 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" },
]
+[[package]]
+name = "bitsandbytes"
+version = "0.49.2"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "torch" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d8/7d/f1fe0992334b18cd8494f89aeec1dcc674635584fcd9f115784fea3a1d05/bitsandbytes-0.49.2-py3-none-macosx_14_0_arm64.whl", hash = "sha256:87be5975edeac5396d699ecbc39dfc47cf2c026daaf2d5852a94368611a6823f", size = 131940, upload-time = "2026-02-16T21:26:04.572Z" },
+ { url = "https://files.pythonhosted.org/packages/29/71/acff7af06c818664aa87ff73e17a52c7788ad746b72aea09d3cb8e424348/bitsandbytes-0.49.2-py3-none-manylinux_2_24_aarch64.whl", hash = "sha256:2fc0830c5f7169be36e60e11f2be067c8f812dfcb829801a8703735842450750", size = 31442815, upload-time = "2026-02-16T21:26:06.783Z" },
+ { url = "https://files.pythonhosted.org/packages/19/57/3443d6f183436fbdaf5000aac332c4d5ddb056665d459244a5608e98ae92/bitsandbytes-0.49.2-py3-none-manylinux_2_24_x86_64.whl", hash = "sha256:54b771f06e1a3c73af5c7f16ccf0fc23a846052813d4b008d10cb6e017dd1c8c", size = 60651714, upload-time = "2026-02-16T21:26:11.579Z" },
+ { url = "https://files.pythonhosted.org/packages/b6/d4/501655842ad6771fb077f576d78cbedb5445d15b1c3c91343ed58ca46f0e/bitsandbytes-0.49.2-py3-none-win_amd64.whl", hash = "sha256:2e0ddd09cd778155388023cbe81f00afbb7c000c214caef3ce83386e7144df7d", size = 55372289, upload-time = "2026-02-16T21:26:16.267Z" },
+]
+
[[package]]
name = "bleach"
version = "6.3.0"
@@ -375,6 +423,18 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
]
+[[package]]
+name = "colorlog"
+version = "6.10.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/a2/61/f083b5ac52e505dfc1c624eafbf8c7589a0d7f32daa398d2e7590efa5fda/colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321", size = 17162, upload-time = "2025-10-16T16:14:11.978Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/6d/c1/e419ef3723a074172b68aaa89c9f3de486ed4c2399e2dbd8113a4fdcaf9e/colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c", size = 11743, upload-time = "2025-10-16T16:14:10.512Z" },
+]
+
[[package]]
name = "comm"
version = "0.2.3"
@@ -384,6 +444,28 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" },
]
+[[package]]
+name = "contourpy"
+version = "1.3.3"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "numpy" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" },
+ { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" },
+ { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" },
+ { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" },
+ { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" },
+ { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" },
+ { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" },
+ { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" },
+ { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" },
+ { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" },
+ { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" },
+]
+
[[package]]
name = "coverage"
version = "7.13.5"
@@ -447,6 +529,91 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/1b/82/ca4893968aeb2709aacfb57a30dec6fa2ab25b10fa9f064b8882ce33f599/cryptography-46.0.6-cp38-abi3-win_amd64.whl", hash = "sha256:79e865c642cfc5c0b3eb12af83c35c5aeff4fa5c672dc28c43721c2c9fdd2f0f", size = 3471160, upload-time = "2026-03-25T23:34:37.191Z" },
]
+[[package]]
+name = "cuda-bindings"
+version = "13.2.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "cuda-pathfinder", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/52/c8/b2589d68acf7e3d63e2be330b84bc25712e97ed799affbca7edd7eae25d6/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e865447abfb83d6a98ad5130ed3c70b1fc295ae3eeee39fd07b4ddb0671b6788", size = 5722404, upload-time = "2026-03-11T00:12:44.041Z" },
+ { url = "https://files.pythonhosted.org/packages/1f/92/f899f7bbb5617bb65ec52a6eac1e9a1447a86b916c4194f8a5001b8cde0c/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46d8776a55d6d5da9dd6e9858fba2efcda2abe6743871dee47dd06eb8cb6d955", size = 6320619, upload-time = "2026-03-11T00:12:45.939Z" },
+]
+
+[[package]]
+name = "cuda-pathfinder"
+version = "1.5.3"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d3/d6/ac63065d33dd700fee7ebd7d287332401b54e31b9346e142f871e1f0b116/cuda_pathfinder-1.5.3-py3-none-any.whl", hash = "sha256:dff021123aedbb4117cc7ec81717bbfe198fb4e8b5f1ee57e0e084fec5c8577d", size = 49991, upload-time = "2026-04-14T20:09:27.037Z" },
+]
+
+[[package]]
+name = "cuda-toolkit"
+version = "13.0.2"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/57/b2/453099f5f3b698d7d0eab38916aac44c7f76229f451709e2eb9db6615dcd/cuda_toolkit-13.0.2-py2.py3-none-any.whl", hash = "sha256:b198824cf2f54003f50d64ada3a0f184b42ca0846c1c94192fa269ecd97a66eb", size = 2364, upload-time = "2025-12-19T23:24:07.328Z" },
+]
+
+[package.optional-dependencies]
+cublas = [
+ { name = "nvidia-cublas", marker = "sys_platform == 'linux'" },
+]
+cudart = [
+ { name = "nvidia-cuda-runtime", marker = "sys_platform == 'linux'" },
+]
+cufft = [
+ { name = "nvidia-cufft", marker = "sys_platform == 'linux'" },
+]
+cufile = [
+ { name = "nvidia-cufile", marker = "sys_platform == 'linux'" },
+]
+cupti = [
+ { name = "nvidia-cuda-cupti", marker = "sys_platform == 'linux'" },
+]
+curand = [
+ { name = "nvidia-curand", marker = "sys_platform == 'linux'" },
+]
+cusolver = [
+ { name = "nvidia-cusolver", marker = "sys_platform == 'linux'" },
+]
+cusparse = [
+ { name = "nvidia-cusparse", marker = "sys_platform == 'linux'" },
+]
+nvjitlink = [
+ { name = "nvidia-nvjitlink", marker = "sys_platform == 'linux'" },
+]
+nvrtc = [
+ { name = "nvidia-cuda-nvrtc", marker = "sys_platform == 'linux'" },
+]
+nvtx = [
+ { name = "nvidia-nvtx", marker = "sys_platform == 'linux'" },
+]
+
+[[package]]
+name = "cut-cross-entropy"
+version = "25.1.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "torch" },
+ { name = "triton", marker = "sys_platform == 'linux'" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/7e/97/45ff09cfcda7b200389204daa0125168e6544fba257adbbcdf728501d4f9/cut_cross_entropy-25.1.1.tar.gz", hash = "sha256:5fe5924509248b1aea5c890f8887c6a7759f7c8b1ebc0490e42c247c4f7c1e34", size = 22972, upload-time = "2025-01-07T12:21:53.896Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/df/5f/62fdb048f84d19e2123b6bbd722fe09c8c79b4964c50094d1e979db808e2/cut_cross_entropy-25.1.1-py3-none-any.whl", hash = "sha256:e46f26d348f6a67927d17e65c5a212e795be13dcad5b10a77a200d6b8102d9d1", size = 22672, upload-time = "2025-01-07T12:21:51.678Z" },
+]
+
+[[package]]
+name = "cycler"
+version = "0.12.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" },
+]
+
[[package]]
name = "cyclopts"
version = "4.10.1"
@@ -518,6 +685,26 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" },
]
+[[package]]
+name = "diffusers"
+version = "0.37.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "filelock" },
+ { name = "httpx" },
+ { name = "huggingface-hub" },
+ { name = "importlib-metadata" },
+ { name = "numpy" },
+ { name = "pillow" },
+ { name = "regex" },
+ { name = "requests" },
+ { name = "safetensors" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/46/5c/f4c2eb8d481fe8784a7e2331fbaab820079c06676185fa6d2177b386d590/diffusers-0.37.1.tar.gz", hash = "sha256:2346c21f77f835f273b7aacbaada1c34a596a3a2cc6ddc99d149efcd0ec298fa", size = 4135139, upload-time = "2026-03-25T08:04:04.515Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/9c/dd/51c38785ce5e1c287b5ad17ba550edaaaffce0deb0da4857019c6700fbaf/diffusers-0.37.1-py3-none-any.whl", hash = "sha256:0537c0b28cb53cf39d6195489bcf8f833986df556c10f5e28ab7427b86fc8b90", size = 5001536, upload-time = "2026-03-25T08:04:02.385Z" },
+]
+
[[package]]
name = "dill"
version = "0.4.1"
@@ -672,6 +859,23 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/a4/a5/842ae8f0c08b61d6484b52f99a03510a3a72d23141942d216ebe81fefbce/filelock-3.25.2-py3-none-any.whl", hash = "sha256:ca8afb0da15f229774c9ad1b455ed96e85a81373065fb10446672f64444ddf70", size = 26759, upload-time = "2026-03-11T20:45:37.437Z" },
]
+[[package]]
+name = "fonttools"
+version = "4.62.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/9a/08/7012b00a9a5874311b639c3920270c36ee0c445b69d9989a85e5c92ebcb0/fonttools-4.62.1.tar.gz", hash = "sha256:e54c75fd6041f1122476776880f7c3c3295ffa31962dc6ebe2543c00dca58b5d", size = 3580737, upload-time = "2026-03-13T13:54:25.52Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/47/d4/dbacced3953544b9a93088cc10ef2b596d348c983d5c67a404fa41ec51ba/fonttools-4.62.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:90365821debbd7db678809c7491ca4acd1e0779b9624cdc6ddaf1f31992bf974", size = 2870219, upload-time = "2026-03-13T13:52:53.664Z" },
+ { url = "https://files.pythonhosted.org/packages/66/9e/a769c8e99b81e5a87ab7e5e7236684de4e96246aae17274e5347d11ebd78/fonttools-4.62.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12859ff0b47dd20f110804c3e0d0970f7b832f561630cd879969011541a464a9", size = 2414891, upload-time = "2026-03-13T13:52:56.493Z" },
+ { url = "https://files.pythonhosted.org/packages/69/64/f19a9e3911968c37e1e620e14dfc5778299e1474f72f4e57c5ec771d9489/fonttools-4.62.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c125ffa00c3d9003cdaaf7f2c79e6e535628093e14b5de1dccb08859b680936", size = 5033197, upload-time = "2026-03-13T13:52:59.179Z" },
+ { url = "https://files.pythonhosted.org/packages/9b/8a/99c8b3c3888c5c474c08dbfd7c8899786de9604b727fcefb055b42c84bba/fonttools-4.62.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:149f7d84afca659d1a97e39a4778794a2f83bf344c5ee5134e09995086cc2392", size = 4988768, upload-time = "2026-03-13T13:53:02.761Z" },
+ { url = "https://files.pythonhosted.org/packages/d1/c6/0f904540d3e6ab463c1243a0d803504826a11604c72dd58c2949796a1762/fonttools-4.62.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0aa72c43a601cfa9273bb1ae0518f1acadc01ee181a6fc60cd758d7fdadffc04", size = 4971512, upload-time = "2026-03-13T13:53:05.678Z" },
+ { url = "https://files.pythonhosted.org/packages/29/0b/5cbef6588dc9bd6b5c9ad6a4d5a8ca384d0cea089da31711bbeb4f9654a6/fonttools-4.62.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:19177c8d96c7c36359266e571c5173bcee9157b59cfc8cb0153c5673dc5a3a7d", size = 5122723, upload-time = "2026-03-13T13:53:08.662Z" },
+ { url = "https://files.pythonhosted.org/packages/4a/47/b3a5342d381595ef439adec67848bed561ab7fdb1019fa522e82101b7d9c/fonttools-4.62.1-cp312-cp312-win32.whl", hash = "sha256:a24decd24d60744ee8b4679d38e88b8303d86772053afc29b19d23bb8207803c", size = 2281278, upload-time = "2026-03-13T13:53:10.998Z" },
+ { url = "https://files.pythonhosted.org/packages/28/b1/0c2ab56a16f409c6c8a68816e6af707827ad5d629634691ff60a52879792/fonttools-4.62.1-cp312-cp312-win_amd64.whl", hash = "sha256:9e7863e10b3de72376280b515d35b14f5eeed639d1aa7824f4cf06779ec65e42", size = 2331414, upload-time = "2026-03-13T13:53:13.992Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/ba/56147c165442cc5ba7e82ecf301c9a68353cede498185869e6e02b4c264f/fonttools-4.62.1-py3-none-any.whl", hash = "sha256:7487782e2113861f4ddcc07c3436450659e3caa5e470b27dc2177cade2d8e7fd", size = 1152647, upload-time = "2026-03-13T13:54:22.735Z" },
+]
+
[[package]]
name = "fqdn"
version = "1.5.1"
@@ -776,6 +980,24 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/f0/b3/10cb03cf684aab2bec97cb0b9bbba4f93e7a20c6e0f3b4100c235a55ad93/gradio_client-2.4.0-py3-none-any.whl", hash = "sha256:7c170807b924ed6056b2a1fa9d659d349dd20567c00ee0b4dc249dc1e2def620", size = 59156, upload-time = "2026-03-24T21:20:24.018Z" },
]
+[[package]]
+name = "greenlet"
+version = "3.4.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/86/94/a5935717b307d7c71fe877b52b884c6af707d2d2090db118a03fbd799369/greenlet-3.4.0.tar.gz", hash = "sha256:f50a96b64dafd6169e595a5c56c9146ef80333e67d4476a65a9c55f400fc22ff", size = 195913, upload-time = "2026-04-08T17:08:00.863Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/65/8b/3669ad3b3f247a791b2b4aceb3aa5a31f5f6817bf547e4e1ff712338145a/greenlet-3.4.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:1a54a921561dd9518d31d2d3db4d7f80e589083063ab4d3e2e950756ef809e1a", size = 286902, upload-time = "2026-04-08T15:52:12.138Z" },
+ { url = "https://files.pythonhosted.org/packages/38/3e/3c0e19b82900873e2d8469b590a6c4b3dfd2b316d0591f1c26b38a4879a5/greenlet-3.4.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:16dec271460a9a2b154e3b1c2fa1050ce6280878430320e85e08c166772e3f97", size = 606099, upload-time = "2026-04-08T16:24:38.408Z" },
+ { url = "https://files.pythonhosted.org/packages/b5/33/99fef65e7754fc76a4ed14794074c38c9ed3394a5bd129d7f61b705f3168/greenlet-3.4.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:90036ce224ed6fe75508c1907a77e4540176dcf0744473627785dd519c6f9996", size = 618837, upload-time = "2026-04-08T16:30:58.298Z" },
+ { url = "https://files.pythonhosted.org/packages/44/57/eae2cac10421feae6c0987e3dc106c6d86262b1cb379e171b017aba893a6/greenlet-3.4.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6f0def07ec9a71d72315cf26c061aceee53b306c36ed38c35caba952ea1b319d", size = 624901, upload-time = "2026-04-08T16:40:38.981Z" },
+ { url = "https://files.pythonhosted.org/packages/36/f7/229f3aed6948faa20e0616a0b8568da22e365ede6a54d7d369058b128afd/greenlet-3.4.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a1c4f6b453006efb8310affb2d132832e9bbb4fc01ce6df6b70d810d38f1f6dc", size = 615062, upload-time = "2026-04-08T15:56:33.766Z" },
+ { url = "https://files.pythonhosted.org/packages/6a/8a/0e73c9b94f31d1cc257fe79a0eff621674141cdae7d6d00f40de378a1e42/greenlet-3.4.0-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:0e1254cf0cbaa17b04320c3a78575f29f3c161ef38f59c977108f19ffddaf077", size = 423927, upload-time = "2026-04-08T16:43:05.293Z" },
+ { url = "https://files.pythonhosted.org/packages/08/97/d988180011aa40135c46cd0d0cf01dd97f7162bae14139b4a3ef54889ba5/greenlet-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9b2d9a138ffa0e306d0e2b72976d2fb10b97e690d40ab36a472acaab0838e2de", size = 1573511, upload-time = "2026-04-08T16:26:20.058Z" },
+ { url = "https://files.pythonhosted.org/packages/d4/0f/a5a26fe152fb3d12e6a474181f6e9848283504d0afd095f353d85726374b/greenlet-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8424683caf46eb0eb6f626cb95e008e8cc30d0cb675bdfa48200925c79b38a08", size = 1640396, upload-time = "2026-04-08T15:57:30.88Z" },
+ { url = "https://files.pythonhosted.org/packages/42/cf/bb2c32d9a100e36ee9f6e38fad6b1e082b8184010cb06259b49e1266ca01/greenlet-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0a53fb071531d003b075c444014ff8f8b1a9898d36bb88abd9ac7b3524648a2", size = 238892, upload-time = "2026-04-08T17:03:10.094Z" },
+ { url = "https://files.pythonhosted.org/packages/b7/47/6c41314bac56e71436ce551c7fbe3cc830ed857e6aa9708dbb9c65142eb6/greenlet-3.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:f38b81880ba28f232f1f675893a39cf7b6db25b31cc0a09bb50787ecf957e85e", size = 235599, upload-time = "2026-04-08T15:52:54.3Z" },
+]
+
[[package]]
name = "groovy"
version = "0.1.2"
@@ -820,6 +1042,27 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/4c/52/04816d2a15691a63cec3187e3e592c4493448eb4834492eadd532972b035/hf_gradio-0.3.0-py3-none-any.whl", hash = "sha256:159d33d1f0affae8164d29c0c51a63dfcc0bbc90803b07c6f139137206a796ae", size = 4154, upload-time = "2026-03-23T19:50:08.586Z" },
]
+[[package]]
+name = "hf-transfer"
+version = "0.1.9"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/1a/eb/8fc64f40388c29ce8ce3b2b180a089d4d6b25b1d0d232d016704cb852104/hf_transfer-0.1.9.tar.gz", hash = "sha256:035572865dab29d17e783fbf1e84cf1cb24f3fcf8f1b17db1cfc7fdf139f02bf", size = 25201, upload-time = "2025-01-07T10:05:12.947Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/81/f5/461d2e5f307e5048289b1168d5c642ae3bb2504e88dff1a38b92ed990a21/hf_transfer-0.1.9-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:e66acf91df4a8b72f60223059df3003062a5ae111757187ed1a06750a30e911b", size = 1393046, upload-time = "2025-01-07T10:04:51.003Z" },
+ { url = "https://files.pythonhosted.org/packages/41/ba/8d9fd9f1083525edfcb389c93738c802f3559cb749324090d7109c8bf4c2/hf_transfer-0.1.9-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:8669dbcc7a3e2e8d61d42cd24da9c50d57770bd74b445c65123291ca842a7e7a", size = 1348126, upload-time = "2025-01-07T10:04:45.712Z" },
+ { url = "https://files.pythonhosted.org/packages/8e/a2/cd7885bc9959421065a6fae0fe67b6c55becdeda4e69b873e52976f9a9f0/hf_transfer-0.1.9-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fd0167c4407a3bc4cdd0307e65ada2294ec04f1813d8a69a5243e379b22e9d8", size = 3728604, upload-time = "2025-01-07T10:04:14.173Z" },
+ { url = "https://files.pythonhosted.org/packages/f6/2e/a072cf196edfeda3310c9a5ade0a0fdd785e6154b3ce24fc738c818da2a7/hf_transfer-0.1.9-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee8b10afedcb75f71091bcc197c526a6ebf5c58bbbadb34fdeee6160f55f619f", size = 3064995, upload-time = "2025-01-07T10:04:18.663Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/84/aec9ef4c0fab93c1ea2b1badff38c78b4b2f86f0555b26d2051dbc920cde/hf_transfer-0.1.9-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5828057e313de59300dd1abb489444bc452efe3f479d3c55b31a8f680936ba42", size = 3580908, upload-time = "2025-01-07T10:04:32.834Z" },
+ { url = "https://files.pythonhosted.org/packages/29/63/b560d39651a56603d64f1a0212d0472a44cbd965db2fa62b99d99cb981bf/hf_transfer-0.1.9-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc6bd19e1cc177c66bdef15ef8636ad3bde79d5a4f608c158021153b4573509d", size = 3400839, upload-time = "2025-01-07T10:04:26.122Z" },
+ { url = "https://files.pythonhosted.org/packages/d6/d8/f87ea6f42456254b48915970ed98e993110521e9263472840174d32c880d/hf_transfer-0.1.9-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdca9bfb89e6f8f281890cc61a8aff2d3cecaff7e1a4d275574d96ca70098557", size = 3552664, upload-time = "2025-01-07T10:04:40.123Z" },
+ { url = "https://files.pythonhosted.org/packages/d6/56/1267c39b65fc8f4e2113b36297320f102718bf5799b544a6cbe22013aa1d/hf_transfer-0.1.9-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:89a23f58b7b7effbc047b8ca286f131b17728c99a9f972723323003ffd1bb916", size = 4073732, upload-time = "2025-01-07T10:04:55.624Z" },
+ { url = "https://files.pythonhosted.org/packages/82/1a/9c748befbe3decf7cb415e34f8a0c3789a0a9c55910dea73d581e48c0ce5/hf_transfer-0.1.9-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:dc7fff1345980d6c0ebb92c811d24afa4b98b3e07ed070c8e38cc91fd80478c5", size = 3390096, upload-time = "2025-01-07T10:04:59.98Z" },
+ { url = "https://files.pythonhosted.org/packages/72/85/4c03da147b6b4b7cb12e074d3d44eee28604a387ed0eaf7eaaead5069c57/hf_transfer-0.1.9-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:1a6bd16c667ebe89a069ca163060127a794fa3a3525292c900b8c8cc47985b0d", size = 3664743, upload-time = "2025-01-07T10:05:05.416Z" },
+ { url = "https://files.pythonhosted.org/packages/e7/6e/e597b04f753f1b09e6893075d53a82a30c13855cbaa791402695b01e369f/hf_transfer-0.1.9-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d2fde99d502093ade3ab1b53f80da18480e9902aa960dab7f74fb1b9e5bc5746", size = 3695243, upload-time = "2025-01-07T10:05:11.411Z" },
+ { url = "https://files.pythonhosted.org/packages/09/89/d4e234727a26b2546c8fb70a276cd924260d60135f2165bf8b9ed67bb9a4/hf_transfer-0.1.9-cp38-abi3-win32.whl", hash = "sha256:435cc3cdc8524ce57b074032b8fd76eed70a4224d2091232fa6a8cef8fd6803e", size = 1086605, upload-time = "2025-01-07T10:05:18.873Z" },
+ { url = "https://files.pythonhosted.org/packages/a1/14/f1e15b851d1c2af5b0b1a82bf8eb10bda2da62d98180220ba6fd8879bb5b/hf_transfer-0.1.9-cp38-abi3-win_amd64.whl", hash = "sha256:16f208fc678911c37e11aa7b586bc66a37d02e636208f18b6bc53d29b5df40ad", size = 1160240, upload-time = "2025-01-07T10:05:14.324Z" },
+]
+
[[package]]
name = "hf-xet"
version = "1.4.3"
@@ -884,22 +1127,21 @@ wheels = [
[[package]]
name = "huggingface-hub"
-version = "1.9.0"
+version = "0.36.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "filelock" },
{ name = "fsspec" },
- { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" },
- { name = "httpx" },
+ { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" },
{ name = "packaging" },
{ name = "pyyaml" },
+ { name = "requests" },
{ name = "tqdm" },
- { name = "typer" },
{ name = "typing-extensions" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/88/bb/62c7aa86f63a05e2f9b96642fdef9b94526a23979820b09f5455deff4983/huggingface_hub-1.9.0.tar.gz", hash = "sha256:0ea5be7a56135c91797cae6ad726e38eaeb6eb4b77cefff5c9d38ba0ecf874f7", size = 750326, upload-time = "2026-04-03T08:35:55.888Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/7c/b7/8cb61d2eece5fb05a83271da168186721c450eb74e3c31f7ef3169fa475b/huggingface_hub-0.36.2.tar.gz", hash = "sha256:1934304d2fb224f8afa3b87007d58501acfda9215b334eed53072dd5e815ff7a", size = 649782, upload-time = "2026-02-06T09:24:13.098Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/73/37/0d15d16150e1829f3e90962c99f28257f6de9e526a680b4c6f5acdb54fd2/huggingface_hub-1.9.0-py3-none-any.whl", hash = "sha256:2999328c058d39fd19ab748dd09bd4da2fbaa4f4c1ddea823eab103051e14a1f", size = 637355, upload-time = "2026-04-03T08:35:53.897Z" },
+ { url = "https://files.pythonhosted.org/packages/a8/af/48ac8483240de756d2438c380746e7130d1c6f75802ef22f3c6d49982787/huggingface_hub-0.36.2-py3-none-any.whl", hash = "sha256:48f0c8eac16145dfce371e9d2d7772854a4f591bcb56c9cf548accf531d54270", size = 566395, upload-time = "2026-02-06T09:24:11.133Z" },
]
[[package]]
@@ -1392,6 +1634,33 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl", hash = "sha256:be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f", size = 39160, upload-time = "2025-11-16T16:26:08.402Z" },
]
+[[package]]
+name = "kiwisolver"
+version = "1.5.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/d0/67/9c61eccb13f0bdca9307614e782fec49ffdde0f7a2314935d489fa93cd9c/kiwisolver-1.5.0.tar.gz", hash = "sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a", size = 103482, upload-time = "2026-03-09T13:15:53.382Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/4d/b2/818b74ebea34dabe6d0c51cb1c572e046730e64844da6ed646d5298c40ce/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9", size = 123158, upload-time = "2026-03-09T13:13:23.127Z" },
+ { url = "https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588", size = 66388, upload-time = "2026-03-09T13:13:24.765Z" },
+ { url = "https://files.pythonhosted.org/packages/99/9f/795fedf35634f746151ca8839d05681ceb6287fbed6cc1c9bf235f7887c2/kiwisolver-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819", size = 64068, upload-time = "2026-03-09T13:13:25.878Z" },
+ { url = "https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f", size = 1477934, upload-time = "2026-03-09T13:13:27.166Z" },
+ { url = "https://files.pythonhosted.org/packages/c8/2f/cebfcdb60fd6a9b0f6b47a9337198bcbad6fbe15e68189b7011fd914911f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2af221f268f5af85e776a73d62b0845fc8baf8ef0abfae79d29c77d0e776aaf", size = 1278537, upload-time = "2026-03-09T13:13:28.707Z" },
+ { url = "https://files.pythonhosted.org/packages/f2/0d/9b782923aada3fafb1d6b84e13121954515c669b18af0c26e7d21f579855/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b0f172dc8ffaccb8522d7c5d899de00133f2f1ca7b0a49b7da98e901de87bf2d", size = 1296685, upload-time = "2026-03-09T13:13:30.528Z" },
+ { url = "https://files.pythonhosted.org/packages/27/70/83241b6634b04fe44e892688d5208332bde130f38e610c0418f9ede47ded/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ab8ba9152203feec73758dad83af9a0bbe05001eb4639e547207c40cfb52083", size = 1346024, upload-time = "2026-03-09T13:13:32.818Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/db/30ed226fb271ae1a6431fc0fe0edffb2efe23cadb01e798caeb9f2ceae8f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:cdee07c4d7f6d72008d3f73b9bf027f4e11550224c7c50d8df1ae4a37c1402a6", size = 987241, upload-time = "2026-03-09T13:13:34.435Z" },
+ { url = "https://files.pythonhosted.org/packages/ec/bd/c314595208e4c9587652d50959ead9e461995389664e490f4dce7ff0f782/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7c60d3c9b06fb23bd9c6139281ccbdc384297579ae037f08ae90c69f6845c0b1", size = 2227742, upload-time = "2026-03-09T13:13:36.4Z" },
+ { url = "https://files.pythonhosted.org/packages/c1/43/0499cec932d935229b5543d073c2b87c9c22846aab48881e9d8d6e742a2d/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e315e5ec90d88e140f57696ff85b484ff68bb311e36f2c414aa4286293e6dee0", size = 2323966, upload-time = "2026-03-09T13:13:38.204Z" },
+ { url = "https://files.pythonhosted.org/packages/3d/6f/79b0d760907965acfd9d61826a3d41f8f093c538f55cd2633d3f0db269f6/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:1465387ac63576c3e125e5337a6892b9e99e0627d52317f3ca79e6930d889d15", size = 1977417, upload-time = "2026-03-09T13:13:39.966Z" },
+ { url = "https://files.pythonhosted.org/packages/ab/31/01d0537c41cb75a551a438c3c7a80d0c60d60b81f694dac83dd436aec0d0/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:530a3fd64c87cffa844d4b6b9768774763d9caa299e9b75d8eca6a4423b31314", size = 2491238, upload-time = "2026-03-09T13:13:41.698Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/34/8aefdd0be9cfd00a44509251ba864f5caf2991e36772e61c408007e7f417/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1d9daea4ea6b9be74fe2f01f7fbade8d6ffab263e781274cffca0dba9be9eec9", size = 2294947, upload-time = "2026-03-09T13:13:43.343Z" },
+ { url = "https://files.pythonhosted.org/packages/ad/cf/0348374369ca588f8fe9c338fae49fa4e16eeb10ffb3d012f23a54578a9e/kiwisolver-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384", size = 73569, upload-time = "2026-03-09T13:13:45.792Z" },
+ { url = "https://files.pythonhosted.org/packages/28/26/192b26196e2316e2bd29deef67e37cdf9870d9af8e085e521afff0fed526/kiwisolver-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:f7c7553b13f69c1b29a5bde08ddc6d9d0c8bfb84f9ed01c30db25944aeb852a7", size = 64997, upload-time = "2026-03-09T13:13:46.878Z" },
+ { url = "https://files.pythonhosted.org/packages/1c/fa/2910df836372d8761bb6eff7d8bdcb1613b5c2e03f260efe7abe34d388a7/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_10_13_x86_64.whl", hash = "sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797", size = 130262, upload-time = "2026-03-09T13:15:35.629Z" },
+ { url = "https://files.pythonhosted.org/packages/0f/41/c5f71f9f00aabcc71fee8b7475e3f64747282580c2fe748961ba29b18385/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203", size = 138036, upload-time = "2026-03-09T13:15:36.894Z" },
+ { url = "https://files.pythonhosted.org/packages/fa/06/7399a607f434119c6e1fdc8ec89a8d51ccccadf3341dee4ead6bd14caaf5/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c31c13da98624f957b0fb1b5bae5383b2333c2c3f6793d9825dd5ce79b525cb7", size = 194295, upload-time = "2026-03-09T13:15:38.22Z" },
+ { url = "https://files.pythonhosted.org/packages/b5/91/53255615acd2a1eaca307ede3c90eb550bae9c94581f8c00081b6b1c8f44/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-win_amd64.whl", hash = "sha256:1f1489f769582498610e015a8ef2d36f28f505ab3096d0e16b4858a9ec214f57", size = 75987, upload-time = "2026-03-09T13:15:39.65Z" },
+]
+
[[package]]
name = "lark"
version = "1.3.1"
@@ -1422,6 +1691,18 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/c7/7c/c614252f9acda59b01a66e2ddfd243ed1c7e1deab0293332dfbccf862808/librt-0.8.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f2ae3725904f7377e11cc37722d5d401e8b3d5851fb9273d7f4fe04f6b3d37d", size = 52441, upload-time = "2026-02-17T16:11:56.801Z" },
]
+[[package]]
+name = "mako"
+version = "1.3.11"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "markupsafe" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/59/8a/805404d0c0b9f3d7a326475ca008db57aea9c5c9f2e1e39ed0faa335571c/mako-1.3.11.tar.gz", hash = "sha256:071eb4ab4c5010443152255d77db7faa6ce5916f35226eb02dc34479b6858069", size = 399811, upload-time = "2026-04-14T20:19:51.493Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/68/a5/19d7aaa7e433713ffe881df33705925a196afb9532efc8475d26593921a6/mako-1.3.11-py3-none-any.whl", hash = "sha256:e372c6e333cf004aa736a15f425087ec977e1fcbd2966aae7f17c8dc1da27a77", size = 78503, upload-time = "2026-04-14T20:19:53.233Z" },
+]
+
[[package]]
name = "markdown-it-py"
version = "4.0.0"
@@ -1453,6 +1734,32 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" },
]
+[[package]]
+name = "matplotlib"
+version = "3.10.9"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "contourpy" },
+ { name = "cycler" },
+ { name = "fonttools" },
+ { name = "kiwisolver" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "pillow" },
+ { name = "pyparsing" },
+ { name = "python-dateutil" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/63/1b/4be5be87d43d327a0cf4de1a56e86f7f84c89312452406cf122efe2839e6/matplotlib-3.10.9.tar.gz", hash = "sha256:fd66508e8c6877d98e586654b608a0456db8d7e8a546eb1e2600efd957302358", size = 34811233, upload-time = "2026-04-24T00:14:13.539Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/35/c6/5581e26c72233ebb2a2a6fed2d24fb7c66b4700120b813f51b0555acf0b6/matplotlib-3.10.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f0c3c28d9fbcc1fe7a03be236d73430cf6409c41fb2383a7ac52fe932b072cb1", size = 8319908, upload-time = "2026-04-24T00:12:21.323Z" },
+ { url = "https://files.pythonhosted.org/packages/b7/18/4880dd762e40cd360c1bf06e890c5a97b997e91cb324602b1a19950ad5ce/matplotlib-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41cb28c2bd769aa3e98322c6ab09854cbcc52ab69d2759d681bba3e327b2b320", size = 8216016, upload-time = "2026-04-24T00:12:23.4Z" },
+ { url = "https://files.pythonhosted.org/packages/32/91/d024616abdba99e83120e07a20658976f6a343646710760c4a51df126029/matplotlib-3.10.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ae20801130378b82d647ff5047c07316295b68dc054ca6b3c13519d0ea624285", size = 8789336, upload-time = "2026-04-24T00:12:26.096Z" },
+ { url = "https://files.pythonhosted.org/packages/5c/04/030a2f61ef2158f5e4c259487a92ac877732499fb33d871585d89e03c42d/matplotlib-3.10.9-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c63ebcd8b4b169eb2f5c200552ae6b8be8999a005b6b507ed76fb8d7d674fe2", size = 9604602, upload-time = "2026-04-24T00:12:29.052Z" },
+ { url = "https://files.pythonhosted.org/packages/fc/c2/541e4d09d87bb6b5830fc28b4c887a9a8cf4e1c6cee698a8c05552ae2003/matplotlib-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d75d11c949914165976c621b2324f9ef162af7ebf4b057ddf95dd1dba7e5edcf", size = 9670966, upload-time = "2026-04-24T00:12:32.131Z" },
+ { url = "https://files.pythonhosted.org/packages/04/a1/4571fc46e7702de8d0c2dc54ad1b2f8e29328dea3ee90831181f7353d93c/matplotlib-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:d091f9d758b34aaaaa6331d13574bf01891d903b3dec59bfff458ef7551de5d6", size = 8217462, upload-time = "2026-04-24T00:12:35.226Z" },
+ { url = "https://files.pythonhosted.org/packages/4b/d0/2269edb12aa30c13c8bcc9382892e39943ce1d28aab4ec296e0381798e81/matplotlib-3.10.9-cp312-cp312-win_arm64.whl", hash = "sha256:10cc5ce06d10231c36f40e875f3c7e8050362a4ee8f0ee5d29a6b3277d57bb42", size = 8136688, upload-time = "2026-04-24T00:12:37.442Z" },
+]
+
[[package]]
name = "matplotlib-inline"
version = "0.2.1"
@@ -1551,6 +1858,31 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/d8/f4/5e52c7319b8087acef603ed6e50dc325c02eaa999355414830468611f13c/more_itertools-11.0.1-py3-none-any.whl", hash = "sha256:eaf287826069452a8f61026c597eae2428b2d1ba2859083abbf240b46842ce6d", size = 72182, upload-time = "2026-04-02T16:17:43.724Z" },
]
+[[package]]
+name = "mpmath"
+version = "1.3.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" },
+]
+
+[[package]]
+name = "msgspec"
+version = "0.21.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/e3/60/f79b9b013a16fa3a58350c9295ddc6789f2e335f36ea61ed10a21b215364/msgspec-0.21.1.tar.gz", hash = "sha256:2313508e394b0d208f8f56892ca9b2799e2561329de9763b19619595a6c0f72c", size = 319193, upload-time = "2026-04-12T21:44:50.394Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/6e/cf/317224852c00248c620a9bcf4b26e2e4ab8afd752f18d2a6ef73ebd423b6/msgspec-0.21.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d4248cf0b6129b7d230eacd493c17cc2d4f3989f3bb7f633a928a85b7dcfa251", size = 196188, upload-time = "2026-04-12T21:44:07.181Z" },
+ { url = "https://files.pythonhosted.org/packages/6d/81/074612945c0666078f7366f40000013de9f6ba687491d450df699bceebc9/msgspec-0.21.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5102c7e9b3acff82178449b85006d96310e690291bb1ea0142f1b24bcb8aabcb", size = 188473, upload-time = "2026-04-12T21:44:08.736Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/37/655101799590bcc5fddb2bd3fe0e6194e816c2d1da7c361725f5eb89a910/msgspec-0.21.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:846758412e9518252b2ac9bffd6f0e54d9ff614f5f9488df7749f81ff5c80920", size = 218871, upload-time = "2026-04-12T21:44:09.917Z" },
+ { url = "https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21995e74b5c598c2e004110ad66ec7f1b8c20bf2bcf3b2de8fd9a3094422d3ff", size = 225025, upload-time = "2026-04-12T21:44:11.191Z" },
+ { url = "https://files.pythonhosted.org/packages/24/bf/e20549e602b9edccadeeff98760345a416f9cce846a657e8b18e3396b212/msgspec-0.21.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6129f0cca52992e898fd5344187f7c8127b63d810b2fd73e36fca73b4c6475ee", size = 222672, upload-time = "2026-04-12T21:44:12.481Z" },
+ { url = "https://files.pythonhosted.org/packages/b4/68/04d7a8f0f786545cf9b8c280c57aa6befb5977af6e884b8b54191cbe44b3/msgspec-0.21.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ef3ec2296248d1f8b9231acb051b6d471dfde8f21819e86c9adaaa9f42918521", size = 227303, upload-time = "2026-04-12T21:44:13.709Z" },
+ { url = "https://files.pythonhosted.org/packages/cc/4d/619866af2840875be408047bf9e70ceafbae6ab50660de7134ed1b25eb86/msgspec-0.21.1-cp312-cp312-win_amd64.whl", hash = "sha256:d4ab834a054c6f0cbeef6df9e7e1b33d5f1bc7b86dea1d2fd7cad003873e783d", size = 190017, upload-time = "2026-04-12T21:44:14.977Z" },
+ { url = "https://files.pythonhosted.org/packages/5e/2e/a8f9eca8fd00e097d7a9e99ba8a4685db994494448e3d4f0b7f6e9a3c0f7/msgspec-0.21.1-cp312-cp312-win_arm64.whl", hash = "sha256:628aaa35c74950a8c59da330d7e98917e1c7188f983745782027748ee4ca573e", size = 175345, upload-time = "2026-04-12T21:44:16.431Z" },
+]
+
[[package]]
name = "multidict"
version = "6.7.1"
@@ -1688,6 +2020,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" },
]
+[[package]]
+name = "networkx"
+version = "3.6.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" },
+]
+
[[package]]
name = "notebook-shim"
version = "0.2.4"
@@ -1719,6 +2060,155 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/58/89/e4e856ac82a68c3ed64486a544977d0e7bdd18b8da75b78a577ca31c4395/numpy-2.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:846300f379b5b12cc769334464656bc882e0735d27d9726568bc932fdc49d5ec", size = 10221450, upload-time = "2026-03-29T13:19:18.994Z" },
]
+[[package]]
+name = "nvidia-cublas"
+version = "13.1.0.3"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/e1/a5/fce49e2ae977e0ccc084e5adafceb4f0ac0c8333cb6863501618a7277f67/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c86fc7f7ae36d7528288c5d88098edcb7b02c633d262e7ddbb86b0ad91be5df2", size = 542851226, upload-time = "2025-10-09T08:59:04.818Z" },
+ { url = "https://files.pythonhosted.org/packages/e7/44/423ac00af4dd95a5aeb27207e2c0d9b7118702149bf4704c3ddb55bb7429/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:ee8722c1f0145ab246bccb9e452153b5e0515fd094c3678df50b2a0888b8b171", size = 423133236, upload-time = "2025-10-09T08:59:32.536Z" },
+]
+
+[[package]]
+name = "nvidia-cuda-cupti"
+version = "13.0.85"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" },
+ { url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" },
+]
+
+[[package]]
+name = "nvidia-cuda-nvrtc"
+version = "13.0.88"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" },
+ { url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" },
+]
+
+[[package]]
+name = "nvidia-cuda-runtime"
+version = "13.0.96"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" },
+ { url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" },
+]
+
+[[package]]
+name = "nvidia-cudnn-cu13"
+version = "9.19.0.56"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-cublas", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/f1/84/26025437c1e6b61a707442184fa0c03d083b661adf3a3eecfd6d21677740/nvidia_cudnn_cu13-9.19.0.56-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:6ed29ffaee1176c612daf442e4dd6cfeb6a0caa43ddcbeb59da94953030b1be4", size = 433781201, upload-time = "2026-02-03T20:40:53.805Z" },
+ { url = "https://files.pythonhosted.org/packages/a3/22/0b4b932655d17a6da1b92fa92ab12844b053bb2ac2475e179ba6f043da1e/nvidia_cudnn_cu13-9.19.0.56-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:d20e1734305e9d68889a96e3f35094d733ff1f83932ebe462753973e53a572bf", size = 366066321, upload-time = "2026-02-03T20:44:52.837Z" },
+]
+
+[[package]]
+name = "nvidia-cufft"
+version = "12.0.0.61"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-nvjitlink", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" },
+ { url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" },
+]
+
+[[package]]
+name = "nvidia-cufile"
+version = "1.15.1.6"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672, upload-time = "2025-09-04T08:32:22.779Z" },
+ { url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" },
+]
+
+[[package]]
+name = "nvidia-curand"
+version = "10.4.0.35"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" },
+]
+
+[[package]]
+name = "nvidia-cusolver"
+version = "12.0.4.66"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-cublas", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
+ { name = "nvidia-cusparse", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
+ { name = "nvidia-nvjitlink", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" },
+ { url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" },
+]
+
+[[package]]
+name = "nvidia-cusparse"
+version = "12.6.3.3"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-nvjitlink", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" },
+ { url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" },
+]
+
+[[package]]
+name = "nvidia-cusparselt-cu13"
+version = "0.8.0"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/46/10/8dcd1175260706a2fc92a16a52e306b71d4c1ea0b0cc4a9484183399818a/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:400c6ed1cf6780fc6efedd64ec9f1345871767e6a1a0a552a1ea0578117ea77c", size = 220791277, upload-time = "2025-08-13T19:22:40.982Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/53/43b0d71f4e702fa9733f8b4571fdca50a8813f1e450b656c239beff12315/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:25e30a8a7323935d4ad0340b95a0b69926eee755767e8e0b1cf8dd85b197d3fd", size = 169884119, upload-time = "2025-08-13T19:23:41.967Z" },
+]
+
+[[package]]
+name = "nvidia-nccl-cu13"
+version = "2.28.9"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/39/55/1920646a2e43ffd4fc958536b276197ed740e9e0c54105b4bb3521591fc7/nvidia_nccl_cu13-2.28.9-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:01c873ba1626b54caa12272ed228dc5b2781545e0ae8ba3f432a8ef1c6d78643", size = 196561677, upload-time = "2025-11-18T05:49:03.45Z" },
+ { url = "https://files.pythonhosted.org/packages/b0/b4/878fefaad5b2bcc6fcf8d474a25e3e3774bc5133e4b58adff4d0bca238bc/nvidia_nccl_cu13-2.28.9-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:e4553a30f34195f3fa1da02a6da3d6337d28f2003943aa0a3d247bbc25fefc42", size = 196493177, upload-time = "2025-11-18T05:49:17.677Z" },
+]
+
+[[package]]
+name = "nvidia-nvjitlink"
+version = "13.0.88"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/56/7a/123e033aaff487c77107195fa5a2b8686795ca537935a24efae476c41f05/nvidia_nvjitlink-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b", size = 40713933, upload-time = "2025-09-04T08:35:43.553Z" },
+ { url = "https://files.pythonhosted.org/packages/ab/2c/93c5250e64df4f894f1cbb397c6fd71f79813f9fd79d7cd61de3f97b3c2d/nvidia_nvjitlink-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e931536ccc7d467a98ba1d8b89ff7fa7f1fa3b13f2b0069118cd7f47bff07d0c", size = 38768748, upload-time = "2025-09-04T08:35:20.008Z" },
+]
+
+[[package]]
+name = "nvidia-nvshmem-cu13"
+version = "3.4.5"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947, upload-time = "2025-09-06T00:32:20.022Z" },
+ { url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546, upload-time = "2025-09-06T00:32:41.564Z" },
+]
+
+[[package]]
+name = "nvidia-nvtx"
+version = "13.0.85"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" },
+ { url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" },
+]
+
[[package]]
name = "openai"
version = "2.30.0"
@@ -1769,28 +2259,44 @@ dev = [
{ name = "types-pyyaml" },
]
train = [
+ { name = "accelerate" },
+ { name = "bitsandbytes" },
{ name = "datasets" },
{ name = "huggingface-hub" },
{ name = "ipykernel" },
{ name = "ipywidgets" },
{ name = "jupyterlab" },
+ { name = "matplotlib" },
+ { name = "optuna" },
+ { name = "peft" },
+ { name = "transformers" },
+ { name = "trl" },
+ { name = "unsloth" },
]
[package.metadata]
requires-dist = [
+ { name = "accelerate", marker = "extra == 'train'" },
+ { name = "bitsandbytes", marker = "extra == 'train'" },
{ name = "datasets", marker = "extra == 'train'", specifier = ">=4.8.4" },
- { name = "huggingface-hub", marker = "extra == 'train'", specifier = ">=1.9.0" },
+ { name = "huggingface-hub", marker = "extra == 'train'", specifier = ">=0.34,<1.0" },
{ name = "ipykernel", marker = "extra == 'train'" },
{ name = "ipywidgets", marker = "extra == 'train'", specifier = ">=8.1.0" },
{ name = "jupyterlab", marker = "extra == 'train'" },
+ { name = "matplotlib", marker = "extra == 'train'" },
{ name = "ministack", editable = "aws_infra" },
{ name = "mypy", marker = "extra == 'dev'", specifier = ">=1.10.0" },
{ name = "openenv-core", extras = ["core"], specifier = ">=0.2.2" },
+ { name = "optuna", marker = "extra == 'train'" },
+ { name = "peft", marker = "extra == 'train'" },
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.0.0" },
{ name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.0.0" },
{ name = "python-dotenv", specifier = ">=1.0.0" },
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.4.0" },
+ { name = "transformers", marker = "extra == 'train'", specifier = ">=4.50,<5.0" },
+ { name = "trl", marker = "extra == 'train'", specifier = ">=0.18.2,!=0.19.0,<=0.24.0" },
{ name = "types-pyyaml", marker = "extra == 'dev'", specifier = ">=6.0.0" },
+ { name = "unsloth", marker = "extra == 'train'" },
]
provides-extras = ["dev", "train"]
@@ -1842,6 +2348,24 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/5f/bf/93795954016c522008da367da292adceed71cca6ee1717e1d64c83089099/opentelemetry_api-1.40.0-py3-none-any.whl", hash = "sha256:82dd69331ae74b06f6a874704be0cfaa49a1650e1537d4a813b86ecef7d0ecf9", size = 68676, upload-time = "2026-03-04T14:17:01.24Z" },
]
+[[package]]
+name = "optuna"
+version = "4.8.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "alembic" },
+ { name = "colorlog" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "pyyaml" },
+ { name = "sqlalchemy" },
+ { name = "tqdm" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/bf/9b/62f120fb2ecbc4338bee70c5a3671c8e561714f3aa1a046b897ff142050e/optuna-4.8.0.tar.gz", hash = "sha256:6f7043e9f8ecb5e607af86a7eb00fb5ec2be26c3b08c201209a73d36aff37a38", size = 482603, upload-time = "2026-03-16T04:59:58.659Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/ac/24/7c731839566d30dc70556d9824ef17692d896c15e3df627bce8c16f753e1/optuna-4.8.0-py3-none-any.whl", hash = "sha256:c57a7682679c36bfc9bca0da430698179e513874074b71bebedb0334964ab930", size = 419456, upload-time = "2026-03-16T04:59:56.977Z" },
+]
+
[[package]]
name = "orjson"
version = "3.11.8"
@@ -1931,6 +2455,27 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload-time = "2026-01-27T03:59:45.137Z" },
]
+[[package]]
+name = "peft"
+version = "0.19.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "accelerate" },
+ { name = "huggingface-hub" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "psutil" },
+ { name = "pyyaml" },
+ { name = "safetensors" },
+ { name = "torch" },
+ { name = "tqdm" },
+ { name = "transformers" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/86/cf/037f1e3d5186496c05513a6754639e2dab3038a05f384284d49a9bd06a2d/peft-0.19.1.tar.gz", hash = "sha256:0d97542fe96dcdaa20d3b81c06f26f988618f416a73544ab23c3618ccb674a40", size = 763738, upload-time = "2026-04-16T15:46:45.105Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/e8/b6/f54d676ed93cc2dd2234c3b172ea9c8c3d7d29361e66b1b23dec57a67465/peft-0.19.1-py3-none-any.whl", hash = "sha256:2113f72a81621b5913ef28f9022204c742df111890c5f49d812716a4a301e356", size = 680692, upload-time = "2026-04-16T15:46:42.886Z" },
+]
+
[[package]]
name = "pexpect"
version = "4.9.0"
@@ -2034,6 +2579,21 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" },
]
+[[package]]
+name = "protobuf"
+version = "7.34.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/6b/6b/a0e95cad1ad7cc3f2c6821fcab91671bd5b78bd42afb357bb4765f29bc41/protobuf-7.34.1.tar.gz", hash = "sha256:9ce42245e704cc5027be797c1db1eb93184d44d1cdd71811fb2d9b25ad541280", size = 454708, upload-time = "2026-03-20T17:34:47.036Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/ec/11/3325d41e6ee15bf1125654301211247b042563bcc898784351252549a8ad/protobuf-7.34.1-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:d8b2cc79c4d8f62b293ad9b11ec3aebce9af481fa73e64556969f7345ebf9fc7", size = 429247, upload-time = "2026-03-20T17:34:37.024Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/9d/aa69df2724ff63efa6f72307b483ce0827f4347cc6d6df24b59e26659fef/protobuf-7.34.1-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:5185e0e948d07abe94bb76ec9b8416b604cfe5da6f871d67aad30cbf24c3110b", size = 325753, upload-time = "2026-03-20T17:34:38.751Z" },
+ { url = "https://files.pythonhosted.org/packages/92/e8/d174c91fd48e50101943f042b09af9029064810b734e4160bbe282fa1caa/protobuf-7.34.1-cp310-abi3-manylinux2014_s390x.whl", hash = "sha256:403b093a6e28a960372b44e5eb081775c9b056e816a8029c61231743d63f881a", size = 340198, upload-time = "2026-03-20T17:34:39.871Z" },
+ { url = "https://files.pythonhosted.org/packages/53/1b/3b431694a4dc6d37b9f653f0c64b0a0d9ec074ee810710c0c3da21d67ba7/protobuf-7.34.1-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:8ff40ce8cd688f7265326b38d5a1bed9bfdf5e6723d49961432f83e21d5713e4", size = 324267, upload-time = "2026-03-20T17:34:41.1Z" },
+ { url = "https://files.pythonhosted.org/packages/85/29/64de04a0ac142fb685fd09999bc3d337943fb386f3a0ec57f92fd8203f97/protobuf-7.34.1-cp310-abi3-win32.whl", hash = "sha256:34b84ce27680df7cca9f231043ada0daa55d0c44a2ddfaa58ec1d0d89d8bf60a", size = 426628, upload-time = "2026-03-20T17:34:42.536Z" },
+ { url = "https://files.pythonhosted.org/packages/4d/87/cb5e585192a22b8bd457df5a2c16a75ea0db9674c3a0a39fc9347d84e075/protobuf-7.34.1-cp310-abi3-win_amd64.whl", hash = "sha256:e97b55646e6ce5cbb0954a8c28cd39a5869b59090dfaa7df4598a7fba869468c", size = 437901, upload-time = "2026-03-20T17:34:44.112Z" },
+ { url = "https://files.pythonhosted.org/packages/88/95/608f665226bca68b736b79e457fded9a2a38c4f4379a4a7614303d9db3bc/protobuf-7.34.1-py3-none-any.whl", hash = "sha256:bb3812cd53aefea2b028ef42bd780f5b96407247f20c6ef7c679807e9d188f11", size = 170715, upload-time = "2026-03-20T17:34:45.384Z" },
+]
+
[[package]]
name = "psutil"
version = "7.2.2"
@@ -2212,6 +2772,15 @@ crypto = [
{ name = "cryptography" },
]
+[[package]]
+name = "pyparsing"
+version = "3.3.2"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" },
+]
+
[[package]]
name = "pyperclip"
version = "1.11.0"
@@ -2381,6 +2950,30 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" },
]
+[[package]]
+name = "regex"
+version = "2026.4.4"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/cb/0e/3a246dbf05666918bd3664d9d787f84a9108f6f43cc953a077e4a7dfdb7e/regex-2026.4.4.tar.gz", hash = "sha256:e08270659717f6973523ce3afbafa53515c4dc5dcad637dc215b6fd50f689423", size = 416000, upload-time = "2026-04-03T20:56:28.155Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/e5/28/b972a4d3df61e1d7bcf1b59fdb3cddef22f88b6be43f161bb41ebc0e4081/regex-2026.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c07ab8794fa929e58d97a0e1796b8b76f70943fa39df225ac9964615cf1f9d52", size = 490434, upload-time = "2026-04-03T20:53:40.219Z" },
+ { url = "https://files.pythonhosted.org/packages/84/20/30041446cf6dc3e0eab344fc62770e84c23b6b68a3b657821f9f80cb69b4/regex-2026.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2c785939dc023a1ce4ec09599c032cc9933d258a998d16ca6f2b596c010940eb", size = 292061, upload-time = "2026-04-03T20:53:41.862Z" },
+ { url = "https://files.pythonhosted.org/packages/62/c8/3baa06d75c98c46d4cc4262b71fd2edb9062b5665e868bca57859dadf93a/regex-2026.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b1ce5c81c9114f1ce2f9288a51a8fd3aeea33a0cc440c415bf02da323aa0a76", size = 289628, upload-time = "2026-04-03T20:53:43.701Z" },
+ { url = "https://files.pythonhosted.org/packages/31/87/3accf55634caad8c0acab23f5135ef7d4a21c39f28c55c816ae012931408/regex-2026.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:760ef21c17d8e6a4fe8cf406a97cf2806a4df93416ccc82fc98d25b1c20425be", size = 796651, upload-time = "2026-04-03T20:53:45.379Z" },
+ { url = "https://files.pythonhosted.org/packages/f6/0c/aaa2c83f34efedbf06f61cb1942c25f6cf1ee3b200f832c4d05f28306c2e/regex-2026.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7088fcdcb604a4417c208e2169715800d28838fefd7455fbe40416231d1d47c1", size = 865916, upload-time = "2026-04-03T20:53:47.064Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/f6/8c6924c865124643e8f37823eca845dc27ac509b2ee58123685e71cd0279/regex-2026.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:07edca1ba687998968f7db5bc355288d0c6505caa7374f013d27356d93976d13", size = 912287, upload-time = "2026-04-03T20:53:49.422Z" },
+ { url = "https://files.pythonhosted.org/packages/11/0e/a9f6f81013e0deaf559b25711623864970fe6a098314e374ccb1540a4152/regex-2026.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:993f657a7c1c6ec51b5e0ba97c9817d06b84ea5fa8d82e43b9405de0defdc2b9", size = 801126, upload-time = "2026-04-03T20:53:51.096Z" },
+ { url = "https://files.pythonhosted.org/packages/71/61/3a0cc8af2dc0c8deb48e644dd2521f173f7e6513c6e195aad9aa8dd77ac5/regex-2026.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2b69102a743e7569ebee67e634a69c4cb7e59d6fa2e1aa7d3bdbf3f61435f62d", size = 776788, upload-time = "2026-04-03T20:53:52.889Z" },
+ { url = "https://files.pythonhosted.org/packages/64/0b/8bb9cbf21ef7dee58e49b0fdb066a7aded146c823202e16494a36777594f/regex-2026.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dac006c8b6dda72d86ea3d1333d45147de79a3a3f26f10c1cf9287ca4ca0ac3", size = 785184, upload-time = "2026-04-03T20:53:55.627Z" },
+ { url = "https://files.pythonhosted.org/packages/99/c2/d3e80e8137b25ee06c92627de4e4d98b94830e02b3e6f81f3d2e3f504cf5/regex-2026.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:50a766ee2010d504554bfb5f578ed2e066898aa26411d57e6296230627cdefa0", size = 859913, upload-time = "2026-04-03T20:53:57.249Z" },
+ { url = "https://files.pythonhosted.org/packages/bc/e6/9d5d876157d969c804622456ef250017ac7a8f83e0e14f903b9e6df5ce95/regex-2026.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9e2f5217648f68e3028c823df58663587c1507a5ba8419f4fdfc8a461be76043", size = 765732, upload-time = "2026-04-03T20:53:59.428Z" },
+ { url = "https://files.pythonhosted.org/packages/82/80/b568935b4421388561c8ed42aff77247285d3ae3bb2a6ca22af63bae805e/regex-2026.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:39d8de85a08e32632974151ba59c6e9140646dcc36c80423962b1c5c0a92e244", size = 852152, upload-time = "2026-04-03T20:54:01.505Z" },
+ { url = "https://files.pythonhosted.org/packages/39/29/f0f81217e21cd998245da047405366385d5c6072048038a3d33b37a79dc0/regex-2026.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:55d9304e0e7178dfb1e106c33edf834097ddf4a890e2f676f6c5118f84390f73", size = 789076, upload-time = "2026-04-03T20:54:03.323Z" },
+ { url = "https://files.pythonhosted.org/packages/49/1d/1d957a61976ab9d4e767dd4f9d04b66cc0c41c5e36cf40e2d43688b5ae6f/regex-2026.4.4-cp312-cp312-win32.whl", hash = "sha256:04bb679bc0bde8a7bfb71e991493d47314e7b98380b083df2447cda4b6edb60f", size = 266700, upload-time = "2026-04-03T20:54:05.639Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/5c/bf575d396aeb58ea13b06ef2adf624f65b70fafef6950a80fc3da9cae3bc/regex-2026.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:db0ac18435a40a2543dbb3d21e161a6c78e33e8159bd2e009343d224bb03bb1b", size = 277768, upload-time = "2026-04-03T20:54:07.312Z" },
+ { url = "https://files.pythonhosted.org/packages/c9/27/049df16ec6a6828ccd72add3c7f54b4df029669bea8e9817df6fff58be90/regex-2026.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:4ce255cc05c1947a12989c6db801c96461947adb7a59990f1360b5983fab4983", size = 270568, upload-time = "2026-04-03T20:54:09.484Z" },
+]
+
[[package]]
name = "requests"
version = "2.33.1"
@@ -2515,6 +3108,28 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/2e/a3/0f0b7d78e2f1eb9e8e1afbff1d2bff8d60144aee17aca51c065b516743dd/safehttpx-0.1.7-py3-none-any.whl", hash = "sha256:c4f4a162db6993464d7ca3d7cc4af0ffc6515a606dfd220b9f82c6945d869cde", size = 8959, upload-time = "2025-10-24T18:30:08.733Z" },
]
+[[package]]
+name = "safetensors"
+version = "0.7.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/29/9c/6e74567782559a63bd040a236edca26fd71bc7ba88de2ef35d75df3bca5e/safetensors-0.7.0.tar.gz", hash = "sha256:07663963b67e8bd9f0b8ad15bb9163606cd27cc5a1b96235a50d8369803b96b0", size = 200878, upload-time = "2025-11-19T15:18:43.199Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/fa/47/aef6c06649039accf914afef490268e1067ed82be62bcfa5b7e886ad15e8/safetensors-0.7.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c82f4d474cf725255d9e6acf17252991c3c8aac038d6ef363a4bf8be2f6db517", size = 467781, upload-time = "2025-11-19T15:18:35.84Z" },
+ { url = "https://files.pythonhosted.org/packages/e8/00/374c0c068e30cd31f1e1b46b4b5738168ec79e7689ca82ee93ddfea05109/safetensors-0.7.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:94fd4858284736bb67a897a41608b5b0c2496c9bdb3bf2af1fa3409127f20d57", size = 447058, upload-time = "2025-11-19T15:18:34.416Z" },
+ { url = "https://files.pythonhosted.org/packages/f1/06/578ffed52c2296f93d7fd2d844cabfa92be51a587c38c8afbb8ae449ca89/safetensors-0.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e07d91d0c92a31200f25351f4acb2bc6aff7f48094e13ebb1d0fb995b54b6542", size = 491748, upload-time = "2025-11-19T15:18:09.79Z" },
+ { url = "https://files.pythonhosted.org/packages/ae/33/1debbbb70e4791dde185edb9413d1fe01619255abb64b300157d7f15dddd/safetensors-0.7.0-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8469155f4cb518bafb4acf4865e8bb9d6804110d2d9bdcaa78564b9fd841e104", size = 503881, upload-time = "2025-11-19T15:18:16.145Z" },
+ { url = "https://files.pythonhosted.org/packages/8e/1c/40c2ca924d60792c3be509833df711b553c60effbd91da6f5284a83f7122/safetensors-0.7.0-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:54bef08bf00a2bff599982f6b08e8770e09cc012d7bba00783fc7ea38f1fb37d", size = 623463, upload-time = "2025-11-19T15:18:21.11Z" },
+ { url = "https://files.pythonhosted.org/packages/9b/3a/13784a9364bd43b0d61eef4bea2845039bc2030458b16594a1bd787ae26e/safetensors-0.7.0-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:42cb091236206bb2016d245c377ed383aa7f78691748f3bb6ee1bfa51ae2ce6a", size = 532855, upload-time = "2025-11-19T15:18:25.719Z" },
+ { url = "https://files.pythonhosted.org/packages/a0/60/429e9b1cb3fc651937727befe258ea24122d9663e4d5709a48c9cbfceecb/safetensors-0.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac7252938f0696ddea46f5e855dd3138444e82236e3be475f54929f0c510d48", size = 507152, upload-time = "2025-11-19T15:18:33.023Z" },
+ { url = "https://files.pythonhosted.org/packages/3c/a8/4b45e4e059270d17af60359713ffd83f97900d45a6afa73aaa0d737d48b6/safetensors-0.7.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1d060c70284127fa805085d8f10fbd0962792aed71879d00864acda69dbab981", size = 541856, upload-time = "2025-11-19T15:18:31.075Z" },
+ { url = "https://files.pythonhosted.org/packages/06/87/d26d8407c44175d8ae164a95b5a62707fcc445f3c0c56108e37d98070a3d/safetensors-0.7.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cdab83a366799fa730f90a4ebb563e494f28e9e92c4819e556152ad55e43591b", size = 674060, upload-time = "2025-11-19T15:18:37.211Z" },
+ { url = "https://files.pythonhosted.org/packages/11/f5/57644a2ff08dc6325816ba7217e5095f17269dada2554b658442c66aed51/safetensors-0.7.0-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:672132907fcad9f2aedcb705b2d7b3b93354a2aec1b2f706c4db852abe338f85", size = 771715, upload-time = "2025-11-19T15:18:38.689Z" },
+ { url = "https://files.pythonhosted.org/packages/86/31/17883e13a814bd278ae6e266b13282a01049b0c81341da7fd0e3e71a80a3/safetensors-0.7.0-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:5d72abdb8a4d56d4020713724ba81dac065fedb7f3667151c4a637f1d3fb26c0", size = 714377, upload-time = "2025-11-19T15:18:40.162Z" },
+ { url = "https://files.pythonhosted.org/packages/4a/d8/0c8a7dc9b41dcac53c4cbf9df2b9c83e0e0097203de8b37a712b345c0be5/safetensors-0.7.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b0f6d66c1c538d5a94a73aa9ddca8ccc4227e6c9ff555322ea40bdd142391dd4", size = 677368, upload-time = "2025-11-19T15:18:41.627Z" },
+ { url = "https://files.pythonhosted.org/packages/05/e5/cb4b713c8a93469e3c5be7c3f8d77d307e65fe89673e731f5c2bfd0a9237/safetensors-0.7.0-cp38-abi3-win32.whl", hash = "sha256:c74af94bf3ac15ac4d0f2a7c7b4663a15f8c2ab15ed0fc7531ca61d0835eccba", size = 326423, upload-time = "2025-11-19T15:18:45.74Z" },
+ { url = "https://files.pythonhosted.org/packages/5d/e6/ec8471c8072382cb91233ba7267fd931219753bb43814cbc71757bfd4dab/safetensors-0.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:d1239932053f56f3456f32eb9625590cc7582e905021f94636202a864d470755", size = 341380, upload-time = "2025-11-19T15:18:44.427Z" },
+]
+
[[package]]
name = "secretstorage"
version = "3.5.0"
@@ -2546,13 +3161,29 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/1c/78/504fdd027da3b84ff1aecd9f6957e65f35134534ccc6da8628eb71e76d3f/send2trash-2.1.0-py3-none-any.whl", hash = "sha256:0da2f112e6d6bb22de6aa6daa7e144831a4febf2a87261451c4ad849fe9a873c", size = 17610, upload-time = "2026-01-14T06:27:35.218Z" },
]
+[[package]]
+name = "sentencepiece"
+version = "0.2.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/15/15/2e7a025fc62d764b151ae6d0f2a92f8081755ebe8d4a64099accc6f77ba6/sentencepiece-0.2.1.tar.gz", hash = "sha256:8138cec27c2f2282f4a34d9a016e3374cd40e5c6e9cb335063db66a0a3b71fad", size = 3228515, upload-time = "2025-08-12T07:00:51.718Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/4a/be/32ce495aa1d0e0c323dcb1ba87096037358edee539cac5baf8755a6bd396/sentencepiece-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:57cae326c8727de58c85977b175af132a7138d84c764635d7e71bbee7e774133", size = 1943152, upload-time = "2025-08-12T06:59:40.048Z" },
+ { url = "https://files.pythonhosted.org/packages/88/7e/ff23008899a58678e98c6ff592bf4d368eee5a71af96d0df6b38a039dd4f/sentencepiece-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:56dd39a3c4d6493db3cdca7e8cc68c6b633f0d4195495cbadfcf5af8a22d05a6", size = 1325651, upload-time = "2025-08-12T06:59:41.536Z" },
+ { url = "https://files.pythonhosted.org/packages/19/84/42eb3ce4796777a1b5d3699dfd4dca85113e68b637f194a6c8d786f16a04/sentencepiece-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d9381351182ff9888cc80e41c632e7e274b106f450de33d67a9e8f6043da6f76", size = 1253645, upload-time = "2025-08-12T06:59:42.903Z" },
+ { url = "https://files.pythonhosted.org/packages/89/fa/d3d5ebcba3cb9e6d3775a096251860c41a6bc53a1b9461151df83fe93255/sentencepiece-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99f955df238021bf11f0fc37cdb54fd5e5b5f7fd30ecc3d93fb48b6815437167", size = 1316273, upload-time = "2025-08-12T06:59:44.476Z" },
+ { url = "https://files.pythonhosted.org/packages/04/88/14f2f4a2b922d8b39be45bf63d79e6cd3a9b2f248b2fcb98a69b12af12f5/sentencepiece-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0cdfecef430d985f1c2bcbfff3defd1d95dae876fbd0173376012d2d7d24044b", size = 1387881, upload-time = "2025-08-12T06:59:46.09Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/b8/903e5ccb77b4ef140605d5d71b4f9e0ad95d456d6184688073ed11712809/sentencepiece-0.2.1-cp312-cp312-win32.whl", hash = "sha256:a483fd29a34c3e34c39ac5556b0a90942bec253d260235729e50976f5dba1068", size = 999540, upload-time = "2025-08-12T06:59:48.023Z" },
+ { url = "https://files.pythonhosted.org/packages/2d/81/92df5673c067148c2545b1bfe49adfd775bcc3a169a047f5a0e6575ddaca/sentencepiece-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4cdc7c36234fda305e85c32949c5211faaf8dd886096c7cea289ddc12a2d02de", size = 1054671, upload-time = "2025-08-12T06:59:49.895Z" },
+ { url = "https://files.pythonhosted.org/packages/fe/02/c5e3bc518655d714622bec87d83db9cdba1cd0619a4a04e2109751c4f47f/sentencepiece-0.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:daeb5e9e9fcad012324807856113708614d534f596d5008638eb9b40112cd9e4", size = 1033923, upload-time = "2025-08-12T06:59:51.952Z" },
+]
+
[[package]]
name = "setuptools"
-version = "82.0.1"
+version = "81.0.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/4f/db/cfac1baf10650ab4d1c111714410d2fbb77ac5a616db26775db562c8fab2/setuptools-82.0.1.tar.gz", hash = "sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9", size = 1152316, upload-time = "2026-03-09T12:47:17.221Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload-time = "2026-02-06T21:10:39.601Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl", hash = "sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb", size = 1006223, upload-time = "2026-03-09T12:47:15.026Z" },
+ { url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload-time = "2026-02-06T21:10:37.175Z" },
]
[[package]]
@@ -2591,6 +3222,26 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" },
]
+[[package]]
+name = "sqlalchemy"
+version = "2.0.49"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/09/45/461788f35e0364a8da7bda51a1fe1b09762d0c32f12f63727998d85a873b/sqlalchemy-2.0.49.tar.gz", hash = "sha256:d15950a57a210e36dd4cec1aac22787e2a4d57ba9318233e2ef8b2daf9ff2d5f", size = 9898221, upload-time = "2026-04-03T16:38:11.704Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/49/b3/2de412451330756aaaa72d27131db6dde23995efe62c941184e15242a5fa/sqlalchemy-2.0.49-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4bbccb45260e4ff1b7db0be80a9025bb1e6698bdb808b83fff0000f7a90b2c0b", size = 2157681, upload-time = "2026-04-03T16:53:07.132Z" },
+ { url = "https://files.pythonhosted.org/packages/50/84/b2a56e2105bd11ebf9f0b93abddd748e1a78d592819099359aa98134a8bf/sqlalchemy-2.0.49-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fb37f15714ec2652d574f021d479e78cd4eb9d04396dca36568fdfffb3487982", size = 3338976, upload-time = "2026-04-03T17:07:40Z" },
+ { url = "https://files.pythonhosted.org/packages/2c/fa/65fcae2ed62f84ab72cf89536c7c3217a156e71a2c111b1305ab6f0690e2/sqlalchemy-2.0.49-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3bb9ec6436a820a4c006aad1ac351f12de2f2dbdaad171692ee457a02429b672", size = 3351937, upload-time = "2026-04-03T17:12:23.374Z" },
+ { url = "https://files.pythonhosted.org/packages/f8/2f/6fd118563572a7fe475925742eb6b3443b2250e346a0cc27d8d408e73773/sqlalchemy-2.0.49-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8d6efc136f44a7e8bc8088507eaabbb8c2b55b3dbb63fe102c690da0ddebe55e", size = 3281646, upload-time = "2026-04-03T17:07:41.949Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/d7/410f4a007c65275b9cf82354adb4bb8ba587b176d0a6ee99caa16fe638f8/sqlalchemy-2.0.49-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e06e617e3d4fd9e51d385dfe45b077a41e9d1b033a7702551e3278ac597dc750", size = 3316695, upload-time = "2026-04-03T17:12:25.642Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/95/81f594aa60ded13273a844539041ccf1e66c5a7bed0a8e27810a3b52d522/sqlalchemy-2.0.49-cp312-cp312-win32.whl", hash = "sha256:83101a6930332b87653886c01d1ee7e294b1fe46a07dd9a2d2b4f91bcc88eec0", size = 2117483, upload-time = "2026-04-03T17:05:40.896Z" },
+ { url = "https://files.pythonhosted.org/packages/47/9e/fd90114059175cac64e4fafa9bf3ac20584384d66de40793ae2e2f26f3bb/sqlalchemy-2.0.49-cp312-cp312-win_amd64.whl", hash = "sha256:618a308215b6cececb6240b9abde545e3acdabac7ae3e1d4e666896bf5ba44b4", size = 2144494, upload-time = "2026-04-03T17:05:42.282Z" },
+ { url = "https://files.pythonhosted.org/packages/e5/30/8519fdde58a7bdf155b714359791ad1dc018b47d60269d5d160d311fdc36/sqlalchemy-2.0.49-py3-none-any.whl", hash = "sha256:ec44cfa7ef1a728e88ad41674de50f6db8cfdb3e2af84af86e0041aaf02d43d0", size = 1942158, upload-time = "2026-04-03T16:53:44.135Z" },
+]
+
[[package]]
name = "sse-starlette"
version = "3.3.4"
@@ -2631,6 +3282,18 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0b/c9/584bc9651441b4ba60cc4d557d8a547b5aff901af35bda3a4ee30c819b82/starlette-1.0.0-py3-none-any.whl", hash = "sha256:d3ec55e0bb321692d275455ddfd3df75fff145d009685eb40dc91fc66b03d38b", size = 72651, upload-time = "2026-03-22T18:29:45.111Z" },
]
+[[package]]
+name = "sympy"
+version = "1.14.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "mpmath" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" },
+]
+
[[package]]
name = "terminado"
version = "0.18.1"
@@ -2657,6 +3320,32 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" },
]
+[[package]]
+name = "tokenizers"
+version = "0.22.2"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "huggingface-hub" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload-time = "2026-01-05T10:45:15.988Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/92/97/5dbfabf04c7e348e655e907ed27913e03db0923abb5dfdd120d7b25630e1/tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c", size = 3100275, upload-time = "2026-01-05T10:41:02.158Z" },
+ { url = "https://files.pythonhosted.org/packages/2e/47/174dca0502ef88b28f1c9e06b73ce33500eedfac7a7692108aec220464e7/tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001", size = 2981472, upload-time = "2026-01-05T10:41:00.276Z" },
+ { url = "https://files.pythonhosted.org/packages/d6/84/7990e799f1309a8b87af6b948f31edaa12a3ed22d11b352eaf4f4b2e5753/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249487018adec45d6e3554c71d46eb39fa8ea67156c640f7513eb26f318cec7", size = 3290736, upload-time = "2026-01-05T10:40:32.165Z" },
+ { url = "https://files.pythonhosted.org/packages/78/59/09d0d9ba94dcd5f4f1368d4858d24546b4bdc0231c2354aa31d6199f0399/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b85325d0815e86e0bac263506dd114578953b7b53d7de09a6485e4a160a7dd", size = 3168835, upload-time = "2026-01-05T10:40:38.847Z" },
+ { url = "https://files.pythonhosted.org/packages/47/50/b3ebb4243e7160bda8d34b731e54dd8ab8b133e50775872e7a434e524c28/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfb88f22a209ff7b40a576d5324bf8286b519d7358663db21d6246fb17eea2d5", size = 3521673, upload-time = "2026-01-05T10:40:56.614Z" },
+ { url = "https://files.pythonhosted.org/packages/e0/fa/89f4cb9e08df770b57adb96f8cbb7e22695a4cb6c2bd5f0c4f0ebcf33b66/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c774b1276f71e1ef716e5486f21e76333464f47bece56bbd554485982a9e03e", size = 3724818, upload-time = "2026-01-05T10:40:44.507Z" },
+ { url = "https://files.pythonhosted.org/packages/64/04/ca2363f0bfbe3b3d36e95bf67e56a4c88c8e3362b658e616d1ac185d47f2/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df6c4265b289083bf710dff49bc51ef252f9d5be33a45ee2bed151114a56207b", size = 3379195, upload-time = "2026-01-05T10:40:51.139Z" },
+ { url = "https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:369cc9fc8cc10cb24143873a0d95438bb8ee257bb80c71989e3ee290e8d72c67", size = 3274982, upload-time = "2026-01-05T10:40:58.331Z" },
+ { url = "https://files.pythonhosted.org/packages/1d/28/5f9f5a4cc211b69e89420980e483831bcc29dade307955cc9dc858a40f01/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:29c30b83d8dcd061078b05ae0cb94d3c710555fbb44861139f9f83dcca3dc3e4", size = 9478245, upload-time = "2026-01-05T10:41:04.053Z" },
+ { url = "https://files.pythonhosted.org/packages/6c/fb/66e2da4704d6aadebf8cb39f1d6d1957df667ab24cff2326b77cda0dcb85/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:37ae80a28c1d3265bb1f22464c856bd23c02a05bb211e56d0c5301a435be6c1a", size = 9560069, upload-time = "2026-01-05T10:45:10.673Z" },
+ { url = "https://files.pythonhosted.org/packages/16/04/fed398b05caa87ce9b1a1bb5166645e38196081b225059a6edaff6440fac/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:791135ee325f2336f498590eb2f11dc5c295232f288e75c99a36c5dbce63088a", size = 9899263, upload-time = "2026-01-05T10:45:12.559Z" },
+ { url = "https://files.pythonhosted.org/packages/05/a1/d62dfe7376beaaf1394917e0f8e93ee5f67fea8fcf4107501db35996586b/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38337540fbbddff8e999d59970f3c6f35a82de10053206a7562f1ea02d046fa5", size = 10033429, upload-time = "2026-01-05T10:45:14.333Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/18/a545c4ea42af3df6effd7d13d250ba77a0a86fb20393143bbb9a92e434d4/tokenizers-0.22.2-cp39-abi3-win32.whl", hash = "sha256:a6bf3f88c554a2b653af81f3204491c818ae2ac6fbc09e76ef4773351292bc92", size = 2502363, upload-time = "2026-01-05T10:45:20.593Z" },
+ { url = "https://files.pythonhosted.org/packages/65/71/0670843133a43d43070abeb1949abfdef12a86d490bea9cd9e18e37c5ff7/tokenizers-0.22.2-cp39-abi3-win_amd64.whl", hash = "sha256:c9ea31edff2968b44a88f97d784c2f16dc0729b8b143ed004699ebca91f05c48", size = 2747786, upload-time = "2026-01-05T10:45:18.411Z" },
+ { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" },
+]
+
[[package]]
name = "tomli"
version = "2.4.1"
@@ -2693,6 +3382,58 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" },
]
+[[package]]
+name = "torch"
+version = "2.11.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "cuda-bindings", marker = "sys_platform == 'linux'" },
+ { name = "cuda-toolkit", extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" },
+ { name = "filelock" },
+ { name = "fsspec" },
+ { name = "jinja2" },
+ { name = "networkx" },
+ { name = "nvidia-cudnn-cu13", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" },
+ { name = "setuptools" },
+ { name = "sympy" },
+ { name = "triton", marker = "sys_platform == 'linux'" },
+ { name = "typing-extensions" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/6f/8b/69e3008d78e5cee2b30183340cc425081b78afc5eff3d080daab0adda9aa/torch-2.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b5866312ee6e52ea625cd211dcb97d6a2cdc1131a5f15cc0d87eec948f6dd34", size = 80606338, upload-time = "2026-03-23T18:11:34.781Z" },
+ { url = "https://files.pythonhosted.org/packages/13/16/42e5915ebe4868caa6bac83a8ed59db57f12e9a61b7d749d584776ed53d5/torch-2.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f99924682ef0aa6a4ab3b1b76f40dc6e273fca09f367d15a524266db100a723f", size = 419731115, upload-time = "2026-03-23T18:11:06.944Z" },
+ { url = "https://files.pythonhosted.org/packages/1a/c9/82638ef24d7877510f83baf821f5619a61b45568ce21c0a87a91576510aa/torch-2.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:0f68f4ac6d95d12e896c3b7a912b5871619542ec54d3649cf48cc1edd4dd2756", size = 530712279, upload-time = "2026-03-23T18:10:31.481Z" },
+ { url = "https://files.pythonhosted.org/packages/1c/ff/6756f1c7ee302f6d202120e0f4f05b432b839908f9071157302cedfc5232/torch-2.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:fbf39280699d1b869f55eac536deceaa1b60bd6788ba74f399cc67e60a5fab10", size = 114556047, upload-time = "2026-03-23T18:10:55.931Z" },
+]
+
+[[package]]
+name = "torchao"
+version = "0.17.0"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/32/fe/a4036a8e80fa800c92dbcbf75f541cd4c106248b6b579db6dab1800f616a/torchao-0.17.0-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:87a418ce0ec064a821ceab83c921b501acef0ce9a6ccd1be358fcd16c3ae8c58", size = 3206172, upload-time = "2026-03-30T22:25:52.974Z" },
+ { url = "https://files.pythonhosted.org/packages/c9/37/ef37ca885265e5f79a168616767dd416a3cea1cc3b28bb6b503ce4a5b652/torchao-0.17.0-py3-none-any.whl", hash = "sha256:02eba449036715b9ae784fbaa1a6f97994bb7b0421ce92d1d5d1c08e5bd6d349", size = 1200680, upload-time = "2026-03-30T22:25:54.457Z" },
+]
+
+[[package]]
+name = "torchvision"
+version = "0.26.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "numpy" },
+ { name = "pillow" },
+ { name = "torch" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/ae/e7/56b47cc3b132aea90ccce22bcb8975dec688b002150012acc842846039d0/torchvision-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c409e1c3fdebec7a3834465086dbda8bf7680eff79abf7fd2f10c6b59520a7a4", size = 1863502, upload-time = "2026-03-23T18:12:57.326Z" },
+ { url = "https://files.pythonhosted.org/packages/f4/ec/5c31c92c08b65662fe9604a4067ae8232582805949f11ddc042cebe818ed/torchvision-0.26.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:406557718e62fdf10f5706e88d8a5ec000f872da913bf629aab9297622585547", size = 7767944, upload-time = "2026-03-23T18:12:42.805Z" },
+ { url = "https://files.pythonhosted.org/packages/f5/d8/cb6ccda1a1f35a6597645818641701207b3e8e13553e75fce5d86bac74b2/torchvision-0.26.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d61a5abb6b42a0c0c311996c2ac4b83a94418a97182c83b055a2a4ae985e05aa", size = 7522205, upload-time = "2026-03-23T18:12:54.654Z" },
+ { url = "https://files.pythonhosted.org/packages/1c/a9/c272623a0f735c35f0f6cd6dc74784d4f970e800cf063bb76687895a2ab9/torchvision-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:7993c01648e7c61d191b018e84d38fe0825c8fcb2720cd0f37caf7ba14404aa1", size = 4255155, upload-time = "2026-03-23T18:12:32.652Z" },
+]
+
[[package]]
name = "tornado"
version = "6.5.5"
@@ -2731,6 +3472,70 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" },
]
+[[package]]
+name = "transformers"
+version = "4.57.2"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "filelock" },
+ { name = "huggingface-hub" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "pyyaml" },
+ { name = "regex" },
+ { name = "requests" },
+ { name = "safetensors" },
+ { name = "tokenizers" },
+ { name = "tqdm" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/63/98/cf2515dba32791abe0540a252ccae7dc4f12fdeb03258182b6f014a78360/transformers-4.57.2.tar.gz", hash = "sha256:172a455ad5a570ecad89bea510a6c924c45fa90e46e859225fac07305d7946fc", size = 10141231, upload-time = "2025-11-24T17:54:14.293Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d3/21/15c69470cf94857d4664e74554fa01248eb57428fed831929405a0a63b0a/transformers-4.57.2-py3-none-any.whl", hash = "sha256:0918df354853c9931a637792cec519e137aceb150effd4c7924d6b8d36918fab", size = 11993097, upload-time = "2025-11-24T17:54:10.472Z" },
+]
+
+[[package]]
+name = "triton"
+version = "3.6.0"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/17/5d/08201db32823bdf77a0e2b9039540080b2e5c23a20706ddba942924ebcd6/triton-3.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:374f52c11a711fd062b4bfbb201fd9ac0a5febd28a96fb41b4a0f51dde3157f4", size = 176128243, upload-time = "2026-01-20T16:16:07.857Z" },
+ { url = "https://files.pythonhosted.org/packages/ab/a8/cdf8b3e4c98132f965f88c2313a4b493266832ad47fb52f23d14d4f86bb5/triton-3.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74caf5e34b66d9f3a429af689c1c7128daba1d8208df60e81106b115c00d6fca", size = 188266850, upload-time = "2026-01-20T16:00:43.041Z" },
+]
+
+[[package]]
+name = "triton-windows"
+version = "3.6.0.post26"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/62/1e/8d9814e67ba3f20094cf3c69e7815a491f20beb86469a647550ba86728b0/triton_windows-3.6.0.post26-cp312-cp312-win_amd64.whl", hash = "sha256:189d8c57911aa9d2ff983a715e5c967b325f576307db60924cab22b501a36515", size = 47402104, upload-time = "2026-03-10T02:51:40.997Z" },
+]
+
+[[package]]
+name = "trl"
+version = "0.23.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "accelerate" },
+ { name = "datasets" },
+ { name = "transformers" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/45/18/c18e27f6156cf961791ca7abcd4ee5fc8c5ae0fbb936c59827852ee118f5/trl-0.23.0.tar.gz", hash = "sha256:abfe0ecfa6b7e46022552b9dd0cc288bf2c4ef19364ce7765d10218b62b618f1", size = 515765, upload-time = "2025-09-10T04:16:42.377Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/0f/81/035cace9b8853df794db0499299273abef30de889602587efa2a95c7dccb/trl-0.23.0-py3-none-any.whl", hash = "sha256:bb8f35a6a1531bad2d52032add29380413bd9b032d133ab6df16d2191f14f9e6", size = 564734, upload-time = "2025-09-10T04:16:40.34Z" },
+]
+
+[[package]]
+name = "typeguard"
+version = "4.5.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/2b/e8/66e25efcc18542d58706ce4e50415710593721aae26e794ab1dec34fb66f/typeguard-4.5.1.tar.gz", hash = "sha256:f6f8ecbbc819c9bc749983cc67c02391e16a9b43b8b27f15dc70ed7c4a007274", size = 80121, upload-time = "2026-02-19T16:09:03.392Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl", hash = "sha256:44d2bf329d49a244110a090b55f5f91aa82d9a9834ebfd30bcc73651e4a8cc40", size = 36745, upload-time = "2026-02-19T16:09:01.6Z" },
+]
+
[[package]]
name = "typer"
version = "0.24.1"
@@ -2776,6 +3581,20 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" },
]
+[[package]]
+name = "tyro"
+version = "1.0.13"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "docstring-parser" },
+ { name = "typeguard" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/24/d6/7126f9e7de139632134d59b5d1972e93c610ee2cb13829e8f4f48f6613cb/tyro-1.0.13.tar.gz", hash = "sha256:731a90c9836b77fffe7c3fa0477ef2d3b6fa91252ddc0bb4d32dadd4fcc143d4", size = 489479, upload-time = "2026-04-14T18:21:52.888Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/93/4f/c43a0a8f0c66fd40a1d6cc47332a5a1d1043e9b331f7070ea701b91a7598/tyro-1.0.13-py3-none-any.whl", hash = "sha256:a0bdb8462c551dd84fc00a76916ce4d37e879c84eefaf34e2165312407cc6c09", size = 185221, upload-time = "2026-04-14T18:21:54.328Z" },
+]
+
[[package]]
name = "tzdata"
version = "2025.3"
@@ -2794,6 +3613,76 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/ff/7f/4320d9ce3be404e6310b915c3629fe27bf1e2f438a1a7a3cb0396e32e9a9/uncalled_for-0.2.0-py3-none-any.whl", hash = "sha256:2c0bd338faff5f930918f79e7eb9ff48290df2cb05fcc0b40a7f334e55d4d85f", size = 11351, upload-time = "2026-02-27T17:40:56.804Z" },
]
+[[package]]
+name = "unsloth"
+version = "2025.11.1"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "accelerate" },
+ { name = "bitsandbytes" },
+ { name = "datasets" },
+ { name = "diffusers" },
+ { name = "hf-transfer" },
+ { name = "huggingface-hub" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "peft" },
+ { name = "protobuf" },
+ { name = "psutil" },
+ { name = "sentencepiece" },
+ { name = "torch" },
+ { name = "torchvision" },
+ { name = "tqdm" },
+ { name = "transformers" },
+ { name = "triton", marker = "'linux' in sys_platform" },
+ { name = "triton-windows", marker = "(platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'x86_64' and sys_platform == 'win32')" },
+ { name = "trl" },
+ { name = "tyro" },
+ { name = "unsloth-zoo" },
+ { name = "wheel" },
+ { name = "xformers", marker = "(platform_machine == 'AMD64' and 'linux' in sys_platform) or (platform_machine == 'x86_64' and 'linux' in sys_platform) or (platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'x86_64' and sys_platform == 'win32')" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/14/85/d3adac4a02021ffd08c0fd0cc4214a5f98647c139ec3a1ee9ad5722093ee/unsloth-2025.11.1.tar.gz", hash = "sha256:c06a1003484fd2c5dbd00752d7f2490de489df348ac129bb6a83364c125f3dc4", size = 4744603, upload-time = "2025-11-03T14:49:41.128Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/51/09/e52c139f75ba2bd2fed3834238fcdaf5ae5f38f168a8f68d5ab052fa09fb/unsloth-2025.11.1-py3-none-any.whl", hash = "sha256:67ab663e4f89817647ee343bffb400eeca3a1725470bbfc1509ef2c42ef0f418", size = 348780, upload-time = "2025-11-03T14:49:37.91Z" },
+]
+
+[[package]]
+name = "unsloth-zoo"
+version = "2025.11.2"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "accelerate" },
+ { name = "cut-cross-entropy" },
+ { name = "datasets" },
+ { name = "filelock" },
+ { name = "hf-transfer" },
+ { name = "huggingface-hub" },
+ { name = "msgspec" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "peft" },
+ { name = "pillow" },
+ { name = "protobuf" },
+ { name = "psutil" },
+ { name = "regex" },
+ { name = "sentencepiece" },
+ { name = "torch" },
+ { name = "torchao" },
+ { name = "tqdm" },
+ { name = "transformers" },
+ { name = "triton", marker = "'linux' in sys_platform" },
+ { name = "triton-windows", marker = "(platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'x86_64' and sys_platform == 'win32')" },
+ { name = "trl" },
+ { name = "typing-extensions" },
+ { name = "tyro" },
+ { name = "wheel" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/fb/9c/6918f568ae91b1c2e56d3820784e538fe39acbc0b3a86f5ae9c25b8245c3/unsloth_zoo-2025.11.2.tar.gz", hash = "sha256:7cfc1b76c1abc6f7e41ef84648dd923fbd92b38ed0e1272562356ad9a7f7acc3", size = 259407, upload-time = "2025-11-06T13:48:12.231Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/bd/c4/5971b0bf52885021da67af1879a8db7d7c3dcd7d576cf1e58fda462d575f/unsloth_zoo-2025.11.2-py3-none-any.whl", hash = "sha256:eba103c75e00439cc19b33ca0319e018dae43ecd414fc1c39981e75a4b2cdf4d", size = 278200, upload-time = "2025-11-06T13:48:10.42Z" },
+]
+
[[package]]
name = "uri-template"
version = "1.3.0"
@@ -2903,6 +3792,18 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" },
]
+[[package]]
+name = "wheel"
+version = "0.47.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "packaging" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/39/62/75f18a0f03b4219c456652c7780e4d749b929eb605c098ce3a5b6b6bc081/wheel-0.47.0.tar.gz", hash = "sha256:cc72bd1009ba0cf63922e28f94d9d83b920aa2bb28f798a31d0691b02fa3c9b3", size = 63854, upload-time = "2026-04-22T15:51:27.727Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/87/1b/9e33c09813d65e248f7f773119148a612516a4bea93e9c6f545f78455b7c/wheel-0.47.0-py3-none-any.whl", hash = "sha256:212281cab4dff978f6cedd499cd893e1f620791ca6ff7107cf270781e587eced", size = 32218, upload-time = "2026-04-22T15:51:26.296Z" },
+]
+
[[package]]
name = "widgetsnbextension"
version = "4.0.15"
@@ -2924,6 +3825,20 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/a4/f5/10b68b7b1544245097b2a1b8238f66f2fc6dcaeb24ba5d917f52bd2eed4f/wsproto-1.3.2-py3-none-any.whl", hash = "sha256:61eea322cdf56e8cc904bd3ad7573359a242ba65688716b0710a5eb12beab584", size = 24405, upload-time = "2025-11-20T18:18:00.454Z" },
]
+[[package]]
+name = "xformers"
+version = "0.0.35"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "numpy" },
+ { name = "torch" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/de/5a/6e27734bd793adc44d0b8d294e67cfacf4ec590572c1aef51d683fc7a791/xformers-0.0.35.tar.gz", hash = "sha256:f7fc183a58e4bf0e2ae339a18fb1b1d4a37854c0f2545b4f360fef001646ab76", size = 4258182, upload-time = "2026-02-20T20:33:05.417Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/a4/85/6d71f9b16f2ac647877e66ed4af723b3fbd477806ab8b8a89d39a362b85f/xformers-0.0.35-py39-none-manylinux_2_28_x86_64.whl", hash = "sha256:ccc73c7db9890224ab05f5fb60e2034f9e6c8672a10be0cf00e95cbbae3eda7c", size = 3264751, upload-time = "2026-02-20T20:33:02.444Z" },
+ { url = "https://files.pythonhosted.org/packages/49/0b/88c39c128a05d5b553a67cb9c4c3fc32eefb91f836f838befab9e78f8364/xformers-0.0.35-py39-none-win_amd64.whl", hash = "sha256:57381ce3cbb79b593e6b62cb20a937885345fad2796de2aa6fbb66c033601179", size = 2638618, upload-time = "2026-02-20T20:33:04.104Z" },
+]
+
[[package]]
name = "xxhash"
version = "3.6.0"