From 14cab69d43e99f09c3b3e106b46e42e647098ca9 Mon Sep 17 00:00:00 2001 From: Lei Zhenyuan Date: Tue, 10 Jun 2025 18:59:15 +0800 Subject: [PATCH 01/22] add support for torch270 (#2709) --- pyproject.toml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index b7adcc13ea..441dc622f5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -608,6 +608,22 @@ intel-gpu-torch260 = [ "torch @ https://download.pytorch.org/whl/xpu/torch-2.6.0%2Bxpu-cp313-cp313-linux_x86_64.whl#sha256=e6864f7a60a5ecc43d5d38f59a16e5dd132384f73dfd3a697f74944026038f7b ; platform_system == 'Linux' and python_version == '3.13' and platform_machine == 'x86_64'", ] +intel-gpu-torch270 = [ + "unsloth[huggingface]", + + "pytorch_triton_xpu @ https://download.pytorch.org/whl/pytorch_triton_xpu-3.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl#sha256=749a7098492c6a27b356c97149a4a62973b953eae60bc1b6259260974f344913 ; platform_system == 'Linux' and python_version == '3.9' and platform_machine == 'x86_64'", + "pytorch_triton_xpu @ https://download.pytorch.org/whl/pytorch_triton_xpu-3.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl#sha256=44362e80abd752471a08341093321955b066daa2cfb4810e73b8e3b240850f93 ; platform_system == 'Linux' and python_version == '3.10' and platform_machine == 'x86_64'", + "pytorch_triton_xpu @ https://download.pytorch.org/whl/pytorch_triton_xpu-3.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl#sha256=faa6b8c945a837a080f641bc8ccc77a98fa66980dcd7e62e715fd853737343fd ; platform_system == 'Linux' and python_version == '3.11' and platform_machine == 'x86_64'", + "pytorch_triton_xpu @ https://download.pytorch.org/whl/pytorch_triton_xpu-3.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl#sha256=40f6fb65b345dc9a61813abe7ac9a585f2c9808f414d140cc2a5f11f53ee063c ; platform_system == 'Linux' and python_version == '3.12' and platform_machine == 'x86_64'", + "pytorch_triton_xpu @ https://download.pytorch.org/whl/pytorch_triton_xpu-3.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl#sha256=9821fe059de58e827ffc6aa10d69369b16c2f8c2a988b86bef9c2c6e396ab3aa ; platform_system == 'Linux' and python_version == '3.13' and platform_machine == 'x86_64'", + + "torch @ https://download.pytorch.org/whl/xpu/torch-2.7.0%2Bxpu-cp39-cp39-linux_x86_64.whl#sha256=f8ee75e50fcbb37ed5b498299ca2264da99ab278a93fae2358e921e4a6e28273 ; platform_system == 'Linux' and python_version == '3.9' and platform_machine == 'x86_64'", + "torch @ https://download.pytorch.org/whl/xpu/torch-2.7.0%2Bxpu-cp310-cp310-linux_x86_64.whl#sha256=d6fdc342961d98fdcd9d03dfd491a3208bb5f7fbb435841f8f72ce9fdcd2d026 ; platform_system == 'Linux' and python_version == '3.10' and platform_machine == 'x86_64'", + "torch @ https://download.pytorch.org/whl/xpu/torch-2.7.0%2Bxpu-cp311-cp311-linux_x86_64.whl#sha256=74d07f9357df5cf2bf223ad3c84de16346bfaa0504f988fdd5590d3e177e5e86 ; platform_system == 'Linux' and python_version == '3.11' and platform_machine == 'x86_64'", + "torch @ https://download.pytorch.org/whl/xpu/torch-2.7.0%2Bxpu-cp312-cp312-linux_x86_64.whl#sha256=c806d44aa2ca5d225629f6fbc6c994d5deaac2d2cde449195bc8e3522ddd219a ; platform_system == 'Linux' and python_version == '3.12' and platform_machine == 'x86_64'", + "torch @ https://download.pytorch.org/whl/xpu/torch-2.7.0%2Bxpu-cp313-cp313-linux_x86_64.whl#sha256=25d8277b7f01d42e2e014ccbab57a2692b6ec4eff8dcf894eda1b297407cf97a ; platform_system == 'Linux' and python_version == '3.13' and platform_machine == 'x86_64'", +] + [project.urls] homepage = "http://www.unsloth.ai" documentation = "https://github.com/unslothai/unsloth" From 737dc347d41032ba4f937992b1334c7465d97b11 Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Tue, 10 Jun 2025 04:04:25 -0700 Subject: [PATCH 02/22] Update pyproject.toml --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 441dc622f5..c283361476 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -607,7 +607,6 @@ intel-gpu-torch260 = [ "torch @ https://download.pytorch.org/whl/xpu/torch-2.6.0%2Bxpu-cp312-cp312-linux_x86_64.whl#sha256=c4c5c67625cdacf35765c2b94e61fe166e3c3f4a14521b1212a59ad1b3eb0f2e ; platform_system == 'Linux' and python_version == '3.12' and platform_machine == 'x86_64'", "torch @ https://download.pytorch.org/whl/xpu/torch-2.6.0%2Bxpu-cp313-cp313-linux_x86_64.whl#sha256=e6864f7a60a5ecc43d5d38f59a16e5dd132384f73dfd3a697f74944026038f7b ; platform_system == 'Linux' and python_version == '3.13' and platform_machine == 'x86_64'", ] - intel-gpu-torch270 = [ "unsloth[huggingface]", From a497f8878b13292c9f01bb9cc85167fd124e56d7 Mon Sep 17 00:00:00 2001 From: user799595 <101406722+user799595@users.noreply.github.com> Date: Tue, 10 Jun 2025 12:13:25 +0100 Subject: [PATCH 03/22] Making protobuf version more flexible (#2637) * Making protobuf version more flexible * Update pyproject.toml * Update pyproject.toml --------- Co-authored-by: Daniel Han --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index c283361476..37ce3eb460 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,7 +50,7 @@ huggingface = [ "accelerate>=0.34.1", "trl>=0.7.9,!=0.9.0,!=0.9.1,!=0.9.2,!=0.9.3,!=0.15.0", "peft>=0.7.1,!=0.11.0", - "protobuf<4.0.0", + "protobuf", "huggingface_hub", "hf_transfer", "unsloth[triton]", @@ -391,7 +391,7 @@ colab-new = [ "psutil", "wheel>=0.42.0", "numpy", - "protobuf<4.0.0", + "protobuf", "huggingface_hub", "hf_transfer", "bitsandbytes>=0.45.5", @@ -403,7 +403,7 @@ colab-no-deps = [ "peft>=0.7.1", "xformers", "bitsandbytes>=0.45.5", - "protobuf<4.0.0", + "protobuf", ] colab = [ "unsloth[cu121]", From 4573105fc88c8edad81cc5b0fb4ff064472ac149 Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Tue, 10 Jun 2025 06:51:07 -0700 Subject: [PATCH 04/22] Versioning --- unsloth/models/_utils.py | 2 +- unsloth/models/mapper.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/unsloth/models/_utils.py b/unsloth/models/_utils.py index df6267daa7..dfaf36a713 100644 --- a/unsloth/models/_utils.py +++ b/unsloth/models/_utils.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "2025.6.1" +__version__ = "2025.6.2" __all__ = [ "SUPPORTS_BFLOAT16", diff --git a/unsloth/models/mapper.py b/unsloth/models/mapper.py index 8bd31efd46..11ec650f5f 100644 --- a/unsloth/models/mapper.py +++ b/unsloth/models/mapper.py @@ -869,6 +869,11 @@ __INT_TO_FLOAT_MAPPER = \ "deepseek-ai/DeepSeek-R1-0528-Qwen3-8B", "unsloth/DeepSeek-R1-0528-Qwen3-8B-bnb-4bit", ), + "unsloth/Magistral-Small-2506-unsloth-bnb-4bit" : ( + "unsloth/Magistral-Small-2506", + "mistralai/Magistral-Small-2506", + "unsloth/Magistral-Small-2506-bnb-4bit", + ), } INT_TO_FLOAT_MAPPER = {} From d0287bc5964d148d1ea6b8ef0157a89dead10440 Mon Sep 17 00:00:00 2001 From: Roland Tannous <115670425+rolandtannous@users.noreply.github.com> Date: Thu, 12 Jun 2025 00:08:41 +0300 Subject: [PATCH 05/22] tests for additional merge fix unsloth zoo pr 163 (#2719) * tests for additional merge fix unsloth zoo pr 163 * fixed load_dataset indent in mistral perplexity test file --- .../test_merge_model_perplexity_llama-3.2.py | 4 +- .../test_merge_model_perplexity_mistral.py | 3 +- .../test_merge_model_perplexity_phi_4.py | 4 +- ...st_merged_model_perplexity_llama-3.1-8b.py | 3 +- .../test_merged_model_perplexity_qwen_2.5.py | 3 +- .../test_push_to_hub_merged.py | 3 +- ...t_push_to_hub_merged_sharded_index_file.py | 3 +- .../test_save_merged_grpo_model.py | 3 +- .../saving/non_peft/test_mistral_non_peft.py | 67 +++++ .../saving/non_peft/test_whisper_non_peft.py | 67 +++++ .../saving/text_to_speech_models/test_csm.py | 156 +++++++++++ .../saving/text_to_speech_models/test_lasa.py | 217 +++++++++++++++ .../text_to_speech_models/test_orpheus.py | 254 ++++++++++++++++++ .../text_to_speech_models/test_whisper.py | 189 +++++++++++++ .../test_index_file_sharded_model.py | 3 +- .../vision_models/test_push_to_hub_merged.py | 4 +- ...t_save_merge_vision_model_ocr_benchmark.py | 3 +- tests/utils/os_utils.py | 119 ++++++++ 18 files changed, 1094 insertions(+), 11 deletions(-) create mode 100644 tests/saving/non_peft/test_mistral_non_peft.py create mode 100644 tests/saving/non_peft/test_whisper_non_peft.py create mode 100644 tests/saving/text_to_speech_models/test_csm.py create mode 100644 tests/saving/text_to_speech_models/test_lasa.py create mode 100644 tests/saving/text_to_speech_models/test_orpheus.py create mode 100644 tests/saving/text_to_speech_models/test_whisper.py create mode 100644 tests/utils/os_utils.py diff --git a/tests/saving/language_models/test_merge_model_perplexity_llama-3.2.py b/tests/saving/language_models/test_merge_model_perplexity_llama-3.2.py index 384da30e85..2d4ec83566 100644 --- a/tests/saving/language_models/test_merge_model_perplexity_llama-3.2.py +++ b/tests/saving/language_models/test_merge_model_perplexity_llama-3.2.py @@ -14,8 +14,10 @@ import gc import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) + from tests.utils.cleanup_utils import safe_remove_directory from tests.utils.perplexity_eval import ppl_model, add_to_comparison, print_model_comparison diff --git a/tests/saving/language_models/test_merge_model_perplexity_mistral.py b/tests/saving/language_models/test_merge_model_perplexity_mistral.py index f08a3c1fe0..d1942ea7d4 100644 --- a/tests/saving/language_models/test_merge_model_perplexity_mistral.py +++ b/tests/saving/language_models/test_merge_model_perplexity_mistral.py @@ -14,8 +14,9 @@ import gc import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) from tests.utils.cleanup_utils import safe_remove_directory from tests.utils.perplexity_eval import ppl_model, add_to_comparison, print_model_comparison diff --git a/tests/saving/language_models/test_merge_model_perplexity_phi_4.py b/tests/saving/language_models/test_merge_model_perplexity_phi_4.py index df6f7ac36c..c0bd7faaf5 100644 --- a/tests/saving/language_models/test_merge_model_perplexity_phi_4.py +++ b/tests/saving/language_models/test_merge_model_perplexity_phi_4.py @@ -14,8 +14,10 @@ import gc import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) + from tests.utils.cleanup_utils import safe_remove_directory from tests.utils.perplexity_eval import ppl_model, add_to_comparison, print_model_comparison diff --git a/tests/saving/language_models/test_merged_model_perplexity_llama-3.1-8b.py b/tests/saving/language_models/test_merged_model_perplexity_llama-3.1-8b.py index 5338371c04..d26771bf8c 100644 --- a/tests/saving/language_models/test_merged_model_perplexity_llama-3.1-8b.py +++ b/tests/saving/language_models/test_merged_model_perplexity_llama-3.1-8b.py @@ -14,8 +14,9 @@ import gc import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) from tests.utils.cleanup_utils import safe_remove_directory from tests.utils.perplexity_eval import ppl_model, add_to_comparison, print_model_comparison diff --git a/tests/saving/language_models/test_merged_model_perplexity_qwen_2.5.py b/tests/saving/language_models/test_merged_model_perplexity_qwen_2.5.py index af8e8eaae4..b80197b182 100644 --- a/tests/saving/language_models/test_merged_model_perplexity_qwen_2.5.py +++ b/tests/saving/language_models/test_merged_model_perplexity_qwen_2.5.py @@ -14,8 +14,9 @@ import gc import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) from tests.utils.cleanup_utils import safe_remove_directory from tests.utils.perplexity_eval import ppl_model, add_to_comparison, print_model_comparison diff --git a/tests/saving/language_models/test_push_to_hub_merged.py b/tests/saving/language_models/test_push_to_hub_merged.py index b77048905b..e1c23fa475 100644 --- a/tests/saving/language_models/test_push_to_hub_merged.py +++ b/tests/saving/language_models/test_push_to_hub_merged.py @@ -15,8 +15,9 @@ from huggingface_hub import HfFileSystem, hf_hub_download import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) from tests.utils.cleanup_utils import safe_remove_directory from tests.utils.perplexity_eval import ppl_model, add_to_comparison, print_model_comparison diff --git a/tests/saving/language_models/test_push_to_hub_merged_sharded_index_file.py b/tests/saving/language_models/test_push_to_hub_merged_sharded_index_file.py index 7c31520c45..04bbf2924b 100644 --- a/tests/saving/language_models/test_push_to_hub_merged_sharded_index_file.py +++ b/tests/saving/language_models/test_push_to_hub_merged_sharded_index_file.py @@ -15,8 +15,9 @@ from huggingface_hub import HfFileSystem, hf_hub_download import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) from tests.utils.cleanup_utils import safe_remove_directory from tests.utils.perplexity_eval import ppl_model, add_to_comparison, print_model_comparison diff --git a/tests/saving/language_models/test_save_merged_grpo_model.py b/tests/saving/language_models/test_save_merged_grpo_model.py index 35b6f65ccf..0bbb7ffd4c 100644 --- a/tests/saving/language_models/test_save_merged_grpo_model.py +++ b/tests/saving/language_models/test_save_merged_grpo_model.py @@ -12,8 +12,9 @@ from pathlib import Path import multiprocessing as mp import gc from multiprocessing import Queue + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) from tests.utils.cleanup_utils import safe_remove_directory from tests.utils.aime_eval import evaluate_model_aime, compare_aime_results diff --git a/tests/saving/non_peft/test_mistral_non_peft.py b/tests/saving/non_peft/test_mistral_non_peft.py new file mode 100644 index 0000000000..7308151305 --- /dev/null +++ b/tests/saving/non_peft/test_mistral_non_peft.py @@ -0,0 +1,67 @@ +from unsloth import FastLanguageModel +from transformers import AutoModelForCausalLM +from peft import PeftModel +from pathlib import Path +import sys +import warnings + +REPO_ROOT = Path(__file__).parents[3] +sys.path.insert(0, str(REPO_ROOT)) + +from tests.utils.cleanup_utils import safe_remove_directory + + +print(f"\n{'='*80}") +print("๐Ÿ” PHASE 1: Loading Base Model") +print(f"{'='*80}") + +model, tokenizer = FastLanguageModel.from_pretrained( + model_name="unsloth/mistral-7b-v0.3", + max_seq_length=2048, + dtype=None, + load_in_4bit=True, + load_in_8bit=False, + full_finetuning=False, + ) + + +print("โœ… Base model loaded successfully!") + +### Attemtping save merge + + + +print(f"\n{'='*80}") +print("๐Ÿ” PHASE 2: Attempting save_pretrained_merged (Should Warn)") +print(f"{'='*80}") + +with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + model.save_pretrained_merged("test_output", tokenizer) + + # Verify warning + assert len(w) >= 1, "Expected warning but none raised" + warning_msg = str(w[0].message) + expected_msg = "Model is not a PeftModel (no Lora adapters detected). Skipping Merge. Please use save_pretrained() or push_to_hub() instead!" + assert expected_msg in warning_msg, f"Unexpected warning: {warning_msg}" + assert expected_msg in warning_msg, f"Unexpected warning: {warning_msg}" + +print("โœ… Correct warning detected for non-PeftModel merge attempt!") + + + +print(f"\n{'='*80}") +print("๐Ÿ” PHASE 3: Using save_pretrained (Should Succeed)") +print(f"{'='*80}") + + +try: + with warnings.catch_warnings(): + warnings.simplefilter("error") # Treat warnings as errors here + model.save_pretrained("test_output") + print("โœ… Standard save_pretrained completed successfully!") +except Exception as e: + assert False, f"Phase 3 failed: {e}" + +safe_remove_directory("./test_output") +safe_remove_directory("./unsloth_compiled_cache") diff --git a/tests/saving/non_peft/test_whisper_non_peft.py b/tests/saving/non_peft/test_whisper_non_peft.py new file mode 100644 index 0000000000..40321d29b8 --- /dev/null +++ b/tests/saving/non_peft/test_whisper_non_peft.py @@ -0,0 +1,67 @@ +from unsloth import FastLanguageModel, FastModel +from transformers import AutoModelForCausalLM, WhisperForConditionalGeneration +from peft import PeftModel +from pathlib import Path +import sys +import warnings + +REPO_ROOT = Path(__file__).parents[3] +sys.path.insert(0, str(REPO_ROOT)) + +from tests.utils.cleanup_utils import safe_remove_directory + + +print(f"\n{'='*80}") +print("๐Ÿ” PHASE 1: Loading Base Model") +print(f"{'='*80}") + +model, tokenizer = FastModel.from_pretrained( + model_name = "unsloth/whisper-large-v3", + dtype = None, # Leave as None for auto detection + load_in_4bit = False, # Set to True to do 4bit quantization which reduces memory + auto_model = WhisperForConditionalGeneration, + whisper_language = "English", + whisper_task = "transcribe", + # token = "hf_...", # use one if using gated models like meta-llama/Llama-2-7b-hf +) + +print("โœ… Base model loaded successfully!") + +### Attemtping save merge + + + +print(f"\n{'='*80}") +print("๐Ÿ” PHASE 2: Attempting save_pretrained_merged (Should Warn)") +print(f"{'='*80}") + +with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + model.save_pretrained_merged("test_output", tokenizer) + + # Verify warning + assert len(w) >= 1, "Expected warning but none raised" + warning_msg = str(w[0].message) + expected_msg = "Model is not a PeftModel (no Lora adapters detected). Skipping Merge. Please use save_pretrained() or push_to_hub() instead!" + assert expected_msg in warning_msg, f"Unexpected warning: {warning_msg}" + assert expected_msg in warning_msg, f"Unexpected warning: {warning_msg}" + +print("โœ… Correct warning detected for non-PeftModel merge attempt!") + + + +print(f"\n{'='*80}") +print("๐Ÿ” PHASE 3: Using save_pretrained (Should Succeed)") +print(f"{'='*80}") + + +try: + with warnings.catch_warnings(): + warnings.simplefilter("error") # Treat warnings as errors here + model.save_pretrained("test_output") + print("โœ… Standard save_pretrained completed successfully!") +except Exception as e: + assert False, f"Phase 3 failed: {e}" + +safe_remove_directory("./test_output") +safe_remove_directory("./unsloth_compiled_cache") diff --git a/tests/saving/text_to_speech_models/test_csm.py b/tests/saving/text_to_speech_models/test_csm.py new file mode 100644 index 0000000000..c3703cacfb --- /dev/null +++ b/tests/saving/text_to_speech_models/test_csm.py @@ -0,0 +1,156 @@ +from unsloth import FastLanguageModel, FastModel +from transformers import CsmForConditionalGeneration +import torch +# ruff: noqa +import sys +from pathlib import Path +from peft import PeftModel +import warnings +import requests + +REPO_ROOT = Path(__file__).parents[3] +sys.path.insert(0, str(REPO_ROOT)) + +from tests.utils.cleanup_utils import safe_remove_directory +from tests.utils.os_utils import require_package, require_python_package + +require_package("ffmpeg", "ffmpeg") +require_python_package("soundfile") + +import soundfile as sf + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 1: Loading Model and LoRA Adapters") +print(f"{'='*80}") + + +model, tokenizer = FastModel.from_pretrained( + model_name = "unsloth/csm-1b", + max_seq_length= 2048, # Choose any for long context! + dtype = None, # Leave as None for auto-detection + auto_model = CsmForConditionalGeneration, + load_in_4bit = False, # Select True for 4bit - reduces memory usage +) + + +base_model_class = model.__class__.__name__ + + +model = FastModel.get_peft_model( + model, + r = 32, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128 + target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", + "gate_proj", "up_proj", "down_proj",], + lora_alpha = 32, + lora_dropout = 0, # Supports any, but = 0 is optimized + bias = "none", # Supports any, but = "none" is optimized + # [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes! + use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context + random_state = 3407, + use_rslora = False, # We support rank stabilized LoRA + loftq_config = None, # And LoftQ +) + +print("โœ… Model and LoRA adapters loaded successfully!") + + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 2: Checking Model Class Type") +print(f"{'='*80}") + +assert isinstance(model, PeftModel), "Model should be an instance of PeftModel" +print("โœ… Model is an instance of PeftModel!") + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 3: Checking Config Model Class Type") +print(f"{'='*80}") + +def find_lora_base_model(model_to_inspect): + current = model_to_inspect + if hasattr(current, "base_model"): + current = current.base_model + if hasattr(current, "model"): + current = current.model + return current +pass + + +config_model = find_lora_base_model(model) if isinstance(model, PeftModel) else model + +assert config_model.__class__.__name__ == base_model_class, f"Expected config_model class to be {base_model_class}" +print("โœ… config_model returns correct Base Model class:", str(base_model_class)) + + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 4: Saving and Merging Model") +print(f"{'='*80}") + +with warnings.catch_warnings(): + warnings.simplefilter("error") # Treat warnings as errors + try: + model.save_pretrained_merged("csm", tokenizer) + print("โœ… Model saved and merged successfully without warnings!") + except Exception as e: + assert False, f"Model saving/merging failed with exception: {e}" + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 5: Loading Model for Inference") +print(f"{'='*80}") + + +model, processor = FastModel.from_pretrained( + model_name = "./csm", + max_seq_length= 2048, # Choose any for long context! + dtype = None, # Leave as None for auto-detection + auto_model = CsmForConditionalGeneration, + load_in_4bit = False, # Select True for 4bit - reduces memory usage +) + +from transformers import AutoProcessor +processor = AutoProcessor.from_pretrained("unsloth/csm-1b") + +print("โœ… Model loaded for inference successfully!") + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 6: Running Inference") +print(f"{'='*80}") + + +from transformers import pipeline +import torch +output_audio_path = "csm_audio.wav" +try: + text = "We just finished fine tuning a text to speech model... and it's pretty good!" + speaker_id = 0 + inputs = processor(f"[{speaker_id}]{text}", add_special_tokens=True).to("cuda") + audio_values = model.generate( + **inputs, + max_new_tokens=125, # 125 tokens is 10 seconds of audio, for longer speech increase this + # play with these parameters to get the best results + depth_decoder_temperature=0.6, + depth_decoder_top_k=0, + depth_decoder_top_p=0.9, + temperature=0.8, + top_k=50, + top_p=1.0, + ######################################################### + output_audio=True + ) + audio = audio_values[0].to(torch.float32).cpu().numpy() + sf.write("example_without_context.wav", audio, 24000) + print(f"โœ… Audio generated and saved to {output_audio_path}!") +except Exception as e: + assert False, f"Inference failed with exception: {e}" + + +## assert that transcribed_text contains The birch canoe slid on the smooth planks. Glued the sheet to the dark blue background. It's easy to tell the depth of a well. Four hours of steady work faced us. + +print("โœ… All sections passed successfully!") + + +safe_remove_directory("./unsloth_compiled_cache") +safe_remove_directory("./csm") diff --git a/tests/saving/text_to_speech_models/test_lasa.py b/tests/saving/text_to_speech_models/test_lasa.py new file mode 100644 index 0000000000..a4bc5eda84 --- /dev/null +++ b/tests/saving/text_to_speech_models/test_lasa.py @@ -0,0 +1,217 @@ +from unsloth import FastLanguageModel, FastModel +from transformers import CsmForConditionalGeneration +import torch +# ruff: noqa +import sys +from pathlib import Path +from peft import PeftModel +import warnings +import requests + + +REPO_ROOT = Path(__file__).parents[3] +sys.path.insert(0, str(REPO_ROOT)) + + +from tests.utils.cleanup_utils import safe_remove_directory +from tests.utils.os_utils import require_package, require_python_package + +require_package("ffmpeg", "ffmpeg") +require_python_package("soundfile") +require_python_package("xcodec2") + +import soundfile as sf +from xcodec2.modeling_xcodec2 import XCodec2Model +XCODEC2_MODEL_NAME = "HKUST-Audio/xcodec2" +SAMPLE_RATE = 16000 +DEVICE = "cuda" + +try: + codec_model = XCodec2Model.from_pretrained(XCODEC2_MODEL_NAME) + +except Exception as e: + raise f"ERROR loading XCodec2 model: {e}." + +codec_model.to('cpu') + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 1: Loading Model and LoRA Adapters") +print(f"{'='*80}") + +max_seq_length = 2048 +model, tokenizer = FastLanguageModel.from_pretrained( + model_name = "unsloth/Llasa-1B", + max_seq_length = max_seq_length, + dtype = None, # Select None for auto detection + load_in_4bit = False, # Choose True for 4bit which reduces memory + # token = "hf_...", # use one if using gated models like meta-llama/Llama-2-7b-hf +) + +base_model_class = model.__class__.__name__ + + +model = FastLanguageModel.get_peft_model( + model, + r = 128, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128 + target_modules = ["q_proj", "v_proj"], + lora_alpha = 128, + lora_dropout = 0, # Supports any, but = 0 is optimized + bias = "none", # Supports any, but = "none" is optimized + # [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes! + use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context + random_state = 3407, + use_rslora = False, # We support rank stabilized LoRA + loftq_config = None, # And LoftQ +) + +print("โœ… Model and LoRA adapters loaded successfully!") + + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 2: Checking Model Class Type") +print(f"{'='*80}") + +assert isinstance(model, PeftModel), "Model should be an instance of PeftModel" +print("โœ… Model is an instance of PeftModel!") + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 3: Checking Config Model Class Type") +print(f"{'='*80}") + +def find_lora_base_model(model_to_inspect): + current = model_to_inspect + if hasattr(current, "base_model"): + current = current.base_model + if hasattr(current, "model"): + current = current.model + return current +pass + + +config_model = find_lora_base_model(model) if isinstance(model, PeftModel) else model + +assert config_model.__class__.__name__ == base_model_class, f"Expected config_model class to be {base_model_class}" +print("โœ… config_model returns correct Base Model class:", str(base_model_class)) + + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 4: Saving and Merging Model") +print(f"{'='*80}") + +with warnings.catch_warnings(): + warnings.simplefilter("error") # Treat warnings as errors + try: + model.save_pretrained_merged("lasa", tokenizer) + print("โœ… Model saved and merged successfully without warnings!") + except Exception as e: + assert False, f"Model saving/merging failed with exception: {e}" + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 5: Loading Model for Inference") +print(f"{'='*80}") + + +model, tokenizer = FastLanguageModel.from_pretrained( + model_name = "./lasa", + max_seq_length = max_seq_length, + dtype = None, # Select None for auto detection + load_in_4bit = False, # Choose True for 4bit which reduces memory + # token = "hf_...", # use one if using gated models like meta-llama/Llama-2-7b-hf +) + +#from transformers import AutoProcessor +#processor = AutoProcessor.from_pretrained("unsloth/csm-1b") + +print("โœ… Model loaded for inference successfully!") + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 6: Running Inference") +print(f"{'='*80}") + + +from transformers import pipeline +import torch +output_audio_path = "lasa_audio.wav" +input_text = "Hey there my name is Elise, and I'm a speech generation model that can sound like a person." + +FastLanguageModel.for_inference(model) + +def ids_to_speech_tokens(speech_ids): + + speech_tokens_str = [] + for speech_id in speech_ids: + speech_tokens_str.append(f"<|s_{speech_id}|>") + return speech_tokens_str + +def extract_speech_ids(speech_tokens_str): + + speech_ids = [] + for token_str in speech_tokens_str: + if token_str.startswith('<|s_') and token_str.endswith('|>'): + num_str = token_str[4:-2] + + num = int(num_str) + speech_ids.append(num) + else: + print(f"Unexpected token: {token_str}") + return speech_ids + +#TTS start! +with torch.inference_mode(): + with torch.amp.autocast('cuda',dtype=model.dtype): + formatted_text = f"<|TEXT_UNDERSTANDING_START|>{input_text}<|TEXT_UNDERSTANDING_END|>" + + # Tokenize the text + chat = [ + {"role": "user", "content": "Convert the text to speech:" + formatted_text}, + {"role": "assistant", "content": "<|SPEECH_GENERATION_START|>"} + ] + + input_ids = tokenizer.apply_chat_template( + chat, + tokenize=True, + return_tensors='pt', + continue_final_message=True + ) + input_ids = input_ids.to('cuda') + + speech_end_id = tokenizer.convert_tokens_to_ids('<|SPEECH_GENERATION_END|>') + + # Generate the speech autoregressively + outputs = model.generate( + input_ids, + max_length=2048, # We trained our model with a max length of 2048 + eos_token_id= speech_end_id , + do_sample=True, + top_p=1.2, # Adjusts the diversity of generated content + temperature=1.2, # Controls randomness in output + ) + # Extract the speech tokens + generated_ids = outputs[0][input_ids.shape[1]:-1] + + speech_tokens = tokenizer.batch_decode(generated_ids, skip_special_tokens=True) + + # Convert token <|s_23456|> to int 23456 + speech_tokens = extract_speech_ids(speech_tokens) + + speech_tokens = torch.tensor(speech_tokens).cpu().unsqueeze(0).unsqueeze(0) + + # Decode the speech tokens to speech waveform + gen_wav = codec_model.decode_code(speech_tokens) +try: + sf.write(output_audio_path, gen_wav[0, 0, :].cpu().numpy(), 16000) +except Exception as e: + assert False, f"Inference failed with exception: {e}" + + +## assert that transcribed_text contains The birch canoe slid on the smooth planks. Glued the sheet to the dark blue background. It's easy to tell the depth of a well. Four hours of steady work faced us. + +print("โœ… All sections passed successfully!") + + +safe_remove_directory("./unsloth_compiled_cache") +safe_remove_directory("./lasa") diff --git a/tests/saving/text_to_speech_models/test_orpheus.py b/tests/saving/text_to_speech_models/test_orpheus.py new file mode 100644 index 0000000000..813a80aac4 --- /dev/null +++ b/tests/saving/text_to_speech_models/test_orpheus.py @@ -0,0 +1,254 @@ +from unsloth import FastLanguageModel, FastModel +from transformers import CsmForConditionalGeneration +import torch +# ruff: noqa +import sys +from pathlib import Path +from peft import PeftModel +import warnings +import requests + +REPO_ROOT = Path(__file__).parents[3] +sys.path.insert(0, str(REPO_ROOT)) + +from tests.utils.cleanup_utils import safe_remove_directory +from tests.utils.os_utils import require_package, require_python_package + +require_package("ffmpeg", "ffmpeg") +require_python_package("soundfile") +require_python_package("snac") + +import soundfile as sf +from snac import SNAC +snac_model = SNAC.from_pretrained("hubertsiuzdak/snac_24khz") +snac_model = snac_model.to("cuda") +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 1: Loading Model and LoRA Adapters") +print(f"{'='*80}") + + +model, tokenizer = FastLanguageModel.from_pretrained( + model_name = "unsloth/orpheus-3b-0.1-ft", + max_seq_length= 2048, # Choose any for long context! + dtype = None, # Select None for auto detection + load_in_4bit = False, # Select True for 4bit which reduces memory usage + # token = "hf_...", # use one if using gated models like meta-llama/Llama-2-7b-hf +) + +base_model_class = model.__class__.__name__ + + +model = FastLanguageModel.get_peft_model( + model, + r = 64, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128 + target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", + "gate_proj", "up_proj", "down_proj",], + lora_alpha = 64, + lora_dropout = 0, # Supports any, but = 0 is optimized + bias = "none", # Supports any, but = "none" is optimized + # [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes! + use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context + random_state = 3407, + use_rslora = False, # We support rank stabilized LoRA + loftq_config = None, # And LoftQ +) +print("โœ… Model and LoRA adapters loaded successfully!") + + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 2: Checking Model Class Type") +print(f"{'='*80}") + +assert isinstance(model, PeftModel), "Model should be an instance of PeftModel" +print("โœ… Model is an instance of PeftModel!") + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 3: Checking Config Model Class Type") +print(f"{'='*80}") + +def find_lora_base_model(model_to_inspect): + current = model_to_inspect + if hasattr(current, "base_model"): + current = current.base_model + if hasattr(current, "model"): + current = current.model + return current +pass + + +config_model = find_lora_base_model(model) if isinstance(model, PeftModel) else model + +assert config_model.__class__.__name__ == base_model_class, f"Expected config_model class to be {base_model_class}" +print("โœ… config_model returns correct Base Model class:", str(base_model_class)) + + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 4: Saving and Merging Model") +print(f"{'='*80}") + +with warnings.catch_warnings(): + warnings.simplefilter("error") # Treat warnings as errors + try: + model.save_pretrained_merged("orpheus", tokenizer) + print("โœ… Model saved and merged successfully without warnings!") + except Exception as e: + assert False, f"Model saving/merging failed with exception: {e}" + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 5: Loading Model for Inference") +print(f"{'='*80}") + + +model, tokenizer = FastLanguageModel.from_pretrained( + model_name = "unsloth/orpheus-3b-0.1-ft", + max_seq_length= 2048, # Choose any for long context! + dtype = None, # Select None for auto detection + load_in_4bit = False, # Select True for 4bit which reduces memory usage + # token = "hf_...", # use one if using gated models like meta-llama/Llama-2-7b-hf +) + +#from transformers import AutoProcessor +#processor = AutoProcessor.from_pretrained("unsloth/csm-1b") + +print("โœ… Model loaded for inference successfully!") + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 6: Running Inference") +print(f"{'='*80}") + + +#@title Run Inference + + +FastLanguageModel.for_inference(model) # Enable native 2x faster inference + +# Moving snac_model cuda to cpu +snac_model.to("cpu") +prompts = [ + "Hey there my name is Elise, and I'm a speech generation model that can sound like a person.", +] + +chosen_voice = None # None for single-speaker + +prompts_ = [(f"{chosen_voice}: " + p) if chosen_voice else p for p in prompts] + +all_input_ids = [] + +for prompt in prompts_: + input_ids = tokenizer(prompt, return_tensors="pt").input_ids + all_input_ids.append(input_ids) + +start_token = torch.tensor([[ 128259]], dtype=torch.int64) # Start of human +end_tokens = torch.tensor([[128009, 128260]], dtype=torch.int64) # End of text, End of human + +all_modified_input_ids = [] +for input_ids in all_input_ids: + modified_input_ids = torch.cat([start_token, input_ids, end_tokens], dim=1) # SOH SOT Text EOT EOH + all_modified_input_ids.append(modified_input_ids) + +all_padded_tensors = [] +all_attention_masks = [] +max_length = max([modified_input_ids.shape[1] for modified_input_ids in all_modified_input_ids]) +for modified_input_ids in all_modified_input_ids: + padding = max_length - modified_input_ids.shape[1] + padded_tensor = torch.cat([torch.full((1, padding), 128263, dtype=torch.int64), modified_input_ids], dim=1) + attention_mask = torch.cat([torch.zeros((1, padding), dtype=torch.int64), torch.ones((1, modified_input_ids.shape[1]), dtype=torch.int64)], dim=1) + all_padded_tensors.append(padded_tensor) + all_attention_masks.append(attention_mask) + +all_padded_tensors = torch.cat(all_padded_tensors, dim=0) +all_attention_masks = torch.cat(all_attention_masks, dim=0) + +input_ids = all_padded_tensors.to("cuda") +attention_mask = all_attention_masks.to("cuda") +generated_ids = model.generate( + input_ids=input_ids, + attention_mask=attention_mask, + max_new_tokens=1200, + do_sample=True, + temperature=0.6, + top_p=0.95, + repetition_penalty=1.1, + num_return_sequences=1, + eos_token_id=128258, + use_cache = True + ) +token_to_find = 128257 +token_to_remove = 128258 + +token_indices = (generated_ids == token_to_find).nonzero(as_tuple=True) + +if len(token_indices[1]) > 0: + last_occurrence_idx = token_indices[1][-1].item() + cropped_tensor = generated_ids[:, last_occurrence_idx+1:] +else: + cropped_tensor = generated_ids + +mask = cropped_tensor != token_to_remove + +processed_rows = [] + +for row in cropped_tensor: + masked_row = row[row != token_to_remove] + processed_rows.append(masked_row) + +code_lists = [] + +for row in processed_rows: + row_length = row.size(0) + new_length = (row_length // 7) * 7 + trimmed_row = row[:new_length] + trimmed_row = [t - 128266 for t in trimmed_row] + code_lists.append(trimmed_row) + + +def redistribute_codes(code_list): + layer_1 = [] + layer_2 = [] + layer_3 = [] + for i in range((len(code_list)+1)//7): + layer_1.append(code_list[7*i]) + layer_2.append(code_list[7*i+1]-4096) + layer_3.append(code_list[7*i+2]-(2*4096)) + layer_3.append(code_list[7*i+3]-(3*4096)) + layer_2.append(code_list[7*i+4]-(4*4096)) + layer_3.append(code_list[7*i+5]-(5*4096)) + layer_3.append(code_list[7*i+6]-(6*4096)) + codes = [torch.tensor(layer_1).unsqueeze(0), + torch.tensor(layer_2).unsqueeze(0), + torch.tensor(layer_3).unsqueeze(0)] + + # codes = [c.to("cuda") for c in codes] + audio_hat = snac_model.decode(codes) + return audio_hat + +my_samples = [] +for code_list in code_lists: + samples = redistribute_codes(code_list) + my_samples.append(samples) +output_path = "orpheus_audio.wav" +try: + for i, samples in enumerate(my_samples): + audio_data = samples.detach().squeeze().cpu().numpy() + import soundfile as sf + sf.write(output_path, audio_data, 24000) # Explicitly pass sample rate + print(f"โœ… Audio saved to {output_path}!") +except Exception as e: + assert False, f"Inference failed with exception: {e}" + +# Verify the file exists +import os +assert os.path.exists(output_path), f"Audio file not found at {output_path}" +print("โœ… Audio file exists on disk!") +del my_samples, samples +## assert that transcribed_text contains The birch canoe slid on the smooth planks. Glued the sheet to the dark blue background. It's easy to tell the depth of a well. Four hours of steady work faced us. + +print("โœ… All sections passed successfully!") + + +safe_remove_directory("./unsloth_compiled_cache") +safe_remove_directory("./orpheus") diff --git a/tests/saving/text_to_speech_models/test_whisper.py b/tests/saving/text_to_speech_models/test_whisper.py new file mode 100644 index 0000000000..f29213c3a7 --- /dev/null +++ b/tests/saving/text_to_speech_models/test_whisper.py @@ -0,0 +1,189 @@ +from unsloth import FastLanguageModel, FastModel +from transformers import WhisperForConditionalGeneration, WhisperProcessor +import torch +# ruff: noqa +import sys +from pathlib import Path +from peft import PeftModel +import warnings +import requests + + +REPO_ROOT = Path(__file__).parents[3] +sys.path.insert(0, str(REPO_ROOT)) + + +from tests.utils.cleanup_utils import safe_remove_directory +from tests.utils.os_utils import require_package, require_python_package + +require_package("ffmpeg", "ffmpeg") +require_python_package("soundfile") + +import soundfile as sf + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 1: Loading Model and LoRA Adapters") +print(f"{'='*80}") + + +model, tokenizer = FastModel.from_pretrained( + model_name = "unsloth/whisper-large-v3", + dtype = None, # Leave as None for auto detection + load_in_4bit = False, # Set to True to do 4bit quantization which reduces memory + auto_model = WhisperForConditionalGeneration, + whisper_language = "English", + whisper_task = "transcribe", + # token = "hf_...", # use one if using gated models like meta-llama/Llama-2-7b-hf +) + + +base_model_class = model.__class__.__name__ +#https://github.com/huggingface/transformers/issues/37172 +model.generation_config.input_ids = model.generation_config.forced_decoder_ids +model.generation_config.forced_decoder_ids = None + + +model = FastModel.get_peft_model( + model, + r = 64, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128 + target_modules = ["q_proj", "v_proj"], + lora_alpha = 64, + lora_dropout = 0, # Supports any, but = 0 is optimized + bias = "none", # Supports any, but = "none" is optimized + # [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes! + use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context + random_state = 3407, + use_rslora = False, # We support rank stabilized LoRA + loftq_config = None, # And LoftQ + task_type = None, # ** MUST set this for Whisper ** +) + +print("โœ… Model and LoRA adapters loaded successfully!") + + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 2: Checking Model Class Type") +print(f"{'='*80}") + +assert isinstance(model, PeftModel), "Model should be an instance of PeftModel" +print("โœ… Model is an instance of PeftModel!") + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 3: Checking Config Model Class Type") +print(f"{'='*80}") + +def find_lora_base_model(model_to_inspect): + current = model_to_inspect + if hasattr(current, "base_model"): + current = current.base_model + if hasattr(current, "model"): + current = current.model + return current +pass + + +config_model = find_lora_base_model(model) if isinstance(model, PeftModel) else model + +assert config_model.__class__.__name__ == base_model_class, f"Expected config_model class to be {base_model_class}" +print("โœ… config_model returns correct Base Model class:", str(base_model_class)) + + + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 4: Saving and Merging Model") +print(f"{'='*80}") + +with warnings.catch_warnings(): + warnings.simplefilter("error") # Treat warnings as errors + try: + model.save_pretrained_merged("whisper", tokenizer) + print("โœ… Model saved and merged successfully without warnings!") + except Exception as e: + assert False, f"Model saving/merging failed with exception: {e}" + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 5: Loading Model for Inference") +print(f"{'='*80}") + + +model, tokenizer = FastModel.from_pretrained( + model_name = "./whisper", + dtype = None, # Leave as None for auto detection + load_in_4bit = False, # Set to True to do 4bit quantization which reduces memory + auto_model = WhisperForConditionalGeneration, + whisper_language = "English", + whisper_task = "transcribe", + # token = "hf_...", # use one if using gated models like meta-llama/Llama-2-7b-hf +) + +# model = WhisperForConditionalGeneration.from_pretrained("./whisper") +# processor = WhisperProcessor.from_pretrained("./whisper") + +print("โœ… Model loaded for inference successfully!") + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 6: Downloading Sample Audio File") +print(f"{'='*80}") + +audio_url = "https://upload.wikimedia.org/wikipedia/commons/5/5b/Speech_12dB_s16.flac" +audio_file = "Speech_12dB_s16.flac" + +try: + headers = { + "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" + } + response = requests.get(audio_url, headers=headers) + response.raise_for_status() + with open(audio_file, "wb") as f: + f.write(response.content) + print("โœ… Audio file downloaded successfully!") +except Exception as e: + assert False, f"Failed to download audio file: {e}" + +print(f"\n{'='*80}") +print("๐Ÿ” SECTION 7: Running Inference") +print(f"{'='*80}") + + +from transformers import pipeline +import torch +FastModel.for_inference(model) +model.eval() +#Create pipeline without specifying the device +whisper = pipeline( + "automatic-speech-recognition", + model=model, + tokenizer=tokenizer.tokenizer, + feature_extractor=tokenizer.feature_extractor, + processor=tokenizer, + return_language=True, + torch_dtype=torch.float16 # Remove the device parameter +) +# Example usage +audio_file = "Speech_12dB_s16.flac" +transcribed_text = whisper(audio_file) +# audio, sr = sf.read(audio_file) +# input_features = processor(audio, return_tensors="pt").input_features +# transcribed_text = model.generate(input_features=input_features) +print(f"๐Ÿ“ Transcribed Text: {transcribed_text['text']}") + +## assert that transcribed_text contains The birch canoe slid on the smooth planks. Glued the sheet to the dark blue background. It's easy to tell the depth of a well. Four hours of steady work faced us. + +expected_phrases = [ + "birch canoe slid on the smooth planks", + "sheet to the dark blue background", + "easy to tell the depth of a well", + "Four hours of steady work faced us", +] + +transcribed_lower = transcribed_text["text"].lower() +all_phrases_found = all(phrase.lower() in transcribed_lower for phrase in expected_phrases) + +assert all_phrases_found, f"Expected phrases not found in transcription: {transcribed_text['text']}" +print("โœ… Transcription contains all expected phrases!") + + +safe_remove_directory("./unsloth_compiled_cache") +safe_remove_directory("./whisper") diff --git a/tests/saving/vision_models/test_index_file_sharded_model.py b/tests/saving/vision_models/test_index_file_sharded_model.py index 71dfe24362..09c4bb19e1 100644 --- a/tests/saving/vision_models/test_index_file_sharded_model.py +++ b/tests/saving/vision_models/test_index_file_sharded_model.py @@ -11,8 +11,9 @@ from huggingface_hub import HfFileSystem import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) from tests.utils.cleanup_utils import safe_remove_directory diff --git a/tests/saving/vision_models/test_push_to_hub_merged.py b/tests/saving/vision_models/test_push_to_hub_merged.py index 9845c3e1d0..372d225732 100644 --- a/tests/saving/vision_models/test_push_to_hub_merged.py +++ b/tests/saving/vision_models/test_push_to_hub_merged.py @@ -11,8 +11,10 @@ from trl import SFTTrainer, SFTConfig import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) + from tests.utils.cleanup_utils import safe_remove_directory diff --git a/tests/saving/vision_models/test_save_merge_vision_model_ocr_benchmark.py b/tests/saving/vision_models/test_save_merge_vision_model_ocr_benchmark.py index 8f2617e556..e556f62465 100644 --- a/tests/saving/vision_models/test_save_merge_vision_model_ocr_benchmark.py +++ b/tests/saving/vision_models/test_save_merge_vision_model_ocr_benchmark.py @@ -11,8 +11,9 @@ from trl import SFTTrainer, SFTConfig import sys from pathlib import Path + REPO_ROOT = Path(__file__).parents[3] -sys.path.append(str(REPO_ROOT)) +sys.path.insert(0, str(REPO_ROOT)) from tests.utils.cleanup_utils import safe_remove_directory from tests.utils.ocr_eval import OCRModelEvaluator diff --git a/tests/utils/os_utils.py b/tests/utils/os_utils.py new file mode 100644 index 0000000000..281fcdbaf5 --- /dev/null +++ b/tests/utils/os_utils.py @@ -0,0 +1,119 @@ +import subprocess +import sys +import os +import shutil +import importlib + +def detect_package_manager(): + """Detect the available package manager""" + package_managers = { + 'apt': '/usr/bin/apt', + 'yum': '/usr/bin/yum', + 'dnf': '/usr/bin/dnf', + 'pacman': '/usr/bin/pacman', + 'zypper': '/usr/bin/zypper' + } + + for pm, path in package_managers.items(): + if os.path.exists(path): + return pm + return None + +def check_package_installed(package_name, package_manager=None): + """Check if a package is installed using the system package manager""" + + if package_manager is None: + package_manager = detect_package_manager() + + if package_manager is None: + print("Warning: Could not detect package manager") + return None + + try: + if package_manager == 'apt': + # Check with dpkg + result = subprocess.run(['dpkg', '-l', package_name], + capture_output=True, text=True) + return result.returncode == 0 + + elif package_manager in ['yum', 'dnf']: + # Check with rpm + result = subprocess.run(['rpm', '-q', package_name], + capture_output=True, text=True) + return result.returncode == 0 + + elif package_manager == 'pacman': + result = subprocess.run(['pacman', '-Q', package_name], + capture_output=True, text=True) + return result.returncode == 0 + + elif package_manager == 'zypper': + result = subprocess.run(['zypper', 'se', '-i', package_name], + capture_output=True, text=True) + return package_name in result.stdout + + except Exception as e: + print(f"Error checking package: {e}") + return None + +def require_package(package_name, executable_name=None): + """Require a package to be installed, exit if not found""" + + # First check if executable is in PATH (most reliable) + if executable_name: + if shutil.which(executable_name): + print(f"โœ“ {executable_name} is available") + return + + # Then check with package manager + pm = detect_package_manager() + is_installed = check_package_installed(package_name, pm) + + if is_installed: + print(f"โœ“ Package {package_name} is installed") + return + + # Package not found - show installation instructions + print(f"โŒ Error: {package_name} is not installed") + print(f"\nPlease install {package_name} using your system package manager:") + + install_commands = { + 'apt': f"sudo apt update && sudo apt install {package_name}", + 'yum': f"sudo yum install {package_name}", + 'dnf': f"sudo dnf install {package_name}", + 'pacman': f"sudo pacman -S {package_name}", + 'zypper': f"sudo zypper install {package_name}" + } + + if pm and pm in install_commands: + print(f" {install_commands[pm]}") + else: + for pm_name, cmd in install_commands.items(): + print(f" {pm_name}: {cmd}") + + print(f"\nAlternatively, install with conda:") + print(f" conda install -c conda-forge {package_name}") + + print(f"\nPlease install the required package and run the script again.") + sys.exit(1) + +# Usage +#require_package("ffmpeg", "ffmpeg") + +def require_python_package(package_name, import_name=None, pip_name=None): + """Require a Python package to be installed, exit if not found""" + if import_name is None: + import_name = package_name + if pip_name is None: + pip_name = package_name + + if importlib.util.find_spec(import_name) is None: + print(f"โŒ Error: Python package '{package_name}' is not installed") + print(f"\nPlease install {package_name} using pip:") + print(f" pip install {pip_name}") + print(f" # or with conda:") + print(f" conda install {pip_name}") + print(f"\nAfter installation, run this script again.") + sys.exit(1) + else: + print(f"โœ“ Python package '{package_name}' is installed") From 701692fcfaa05f4016f8dda097598ff447e830f3 Mon Sep 17 00:00:00 2001 From: Michael Han <107991372+shimmyshimmer@users.noreply.github.com> Date: Thu, 12 Jun 2025 01:23:36 -0700 Subject: [PATCH 06/22] Update issue templates Adding Reddit link --- .github/ISSUE_TEMPLATE/bug---issue.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug---issue.md b/.github/ISSUE_TEMPLATE/bug---issue.md index ff508cfb91..28495385bb 100644 --- a/.github/ISSUE_TEMPLATE/bug---issue.md +++ b/.github/ISSUE_TEMPLATE/bug---issue.md @@ -15,5 +15,4 @@ assignees: '' 6. Which trainer? `SFTTrainer`, `GRPOTrainer` etc 7. **Minimal code to reproduce error Remove Hugging Face token!** -You can also join our Discord: https://discord.com/invite/unsloth -Have you tried visiting our Docs? https://docs.unsloth.ai/basics/errors-troubleshooting +๐Ÿฆฅ You can also ask via our Reddit page: https://www.reddit.com/r/unsloth/ From 0270b7166a7c556dacf69c235c5d28c75188e64b Mon Sep 17 00:00:00 2001 From: pluesclues <136766175+pluesclues@users.noreply.github.com> Date: Tue, 17 Jun 2025 07:33:45 -0400 Subject: [PATCH 07/22] Reward modeling update (There seems to be another patch) (#2710) * Update llama.py, sequence_classifcaiton update * Update llama.py, adapting to original commit * Update llama.py, for seqeuence classifcation update * Update llama.py, added transformer import * Update llama.py, dealt with output weight * Update llama.py, renamed it peft model fast forward * Update llama.py, set up is classification varaiable * Update llama.py, updated lora dict to initialize sequence classification object * Update llama.py, gets model name correctly before Lora dict is initialized * Update llama.py, Task_type_SEQ_CLS doesnt work but it does work with Task_type.CAUSAL_LM --- unsloth/models/llama.py | 75 ++++++++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 19 deletions(-) diff --git a/unsloth/models/llama.py b/unsloth/models/llama.py index cba8a68565..9c2cdb5689 100644 --- a/unsloth/models/llama.py +++ b/unsloth/models/llama.py @@ -65,7 +65,7 @@ except: LlamaFlashAttention2 = LlamaAttention pass -from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, AutoConfig +from transformers import AutoTokenizer, AutoModelForCausalLM, AutoModelForSequenceClassification, BitsAndBytesConfig, AutoConfig from transformers.models.auto.modeling_auto import MODEL_FOR_CAUSAL_LM_MAPPING from transformers import set_seed as transformers_set_seed from peft import LoraConfig, TaskType, get_peft_model as _get_peft_model @@ -1242,7 +1242,7 @@ pass @torch._disable_dynamo -def PeftModelForCausalLM_fast_forward( +def PeftModel_fast_forward( self, input_ids = None, causal_mask = None, @@ -1257,19 +1257,33 @@ def PeftModelForCausalLM_fast_forward( logits_to_keep = 0, **kwargs, ): - return self.base_model( - input_ids = input_ids, - causal_mask = causal_mask, - attention_mask = attention_mask, - inputs_embeds = inputs_embeds, - labels = labels, - output_attentions = output_attentions, - output_hidden_states = output_hidden_states, - return_dict = return_dict, - num_logits_to_keep = num_logits_to_keep, - logits_to_keep = logits_to_keep, - **kwargs, - ) + is_classification = "Classification" in str(type( self.base_model.model)) + if is_classification: + #causal_mask = causal_mask, + return self.base_model( + input_ids = input_ids, + attention_mask = attention_mask, + inputs_embeds = inputs_embeds, + labels = labels, + output_attentions = output_attentions, + output_hidden_states = output_hidden_states, + return_dict = return_dict, + **kwargs, + ) + else: + return self.base_model( + input_ids = input_ids, + causal_mask = causal_mask, + attention_mask = attention_mask, + inputs_embeds = inputs_embeds, + labels = labels, + output_attentions = output_attentions, + output_hidden_states = output_hidden_states, + return_dict = return_dict, + num_logits_to_keep = num_logits_to_keep, + logits_to_keep = logits_to_keep, + **kwargs, + ) pass @@ -1667,7 +1681,7 @@ class FastLlamaModel: LlamaDecoderLayer .forward = LlamaDecoderLayer_fast_forward LlamaModel .forward = LlamaModel_fast_forward LlamaForCausalLM .forward = CausalLM_fast_forward(LlamaModel_fast_forward_inference) - PeftModelForCausalLM.forward = PeftModelForCausalLM_fast_forward + PeftModelForCausalLM.forward = PeftModel_fast_forward fix_prepare_inputs_for_generation(LlamaForCausalLM) # Solves https://github.com/unslothai/unsloth/issues/168 @@ -1695,6 +1709,7 @@ class FastLlamaModel: model_patcher = None, tokenizer_name = None, trust_remote_code = False, + revision = None, fast_inference = False, # uses vLLM gpu_memory_utilization = 0.5, @@ -1702,6 +1717,7 @@ class FastLlamaModel: random_state = 3407, max_lora_rank = 16, disable_log_stats = False, + num_labels = None, **kwargs, ): os.environ["UNSLOTH_USE_NEW_MODEL"] = "0" @@ -1836,7 +1852,20 @@ class FastLlamaModel: # Cannot be None, since HF now checks for the config if load_in_4bit: kwargs["quantization_config"] = bnb_config - if not fast_inference: + if num_labels is not None: + model = AutoModelForSequenceClassification.from_pretrained( + model_name, + device_map = device_map, + torch_dtype = dtype, + num_labels = num_labels, + #quantization_config = bnb_config, + token = token, + max_position_embeddings = max_position_embeddings, + trust_remote_code = trust_remote_code, + attn_implementation = "eager", + **kwargs, + ) + elif not fast_inference: model = AutoModelForCausalLM.from_pretrained( model_name, device_map = device_map, @@ -2391,7 +2420,12 @@ class FastLlamaModel: raise NotImplementedError("Unsloth: Currently fast inference does not work with using biases for LoRA.") pass + #does not get lora yet, so get name from model, not base model + + is_classification = "Classification" in str(type(model)) # Get LoRA + # if not is_classification else TaskType.SEQ_CLS + arguments = dict( r = r, lora_alpha = lora_alpha, @@ -2414,8 +2448,11 @@ class FastLlamaModel: lora_config = LoraConfig(**arguments) # First offload lm_head and embed_tokens to disk - input_embeddings_device = model. get_input_embeddings().weight.device - output_embeddings_device = model.get_output_embeddings().weight.device + input_embeddings_device = model.get_input_embeddings().weight.device + if is_classification: + output_embeddings_device = model.score.weight.device + else: + output_embeddings_device = model.get_output_embeddings().weight.device if use_gradient_checkpointing == "unsloth": if train_embed_tokens: From 8a192b7d727ea98890eb1d77f47ff2d2140b77e4 Mon Sep 17 00:00:00 2001 From: leopardracer <136604165+leopardracer@users.noreply.github.com> Date: Tue, 17 Jun 2025 14:34:51 +0300 Subject: [PATCH 08/22] Fix Typos in Documentation and Comments (#2721) * Update ocr_eval.md * Update backward.py --- tests/utils/ocr_eval.md | 2 +- unsloth/kernels/moe/grouped_gemm/kernels/backward.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/utils/ocr_eval.md b/tests/utils/ocr_eval.md index e3e0619f6b..97dbe6dd60 100644 --- a/tests/utils/ocr_eval.md +++ b/tests/utils/ocr_eval.md @@ -87,7 +87,7 @@ for config_name, params in configs.items(): evaluator.print_model_comparison() ``` -### Handwritting Recognition +### Handwriting Recognition ```python # Specialized evaluation for handwriting def evaluate_handwriting_models(models, handwriting_dataset): diff --git a/unsloth/kernels/moe/grouped_gemm/kernels/backward.py b/unsloth/kernels/moe/grouped_gemm/kernels/backward.py index 962e9997b4..ba35ee6993 100644 --- a/unsloth/kernels/moe/grouped_gemm/kernels/backward.py +++ b/unsloth/kernels/moe/grouped_gemm/kernels/backward.py @@ -30,7 +30,7 @@ dX backward kernel `fused_mul` notes: - In the forward pass, if we used the multiplication of topk weights (e.g., in the second grouped GEMM in fused MoE MLP), we need to make a few additional changes: 1) We load topk_weights in natural (token) order. Since we only enable `fuse_mul` when permuting on store (`permute_y`), we multiply grad_output by topk_weights before backpropagating - 2) We need to calculate the gradient of the topk_weights. This gets messy since we need do an additioanl elementwise multiplication in the GEMM main loop and then write out in unpermuted order. For now, we do not fuse this step but calculate as a simple + 2) We need to calculate the gradient of the topk_weights. This gets messy since we need do an additional elementwise multiplication in the GEMM main loop and then write out in unpermuted order. For now, we do not fuse this step but calculate as a simple Invalid combinations: - permute_y and use_tma_load: permuting y on store in forward -> load in permuted order in backward, therefore can't use TMA load (unless Blackwell which supports gather / scatter TMA) From 3a7cf48532f21e648107ba38c8a3321a0c274a25 Mon Sep 17 00:00:00 2001 From: Edd <68678137+Erland366@users.noreply.github.com> Date: Thu, 19 Jun 2025 04:38:36 +0800 Subject: [PATCH 09/22] Fix renaming on other model than Llama (#2762) --- unsloth/models/cohere.py | 2 +- unsloth/models/gemma.py | 2 +- unsloth/models/gemma2.py | 2 +- unsloth/models/granite.py | 2 +- unsloth/models/mistral.py | 2 +- unsloth/models/qwen2.py | 2 +- unsloth/models/qwen3.py | 2 +- unsloth/models/qwen3_moe.py | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/unsloth/models/cohere.py b/unsloth/models/cohere.py index 0c36abf681..25704301d1 100644 --- a/unsloth/models/cohere.py +++ b/unsloth/models/cohere.py @@ -466,7 +466,7 @@ class FastCohereModel(FastLlamaModel): CohereDecoderLayer .forward = CohereDecoderLayer_fast_forward CohereModel .forward = LlamaModel_fast_forward CohereForCausalLM .forward = CausalLM_fast_forward(CohereModel_fast_forward_inference) - PeftModelForCausalLM .forward = PeftModelForCausalLM_fast_forward + PeftModelForCausalLM .forward = PeftModel_fast_forward fix_prepare_inputs_for_generation(CohereForCausalLM) import transformers.models.cohere.modeling_cohere diff --git a/unsloth/models/gemma.py b/unsloth/models/gemma.py index 873bdcf2eb..8ad1c7e62d 100644 --- a/unsloth/models/gemma.py +++ b/unsloth/models/gemma.py @@ -332,7 +332,7 @@ class FastGemmaModel(FastLlamaModel): GemmaDecoderLayer .forward = GemmaDecoderLayer_fast_forward GemmaModel .forward = LlamaModel_fast_forward GemmaForCausalLM .forward = CausalLM_fast_forward(GemmaModel_fast_forward_inference) - PeftModelForCausalLM.forward = PeftModelForCausalLM_fast_forward + PeftModelForCausalLM.forward = PeftModel_fast_forward fix_prepare_inputs_for_generation(GemmaForCausalLM) # Solves https://github.com/unslothai/unsloth/issues/168 diff --git a/unsloth/models/gemma2.py b/unsloth/models/gemma2.py index 316b4e8f0e..23b91ff6f3 100644 --- a/unsloth/models/gemma2.py +++ b/unsloth/models/gemma2.py @@ -477,7 +477,7 @@ class FastGemma2Model(FastLlamaModel): Gemma2DecoderLayer .forward = Gemma2DecoderLayer_fast_forward Gemma2Model .forward = LlamaModel_fast_forward Gemma2ForCausalLM .forward = CausalLM_fast_forward(Gemma2Model_fast_forward_inference) - PeftModelForCausalLM .forward = PeftModelForCausalLM_fast_forward + PeftModelForCausalLM .forward = PeftModel_fast_forward fix_prepare_inputs_for_generation(Gemma2ForCausalLM) # Solves https://github.com/unslothai/unsloth/issues/168 diff --git a/unsloth/models/granite.py b/unsloth/models/granite.py index df498d18ba..0f88bbc55e 100644 --- a/unsloth/models/granite.py +++ b/unsloth/models/granite.py @@ -468,7 +468,7 @@ class FastGraniteModel(FastLlamaModel): GraniteModel .forward = LlamaModel_fast_forward GraniteForCausalLM .forward = CausalLM_fast_forward(GraniteModel_fast_forward_inference) GraniteForCausalLM .__init__ = patched_init(GraniteForCausalLM.__init__) - PeftModelForCausalLM .forward = PeftModelForCausalLM_fast_forward + PeftModelForCausalLM .forward = PeftModel_fast_forward fix_prepare_inputs_for_generation(GraniteForCausalLM) import transformers.models.granite.modeling_granite diff --git a/unsloth/models/mistral.py b/unsloth/models/mistral.py index 303c3d9589..ef71c89c4a 100644 --- a/unsloth/models/mistral.py +++ b/unsloth/models/mistral.py @@ -368,7 +368,7 @@ class FastMistralModel(FastLlamaModel): MistralDecoderLayer .forward = LlamaDecoderLayer_fast_forward MistralModel .forward = LlamaModel_fast_forward MistralForCausalLM .forward = MistralForCausalLM_fast_forward - PeftModelForCausalLM .forward = PeftModelForCausalLM_fast_forward + PeftModelForCausalLM .forward = PeftModel_fast_forward fix_prepare_inputs_for_generation(MistralForCausalLM) # Solves https://github.com/unslothai/unsloth/issues/168 diff --git a/unsloth/models/qwen2.py b/unsloth/models/qwen2.py index 82de1951b8..b073913651 100644 --- a/unsloth/models/qwen2.py +++ b/unsloth/models/qwen2.py @@ -55,7 +55,7 @@ class FastQwen2Model(FastLlamaModel): Qwen2DecoderLayer .forward = LlamaDecoderLayer_fast_forward Qwen2Model .forward = LlamaModel_fast_forward Qwen2ForCausalLM .forward = CausalLM_fast_forward(LlamaModel_fast_forward_inference) - PeftModelForCausalLM.forward = PeftModelForCausalLM_fast_forward + PeftModelForCausalLM.forward = PeftModel_fast_forward fix_prepare_inputs_for_generation(Qwen2ForCausalLM) # Solves https://github.com/unslothai/unsloth/issues/168 diff --git a/unsloth/models/qwen3.py b/unsloth/models/qwen3.py index ac3ac108fb..83c9dbea0a 100644 --- a/unsloth/models/qwen3.py +++ b/unsloth/models/qwen3.py @@ -387,7 +387,7 @@ class FastQwen3Model(FastLlamaModel): Qwen3DecoderLayer .forward = LlamaDecoderLayer_fast_forward Qwen3Model .forward = LlamaModel_fast_forward Qwen3ForCausalLM .forward = CausalLM_fast_forward(_LlamaModel_fast_forward_inference(Qwen3Attention_fast_forward_inference)) - PeftModelForCausalLM.forward = PeftModelForCausalLM_fast_forward + PeftModelForCausalLM.forward = PeftModel_fast_forward fix_prepare_inputs_for_generation(Qwen3ForCausalLM) # Solves https://github.com/unslothai/unsloth/issues/168 diff --git a/unsloth/models/qwen3_moe.py b/unsloth/models/qwen3_moe.py index 319e3bffe3..b62a742d98 100644 --- a/unsloth/models/qwen3_moe.py +++ b/unsloth/models/qwen3_moe.py @@ -177,7 +177,7 @@ class FastQwen3MoeModel(FastQwen3Model): Qwen3MoeDecoderLayer .forward = Qwen3MoeDecoderLayer_fast_forward Qwen3MoeModel .forward = LlamaModel_fast_forward Qwen3MoeForCausalLM .forward = CausalLM_fast_forward(LlamaModel_fast_forward_inference) - PeftModelForCausalLM.forward = PeftModelForCausalLM_fast_forward + PeftModelForCausalLM.forward = PeftModel_fast_forward fix_prepare_inputs_for_generation(Qwen3MoeForCausalLM) # Solves https://github.com/unslothai/unsloth/issues/168 From 83f20be8ad998170b6611098e847b9b7c20d418b Mon Sep 17 00:00:00 2001 From: Datta Nimmaturi Date: Thu, 19 Jun 2025 16:34:14 +0530 Subject: [PATCH 10/22] Enable vLLM to share memory space (#2712) * vLLM sleep once generation is done * Make enable_sleep_model configurable * Make default to false Signed-off-by: datta0 * Force standby under environment variable --------- Signed-off-by: datta0 --- unsloth/__init__.py | 2 +- unsloth/models/llama.py | 28 ++++++++++--------- unsloth/models/rl_replacements.py | 45 ++++++++++++++++++++++++++++--- 3 files changed, 58 insertions(+), 17 deletions(-) diff --git a/unsloth/__init__.py b/unsloth/__init__.py index cf4dbe09c0..58c2a19814 100644 --- a/unsloth/__init__.py +++ b/unsloth/__init__.py @@ -89,7 +89,7 @@ DEVICE_TYPE : str = get_device_type() # Reduce VRAM usage by reducing fragmentation # And optimize pinning of memory -if DEVICE_TYPE == "cuda": +if DEVICE_TYPE == "cuda" and os.environ.get("UNSLOTH_VLLM_STANDBY", "0")=="0": os.environ["PYTORCH_CUDA_ALLOC_CONF"] = \ "expandable_segments:True,"\ "roundup_power2_divisions:[32:256,64:128,256:64,>:32]" diff --git a/unsloth/models/llama.py b/unsloth/models/llama.py index 9c2cdb5689..125bc7e610 100644 --- a/unsloth/models/llama.py +++ b/unsloth/models/llama.py @@ -1698,18 +1698,18 @@ class FastLlamaModel: @staticmethod def from_pretrained( - model_name = "unsloth/llama-3-8b-bnb-4bit", - max_seq_length = None, - dtype = None, - load_in_4bit = True, - token = None, - device_map = "sequential", - rope_scaling = None, - fix_tokenizer = True, - model_patcher = None, - tokenizer_name = None, - trust_remote_code = False, - revision = None, + model_name = "unsloth/llama-3-8b-bnb-4bit", + max_seq_length = None, + dtype = None, + load_in_4bit = True, + token = None, + device_map = "sequential", + rope_scaling = None, + fix_tokenizer = True, + model_patcher = None, + tokenizer_name = None, + trust_remote_code = False, + revision = None, fast_inference = False, # uses vLLM gpu_memory_utilization = 0.5, @@ -1717,6 +1717,7 @@ class FastLlamaModel: random_state = 3407, max_lora_rank = 16, disable_log_stats = False, + unsloth_vllm_standby = False, num_labels = None, **kwargs, ): @@ -1737,6 +1738,8 @@ class FastLlamaModel: if major_version < 7: print("Unsloth: vLLM does not work on older GPUs - will switch to Unsloth inference!") fast_inference = False + if unsloth_vllm_standby and os.environ.get("UNSLOTH_VLLM_STANDBY", "0") == "0": + raise RuntimeError("Unsloth: `unsloth_vllm_standby` is True, but environment variable `UNSLOTH_VLLM_STANDBY` is not set to 1!") pass if token is None: token = get_token() @@ -1898,6 +1901,7 @@ class FastLlamaModel: max_lora_rank = max_lora_rank, disable_log_stats = disable_log_stats, use_bitsandbytes = load_in_4bit, + unsloth_vllm_standby = unsloth_vllm_standby, ) for allowed_arg in allowed_args: if allowed_arg not in load_vllm_kwargs and allowed_arg in kwargs: diff --git a/unsloth/models/rl_replacements.py b/unsloth/models/rl_replacements.py index 171e75d197..30dc0d220d 100644 --- a/unsloth/models/rl_replacements.py +++ b/unsloth/models/rl_replacements.py @@ -171,24 +171,61 @@ RL_FUNCTIONS["sft_trainer"].append(sft_trainer_compute_loss) def grpo_trainer__prepare_inputs(function_name, function): if function_name != "_prepare_inputs": return function - if "with torch.inference_mode()" not in function: return function + import re + # Try to find the function signature and insert after it + # This matches the function signature and any decorators/comments, then finds the first non-empty line after the signature + pattern = r"(def _prepare_inputs\s*\([^\)]*\)\s*(->\s*[^:]+)?\s*:\s*\n)" + match = re.search(pattern, function) + if match: + sig_end = match.end(1) + rest = function[sig_end:] + rest = re.sub(r"^[ \t]*self\.llm\.wake_up\(\)\s*\n", "", rest) + rest = re.sub(r"^[ \t]*torch\.cuda\.empty_cache\(\)\s*\n", "", rest) + rest = re.sub(r"^[ \t]*free, total = torch.cuda.mem_get_info\(\)\s*\n", "", rest) + rest = re.sub(r"^[ \t]*print\(f?\".*cuda.*\"\)\s*\n", "", rest) + insert = ( + " if getattr(self.llm.llm_engine.vllm_config.model_config, 'enable_sleep_mode', False):\n" + " self.llm.wake_up()\n" + ) + function = function[:sig_end] + insert + rest + else: + pattern2 = r"(def _prepare_inputs\(.*?\):\n(?:[ ]+#[^\n]*\n)+)" + match2 = re.search(pattern2, function, flags=re.DOTALL) + if match2: + header_and_comments = match2.group(1) + rest = function[len(header_and_comments):] + rest = re.sub(r"^[ \t]*self\.llm\.wake_up\(\)\s*\n", "", rest) + rest = re.sub(r"^[ \t]*torch\.cuda\.empty_cache\(\)\s*\n", "", rest) + rest = re.sub(r"^[ \t]*free, total = torch.cuda.mem_get_info\(\)\s*\n", "", rest) + rest = re.sub(r"^[ \t]*print\(f?\".*cuda.*\"\)\s*\n", "", rest) + insert = ( + " if getattr(self.llm.llm_engine.vllm_config.model_config, 'enable_sleep_mode', False):\n" + " self.llm.wake_up()\n" + ) + function = header_and_comments + insert + rest # Add mixed precision training function = function.replace( "with torch.inference_mode():", - "with torch.inference_mode(), "\ "torch.amp.autocast(device_type = 'cuda', "\ "dtype = ((torch.float16 if os.environ.get('ACCELERATE_MIXED_PRECISION', 'fp16') == 'fp16' else torch.bfloat16) "\ "if not torch.is_autocast_enabled('cuda') else nullcontext())"\ "if os.environ.get('UNSLOTH_FORCE_FLOAT32', '0') == '0' else torch.float16):", ) - - # Disable attaching a float32 conversion hook which upcasts logits to FP32 function = function.replace( "self.accelerator.unwrap_model(self.model)", "self.accelerator.unwrap_model(self.model, keep_fp32_wrapper = False)", ) + sleep_and_cache = ( + "if getattr(self.llm.llm_engine.vllm_config.model_config, 'enable_sleep_mode', False):\n" + " self.llm.sleep(os.environ.get('VLLM_SLEEP_MODE', 1))\n" + " " + ) + if re.search(r"\n\s*return ", function): + function = re.sub(r"(\n\s*)return ", f"\\1{sleep_and_cache}return ", function, count=1) + else: + function = function.rstrip() + "\n " + sleep_and_cache return function pass RL_FUNCTIONS["grpo_trainer"].append(grpo_trainer__prepare_inputs) From a1e12d4243240d69689f8a36f4f37dcaee394600 Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Fri, 20 Jun 2025 06:09:03 -0700 Subject: [PATCH 11/22] Fix bugs --- unsloth/models/_utils.py | 20 +++----------------- unsloth/models/rl.py | 12 ++++++++++++ 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/unsloth/models/_utils.py b/unsloth/models/_utils.py index dfaf36a713..a6596d4a66 100644 --- a/unsloth/models/_utils.py +++ b/unsloth/models/_utils.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "2025.6.2" +__version__ = "2025.6.3" __all__ = [ "SUPPORTS_BFLOAT16", @@ -755,24 +755,10 @@ exec(BitsAndBytesConfig__init__, globals()) if torch.cuda.device_count() == 1: from accelerate.utils.dataclasses import DistributedType - def _prepare_backend( - self, cpu = False, sagemaker_dp = False, backend: str = None, - ) -> tuple[str, DistributedType]: - return None, DistributedType.NO - pass + def _prepare_backend(self, *args, **kwargs): return None, DistributedType.NO import accelerate.state accelerate.state.PartialState._prepare_backend = _prepare_backend - - import accelerate.accelerator - prepare = inspect.getsource(accelerate.accelerator.Accelerator.prepare) - prepare = prepare.split("\n") - spaces = prepare[0].find("def") - prepare = "\n".join(x[spaces:] for x in prepare) - x = "for obj in args:" - s = " "*spaces - prepare = prepare.replace(x, f'self.state.distributed_type = DistributedType.NO\n{s}{x}', 1) - exec(prepare, globals()) - accelerate.accelerator.Accelerator.prepare = prepare + accelerate.accelerator.Accelerator.distributed_type = lambda *args, **kwargs: DistributedType.NO pass import transformers.utils.quantization_config diff --git a/unsloth/models/rl.py b/unsloth/models/rl.py index 3fa3fe7132..08d7cbf38b 100644 --- a/unsloth/models/rl.py +++ b/unsloth/models/rl.py @@ -645,6 +645,18 @@ def patch_functions(RLTrainer, trainer_file, RLTrainer_name, all_imports, import init = inspect.getsource(RLTrainer.__init__) old_init = init + # Remove brackets in comments since it interferes ie (...) + comments = re.findall(r"\#[^\n]{1,}\n", init) + bracketed_comments = [x for x in comments if "(" in x or ")" in x] + # Replace with [...] instead + for bracketed_comment in bracketed_comments: + init = init.replace( + bracketed_comment, + bracketed_comment.replace("(", "[").replace(")", "]"), + ) + pass + + # Remove peft_config init = init.replace("elif peft_config is None:", "elif False:") init = init.replace("elif peft_config is not None:", "elif False:") From 1c7a9f46dc9fd020860445a26229c5e22bd9e0aa Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Fri, 20 Jun 2025 06:13:45 -0700 Subject: [PATCH 12/22] Update __init__.py --- unsloth/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/unsloth/__init__.py b/unsloth/__init__.py index 58c2a19814..fdaf7b483a 100644 --- a/unsloth/__init__.py +++ b/unsloth/__init__.py @@ -60,9 +60,13 @@ keynames = "\n" + "\n".join(os.environ.keys()) if "HF_XET_HIGH_PERFORMANCE" not in os.environ: os.environ["HF_XET_HIGH_PERFORMANCE"] = "1" pass -if "\nCOLAB_" in keynames: +# Disable XET cache sine it eats too much space +if "HF_XET_CHUNK_CACHE_SIZE_BYTES" not in os.environ: os.environ["HF_XET_CHUNK_CACHE_SIZE_BYTES"] = "0" pass +if "\nCOLAB_" in keynames: + os.environ["HF_XET_RECONSTRUCT_WRITE_SEQUENTIALLY"] = "0" +pass # Log Unsloth is being used os.environ["UNSLOTH_IS_PRESENT"] = "1" From 35d37ea5671a6ca2977b67995d1d1f70c26e7660 Mon Sep 17 00:00:00 2001 From: marcandrelarochelle Date: Fri, 20 Jun 2025 09:28:58 -0400 Subject: [PATCH 13/22] Fix TRL 1.8.2 (#2774) * Fix for TRL 1.8.2 Regex matching LLM initialization * Update Regex --- unsloth/models/rl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unsloth/models/rl.py b/unsloth/models/rl.py index 08d7cbf38b..69785be206 100644 --- a/unsloth/models/rl.py +++ b/unsloth/models/rl.py @@ -746,7 +746,7 @@ def patch_functions(RLTrainer, trainer_file, RLTrainer_name, all_imports, import if trl_version >= "0.18": # Replace LLM init with already existing vLLM engine for colocate mode - vllm_llm_init_pattern = r"self\.llm\s*=\s*LLM\([^)]*\)*\)" + vllm_llm_init_pattern = r"self\.llm\s*=\s*LLM\(.*?\)*\)\s*?\n(?!,)" vllm_llm_replacement = "self.llm = model.vllm_engine\n" new_vllm_part = re.sub( vllm_llm_init_pattern, From 9fbb88479c47e03cb3ef4d4e0ed47070272a14e4 Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Fri, 20 Jun 2025 06:30:35 -0700 Subject: [PATCH 14/22] Update pyproject.toml --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 37ce3eb460..42b5e4cc49 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ triton = [ ] huggingface = [ - "unsloth_zoo>=2025.6.1", + "unsloth_zoo>=2025.6.2", "packaging", "tyro", "transformers>=4.51.3,!=4.47.0,!=4.52.0,!=4.52.1,!=4.52.2", @@ -381,7 +381,7 @@ colab-ampere-torch220 = [ "flash-attn>=2.6.3", ] colab-new = [ - "unsloth_zoo>=2025.5.11", + "unsloth_zoo>=2025.6.2", "packaging", "tyro", "transformers>=4.51.3,!=4.47.0,!=4.52.0,!=4.52.1,!=4.52.2", From 4a70f8e8809116e83d1028fb82cf94f5065e0950 Mon Sep 17 00:00:00 2001 From: Roland Tannous Date: Sat, 21 Jun 2025 00:22:00 +0000 Subject: [PATCH 15/22] Additional tests for unsloth-zoo PR#174 --- tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb | 8848 +++++ tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb | 5292 +++ .../gemma3_4b_vision_french_ocr_H100.ipynb | 1345 + .../gemma3_4b_vision_french_ocr_T4.ipynb | 28611 ++++++++++++++++ ...est_gemma3_1b_language_model_perplexity.py | 240 + ...est_gemma3_4b_language_model_perplexity.py | 228 + .../test_gemma3_grpo_model.py | 802 + 7 files changed, 45366 insertions(+) create mode 100644 tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb create mode 100644 tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb create mode 100644 tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_H100.ipynb create mode 100644 tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_T4.ipynb create mode 100644 tests/gemma3_fix_tests/test_gemma3_1b_language_model_perplexity.py create mode 100644 tests/gemma3_fix_tests/test_gemma3_4b_language_model_perplexity.py create mode 100644 tests/gemma3_fix_tests/test_gemma3_grpo_model.py diff --git a/tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb b/tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb new file mode 100644 index 0000000000..11d336b2aa --- /dev/null +++ b/tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb @@ -0,0 +1,8848 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "Ya4hWtsWgt6m" + }, + "source": [ + "To run this, press \"*Runtime*\" and press \"*Run all*\" on a **free** Tesla T4 Google Colab instance!\n", + "
\n", + "\n", + "\n", + " Join Discord if you need help + โญ Star us on Github โญ\n", + "
\n", + "\n", + "To install Unsloth on your own computer, follow the installation instructions on our Github page [here](https://docs.unsloth.ai/get-started/installing-+-updating).\n", + "\n", + "You will learn how to do [data prep](#Data), how to [train](#Train), how to [run the model](#Inference), & [how to save it](#Save)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BOuS2Goegt6o" + }, + "source": [ + "### News" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tfzMngqfgt6p" + }, + "source": [ + "Unsloth now supports Text-to-Speech (TTS) models. Read our [guide here](https://docs.unsloth.ai/basics/text-to-speech-tts-fine-tuning).\n", + "\n", + "Read our **[Qwen3 Guide](https://docs.unsloth.ai/basics/qwen3-how-to-run-and-fine-tune)** and check out our new **[Dynamic 2.0](https://docs.unsloth.ai/basics/unsloth-dynamic-2.0-ggufs)** quants which outperforms other quantization methods!\n", + "\n", + "Visit our docs for all our [model uploads](https://docs.unsloth.ai/get-started/all-our-models) and [notebooks](https://docs.unsloth.ai/get-started/unsloth-notebooks).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jdo0bz0Rgt6p" + }, + "source": [ + "### Installation" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "89WLvodBgt6p" + }, + "outputs": [], + "source": [ + "%%capture\n", + "import os\n", + "if \"COLAB_\" not in \"\".join(os.environ.keys()):\n", + " !pip install unsloth\n", + "else:\n", + " # Do this only in Colab notebooks! Otherwise use pip install unsloth\n", + " !pip install --no-deps bitsandbytes accelerate xformers==0.0.29.post3 peft trl triton cut_cross_entropy unsloth_zoo\n", + " !pip install sentencepiece protobuf \"datasets>=3.4.1\" huggingface_hub hf_transfer msgspec tyro einops ninja\n", + " !pip install --no-deps unsloth\n", + " !pip install --force-reinstall --no-deps git+https://github.com/unslothai/unsloth-zoo.git\n", + " !pip install --force-reinstall --no-deps git+https://github.com/unslothai/unsloth.git" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TGMWlrRdzwgf" + }, + "source": [ + "### Unsloth\n", + "\n", + "`FastModel` supports loading nearly any model now! This includes Vision and Text models!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 649, + "referenced_widgets": [ + "d4357f34982d44b49c92d35b48b63a52", + "1e37fe89cfad4a77a1077204b42238c0", + "222338617d2d4249a92a440cafe85ef5", + "cffb8c2c82ae4ac89223ec87cbf200a9", + "b02d8c71475b42148f8e32305d3d1ed4", + "3c7fcb9a462b47fe95f9633e72c7bc49", + "c693409aa2454122a9e045f49fcc1742", + "0300298391b24647b326e8fbc2471f06", + "0c9d49b5ed0d4f7aad2121d1b0373141", + "67ae316732804b77803657115a159e23", + "5a25ef912d5f4ef3bf9f3dc754daa7ef", + "c03e144d2c494e87ba6146ba80e725a7", + "616d6f38053046aaaa12cb96becf64d6", + "9adfec4bb7f3462887bb0a24ddc3fa69", + "60fcd348eea04bf19f780202c2f13d6e", + "59b4dc1570af42d488763597d6a782e7", + "306add97e53d4c0096c1ab99b92947b5", + "6b6696c6ac99472f95b8a8c034c9556f", + "9d9590f4554b44238581f07d9d3e96c6", + "25b4ab518467463caf45c9ef7e887212", + "925cf4589b674e0a9c8902dd36c3c9cf", + "b76352afbe044bdd995ca1b1cab4e83a", + "14b22c40642846f39da17cc00ef7fb88", + "ef00f30da2dc4d1e8289afcf7c80b860", + "6bdded4a3cae49e5907e1e8a9fd4e740", + "9281201d6eb345ae9f962dcdf200a081", + "f1f1f1a1e0f74f54ade609402550c6a7", + "6c87361beb0f4cfda95b7d080d7f343e", + "08afa202d3094daeab96a49990aa9c8f", + "6551142c2ae04475a07ec463c172ef94", + "62b2d8f968cd44cc85689a9f007f2615", + "cce60bdf161342a38cc148321ad87d89", + "cd9432ae568e4d1ab95686e66f1aacfc", + "971e7cbf682240568771230b07de1851", + "20cf3c6e82aa4507848e5df26252491a", + "a4abbef450034782bdb7604452a23272", + "a1f64e37020d42d1be67d3a28041f834", + "0eb03d301f5947f5a5d3faf8dee32772", + "29655da1abc94c959f7f94ad4b6d7ceb", + "263adc24127a45069391edfd83c11a1c", + "a9f1a0430fff480daeca436391147329", + "d8412a1915fc403a9f36da76588f9135", + "a3b2f29f6c604c16b7efb3a71433e74e", + "a9260c2d28d040d89b8ac9559dea9cd6", + "4300cfae504442f2a047b535a013c364", + "c81bbf9321c14b0dbf43ffdf387d7dba", + "005bd5aaffa3414b9f38c62716fa21f3", + "377f281812074f2c88a28780b60d9090", + "d78d84e7f4174408a0bd59b71b027cd5", + "d2dbe752c1994eb3badd431451253e99", + "7c22eb210647406e90b0fb94c6c2f05e", + "745460a76a774dca88e31c59937758a6", + "0fb0b715f98644efbb171fc399d7f931", + "b3ffd445e8cb446eb3d73b811c2e44cc", + "8110b1c4057b44ad8b92dbfd18bd1664", + "35838d1c2ce349af9a0a72b8b3251240", + "48c552d0240a4b1f8e0aa20120336bab", + "dfcf0b8a6e874730aebad7500ee42962", + "ea17eb4f3ace49e0a7c6cbed28889954", + "eb9efe55ac6d4a67b0aea9adea5e4667", + "a5ba3c2194da4fec956a1308a5696d83", + "abeb2ebb23b9466786f609cc2eb0310f", + "872df6a1722b4415b76da470afcf249e", + "658aa1de62184c6fa0a582b2867334ed", + "c1a0b7b0bfe94e34b42f9fbb3eabb3d8", + "8734730bc2f44eaa818dcf1a60909e96", + "dc11e9e86024408a9415bc3fb5a23f86", + "f7610773092e451397fb9c90cdc572fe", + "e943a9b9343f40eaaac24f220284e848", + "0a72e21a56c94f0cbaff4c4d7027b696", + "61826fd6f7364eb1a63bf4185c71e70c", + "cf9a808f07544cef813777dfe8b45466", + "21c746d72bd74493aa786b578563c09b", + "c73e32012e2f49aa9c68b8ecbaade794", + "4b35dc02722b4cecb442d427d9ca1e63", + "86b9cc5844e94f399835643c49460189", + "9916b2d18aa74a3f9bcf794910510586", + "d2d0037baa9a4900891882176b6d34a6", + "cd35c22bbe9745329d9858b770fbb81e", + "f11b24ea370040a09a453b971fca31c7", + "267e82e16a1b471396e19b8456663eaa", + "ab8235ccadad4e19968ddbbaac0a16ff", + "afab8c071937454dbda89c0752314c60", + "aad16109af6b43f09e67617671759ebb", + "a35dbc25393a41e7bbb579a5b890032b", + "e298ae95556544cea377256a5d6bad67", + "0c7bb45a565b4d72b9e2708c4005495f", + "2580b74f38b74189b73c5c1adb124411", + "5508647fe53148158c264dbb73c3f32e", + "fd2fcfd902654152a1ac84bee4f93270", + "b9a75cf3a6f04ba3bc41271bbd0c6b62", + "19a5a899060f4d8db55b11c4d7e7cd9d", + "06f7299115c14218b9896db0a01667ca", + "d7e2a97b96124f6ba29ef605ba14fd65", + "9d737dfb034743829a12dbd173dd52d0", + "49c266fb3f844e8f8fe6bd059b932cd5", + "f18f9276aea6436bb714332e4652a5a6", + "1a9a0308fa62444a95e014e5e4d5c3fc", + "ea901074586043129c6a3adbcb942fad", + "9f963624927e404b81d41e9030e4fd4a", + "3fa30d51f5b24dc38f7997b00a419bde", + "2f23e495371b429e8ca9c8f05924fe97", + "f6ebb0c6780c42248e64733c442a40f5", + "d17c3102803c48e182aef09a4849468e", + "abc60719f0774ccba72431145338ab31", + "b282f87f82db4a0c8b8ecec301144a14", + "58bea53d5f0d4af6b6dc586ebf8808d6", + "1ea9ff8b681f4182b77bf6827866e47c", + "aa25e6337a51473aa30067cd214580a6", + "aaab621de1ae4d0e9c0db6bf15d5edf9", + "df2091cf02a841a1a5bb9f22802de104", + "31b75cd349334aab89e55ef02186d30c", + "05f0d644c2d24584a69f3bec4d0aa468", + "a0f99a5907084714b12756d34d7d0cc4", + "9d493b3551d14cf3983a7db93a840b2c", + "06fb7ae0129f4b1bb33745533b464c1a", + "b1bc57ad3f8044f595e839067e5b15b0", + "f2a39e1dcb474a529576ac3930b0beb7", + "8e26d862735b4e58896cdd4986df14bf", + "c144b67f69404373b4f6899839742df3", + "aadf48eeeb98475d9aff2b37a76a3255" + ] + }, + "id": "-Xbb0cuLzwgf", + "outputId": "1261eb6f-89d3-4882-c2d2-9a1ddb384d24" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "๐Ÿฆฅ Unsloth: Will patch your computer to enable 2x faster free finetuning.\n", + "Forward Router Patched and working\n", + "forward 1 working and being replaced\n", + "Unsloth: Patched Gemma3ForConditionalGeneration llm forward\n", + "Unsloth: Patched Gemma3ForCausalLM.forward for GRPO compatibility.\n", + "๐Ÿฆฅ Unsloth Zoo will now patch everything to make training faster!\n", + "Unsloth: Using float32 gradient checkpointing for FORCE_FLOAT32 mode\n", + "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4.\n", + " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.741 GB. Platform: Linux.\n", + "O^O/ \\_/ \\ Torch: 2.6.0+cu124. CUDA: 7.5. CUDA Toolkit: 12.4. Triton: 3.2.0\n", + "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.29.post3. FA2 = False]\n", + " \"-____-\" Free license: http://github.com/unslothai/unsloth\n", + "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n", + "Unsloth: Using float16 precision for gemma3 won't work! Using float32.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "model.safetensors: 0%| | 0.00/4.56G [00:00\n", + "### Data Prep\n", + "We now use the `Gemma-3` format for conversation style finetunes. We use [Maxime Labonne's FineTome-100k](https://huggingface.co/datasets/mlabonne/FineTome-100k) dataset in ShareGPT style. Gemma-3 renders multi turn conversations like below:\n", + "\n", + "```\n", + "user\n", + "Hello!\n", + "model\n", + "Hey there!\n", + "```\n", + "\n", + "We use our `get_chat_template` function to get the correct chat template. We support `zephyr, chatml, mistral, llama, alpaca, vicuna, vicuna_old, phi3, llama3, phi4, qwen2.5, gemma3` and more." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "LjY75GoYUCB8" + }, + "outputs": [], + "source": [ + "from unsloth.chat_templates import get_chat_template\n", + "tokenizer = get_chat_template(\n", + " tokenizer,\n", + " chat_template = \"gemma-3\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "Mkq4RvEq7FQr", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 113, + "referenced_widgets": [ + "0c01b2a17cc14a859d65dab518e7a98f", + "1b018ab085ad4f8d91b1943de944a07c", + "6e9c3dc53a3e48cd80f81c5868a8c25b", + "23d700e3d79f4cf2b9b7829e400fb36e", + "ca50038524fe403b935951b2103b7e37", + "4e64129ef7be4605a19a00f82611f501", + "200b532be3eb4cb5b72d357d58446d56", + "74c3f8874b2d4bf08e212bcb4a2f4d30", + "e1b83736a1464936a845f4a4bb8c9c87", + "cf0aeee0b2a84161a16a80cb1dcff948", + "8762c99ed7b940f2b9de85a1d77dc7bf", + "ba8e6fb4120a40e7bf3f01be180ad698", + "e139dcb62648439197af2f75281d49e2", + "e391fcb714e246aa9a3213c50e5006af", + "5e1448a080184bce85ac3a6d75c0798c", + "bbaafcdbf60b40cd828024917ff67fc2", + "c29d400791d34064914ff2b831d5844c", + "eede6c18332f4b77a30ce14676e52307", + "34af403270d94792bca566c43bf402f0", + "012595756eef4c918cfe3f580dba2c37", + "f34cb28303bc4089bb276b9b41a3b92b", + "da7e57d90cd84b59b817e26b4a7287fa", + "48bc63a3954d4f928da7b41dc9a59221", + "09cb3384bd73421a80099a07603c34ae", + "697e7dff10344f2883c377a092645a21", + "dc21632cee14404fb785fe4d01ebc4ba", + "d04fc5687a6d42728e36c2f698739df9", + "3962af438c2345789d1ef27c2de54b7b", + "089e89e22a314a4b96d576eed56d29dc", + "6b8057ede4c544249500ea7a85ed0aca", + "456161f177ae4d83a27015ff1b03aba3", + "19b01f4701cf4ddda39d8fe44ef50859", + "acb6c9083d884baca2bfb66b86167d67" + ] + }, + "outputId": "ac72ccce-5aa2-4d94-8d03-e0af41cdd08b" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "README.md: 0%| | 0.00/982 [00:00` token using removeprefix(`''`) since we're finetuning. The Processor will add this token before training and the model expects only one." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "1ahE8Ys37JDJ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 49, + "referenced_widgets": [ + "eae8887f2332426c8238bae4c1cd73a1", + "486251b70cce420589ad27ab14c47dcc", + "ded81d21ad544ea294ed89c0fe6a82b1", + "d904853f64224c09a109261d35c380d2", + "e05dfd2b79ed4d6ab48a71e73d4bf530", + "6249d50fc8e948f1a5621de01f71a186", + "1f9709a6ead2491ca760d3ef00a057fb", + "d9fb781f50c7445b9622923e26150e78", + "63fa705847904d43b93d2b5a3f7b798b", + "812970cf649647159678ffb30a5bf898", + "cebdd0e4ee2b4c8195c7d1a4c305e79b" + ] + }, + "outputId": "e5dbe42d-14ba-45e2-952d-fd87aa4bb551" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Map: 0%| | 0/100000 [00:00') for convo in convos]\n", + " return { \"text\" : texts, }\n", + "\n", + "dataset = dataset.map(formatting_prompts_func, batched = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ndDUB23CGAC5" + }, + "source": [ + "Let's see how the chat template did! Notice there is no `` token as the processor tokenizer will be adding one." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 122 + }, + "id": "gGFzmplrEy9I", + "outputId": "4ff90a36-6e3c-4086-e178-ea6d87a2f791" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'user\\nWhat is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?\\nmodel\\nIn programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 9 + } + ], + "source": [ + "dataset[100][\"text\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "idAEIeSQ3xdS" + }, + "source": [ + "\n", + "### Train the model\n", + "Now let's use Huggingface TRL's `SFTTrainer`! More docs here: [TRL SFT docs](https://huggingface.co/docs/trl/sft_trainer). We do 60 steps to speed things up, but you can set `num_train_epochs=1` for a full run, and turn off `max_steps=None`." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 66, + "referenced_widgets": [ + "22cd66b0ba0a44aeafb6031d422105aa", + "be0dea815ff141a380af46c995e21e3d", + "68b0cfb889e1451691769455545fcc33", + "16c098858a9a469ab3235f78c4e0d412", + "1a4bfd6451114eb08a36186d9632a795", + "70c8fe0bb9df4d08925124ab6e1ff3de", + "65b7014a9ef14fd2b19048eb80b627e6", + "595b376fbf7f4471a3d91555a25baa37", + "9ea86535f09b4505ac321c0a75be87ba", + "cc96706dc78b4ef39bb7cc32b95799df", + "bc9dd3a3c6964dca8c392ba626ef0099" + ] + }, + "id": "95_Nn-89DhsL", + "outputId": "9c43fc09-7111-473b-cf5a-5ef52499aa1b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Unsloth: Switching to float32 training since model cannot work with float16\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Unsloth: Tokenizing [\"text\"] (num_proc=2): 0%| | 0/100000 [00:00user\\n\",\n", + " response_part = \"model\\n\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Dv1NBUozV78l" + }, + "source": [ + "Let's verify masking the instruction part is done! Let's print the 100th row again. Notice how the sample only has a single `` as expected!" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 122 + }, + "id": "LtsMVtlkUhja", + "outputId": "8e62426b-4b49-4a4b-eb05-93cebffd049b" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'user\\nWhat is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?\\nmodel\\nIn programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 12 + } + ], + "source": [ + "tokenizer.decode(trainer.train_dataset[100][\"input_ids\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4Kyjy__m9KY3" + }, + "source": [ + "Now let's print the masked out example - you should see only the answer is present:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 122 + }, + "id": "_rD6fl8EUxnG", + "outputId": "3de009e1-ea7b-4c53-fefe-6ca2b6764c81" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "' In programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "tokenizer.decode([tokenizer.pad_token_id if x == -100 else x for x in trainer.train_dataset[100][\"labels\"]]).replace(tokenizer.pad_token, \" \")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2ejIt2xSNKKp", + "outputId": "710edfa9-bc16-4d6e-bf44-2f3c91eb6d1e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "GPU = Tesla T4. Max memory = 14.741 GB.\n", + "5.59 GB of memory reserved.\n" + ] + } + ], + "source": [ + "# @title Show current memory stats\n", + "gpu_stats = torch.cuda.get_device_properties(0)\n", + "start_gpu_memory = round(torch.cuda.max_memory_reserved() / 1024 / 1024 / 1024, 3)\n", + "max_memory = round(gpu_stats.total_memory / 1024 / 1024 / 1024, 3)\n", + "print(f\"GPU = {gpu_stats.name}. Max memory = {max_memory} GB.\")\n", + "print(f\"{start_gpu_memory} GB of memory reserved.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CNP1Uidk9mrz" + }, + "source": [ + "Let's train the model! To resume a training run, set `trainer.train(resume_from_checkpoint = True)`" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 368 + }, + "id": "yqxqAZ7KJ4oL", + "outputId": "a68bbefe-2fc2-4591-9016-3dfbb26a8088" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n", + " \\\\ /| Num examples = 100,000 | Num Epochs = 1 | Total steps = 30\n", + "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 4\n", + "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 4 x 1) = 8\n", + " \"-____-\" Trainable parameters = 14,901,248/4,000,000,000 (0.37% trained)\n", + "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + "
\n", + " \n", + " \n", + " [30/30 08:54, Epoch 0/1]\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StepTraining Loss
51.306200
100.871300
150.952600
200.929800
250.899800
300.941100

" + ] + }, + "metadata": {} + } + ], + "source": [ + "trainer_stats = trainer.train()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "pCqnaKmlO1U9", + "outputId": "5d5d33ee-7a84-4418-b038-bd15fb4614e4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "76.5953 seconds used for training.\n", + "1.28 minutes used for training.\n", + "Peak reserved memory = 11.619 GB.\n", + "Peak reserved memory for training = 6.947 GB.\n", + "Peak reserved memory % of max memory = 14.674 %.\n", + "Peak reserved memory for training % of max memory = 8.774 %.\n" + ] + } + ], + "source": [ + "# @title Show final memory and time stats\n", + "used_memory = round(torch.cuda.max_memory_reserved() / 1024 / 1024 / 1024, 3)\n", + "used_memory_for_lora = round(used_memory - start_gpu_memory, 3)\n", + "used_percentage = round(used_memory / max_memory * 100, 3)\n", + "lora_percentage = round(used_memory_for_lora / max_memory * 100, 3)\n", + "print(f\"{trainer_stats.metrics['train_runtime']} seconds used for training.\")\n", + "print(\n", + " f\"{round(trainer_stats.metrics['train_runtime']/60, 2)} minutes used for training.\"\n", + ")\n", + "print(f\"Peak reserved memory = {used_memory} GB.\")\n", + "print(f\"Peak reserved memory for training = {used_memory_for_lora} GB.\")\n", + "print(f\"Peak reserved memory % of max memory = {used_percentage} %.\")\n", + "print(f\"Peak reserved memory for training % of max memory = {lora_percentage} %.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ekOmTR1hSNcr" + }, + "source": [ + "\n", + "### Inference\n", + "Let's run the model via Unsloth native inference! According to the `Gemma-3` team, the recommended settings for inference are `temperature = 1.0, top_p = 0.95, top_k = 64`" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "kR3gIAX-SM2q", + "outputId": "84033a7b-db31-405d-eb36-711af2e86b50" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "You have set `compile_config`, but we are unable to meet the criteria for compilation. Compilation will be skipped.\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['user\\nContinue the sequence: 1, 1, 2, 3, 5, 8,\\nmodel\\nThe sequence provided is the Fibonacci Sequence, which is defined by each number being the sum of the two previous.\\nFor example, 3 = 1 + 2 and 5 = 2 + 3. The first two numbers are 1 and 1.\\nIn this case, we are looking for']" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ], + "source": [ + "from unsloth.chat_templates import get_chat_template\n", + "tokenizer = get_chat_template(\n", + " tokenizer,\n", + " chat_template = \"gemma-3\",\n", + ")\n", + "messages = [{\n", + " \"role\": \"user\",\n", + " \"content\": [{\n", + " \"type\" : \"text\",\n", + " \"text\" : \"Continue the sequence: 1, 1, 2, 3, 5, 8,\",\n", + " }]\n", + "}]\n", + "text = tokenizer.apply_chat_template(\n", + " messages,\n", + " add_generation_prompt = True, # Must add for generation\n", + ")\n", + "outputs = model.generate(\n", + " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", + " max_new_tokens = 64, # Increase for longer outputs!\n", + " # Recommended Gemma-3 settings!\n", + " temperature = 1.0, top_p = 0.95, top_k = 64,\n", + ")\n", + "tokenizer.batch_decode(outputs)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CrSvZObor0lY" + }, + "source": [ + " You can also use a `TextStreamer` for continuous inference - so you can see the generation token by token, instead of waiting the whole time!" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "e2pEuRb1r2Vg", + "outputId": "42f92b39-9d2e-40d9-dcca-5ad5d50cda6e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "The sky is blue because of a phenomenon called Rayleigh scattering, which is the effect by which photons are scattered by particles in a medium. The higher the frequency of the photon, the more likely it is to be scattered (Scattering occurs when a photon hits an atom or molecule and bounces off).\n", + "\n", + "The atmosphere of the\n" + ] + } + ], + "source": [ + "messages = [{\n", + " \"role\": \"user\",\n", + " \"content\": [{\"type\" : \"text\", \"text\" : \"Why is the sky blue?\",}]\n", + "}]\n", + "text = tokenizer.apply_chat_template(\n", + " messages,\n", + " add_generation_prompt = True, # Must add for generation\n", + ")\n", + "\n", + "from transformers import TextStreamer\n", + "_ = model.generate(\n", + " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", + " max_new_tokens = 64, # Increase for longer outputs!\n", + " # Recommended Gemma-3 settings!\n", + " temperature = 1.0, top_p = 0.95, top_k = 64,\n", + " streamer = TextStreamer(tokenizer, skip_prompt = True),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uMuVrWbjAzhc" + }, + "source": [ + "\n", + "### Saving, loading finetuned models\n", + "To save the final model as LoRA adapters, either use Huggingface's `push_to_hub` for an online save or `save_pretrained` for a local save.\n", + "\n", + "**[NOTE]** This ONLY saves the LoRA adapters, and not the full model. To save to 16bit or GGUF, scroll down!" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "upcOlWe7A1vc", + "outputId": "4f28e6cb-1301-4764-c1ee-dbc594b41323" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['gemma-3/processor_config.json']" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "source": [ + "model.save_pretrained(\"gemma-3\") # Local saving\n", + "tokenizer.save_pretrained(\"gemma-3\")\n", + "# model.push_to_hub(\"HF_ACCOUNT/gemma-3\", token = \"...\") # Online saving\n", + "# tokenizer.push_to_hub(\"HF_ACCOUNT/gemma-3\", token = \"...\") # Online saving" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AEEcJ4qfC7Lp" + }, + "source": [ + "Now if you want to load the LoRA adapters we just saved for inference, set `False` to `True`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "MKX_XKs_BNZR", + "outputId": "d016d936-4bd5-40f8-dffa-bcfad987f489" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gemma is a family of open-source language models created by the team at Google DeepMind. There are different sizes of Gemma models that can be downloaded from the Google Cloud Marketplace, and the open-source models can be used to generate text, translate languages, write different kinds of creative content, and answer your questions\n" + ] + } + ], + "source": [ + "if False:\n", + " from unsloth import FastModel\n", + " model, tokenizer = FastModel.from_pretrained(\n", + " model_name = \"lora_model\", # YOUR MODEL YOU USED FOR TRAINING\n", + " max_seq_length = 2048,\n", + " load_in_4bit = True,\n", + " )\n", + "\n", + "messages = [{\n", + " \"role\": \"user\",\n", + " \"content\": [{\"type\" : \"text\", \"text\" : \"What is Gemma-3?\",}]\n", + "}]\n", + "text = tokenizer.apply_chat_template(\n", + " messages,\n", + " add_generation_prompt = True, # Must add for generation\n", + ")\n", + "\n", + "from transformers import TextStreamer\n", + "_ = model.generate(\n", + " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", + " max_new_tokens = 64, # Increase for longer outputs!\n", + " # Recommended Gemma-3 settings!\n", + " temperature = 1.0, top_p = 0.95, top_k = 64,\n", + " streamer = TextStreamer(tokenizer, skip_prompt = True),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f422JgM9sdVT" + }, + "source": [ + "### Saving to float16 for VLLM\n", + "\n", + "We also support saving to `float16` directly for deployment! We save it in the folder `gemma-3-finetune`. Set `if False` to `if True` to let it run!" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "id": "iHjt_SMYsd3P", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 252, + "referenced_widgets": [ + "b85f7f7d75a64eaa82c9168315eeaa12", + "339a816b9f6d473ea9006828597e3b9f", + "7ef367cab0c54d7485244645787a8158", + "cc731c8351b84336a32ef79b8532e196", + "6150d9a88f9e4d89872a8018b1818175", + "1d691cb677f740908bb7f1f92c4b1cbb", + "40ea8f66d8ae44209977f84a2bf8260f", + "1fa23b65d10d4bf28cb8f39679a0ed10", + "2a6eef0d636a4ccd8b1e3df7ea8f73ce", + "d2b6586ecf2f49248941178f886b8747", + "b9ec89ab499a4483bfeef0c257815ac9", + "94ee261670d74fc586e92749195f840c", + "3f549e391ef04e87858d329713ca53fa", + "26a064257ab842ed88e4cf1a1284a72e", + "97e7187039e441ea94f6670f1fe7605d", + "3df0097f611f40858a604797a70e44f3", + "013b075b8e1d4e84932de8b7aa984b3a", + "59145eea0ee94e3b845cd212669cec58", + "6714ce7fbde04e10bc5e537703b7c744", + "eb2b167de1974ef19d4ffcaf1fe0dd65", + "4dc3d628f0f14ec2beea903375bca642", + "878f005901e24bc7b45361e41fc38cde", + "a45c64eacd084dfa9a822e86a5c003a4", + "c0c762d121f84ec7bb190a28418ae494", + "4588b16c54a649d1af49f6aef7673991", + "bf4b4ba94ba849cc8372e297b06b957a", + "ae11658399d742c2afec62941aec6b01", + "d4b7722ba8de4ed4a842dc6744508015", + "b2abfb50fbb84d9884a1faf9a98e286d", + "f5fdc873c5c54087a6cc2851cffc1e11", + "f9296c9f10234936b39902c00bb562e6", + "a8208321cb474d0e84ea5b2f085f8cfc", + "51f4df66b2c849468b6df712aaa21b61" + ] + }, + "outputId": "e97ee42d-a702-4e93-8652-73ea2da39148" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Found HuggingFace hub cache directory: /root/.cache/huggingface/hub\n", + "Checking cache directory for required files...\n", + "Cache check failed: model-00001-of-00002.safetensors not found in local cache.\n", + "Not all required files found in cache. Will proceed with downloading.\n", + "Downloading safetensors index for unsloth/gemma-3-4b-it...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "model.safetensors.index.json: 0%| | 0.00/90.6k [00:00\n", + " \n", + " \n", + " \n", + "\n", + " Join Discord if you need help + โญ๏ธ Star us on Github โญ๏ธ\n", + "\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [], + "machine_shape": "hm" + }, + "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.11.0" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "d4357f34982d44b49c92d35b48b63a52": { + "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_1e37fe89cfad4a77a1077204b42238c0", + "IPY_MODEL_222338617d2d4249a92a440cafe85ef5", + "IPY_MODEL_cffb8c2c82ae4ac89223ec87cbf200a9" + ], + "layout": "IPY_MODEL_b02d8c71475b42148f8e32305d3d1ed4" + } + }, + "1e37fe89cfad4a77a1077204b42238c0": { + "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_3c7fcb9a462b47fe95f9633e72c7bc49", + "placeholder": "โ€‹", + "style": "IPY_MODEL_c693409aa2454122a9e045f49fcc1742", + "value": "model.safetensors:โ€‡100%" + } + }, + "222338617d2d4249a92a440cafe85ef5": { + "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_0300298391b24647b326e8fbc2471f06", + "max": 4562294331, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0c9d49b5ed0d4f7aad2121d1b0373141", + "value": 4562294331 + } + }, + "cffb8c2c82ae4ac89223ec87cbf200a9": { + "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_67ae316732804b77803657115a159e23", + "placeholder": "โ€‹", + "style": "IPY_MODEL_5a25ef912d5f4ef3bf9f3dc754daa7ef", + "value": "โ€‡4.56G/4.56Gโ€‡[00:15<00:00,โ€‡480MB/s]" + } + }, + "b02d8c71475b42148f8e32305d3d1ed4": { + "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 + } + }, + "3c7fcb9a462b47fe95f9633e72c7bc49": { + "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 + } + }, + "c693409aa2454122a9e045f49fcc1742": { + "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": "" + } + }, + "0300298391b24647b326e8fbc2471f06": { + "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 + } + }, + "0c9d49b5ed0d4f7aad2121d1b0373141": { + "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": "" + } + }, + "67ae316732804b77803657115a159e23": { + "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 + } + }, + "5a25ef912d5f4ef3bf9f3dc754daa7ef": { + "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": "" + } + }, + "c03e144d2c494e87ba6146ba80e725a7": { + "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_616d6f38053046aaaa12cb96becf64d6", + "IPY_MODEL_9adfec4bb7f3462887bb0a24ddc3fa69", + "IPY_MODEL_60fcd348eea04bf19f780202c2f13d6e" + ], + "layout": "IPY_MODEL_59b4dc1570af42d488763597d6a782e7" + } + }, + "616d6f38053046aaaa12cb96becf64d6": { + "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_306add97e53d4c0096c1ab99b92947b5", + "placeholder": "โ€‹", + "style": "IPY_MODEL_6b6696c6ac99472f95b8a8c034c9556f", + "value": "generation_config.json:โ€‡100%" + } + }, + "9adfec4bb7f3462887bb0a24ddc3fa69": { + "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_9d9590f4554b44238581f07d9d3e96c6", + "max": 210, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_25b4ab518467463caf45c9ef7e887212", + "value": 210 + } + }, + "60fcd348eea04bf19f780202c2f13d6e": { + "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_925cf4589b674e0a9c8902dd36c3c9cf", + "placeholder": "โ€‹", + "style": "IPY_MODEL_b76352afbe044bdd995ca1b1cab4e83a", + "value": "โ€‡210/210โ€‡[00:00<00:00,โ€‡27.9kB/s]" + } + }, + "59b4dc1570af42d488763597d6a782e7": { + "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 + } + }, + "306add97e53d4c0096c1ab99b92947b5": { + "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 + } + }, + "6b6696c6ac99472f95b8a8c034c9556f": { + "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": "" + } + }, + "9d9590f4554b44238581f07d9d3e96c6": { + "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 + } + }, + "25b4ab518467463caf45c9ef7e887212": { + "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": "" + } + }, + "925cf4589b674e0a9c8902dd36c3c9cf": { + "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 + } + }, + "b76352afbe044bdd995ca1b1cab4e83a": { + "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": "" + } + }, + "14b22c40642846f39da17cc00ef7fb88": { + "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_ef00f30da2dc4d1e8289afcf7c80b860", + "IPY_MODEL_6bdded4a3cae49e5907e1e8a9fd4e740", + "IPY_MODEL_9281201d6eb345ae9f962dcdf200a081" + ], + "layout": "IPY_MODEL_f1f1f1a1e0f74f54ade609402550c6a7" + } + }, + "ef00f30da2dc4d1e8289afcf7c80b860": { + "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_6c87361beb0f4cfda95b7d080d7f343e", + "placeholder": "โ€‹", + "style": "IPY_MODEL_08afa202d3094daeab96a49990aa9c8f", + "value": "processor_config.json:โ€‡100%" + } + }, + "6bdded4a3cae49e5907e1e8a9fd4e740": { + "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_6551142c2ae04475a07ec463c172ef94", + "max": 70, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_62b2d8f968cd44cc85689a9f007f2615", + "value": 70 + } + }, + "9281201d6eb345ae9f962dcdf200a081": { + "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_cce60bdf161342a38cc148321ad87d89", + "placeholder": "โ€‹", + "style": "IPY_MODEL_cd9432ae568e4d1ab95686e66f1aacfc", + "value": "โ€‡70.0/70.0โ€‡[00:00<00:00,โ€‡8.49kB/s]" + } + }, + "f1f1f1a1e0f74f54ade609402550c6a7": { + "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 + } + }, + "6c87361beb0f4cfda95b7d080d7f343e": { + "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 + } + }, + "08afa202d3094daeab96a49990aa9c8f": { + "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": "" + } + }, + "6551142c2ae04475a07ec463c172ef94": { + "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 + } + }, + "62b2d8f968cd44cc85689a9f007f2615": { + "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": "" + } + }, + "cce60bdf161342a38cc148321ad87d89": { + "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 + } + }, + "cd9432ae568e4d1ab95686e66f1aacfc": { + "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": "" + } + }, + "971e7cbf682240568771230b07de1851": { + "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_20cf3c6e82aa4507848e5df26252491a", + "IPY_MODEL_a4abbef450034782bdb7604452a23272", + "IPY_MODEL_a1f64e37020d42d1be67d3a28041f834" + ], + "layout": "IPY_MODEL_0eb03d301f5947f5a5d3faf8dee32772" + } + }, + "20cf3c6e82aa4507848e5df26252491a": { + "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_29655da1abc94c959f7f94ad4b6d7ceb", + "placeholder": "โ€‹", + "style": "IPY_MODEL_263adc24127a45069391edfd83c11a1c", + "value": "chat_template.json:โ€‡100%" + } + }, + "a4abbef450034782bdb7604452a23272": { + "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_a9f1a0430fff480daeca436391147329", + "max": 1615, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d8412a1915fc403a9f36da76588f9135", + "value": 1615 + } + }, + "a1f64e37020d42d1be67d3a28041f834": { + "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_a3b2f29f6c604c16b7efb3a71433e74e", + "placeholder": "โ€‹", + "style": "IPY_MODEL_a9260c2d28d040d89b8ac9559dea9cd6", + "value": "โ€‡1.61k/1.61kโ€‡[00:00<00:00,โ€‡228kB/s]" + } + }, + "0eb03d301f5947f5a5d3faf8dee32772": { + "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 + } + }, + "29655da1abc94c959f7f94ad4b6d7ceb": { + "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 + } + }, + "263adc24127a45069391edfd83c11a1c": { + "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": "" + } + }, + "a9f1a0430fff480daeca436391147329": { + "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 + } + }, + "d8412a1915fc403a9f36da76588f9135": { + "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": "" + } + }, + "a3b2f29f6c604c16b7efb3a71433e74e": { + "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 + } + }, + "a9260c2d28d040d89b8ac9559dea9cd6": { + "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": "" + } + }, + "4300cfae504442f2a047b535a013c364": { + "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_c81bbf9321c14b0dbf43ffdf387d7dba", + "IPY_MODEL_005bd5aaffa3414b9f38c62716fa21f3", + "IPY_MODEL_377f281812074f2c88a28780b60d9090" + ], + "layout": "IPY_MODEL_d78d84e7f4174408a0bd59b71b027cd5" + } + }, + "c81bbf9321c14b0dbf43ffdf387d7dba": { + "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_d2dbe752c1994eb3badd431451253e99", + "placeholder": "โ€‹", + "style": "IPY_MODEL_7c22eb210647406e90b0fb94c6c2f05e", + "value": "chat_template.jinja:โ€‡100%" + } + }, + "005bd5aaffa3414b9f38c62716fa21f3": { + "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_745460a76a774dca88e31c59937758a6", + "max": 1532, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0fb0b715f98644efbb171fc399d7f931", + "value": 1532 + } + }, + "377f281812074f2c88a28780b60d9090": { + "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_b3ffd445e8cb446eb3d73b811c2e44cc", + "placeholder": "โ€‹", + "style": "IPY_MODEL_8110b1c4057b44ad8b92dbfd18bd1664", + "value": "โ€‡1.53k/1.53kโ€‡[00:00<00:00,โ€‡205kB/s]" + } + }, + "d78d84e7f4174408a0bd59b71b027cd5": { + "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 + } + }, + "d2dbe752c1994eb3badd431451253e99": { + "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 + } + }, + "7c22eb210647406e90b0fb94c6c2f05e": { + "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": "" + } + }, + "745460a76a774dca88e31c59937758a6": { + "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 + } + }, + "0fb0b715f98644efbb171fc399d7f931": { + "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": "" + } + }, + "b3ffd445e8cb446eb3d73b811c2e44cc": { + "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 + } + }, + "8110b1c4057b44ad8b92dbfd18bd1664": { + "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": "" + } + }, + "35838d1c2ce349af9a0a72b8b3251240": { + "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_48c552d0240a4b1f8e0aa20120336bab", + "IPY_MODEL_dfcf0b8a6e874730aebad7500ee42962", + "IPY_MODEL_ea17eb4f3ace49e0a7c6cbed28889954" + ], + "layout": "IPY_MODEL_eb9efe55ac6d4a67b0aea9adea5e4667" + } + }, + "48c552d0240a4b1f8e0aa20120336bab": { + "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_a5ba3c2194da4fec956a1308a5696d83", + "placeholder": "โ€‹", + "style": "IPY_MODEL_abeb2ebb23b9466786f609cc2eb0310f", + "value": "preprocessor_config.json:โ€‡100%" + } + }, + "dfcf0b8a6e874730aebad7500ee42962": { + "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_872df6a1722b4415b76da470afcf249e", + "max": 570, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_658aa1de62184c6fa0a582b2867334ed", + "value": 570 + } + }, + "ea17eb4f3ace49e0a7c6cbed28889954": { + "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_c1a0b7b0bfe94e34b42f9fbb3eabb3d8", + "placeholder": "โ€‹", + "style": "IPY_MODEL_8734730bc2f44eaa818dcf1a60909e96", + "value": "โ€‡570/570โ€‡[00:00<00:00,โ€‡72.9kB/s]" + } + }, + "eb9efe55ac6d4a67b0aea9adea5e4667": { + "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 + } + }, + "a5ba3c2194da4fec956a1308a5696d83": { + "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 + } + }, + "abeb2ebb23b9466786f609cc2eb0310f": { + "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": "" + } + }, + "872df6a1722b4415b76da470afcf249e": { + "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 + } + }, + "658aa1de62184c6fa0a582b2867334ed": { + "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": "" + } + }, + "c1a0b7b0bfe94e34b42f9fbb3eabb3d8": { + "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 + } + }, + "8734730bc2f44eaa818dcf1a60909e96": { + "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": "" + } + }, + "dc11e9e86024408a9415bc3fb5a23f86": { + "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_f7610773092e451397fb9c90cdc572fe", + "IPY_MODEL_e943a9b9343f40eaaac24f220284e848", + "IPY_MODEL_0a72e21a56c94f0cbaff4c4d7027b696" + ], + "layout": "IPY_MODEL_61826fd6f7364eb1a63bf4185c71e70c" + } + }, + "f7610773092e451397fb9c90cdc572fe": { + "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_cf9a808f07544cef813777dfe8b45466", + "placeholder": "โ€‹", + "style": "IPY_MODEL_21c746d72bd74493aa786b578563c09b", + "value": "tokenizer_config.json:โ€‡100%" + } + }, + "e943a9b9343f40eaaac24f220284e848": { + "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_c73e32012e2f49aa9c68b8ecbaade794", + "max": 1158492, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4b35dc02722b4cecb442d427d9ca1e63", + "value": 1158492 + } + }, + "0a72e21a56c94f0cbaff4c4d7027b696": { + "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_86b9cc5844e94f399835643c49460189", + "placeholder": "โ€‹", + "style": "IPY_MODEL_9916b2d18aa74a3f9bcf794910510586", + "value": "โ€‡1.16M/1.16Mโ€‡[00:00<00:00,โ€‡5.01MB/s]" + } + }, + "61826fd6f7364eb1a63bf4185c71e70c": { + "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 + } + }, + "cf9a808f07544cef813777dfe8b45466": { + "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 + } + }, + "21c746d72bd74493aa786b578563c09b": { + "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": "" + } + }, + "c73e32012e2f49aa9c68b8ecbaade794": { + "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 + } + }, + "4b35dc02722b4cecb442d427d9ca1e63": { + "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": "" + } + }, + "86b9cc5844e94f399835643c49460189": { + "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 + } + }, + "9916b2d18aa74a3f9bcf794910510586": { + "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": "" + } + }, + "d2d0037baa9a4900891882176b6d34a6": { + "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_cd35c22bbe9745329d9858b770fbb81e", + "IPY_MODEL_f11b24ea370040a09a453b971fca31c7", + "IPY_MODEL_267e82e16a1b471396e19b8456663eaa" + ], + "layout": "IPY_MODEL_ab8235ccadad4e19968ddbbaac0a16ff" + } + }, + "cd35c22bbe9745329d9858b770fbb81e": { + "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_afab8c071937454dbda89c0752314c60", + "placeholder": "โ€‹", + "style": "IPY_MODEL_aad16109af6b43f09e67617671759ebb", + "value": "tokenizer.model:โ€‡100%" + } + }, + "f11b24ea370040a09a453b971fca31c7": { + "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_a35dbc25393a41e7bbb579a5b890032b", + "max": 4689074, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e298ae95556544cea377256a5d6bad67", + "value": 4689074 + } + }, + "267e82e16a1b471396e19b8456663eaa": { + "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_0c7bb45a565b4d72b9e2708c4005495f", + "placeholder": "โ€‹", + "style": "IPY_MODEL_2580b74f38b74189b73c5c1adb124411", + "value": "โ€‡4.69M/4.69Mโ€‡[00:01<00:00,โ€‡3.89MB/s]" + } + }, + "ab8235ccadad4e19968ddbbaac0a16ff": { + "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 + } + }, + "afab8c071937454dbda89c0752314c60": { + "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 + } + }, + "aad16109af6b43f09e67617671759ebb": { + "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": "" + } + }, + "a35dbc25393a41e7bbb579a5b890032b": { + "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 + } + }, + "e298ae95556544cea377256a5d6bad67": { + "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": "" + } + }, + "0c7bb45a565b4d72b9e2708c4005495f": { + "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 + } + }, + "2580b74f38b74189b73c5c1adb124411": { + "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": "" + } + }, + "5508647fe53148158c264dbb73c3f32e": { + "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_fd2fcfd902654152a1ac84bee4f93270", + "IPY_MODEL_b9a75cf3a6f04ba3bc41271bbd0c6b62", + "IPY_MODEL_19a5a899060f4d8db55b11c4d7e7cd9d" + ], + "layout": "IPY_MODEL_06f7299115c14218b9896db0a01667ca" + } + }, + "fd2fcfd902654152a1ac84bee4f93270": { + "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_d7e2a97b96124f6ba29ef605ba14fd65", + "placeholder": "โ€‹", + "style": "IPY_MODEL_9d737dfb034743829a12dbd173dd52d0", + "value": "tokenizer.json:โ€‡100%" + } + }, + "b9a75cf3a6f04ba3bc41271bbd0c6b62": { + "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_49c266fb3f844e8f8fe6bd059b932cd5", + "max": 33384568, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f18f9276aea6436bb714332e4652a5a6", + "value": 33384568 + } + }, + "19a5a899060f4d8db55b11c4d7e7cd9d": { + "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_1a9a0308fa62444a95e014e5e4d5c3fc", + "placeholder": "โ€‹", + "style": "IPY_MODEL_ea901074586043129c6a3adbcb942fad", + "value": "โ€‡33.4M/33.4Mโ€‡[00:01<00:00,โ€‡28.0MB/s]" + } + }, + "06f7299115c14218b9896db0a01667ca": { + "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 + } + }, + "d7e2a97b96124f6ba29ef605ba14fd65": { + "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 + } + }, + "9d737dfb034743829a12dbd173dd52d0": { + "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": "" + } + }, + "49c266fb3f844e8f8fe6bd059b932cd5": { + "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 + } + }, + "f18f9276aea6436bb714332e4652a5a6": { + "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": "" + } + }, + "1a9a0308fa62444a95e014e5e4d5c3fc": { + "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 + } + }, + "ea901074586043129c6a3adbcb942fad": { + "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": "" + } + }, + "9f963624927e404b81d41e9030e4fd4a": { + "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_3fa30d51f5b24dc38f7997b00a419bde", + "IPY_MODEL_2f23e495371b429e8ca9c8f05924fe97", + "IPY_MODEL_f6ebb0c6780c42248e64733c442a40f5" + ], + "layout": "IPY_MODEL_d17c3102803c48e182aef09a4849468e" + } + }, + "3fa30d51f5b24dc38f7997b00a419bde": { + "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_abc60719f0774ccba72431145338ab31", + "placeholder": "โ€‹", + "style": "IPY_MODEL_b282f87f82db4a0c8b8ecec301144a14", + "value": "added_tokens.json:โ€‡100%" + } + }, + "2f23e495371b429e8ca9c8f05924fe97": { + "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_58bea53d5f0d4af6b6dc586ebf8808d6", + "max": 35, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1ea9ff8b681f4182b77bf6827866e47c", + "value": 35 + } + }, + "f6ebb0c6780c42248e64733c442a40f5": { + "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_aa25e6337a51473aa30067cd214580a6", + "placeholder": "โ€‹", + "style": "IPY_MODEL_aaab621de1ae4d0e9c0db6bf15d5edf9", + "value": "โ€‡35.0/35.0โ€‡[00:00<00:00,โ€‡4.61kB/s]" + } + }, + "d17c3102803c48e182aef09a4849468e": { + "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 + } + }, + "abc60719f0774ccba72431145338ab31": { + "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 + } + }, + "b282f87f82db4a0c8b8ecec301144a14": { + "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": "" + } + }, + "58bea53d5f0d4af6b6dc586ebf8808d6": { + "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 + } + }, + "1ea9ff8b681f4182b77bf6827866e47c": { + "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": "" + } + }, + "aa25e6337a51473aa30067cd214580a6": { + "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 + } + }, + "aaab621de1ae4d0e9c0db6bf15d5edf9": { + "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": "" + } + }, + "df2091cf02a841a1a5bb9f22802de104": { + "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_31b75cd349334aab89e55ef02186d30c", + "IPY_MODEL_05f0d644c2d24584a69f3bec4d0aa468", + "IPY_MODEL_a0f99a5907084714b12756d34d7d0cc4" + ], + "layout": "IPY_MODEL_9d493b3551d14cf3983a7db93a840b2c" + } + }, + "31b75cd349334aab89e55ef02186d30c": { + "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_06fb7ae0129f4b1bb33745533b464c1a", + "placeholder": "โ€‹", + "style": "IPY_MODEL_b1bc57ad3f8044f595e839067e5b15b0", + "value": "special_tokens_map.json:โ€‡100%" + } + }, + "05f0d644c2d24584a69f3bec4d0aa468": { + "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_f2a39e1dcb474a529576ac3930b0beb7", + "max": 670, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8e26d862735b4e58896cdd4986df14bf", + "value": 670 + } + }, + "a0f99a5907084714b12756d34d7d0cc4": { + "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_c144b67f69404373b4f6899839742df3", + "placeholder": "โ€‹", + "style": "IPY_MODEL_aadf48eeeb98475d9aff2b37a76a3255", + "value": "โ€‡670/670โ€‡[00:00<00:00,โ€‡73.3kB/s]" + } + }, + "9d493b3551d14cf3983a7db93a840b2c": { + "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 + } + }, + "06fb7ae0129f4b1bb33745533b464c1a": { + "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 + } + }, + "b1bc57ad3f8044f595e839067e5b15b0": { + "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": "" + } + }, + "f2a39e1dcb474a529576ac3930b0beb7": { + "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 + } + }, + "8e26d862735b4e58896cdd4986df14bf": { + "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": "" + } + }, + "c144b67f69404373b4f6899839742df3": { + "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 + } + }, + "aadf48eeeb98475d9aff2b37a76a3255": { + "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": "" + } + }, + "0c01b2a17cc14a859d65dab518e7a98f": { + "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_1b018ab085ad4f8d91b1943de944a07c", + "IPY_MODEL_6e9c3dc53a3e48cd80f81c5868a8c25b", + "IPY_MODEL_23d700e3d79f4cf2b9b7829e400fb36e" + ], + "layout": "IPY_MODEL_ca50038524fe403b935951b2103b7e37" + } + }, + "1b018ab085ad4f8d91b1943de944a07c": { + "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_4e64129ef7be4605a19a00f82611f501", + "placeholder": "โ€‹", + "style": "IPY_MODEL_200b532be3eb4cb5b72d357d58446d56", + "value": "README.md:โ€‡100%" + } + }, + "6e9c3dc53a3e48cd80f81c5868a8c25b": { + "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_74c3f8874b2d4bf08e212bcb4a2f4d30", + "max": 982, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e1b83736a1464936a845f4a4bb8c9c87", + "value": 982 + } + }, + "23d700e3d79f4cf2b9b7829e400fb36e": { + "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_cf0aeee0b2a84161a16a80cb1dcff948", + "placeholder": "โ€‹", + "style": "IPY_MODEL_8762c99ed7b940f2b9de85a1d77dc7bf", + "value": "โ€‡982/982โ€‡[00:00<00:00,โ€‡121kB/s]" + } + }, + "ca50038524fe403b935951b2103b7e37": { + "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 + } + }, + "4e64129ef7be4605a19a00f82611f501": { + "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 + } + }, + "200b532be3eb4cb5b72d357d58446d56": { + "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": "" + } + }, + "74c3f8874b2d4bf08e212bcb4a2f4d30": { + "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 + } + }, + "e1b83736a1464936a845f4a4bb8c9c87": { + "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": "" + } + }, + "cf0aeee0b2a84161a16a80cb1dcff948": { + "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 + } + }, + "8762c99ed7b940f2b9de85a1d77dc7bf": { + "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": "" + } + }, + "ba8e6fb4120a40e7bf3f01be180ad698": { + "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_e139dcb62648439197af2f75281d49e2", + "IPY_MODEL_e391fcb714e246aa9a3213c50e5006af", + "IPY_MODEL_5e1448a080184bce85ac3a6d75c0798c" + ], + "layout": "IPY_MODEL_bbaafcdbf60b40cd828024917ff67fc2" + } + }, + "e139dcb62648439197af2f75281d49e2": { + "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_c29d400791d34064914ff2b831d5844c", + "placeholder": "โ€‹", + "style": "IPY_MODEL_eede6c18332f4b77a30ce14676e52307", + "value": "data/train-00000-of-00001.parquet:โ€‡100%" + } + }, + "e391fcb714e246aa9a3213c50e5006af": { + "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_34af403270d94792bca566c43bf402f0", + "max": 116531415, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_012595756eef4c918cfe3f580dba2c37", + "value": 116531415 + } + }, + "5e1448a080184bce85ac3a6d75c0798c": { + "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_f34cb28303bc4089bb276b9b41a3b92b", + "placeholder": "โ€‹", + "style": "IPY_MODEL_da7e57d90cd84b59b817e26b4a7287fa", + "value": "โ€‡117M/117Mโ€‡[00:02<00:00,โ€‡71.8MB/s]" + } + }, + "bbaafcdbf60b40cd828024917ff67fc2": { + "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 + } + }, + "c29d400791d34064914ff2b831d5844c": { + "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 + } + }, + "eede6c18332f4b77a30ce14676e52307": { + "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": "" + } + }, + "34af403270d94792bca566c43bf402f0": { + "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 + } + }, + "012595756eef4c918cfe3f580dba2c37": { + "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": "" + } + }, + "f34cb28303bc4089bb276b9b41a3b92b": { + "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 + } + }, + "da7e57d90cd84b59b817e26b4a7287fa": { + "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": "" + } + }, + "48bc63a3954d4f928da7b41dc9a59221": { + "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_09cb3384bd73421a80099a07603c34ae", + "IPY_MODEL_697e7dff10344f2883c377a092645a21", + "IPY_MODEL_dc21632cee14404fb785fe4d01ebc4ba" + ], + "layout": "IPY_MODEL_d04fc5687a6d42728e36c2f698739df9" + } + }, + "09cb3384bd73421a80099a07603c34ae": { + "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_3962af438c2345789d1ef27c2de54b7b", + "placeholder": "โ€‹", + "style": "IPY_MODEL_089e89e22a314a4b96d576eed56d29dc", + "value": "Generatingโ€‡trainโ€‡split:โ€‡100%" + } + }, + "697e7dff10344f2883c377a092645a21": { + "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_6b8057ede4c544249500ea7a85ed0aca", + "max": 100000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_456161f177ae4d83a27015ff1b03aba3", + "value": 100000 + } + }, + "dc21632cee14404fb785fe4d01ebc4ba": { + "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_19b01f4701cf4ddda39d8fe44ef50859", + "placeholder": "โ€‹", + "style": "IPY_MODEL_acb6c9083d884baca2bfb66b86167d67", + "value": "โ€‡100000/100000โ€‡[00:00<00:00,โ€‡141008.13โ€‡examples/s]" + } + }, + "d04fc5687a6d42728e36c2f698739df9": { + "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 + } + }, + "3962af438c2345789d1ef27c2de54b7b": { + "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 + } + }, + "089e89e22a314a4b96d576eed56d29dc": { + "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": "" + } + }, + "6b8057ede4c544249500ea7a85ed0aca": { + "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 + } + }, + "456161f177ae4d83a27015ff1b03aba3": { + "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": "" + } + }, + "19b01f4701cf4ddda39d8fe44ef50859": { + "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 + } + }, + "acb6c9083d884baca2bfb66b86167d67": { + "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": "" + } + }, + "3dfef9f859144f0f97657ac9e4b978fb": { + "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_6e5521052c534f31b246dd03d693f853", + "IPY_MODEL_09ef7c3eca124b79b2e9540d5f6d9eb5", + "IPY_MODEL_3bb21972b94848feb23264e70701b46d" + ], + "layout": "IPY_MODEL_d93c1e8632c44dc68fc4ce911c05bcca" + } + }, + "6e5521052c534f31b246dd03d693f853": { + "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_9197aae2ec3e4a378608d3b65ee81610", + "placeholder": "โ€‹", + "style": "IPY_MODEL_da994a41920c44a5b7228dac17ef30ae", + "value": "Unsloth:โ€‡Standardizingโ€‡formatsโ€‡(num_proc=8):โ€‡100%" + } + }, + "09ef7c3eca124b79b2e9540d5f6d9eb5": { + "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_efd4f46596eb49768a2d5650eacd04f1", + "max": 100000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e27e20b0bf7445708620ac5d52dda0f1", + "value": 100000 + } + }, + "3bb21972b94848feb23264e70701b46d": { + "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_92eba4a0fd0e403385015f0dad410ee4", + "placeholder": "โ€‹", + "style": "IPY_MODEL_34d6ea7ba4d04a70b61b68e39d95b32a", + "value": "โ€‡100000/100000โ€‡[00:01<00:00,โ€‡116370.10โ€‡examples/s]" + } + }, + "d93c1e8632c44dc68fc4ce911c05bcca": { + "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 + } + }, + "9197aae2ec3e4a378608d3b65ee81610": { + "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 + } + }, + "da994a41920c44a5b7228dac17ef30ae": { + "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": "" + } + }, + "efd4f46596eb49768a2d5650eacd04f1": { + "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 + } + }, + "e27e20b0bf7445708620ac5d52dda0f1": { + "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": "" + } + }, + "92eba4a0fd0e403385015f0dad410ee4": { + "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 + } + }, + "34d6ea7ba4d04a70b61b68e39d95b32a": { + "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": "" + } + }, + "eae8887f2332426c8238bae4c1cd73a1": { + "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_486251b70cce420589ad27ab14c47dcc", + "IPY_MODEL_ded81d21ad544ea294ed89c0fe6a82b1", + "IPY_MODEL_d904853f64224c09a109261d35c380d2" + ], + "layout": "IPY_MODEL_e05dfd2b79ed4d6ab48a71e73d4bf530" + } + }, + "486251b70cce420589ad27ab14c47dcc": { + "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_6249d50fc8e948f1a5621de01f71a186", + "placeholder": "โ€‹", + "style": "IPY_MODEL_1f9709a6ead2491ca760d3ef00a057fb", + "value": "Map:โ€‡100%" + } + }, + "ded81d21ad544ea294ed89c0fe6a82b1": { + "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_d9fb781f50c7445b9622923e26150e78", + "max": 100000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_63fa705847904d43b93d2b5a3f7b798b", + "value": 100000 + } + }, + "d904853f64224c09a109261d35c380d2": { + "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_812970cf649647159678ffb30a5bf898", + "placeholder": "โ€‹", + "style": "IPY_MODEL_cebdd0e4ee2b4c8195c7d1a4c305e79b", + "value": "โ€‡100000/100000โ€‡[00:11<00:00,โ€‡8547.34โ€‡examples/s]" + } + }, + "e05dfd2b79ed4d6ab48a71e73d4bf530": { + "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 + } + }, + "6249d50fc8e948f1a5621de01f71a186": { + "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 + } + }, + "1f9709a6ead2491ca760d3ef00a057fb": { + "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": "" + } + }, + "d9fb781f50c7445b9622923e26150e78": { + "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 + } + }, + "63fa705847904d43b93d2b5a3f7b798b": { + "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": "" + } + }, + "812970cf649647159678ffb30a5bf898": { + "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 + } + }, + "cebdd0e4ee2b4c8195c7d1a4c305e79b": { + "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": "" + } + }, + "22cd66b0ba0a44aeafb6031d422105aa": { + "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_be0dea815ff141a380af46c995e21e3d", + "IPY_MODEL_68b0cfb889e1451691769455545fcc33", + "IPY_MODEL_16c098858a9a469ab3235f78c4e0d412" + ], + "layout": "IPY_MODEL_1a4bfd6451114eb08a36186d9632a795" + } + }, + "be0dea815ff141a380af46c995e21e3d": { + "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_70c8fe0bb9df4d08925124ab6e1ff3de", + "placeholder": "โ€‹", + "style": "IPY_MODEL_65b7014a9ef14fd2b19048eb80b627e6", + "value": "Unsloth:โ€‡Tokenizingโ€‡["text"]โ€‡(num_proc=2):โ€‡100%" + } + }, + "68b0cfb889e1451691769455545fcc33": { + "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_595b376fbf7f4471a3d91555a25baa37", + "max": 100000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9ea86535f09b4505ac321c0a75be87ba", + "value": 100000 + } + }, + "16c098858a9a469ab3235f78c4e0d412": { + "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_cc96706dc78b4ef39bb7cc32b95799df", + "placeholder": "โ€‹", + "style": "IPY_MODEL_bc9dd3a3c6964dca8c392ba626ef0099", + "value": "โ€‡100000/100000โ€‡[01:28<00:00,โ€‡794.85โ€‡examples/s]" + } + }, + "1a4bfd6451114eb08a36186d9632a795": { + "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 + } + }, + "70c8fe0bb9df4d08925124ab6e1ff3de": { + "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 + } + }, + "65b7014a9ef14fd2b19048eb80b627e6": { + "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": "" + } + }, + "595b376fbf7f4471a3d91555a25baa37": { + "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 + } + }, + "9ea86535f09b4505ac321c0a75be87ba": { + "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": "" + } + }, + "cc96706dc78b4ef39bb7cc32b95799df": { + "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 + } + }, + "bc9dd3a3c6964dca8c392ba626ef0099": { + "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": "" + } + }, + "b9bf4c2156574bfca823b1113a77463b": { + "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_abd55d5d76e54e24825e9a552bc5a8d6", + "IPY_MODEL_6c7d6e81de9e4ede8e9ea356fd2eb373", + "IPY_MODEL_f55b25973e134c2cbf70e14923e92f14" + ], + "layout": "IPY_MODEL_ef8ca365a30a45c28d5c6919a1b57752" + } + }, + "abd55d5d76e54e24825e9a552bc5a8d6": { + "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_306e1bdd4bcd42fba8ecc49a06b973b7", + "placeholder": "โ€‹", + "style": "IPY_MODEL_4ec168cd178a4c1aa543982f293e9c37", + "value": "Mapโ€‡(num_proc=8):โ€‡100%" + } + }, + "6c7d6e81de9e4ede8e9ea356fd2eb373": { + "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_471427b714714c6fa35379c5e1d0dd45", + "max": 100000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b17d64b4ee9a4f7a8862381547934170", + "value": 100000 + } + }, + "f55b25973e134c2cbf70e14923e92f14": { + "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_bfd76a73918541aeaea902d0ffe31296", + "placeholder": "โ€‹", + "style": "IPY_MODEL_cceaf871c7d5456a96d072b9cf039033", + "value": "โ€‡100000/100000โ€‡[00:11<00:00,โ€‡5555.35โ€‡examples/s]" + } + }, + "ef8ca365a30a45c28d5c6919a1b57752": { + "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 + } + }, + "306e1bdd4bcd42fba8ecc49a06b973b7": { + "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 + } + }, + "4ec168cd178a4c1aa543982f293e9c37": { + "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": "" + } + }, + "471427b714714c6fa35379c5e1d0dd45": { + "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 + } + }, + "b17d64b4ee9a4f7a8862381547934170": { + "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": "" + } + }, + "bfd76a73918541aeaea902d0ffe31296": { + "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 + } + }, + "cceaf871c7d5456a96d072b9cf039033": { + "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": "" + } + }, + "b85f7f7d75a64eaa82c9168315eeaa12": { + "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_339a816b9f6d473ea9006828597e3b9f", + "IPY_MODEL_7ef367cab0c54d7485244645787a8158", + "IPY_MODEL_cc731c8351b84336a32ef79b8532e196" + ], + "layout": "IPY_MODEL_6150d9a88f9e4d89872a8018b1818175" + } + }, + "339a816b9f6d473ea9006828597e3b9f": { + "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_1d691cb677f740908bb7f1f92c4b1cbb", + "placeholder": "โ€‹", + "style": "IPY_MODEL_40ea8f66d8ae44209977f84a2bf8260f", + "value": "model.safetensors.index.json:โ€‡100%" + } + }, + "7ef367cab0c54d7485244645787a8158": { + "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_1fa23b65d10d4bf28cb8f39679a0ed10", + "max": 90558, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2a6eef0d636a4ccd8b1e3df7ea8f73ce", + "value": 90558 + } + }, + "cc731c8351b84336a32ef79b8532e196": { + "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_d2b6586ecf2f49248941178f886b8747", + "placeholder": "โ€‹", + "style": "IPY_MODEL_b9ec89ab499a4483bfeef0c257815ac9", + "value": "โ€‡90.6k/90.6kโ€‡[00:00<00:00,โ€‡9.88MB/s]" + } + }, + "6150d9a88f9e4d89872a8018b1818175": { + "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 + } + }, + "1d691cb677f740908bb7f1f92c4b1cbb": { + "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 + } + }, + "40ea8f66d8ae44209977f84a2bf8260f": { + "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": "" + } + }, + "1fa23b65d10d4bf28cb8f39679a0ed10": { + "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 + } + }, + "2a6eef0d636a4ccd8b1e3df7ea8f73ce": { + "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": "" + } + }, + "d2b6586ecf2f49248941178f886b8747": { + "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 + } + }, + "b9ec89ab499a4483bfeef0c257815ac9": { + "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": "" + } + }, + "94ee261670d74fc586e92749195f840c": { + "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_3f549e391ef04e87858d329713ca53fa", + "IPY_MODEL_26a064257ab842ed88e4cf1a1284a72e", + "IPY_MODEL_97e7187039e441ea94f6670f1fe7605d" + ], + "layout": "IPY_MODEL_3df0097f611f40858a604797a70e44f3" + } + }, + "3f549e391ef04e87858d329713ca53fa": { + "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_013b075b8e1d4e84932de8b7aa984b3a", + "placeholder": "โ€‹", + "style": "IPY_MODEL_59145eea0ee94e3b845cd212669cec58", + "value": "model-00001-of-00002.safetensors:โ€‡100%" + } + }, + "26a064257ab842ed88e4cf1a1284a72e": { + "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_6714ce7fbde04e10bc5e537703b7c744", + "max": 4961251752, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_eb2b167de1974ef19d4ffcaf1fe0dd65", + "value": 4961251752 + } + }, + "97e7187039e441ea94f6670f1fe7605d": { + "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_4dc3d628f0f14ec2beea903375bca642", + "placeholder": "โ€‹", + "style": "IPY_MODEL_878f005901e24bc7b45361e41fc38cde", + "value": "โ€‡4.96G/4.96Gโ€‡[00:15<00:00,โ€‡425MB/s]" + } + }, + "3df0097f611f40858a604797a70e44f3": { + "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 + } + }, + "013b075b8e1d4e84932de8b7aa984b3a": { + "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 + } + }, + "59145eea0ee94e3b845cd212669cec58": { + "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": "" + } + }, + "6714ce7fbde04e10bc5e537703b7c744": { + "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 + } + }, + "eb2b167de1974ef19d4ffcaf1fe0dd65": { + "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": "" + } + }, + "4dc3d628f0f14ec2beea903375bca642": { + "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 + } + }, + "878f005901e24bc7b45361e41fc38cde": { + "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": "" + } + }, + "a45c64eacd084dfa9a822e86a5c003a4": { + "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_c0c762d121f84ec7bb190a28418ae494", + "IPY_MODEL_4588b16c54a649d1af49f6aef7673991", + "IPY_MODEL_bf4b4ba94ba849cc8372e297b06b957a" + ], + "layout": "IPY_MODEL_ae11658399d742c2afec62941aec6b01" + } + }, + "c0c762d121f84ec7bb190a28418ae494": { + "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_d4b7722ba8de4ed4a842dc6744508015", + "placeholder": "โ€‹", + "style": "IPY_MODEL_b2abfb50fbb84d9884a1faf9a98e286d", + "value": "model-00002-of-00002.safetensors:โ€‡100%" + } + }, + "4588b16c54a649d1af49f6aef7673991": { + "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_f5fdc873c5c54087a6cc2851cffc1e11", + "max": 3639026128, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f9296c9f10234936b39902c00bb562e6", + "value": 3639026128 + } + }, + "bf4b4ba94ba849cc8372e297b06b957a": { + "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_a8208321cb474d0e84ea5b2f085f8cfc", + "placeholder": "โ€‹", + "style": "IPY_MODEL_51f4df66b2c849468b6df712aaa21b61", + "value": "โ€‡3.64G/3.64Gโ€‡[00:11<00:00,โ€‡421MB/s]" + } + }, + "ae11658399d742c2afec62941aec6b01": { + "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 + } + }, + "d4b7722ba8de4ed4a842dc6744508015": { + "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 + } + }, + "b2abfb50fbb84d9884a1faf9a98e286d": { + "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": "" + } + }, + "f5fdc873c5c54087a6cc2851cffc1e11": { + "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 + } + }, + "f9296c9f10234936b39902c00bb562e6": { + "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": "" + } + }, + "a8208321cb474d0e84ea5b2f085f8cfc": { + "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 + } + }, + "51f4df66b2c849468b6df712aaa21b61": { + "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": 0 +} \ No newline at end of file diff --git a/tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb b/tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb new file mode 100644 index 0000000000..0f3d0d4bda --- /dev/null +++ b/tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb @@ -0,0 +1,5292 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "Ya4hWtsWgt6m" + }, + "source": [ + "To run this, press \"*Runtime*\" and press \"*Run all*\" on a **free** Tesla T4 Google Colab instance!\n", + "

\n", + "\n", + "\n", + " Join Discord if you need help + โญ Star us on Github โญ\n", + "
\n", + "\n", + "To install Unsloth on your own computer, follow the installation instructions on our Github page [here](https://docs.unsloth.ai/get-started/installing-+-updating).\n", + "\n", + "You will learn how to do [data prep](#Data), how to [train](#Train), how to [run the model](#Inference), & [how to save it](#Save)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BOuS2Goegt6o" + }, + "source": [ + "### News" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tfzMngqfgt6p" + }, + "source": [ + "Unsloth now supports Text-to-Speech (TTS) models. Read our [guide here](https://docs.unsloth.ai/basics/text-to-speech-tts-fine-tuning).\n", + "\n", + "Read our **[Qwen3 Guide](https://docs.unsloth.ai/basics/qwen3-how-to-run-and-fine-tune)** and check out our new **[Dynamic 2.0](https://docs.unsloth.ai/basics/unsloth-dynamic-2.0-ggufs)** quants which outperforms other quantization methods!\n", + "\n", + "Visit our docs for all our [model uploads](https://docs.unsloth.ai/get-started/all-our-models) and [notebooks](https://docs.unsloth.ai/get-started/unsloth-notebooks).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jdo0bz0Rgt6p" + }, + "source": [ + "### Installation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "89WLvodBgt6p" + }, + "outputs": [], + "source": [ + "%%capture\n", + "import os\n", + "if \"COLAB_\" not in \"\".join(os.environ.keys()):\n", + " !pip install unsloth\n", + "else:\n", + " # Do this only in Colab notebooks! Otherwise use pip install unsloth\n", + " !pip install --no-deps bitsandbytes accelerate xformers==0.0.29.post3 peft trl triton cut_cross_entropy unsloth_zoo\n", + " !pip install sentencepiece protobuf \"datasets>=3.4.1\" huggingface_hub hf_transfer\n", + " !pip install --no-deps unsloth" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TGMWlrRdzwgf" + }, + "source": [ + "### Unsloth\n", + "\n", + "`FastModel` supports loading nearly any model now! This includes Vision and Text models!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 533, + "referenced_widgets": [ + "33815b4c0485402e838127b32ad14a15", + "81c3ee8d97d543ae83db3d2748ecd7cd", + "70f9bccb201a4ea79c1827057cd746f6", + "b32538030b8649e7851bfd58bef2786c", + "0abe1a2b12e54bb5a07db1a8f3a77738", + "e12bca7d49b149b5b1124c28a669db98", + "fab7a02d350946ae9563a05cfd04e22b", + "9be36a19ba86494389904b9fffdc2e48", + "899bf9a4dc594e178d0b95e3cbe08018", + "2fa2784330b2439ab884ce0966037961", + "51649c42cf2145f1b1e90c3436805350", + "eae020595f574192ad9d132853bbf6ec", + "17eaf723882e4efea38119978166fc75", + "409488926d2242c5a8e7b3d5b79c59db", + "26b61507603d453c8c24af24d301bdb9", + "c6c51a350a0b420aab957e3570098e18", + "cebd4fbf1fcf4ab2b65ecf539eda5a1e", + "f14ea72beac74152af5f970e634769ca", + "039f461e15214bd697501219bd9cbbd9", + "9f9d2f43fb5e47df883feb3126fe52e9", + "9e20d704e64a4aaabe5e495c468d9670", + "ae4e4537ed1d4df4b1677700d190a2d2", + "50881898da2f4b35a288ac9befe5024e", + "599375adc5f841d1864166e4d1bd617a", + "3bfc7d7dd81f49a59fc8ad0d6fff858b", + "a0c0025c82394e7fbc6d4cc9a9e9f72f", + "5f0a37b9edc74cbd822e2e71c6c8a956", + "a15e4524521b42108f49dda23ed56023", + "a4eaae1b30d442208257c1870d549738", + "84c68f2059f247628b672b1079130e9b", + "a88fccae11664baa82418c88639f3521", + "1ecb60e1d5934ea19a0d2c29aa01158d", + "f920f6cb263c45d59b851b7c6b631cb5", + "a37b4e454c6743a895f159f963366bc8", + "18fce8679d7d4961b88bb2162e7aa9eb", + "fd60bb21ba2e474cb4a6020bd302835e", + "0c3e3fbf02d84114906e939fcca108b5", + "ab71391446d8482c834429a937f7bb96", + "f9439c3c9b3b4c4a84ed67aa0601a530", + "a89575b4c58348ac98566c22ab7e4118", + "697a187a07204fdfb8556cf5c5028c6b", + "afdb7dfdc17548b39daea1f39d54b45c", + "c4a69698321d435c94211a9dee913c45", + "36c8135711194884be0e03cb5d3ae7e5", + "69a9d565de6a4d54b8f3989fa8b11941", + "090b146b8c6f4fa1ab0261d2a61be9de", + "d2df1617a4094dd295c49a0a72b269c3", + "54d963afc22a46ae93a6ca4bfaa18cf8", + "0b1768a5b5be4a4d9e14ed9e168044b4", + "708d05af00a64d19bb11dc839a5e68db", + "3d20e28d74e549c0a43686b214eebd87", + "dfac71c6372c46bfad46308bdb04480b", + "df50d8daa49a4955914704edb89baf61", + "52f091f99f0442f8bd14a50b7c870c1e", + "c859133fca324effb73ebc3520e746b6", + "f89c08592a25432497bb312f58a13c5c", + "c307400fb17e49ea9d835822e6e22633", + "57ed5097e05f4d92a5c492826f989123", + "db7e622bbd0f4357b5687a7c09c1f6fd", + "8864799f440c440c8ff8c0696e64215d", + "353fa47fb98c4070a150edec64503eaa", + "40bf6f1ffbc5479082fdd7ab153ea974", + "b5a06422fcac41eb97d2de95f14b1806", + "efa41d07d0fa4adda8025fe9490ed850", + "457c60d6a15d4314ba25d370be956a60", + "bc6f29c9a1e14ce8be374867b8be86ac", + "e003ee5cf1804ce3928b544b3fa7ba77", + "dd6e4f9b4c6d4260a62b920a6812fd07", + "4466f20e614a4cdabe1704859c2f1034", + "8949c35d68a043c5b1384774bb07b2ea", + "fca09f95775047efa9d481173f1ba261", + "879c6a0498e54e5c87145c7f7d32de7e", + "740d351b7de241a6acabf6c2853585b6", + "be2b1fb954444be089045a378673a958", + "9520485cc7c24c8584c3838717655012", + "94d9900bc8934de688e95e15c9d0c9bb", + "b469cdf580404f498feb062e4dbad10b", + "5975cf24b18e4082bd80e3f177e0ec15", + "b5b8482ef7c44e12a83795e7337521c2", + "ea9045a5c4504a5e96e6a7b13767fe4e", + "0cba80b626574c11a44c6ce09b5d6e80", + "f344c1ab154b4abdb84b2c221b6162a1", + "0881c055108340f7ab4b840ac1545cbb", + "77907c3444174858bbdc548dee8d0d37", + "a92be3fb752148d887e20afe300f9371", + "aa36bff36ae5448b892afea071fc1f1d", + "12d3049cca4a46c08cf5cdfcd5225248", + "6a9baf0a739c4790baf99b0ccadd6873", + "86c6d49a55b3477bbccc275dcb55fb52", + "77c5f8b431ba4c08b8f4d9d8f9fafc16", + "19c3ef35452d406cb18b72e38b631ee7", + "063db74d47814f95b560bd3bab11b55f", + "5c01ab4767104c0c96c42858317f8877", + "73a283e64f324c27b38216e683050b92", + "81bddfaa180d4875b5cdb5cc4ae45dab", + "77e843913b6e439ead9cf42725eedf3d", + "4f7e8b6b71484cce80ae9cdf0c481825", + "3530e2b431c041c6aeeaca4808ba0424", + "cc14e51320f34274ae12aa28b04183b7", + "f373f2c24f3b413aaa9fe1ccfb9c1eab", + "360142dac8c54a5eb902078ec42abb65", + "a4a64136f6fc48c799abf1701725534e", + "4c5e29de7224428bb87de46854ea915a", + "a3ce4f38be9a456c81146fba440c8e3f", + "70fdd31291b04dd68d66cf31c03d23ff", + "6feaf338d39440e78221649ac84af4a6", + "c9fbf40fa3dd4ba1b363802dc88764da", + "ae7f1fd06ddc4881934690675891855c", + "5e9ba3247edc4fafa7687338424ddccb", + "97d7e3420e24436cb351b1e9679ff8b6" + ] + }, + "id": "-Xbb0cuLzwgf", + "outputId": "3396a9bf-5d9b-45e7-a13e-ac57a78dd441" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "๐Ÿฆฅ Unsloth: Will patch your computer to enable 2x faster free finetuning.\n", + "Forward Router Patched and working\n", + "forward 1 working and being replaced\n", + "Unsloth: Patched Gemma3ForConditionalGeneration llm forward\n", + "๐Ÿฆฅ Unsloth Zoo will now patch everything to make training faster!\n", + "INFO 06-19 09:41:59 [__init__.py:244] Automatically detected platform cuda.\n", + "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4. vLLM: 0.9.1.\n", + " \\\\ /| NVIDIA H100 80GB HBM3. Num GPUs = 1. Max memory: 79.179 GB. Platform: Linux.\n", + "O^O/ \\_/ \\ Torch: 2.7.0+cu126. CUDA: 9.0. CUDA Toolkit: 12.6. Triton: 3.3.0\n", + "\\ / Bfloat16 = TRUE. FA [Xformers = None. FA2 = True]\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": [ + "Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.52, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`.\n" + ] + } + ], + "source": [ + "from unsloth import FastModel\n", + "import torch\n", + "\n", + "fourbit_models = [\n", + " # 4bit dynamic quants for superior accuracy and low memory use\n", + " \"unsloth/gemma-3-1b-it-unsloth-bnb-4bit\",\n", + " \"unsloth/gemma-3-4b-it-unsloth-bnb-4bit\",\n", + " \"unsloth/gemma-3-12b-it-unsloth-bnb-4bit\",\n", + " \"unsloth/gemma-3-27b-it-unsloth-bnb-4bit\",\n", + "\n", + " # Other popular models!\n", + " \"unsloth/Llama-3.1-8B\",\n", + " \"unsloth/Llama-3.2-3B\",\n", + " \"unsloth/Llama-3.3-70B\",\n", + " \"unsloth/mistral-7b-instruct-v0.3\",\n", + " \"unsloth/Phi-4\",\n", + "] # More models at https://huggingface.co/unsloth\n", + "\n", + "model, tokenizer = FastModel.from_pretrained(\n", + " model_name = \"unsloth/gemma-3-4b-it\",\n", + " max_seq_length = 2048, # Choose any for long context!\n", + " load_in_4bit = True, # 4 bit quantization to reduce memory\n", + " load_in_8bit = False, # [NEW!] A bit more accurate, uses 2x memory\n", + " full_finetuning = False, # [NEW!] We have full finetuning now!\n", + " # token = \"hf_...\", # use one if using gated models\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SXd9bTZd1aaL" + }, + "source": [ + "We now add LoRA adapters so we only need to update a small amount of parameters!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "6bZsfBuZDeCL", + "outputId": "af5ba973-a3ce-4b2c-b66f-c5c7bc2cdb8e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Unsloth: Making `model.base_model.model.model.language_model` require gradients\n" + ] + } + ], + "source": [ + "model = FastModel.get_peft_model(\n", + " model,\n", + " finetune_vision_layers = False, # Turn off for just text!\n", + " finetune_language_layers = True, # Should leave on!\n", + " finetune_attention_modules = True, # Attention good for GRPO\n", + " finetune_mlp_modules = True, # SHould leave on always!\n", + "\n", + " r = 8, # Larger = higher accuracy, but might overfit\n", + " lora_alpha = 8, # Recommended alpha == r at least\n", + " lora_dropout = 0,\n", + " bias = \"none\",\n", + " random_state = 3407,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vITh0KVJ10qX" + }, + "source": [ + "\n", + "### Data Prep\n", + "We now use the `Gemma-3` format for conversation style finetunes. We use [Maxime Labonne's FineTome-100k](https://huggingface.co/datasets/mlabonne/FineTome-100k) dataset in ShareGPT style. Gemma-3 renders multi turn conversations like below:\n", + "\n", + "```\n", + "user\n", + "Hello!\n", + "model\n", + "Hey there!\n", + "```\n", + "\n", + "We use our `get_chat_template` function to get the correct chat template. We support `zephyr, chatml, mistral, llama, alpaca, vicuna, vicuna_old, phi3, llama3, phi4, qwen2.5, gemma3` and more." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "LjY75GoYUCB8" + }, + "outputs": [], + "source": [ + "from unsloth.chat_templates import get_chat_template\n", + "tokenizer = get_chat_template(\n", + " tokenizer,\n", + " chat_template = \"gemma-3\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "Mkq4RvEq7FQr" + }, + "outputs": [], + "source": [ + "from datasets import load_dataset\n", + "dataset = load_dataset(\"mlabonne/FineTome-100k\", split = \"train\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "K9CBpiISFa6C" + }, + "source": [ + "We now use `standardize_data_formats` to try converting datasets to the correct format for finetuning purposes!" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "reoBXmAn7HlN" + }, + "outputs": [], + "source": [ + "from unsloth.chat_templates import standardize_data_formats\n", + "dataset = standardize_data_formats(dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6i5Sx9In7vHi" + }, + "source": [ + "Let's see how row 100 looks like!" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dzE1OEXi7s3P", + "outputId": "233eab5d-45b8-4ac2-e64d-20e0b6a13a0e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'conversations': [{'content': 'What is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?',\n", + " 'role': 'user'},\n", + " {'content': 'In programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.',\n", + " 'role': 'assistant'}],\n", + " 'source': 'infini-instruct-top-500k',\n", + " 'score': 4.774171352386475}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset[100]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8Xs0LXio7rfd" + }, + "source": [ + "We now have to apply the chat template for `Gemma-3` onto the conversations, and save it to `text`. We remove the `` token using removeprefix(`''`) since we're finetuning. The Processor will add this token before training and the model expects only one." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "1ahE8Ys37JDJ" + }, + "outputs": [], + "source": [ + "def formatting_prompts_func(examples):\n", + " convos = examples[\"conversations\"]\n", + " texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos]\n", + " return { \"text\" : texts, }\n", + "\n", + "dataset = dataset.map(formatting_prompts_func, batched = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ndDUB23CGAC5" + }, + "source": [ + "Let's see how the chat template did! Notice there is no `` token as the processor tokenizer will be adding one." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 175 + }, + "id": "gGFzmplrEy9I", + "outputId": "7acc565b-0759-4438-cd0c-fa68d0570863" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'user\\nWhat is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?\\nmodel\\nIn programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset[100][\"text\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "idAEIeSQ3xdS" + }, + "source": [ + "\n", + "### Train the model\n", + "Now let's use Huggingface TRL's `SFTTrainer`! More docs here: [TRL SFT docs](https://huggingface.co/docs/trl/sft_trainer). We do 60 steps to speed things up, but you can set `num_train_epochs=1` for a full run, and turn off `max_steps=None`." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 112, + "referenced_widgets": [ + "730aa679b5ac483b929a3646bb5947fa", + "1f333859babd4c1abac69cacda6df864", + "e7f8d2c781a64e83988b0bdd090bdb97", + "3e3feb4fcca74c87abb608c0543236b1", + "2970cbc657d244bab22715bcb788be6a", + "c5b1d1476ddc45249e037df07a96ae37", + "19c27988e01d47e79319f89b5cfd73e2", + "5e48531593d741eaa3669f9118ba8afc", + "62838ffab83d486f86e86417caf0b498", + "7e5378838c114195ba3919fdd683fd7d", + "3350d22f463643ef9a726227f262ac49", + "a8559112c61949318ef9e4ab4cadfeda" + ] + }, + "id": "95_Nn-89DhsL", + "outputId": "2ffe3c70-8c46-41a1-ef51-07c220b5935d" + }, + "outputs": [], + "source": [ + "from trl import SFTTrainer, SFTConfig\n", + "from unsloth import is_bfloat16_supported\n", + "\n", + "trainer = SFTTrainer(\n", + " model=model,\n", + " tokenizer=tokenizer,\n", + " train_dataset=dataset, \n", + " max_seq_length=2048,\n", + " packing=False,\n", + " args=SFTConfig(\n", + " dataset_text_field=\"text\",\n", + " per_device_train_batch_size=2,\n", + " gradient_accumulation_steps=4,\n", + " gradient_checkpointing=True,\n", + " gradient_checkpointing_kwargs={\"use_reentrant\":False},\n", + " warmup_ratio=0.03,\n", + " max_steps=30,\n", + " learning_rate=3e-4,\n", + " fp16=not is_bfloat16_supported(),\n", + " bf16=is_bfloat16_supported(),\n", + " logging_steps=5,\n", + " #optim=\"adamw_8bit\",\n", + " optim=\"adamw_8bit\",\n", + " lr_scheduler_type=\"linear\",\n", + " seed=3407,\n", + " output_dir=\"outputs\",\n", + " report_to=\"none\",\n", + " max_grad_norm=0.3,\n", + " dataset_num_proc=2,\n", + " ),\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "C_sGp5XlG6dq" + }, + "source": [ + "We also use Unsloth's `train_on_completions` method to only train on the assistant outputs and ignore the loss on the user's inputs. This helps increase accuracy of finetunes!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 49, + "referenced_widgets": [ + "30918e50f2174d1c8e7af3eef332b6ee", + "f4b34bc9a62f405383c3b81dc87792b9", + "1be74564b60c48d6b21615adf29009fb", + "148125f955954041a8f5631f9338c43e", + "91693f16da7b421885fe8474cf533327", + "28de62814a6847e0a0b41ec6bf8fdc66", + "c43cef665c9542f982986a74dc50ca98", + "ded71beadafd438ebff07bb0594771e4", + "677e4d7a08ab408e9430d67a2870f707", + "54d2fb7e7c2b4107ba758a7c7ef4f382", + "34da5010faa749e0940c2821f2f46e59", + "d94e1d86e3274277a9d908a7498ef1fa" + ] + }, + "id": "juQiExuBG5Bt", + "outputId": "6f017a0d-2ccc-429e-8a27-ab76c6c23b57" + }, + "outputs": [], + "source": [ + "from unsloth.chat_templates import train_on_responses_only\n", + "trainer = train_on_responses_only(\n", + " trainer,\n", + " instruction_part = \"user\\n\",\n", + " response_part = \"model\\n\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Dv1NBUozV78l" + }, + "source": [ + "Let's verify masking the instruction part is done! Let's print the 100th row again. Notice how the sample only has a single `` as expected!" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 175 + }, + "id": "LtsMVtlkUhja", + "outputId": "aebb55c2-3883-4494-e9f8-78d60b9b08e8" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'user\\nWhat is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?\\nmodel\\nIn programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tokenizer.decode(trainer.train_dataset[100][\"input_ids\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4Kyjy__m9KY3" + }, + "source": [ + "Now let's print the masked out example - you should see only the answer is present:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 175 + }, + "id": "_rD6fl8EUxnG", + "outputId": "e9012c2a-60eb-437e-f145-3e11e9a0dd34" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "' In programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tokenizer.decode([tokenizer.pad_token_id if x == -100 else x for x in trainer.train_dataset[100][\"labels\"]]).replace(tokenizer.pad_token, \" \")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2ejIt2xSNKKp", + "outputId": "ba6de9bc-35f1-48ed-8552-5cf1943d0478" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GPU = NVIDIA H100 80GB HBM3. Max memory = 79.179 GB.\n", + "4.672 GB of memory reserved.\n" + ] + } + ], + "source": [ + "# @title Show current memory stats\n", + "gpu_stats = torch.cuda.get_device_properties(0)\n", + "start_gpu_memory = round(torch.cuda.max_memory_reserved() / 1024 / 1024 / 1024, 3)\n", + "max_memory = round(gpu_stats.total_memory / 1024 / 1024 / 1024, 3)\n", + "print(f\"GPU = {gpu_stats.name}. Max memory = {max_memory} GB.\")\n", + "print(f\"{start_gpu_memory} GB of memory reserved.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CNP1Uidk9mrz" + }, + "source": [ + "Let's train the model! To resume a training run, set `trainer.train(resume_from_checkpoint = True)`" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "yqxqAZ7KJ4oL", + "outputId": "b44425bc-2ccf-4683-ce72-a837e5a07e9e" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n", + " \\\\ /| Num examples = 100,000 | Num Epochs = 1 | Total steps = 30\n", + "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 4\n", + "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 4 x 1) = 8\n", + " \"-____-\" Trainable parameters = 14,901,248/4,000,000,000 (0.37% trained)\n", + "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " \n", + " [30/30 01:08, Epoch 0/1]\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StepTraining Loss
51.338200
100.867400
150.894900
200.846400
250.837000
300.886700

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "trainer_stats = trainer.train()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "pCqnaKmlO1U9", + "outputId": "5d5d33ee-7a84-4418-b038-bd15fb4614e4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "76.5953 seconds used for training.\n", + "1.28 minutes used for training.\n", + "Peak reserved memory = 11.619 GB.\n", + "Peak reserved memory for training = 6.947 GB.\n", + "Peak reserved memory % of max memory = 14.674 %.\n", + "Peak reserved memory for training % of max memory = 8.774 %.\n" + ] + } + ], + "source": [ + "# @title Show final memory and time stats\n", + "used_memory = round(torch.cuda.max_memory_reserved() / 1024 / 1024 / 1024, 3)\n", + "used_memory_for_lora = round(used_memory - start_gpu_memory, 3)\n", + "used_percentage = round(used_memory / max_memory * 100, 3)\n", + "lora_percentage = round(used_memory_for_lora / max_memory * 100, 3)\n", + "print(f\"{trainer_stats.metrics['train_runtime']} seconds used for training.\")\n", + "print(\n", + " f\"{round(trainer_stats.metrics['train_runtime']/60, 2)} minutes used for training.\"\n", + ")\n", + "print(f\"Peak reserved memory = {used_memory} GB.\")\n", + "print(f\"Peak reserved memory for training = {used_memory_for_lora} GB.\")\n", + "print(f\"Peak reserved memory % of max memory = {used_percentage} %.\")\n", + "print(f\"Peak reserved memory for training % of max memory = {lora_percentage} %.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ekOmTR1hSNcr" + }, + "source": [ + "\n", + "### Inference\n", + "Let's run the model via Unsloth native inference! According to the `Gemma-3` team, the recommended settings for inference are `temperature = 1.0, top_p = 0.95, top_k = 64`" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "kR3gIAX-SM2q", + "outputId": "407daa07-ae31-4771-8c31-779665e53bd8" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "You have set `compile_config`, but we are unable to meet the criteria for compilation. Compilation will be skipped.\n" + ] + }, + { + "data": { + "text/plain": [ + "['user\\nContinue the sequence: 1, 1, 2, 3, 5, 8,\\nmodel\\nThe next term in the sequence is 13, and the next is 21, following the pattern of the Fibonacci sequence.']" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from unsloth.chat_templates import get_chat_template\n", + "tokenizer = get_chat_template(\n", + " tokenizer,\n", + " chat_template = \"gemma-3\",\n", + ")\n", + "messages = [{\n", + " \"role\": \"user\",\n", + " \"content\": [{\n", + " \"type\" : \"text\",\n", + " \"text\" : \"Continue the sequence: 1, 1, 2, 3, 5, 8,\",\n", + " }]\n", + "}]\n", + "text = tokenizer.apply_chat_template(\n", + " messages,\n", + " add_generation_prompt = True, # Must add for generation\n", + ")\n", + "outputs = model.generate(\n", + " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", + " max_new_tokens = 64, # Increase for longer outputs!\n", + " # Recommended Gemma-3 settings!\n", + " temperature = 1.0, top_p = 0.95, top_k = 64,\n", + ")\n", + "tokenizer.batch_decode(outputs)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CrSvZObor0lY" + }, + "source": [ + " You can also use a `TextStreamer` for continuous inference - so you can see the generation token by token, instead of waiting the whole time!" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "e2pEuRb1r2Vg", + "outputId": "de757d2d-a66b-4be6-c9c9-78cf491dfeba" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The sky appears blue due to a phenomenon called Rayleigh scattering. Here's how it works:\n", + "\n", + "1. Sunlight, or white light, is made up of all the colors of the rainbow.\n", + "\n", + "2. As sunlight travels through the Earth's atmosphere, it collides with tiny air molecules, such as nitrogen and\n" + ] + } + ], + "source": [ + "messages = [{\n", + " \"role\": \"user\",\n", + " \"content\": [{\"type\" : \"text\", \"text\" : \"Why is the sky blue?\",}]\n", + "}]\n", + "text = tokenizer.apply_chat_template(\n", + " messages,\n", + " add_generation_prompt = True, # Must add for generation\n", + ")\n", + "\n", + "from transformers import TextStreamer\n", + "_ = model.generate(\n", + " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", + " max_new_tokens = 64, # Increase for longer outputs!\n", + " # Recommended Gemma-3 settings!\n", + " temperature = 1.0, top_p = 0.95, top_k = 64,\n", + " streamer = TextStreamer(tokenizer, skip_prompt = True),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uMuVrWbjAzhc" + }, + "source": [ + "\n", + "### Saving, loading finetuned models\n", + "To save the final model as LoRA adapters, either use Huggingface's `push_to_hub` for an online save or `save_pretrained` for a local save.\n", + "\n", + "**[NOTE]** This ONLY saves the LoRA adapters, and not the full model. To save to 16bit or GGUF, scroll down!" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "upcOlWe7A1vc", + "outputId": "a99a1086-5a2d-4828-d599-7e3634a069cd" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['gemma-3/processor_config.json']" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.save_pretrained(\"gemma-3\") # Local saving\n", + "tokenizer.save_pretrained(\"gemma-3\")\n", + "# model.push_to_hub(\"HF_ACCOUNT/gemma-3\", token = \"...\") # Online saving\n", + "# tokenizer.push_to_hub(\"HF_ACCOUNT/gemma-3\", token = \"...\") # Online saving" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AEEcJ4qfC7Lp" + }, + "source": [ + "Now if you want to load the LoRA adapters we just saved for inference, set `False` to `True`:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "MKX_XKs_BNZR", + "outputId": "d016d936-4bd5-40f8-dffa-bcfad987f489" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gemma is a family of open-source language models created by the team at Google DeepMind. There are different sizes of Gemma models that can be downloaded from the Google Cloud Marketplace, and the open-source models can be used to generate text, translate languages, write different kinds of creative content, and answer your questions\n" + ] + } + ], + "source": [ + "if False:\n", + " from unsloth import FastModel\n", + " model, tokenizer = FastModel.from_pretrained(\n", + " model_name = \"lora_model\", # YOUR MODEL YOU USED FOR TRAINING\n", + " max_seq_length = 2048,\n", + " load_in_4bit = True,\n", + " )\n", + "\n", + "messages = [{\n", + " \"role\": \"user\",\n", + " \"content\": [{\"type\" : \"text\", \"text\" : \"What is Gemma-3?\",}]\n", + "}]\n", + "text = tokenizer.apply_chat_template(\n", + " messages,\n", + " add_generation_prompt = True, # Must add for generation\n", + ")\n", + "\n", + "from transformers import TextStreamer\n", + "_ = model.generate(\n", + " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", + " max_new_tokens = 64, # Increase for longer outputs!\n", + " # Recommended Gemma-3 settings!\n", + " temperature = 1.0, top_p = 0.95, top_k = 64,\n", + " streamer = TextStreamer(tokenizer, skip_prompt = True),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f422JgM9sdVT" + }, + "source": [ + "### Saving to float16 for VLLM\n", + "\n", + "We also support saving to `float16` directly for deployment! We save it in the folder `gemma-3-finetune`. Set `if False` to `if True` to let it run!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "iHjt_SMYsd3P" + }, + "outputs": [], + "source": [ + "if False: # Change to True to save finetune!\n", + " model.save_pretrained_merged(\"gemma-3-finetune\", tokenizer)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "z6O48DbNIAr0" + }, + "source": [ + "If you want to upload / push to your Hugging Face account, set `if False` to `if True` and add your Hugging Face token and upload location!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ZV-CiKPrIFG0" + }, + "outputs": [], + "source": [ + "if False: # Change to True to upload finetune\n", + " model.push_to_hub_merged(\n", + " \"HF_ACCOUNT/gemma-3-finetune\", tokenizer,\n", + " token = \"hf_...\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TCv4vXHd61i7" + }, + "source": [ + "### GGUF / llama.cpp Conversion\n", + "To save to `GGUF` / `llama.cpp`, we support it natively now for all models! For now, you can convert easily to `Q8_0, F16 or BF16` precision. `Q4_K_M` for 4bit will come later!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "FqfebeAdT073" + }, + "outputs": [], + "source": [ + "if False: # Change to True to save to GGUF\n", + " model.save_pretrained_gguf(\n", + " \"gemma-3-finetune\",\n", + " quantization_type = \"Q8_0\", # For now only Q8_0, BF16, F16 supported\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Q974YEVPI7JS" + }, + "source": [ + "Likewise, if you want to instead push to GGUF to your Hugging Face account, set `if False` to `if True` and add your Hugging Face token and upload location!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ZgcJIhJ0I_es" + }, + "outputs": [], + "source": [ + "if False: # Change to True to upload GGUF\n", + " model.push_to_hub_gguf(\n", + " \"gemma-3-finetune\",\n", + " quantization_type = \"Q8_0\", # Only Q8_0, BF16, F16 supported\n", + " repo_id = \"HF_ACCOUNT/gemma-finetune-gguf\",\n", + " token = \"hf_...\",\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IXhcqGKAgt7E" + }, + "source": [ + "Now, use the `gemma-3-finetune.gguf` file or `gemma-3-finetune-Q4_K_M.gguf` file in llama.cpp or a UI based system like Jan or Open WebUI. You can install Jan [here](https://github.com/janhq/jan) and Open WebUI [here](https://github.com/open-webui/open-webui)\n", + "\n", + "And we're done! If you have any questions on Unsloth, we have a [Discord](https://discord.gg/unsloth) channel! If you find any bugs or want to keep updated with the latest LLM stuff, or need help, join projects etc, feel free to join our Discord!\n", + "\n", + "Some other links:\n", + "1. Train your own reasoning model - Llama GRPO notebook [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.1_(8B)-GRPO.ipynb)\n", + "2. Saving finetunes to Ollama. [Free notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_(8B)-Ollama.ipynb)\n", + "3. Llama 3.2 Vision finetuning - Radiography use case. [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.2_(11B)-Vision.ipynb)\n", + "6. See notebooks for DPO, ORPO, Continued pretraining, conversational finetuning and more on our [documentation](https://docs.unsloth.ai/get-started/unsloth-notebooks)!\n", + "\n", + "

\n", + " \n", + " \n", + " \n", + "\n", + " Join Discord if you need help + โญ๏ธ Star us on Github โญ๏ธ\n", + "
\n" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "039f461e15214bd697501219bd9cbbd9": { + "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 + } + }, + "063db74d47814f95b560bd3bab11b55f": { + "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_3530e2b431c041c6aeeaca4808ba0424", + "placeholder": "โ€‹", + "style": "IPY_MODEL_cc14e51320f34274ae12aa28b04183b7", + "value": "โ€‡35.0/35.0โ€‡[00:00<00:00,โ€‡2.05kB/s]" + } + }, + "0881c055108340f7ab4b840ac1545cbb": { + "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 + } + }, + "090b146b8c6f4fa1ab0261d2a61be9de": { + "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_708d05af00a64d19bb11dc839a5e68db", + "placeholder": "โ€‹", + "style": "IPY_MODEL_3d20e28d74e549c0a43686b214eebd87", + "value": "preprocessor_config.json:โ€‡100%" + } + }, + "0abe1a2b12e54bb5a07db1a8f3a77738": { + "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 + } + }, + "0b1768a5b5be4a4d9e14ed9e168044b4": { + "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 + } + }, + "0c3e3fbf02d84114906e939fcca108b5": { + "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_c4a69698321d435c94211a9dee913c45", + "placeholder": "โ€‹", + "style": "IPY_MODEL_36c8135711194884be0e03cb5d3ae7e5", + "value": "โ€‡1.61k/1.61kโ€‡[00:00<00:00,โ€‡181kB/s]" + } + }, + "0cba80b626574c11a44c6ce09b5d6e80": { + "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_12d3049cca4a46c08cf5cdfcd5225248", + "placeholder": "โ€‹", + "style": "IPY_MODEL_6a9baf0a739c4790baf99b0ccadd6873", + "value": "โ€‡33.4M/33.4Mโ€‡[00:00<00:00,โ€‡70.2MB/s]" + } + }, + "12d3049cca4a46c08cf5cdfcd5225248": { + "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 + } + }, + "148125f955954041a8f5631f9338c43e": { + "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_54d2fb7e7c2b4107ba758a7c7ef4f382", + "placeholder": "โ€‹", + "style": "IPY_MODEL_34da5010faa749e0940c2821f2f46e59", + "value": "โ€‡100000/100000โ€‡[00:43<00:00,โ€‡2627.58โ€‡examples/s]" + } + }, + "17eaf723882e4efea38119978166fc75": { + "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_cebd4fbf1fcf4ab2b65ecf539eda5a1e", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f14ea72beac74152af5f970e634769ca", + "value": "generation_config.json:โ€‡100%" + } + }, + "18fce8679d7d4961b88bb2162e7aa9eb": { + "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_f9439c3c9b3b4c4a84ed67aa0601a530", + "placeholder": "โ€‹", + "style": "IPY_MODEL_a89575b4c58348ac98566c22ab7e4118", + "value": "chat_template.json:โ€‡100%" + } + }, + "19c27988e01d47e79319f89b5cfd73e2": { + "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": "" + } + }, + "19c3ef35452d406cb18b72e38b631ee7": { + "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_77e843913b6e439ead9cf42725eedf3d", + "max": 35, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4f7e8b6b71484cce80ae9cdf0c481825", + "value": 35 + } + }, + "1be74564b60c48d6b21615adf29009fb": { + "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_ded71beadafd438ebff07bb0594771e4", + "max": 100000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_677e4d7a08ab408e9430d67a2870f707", + "value": 100000 + } + }, + "1ecb60e1d5934ea19a0d2c29aa01158d": { + "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 + } + }, + "1f333859babd4c1abac69cacda6df864": { + "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_c5b1d1476ddc45249e037df07a96ae37", + "placeholder": "โ€‹", + "style": "IPY_MODEL_19c27988e01d47e79319f89b5cfd73e2", + "value": "Unsloth:โ€‡Tokenizingโ€‡["text"]โ€‡(num_proc=2):โ€‡100%" + } + }, + "26b61507603d453c8c24af24d301bdb9": { + "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_9e20d704e64a4aaabe5e495c468d9670", + "placeholder": "โ€‹", + "style": "IPY_MODEL_ae4e4537ed1d4df4b1677700d190a2d2", + "value": "โ€‡192/192โ€‡[00:00<00:00,โ€‡20.1kB/s]" + } + }, + "28de62814a6847e0a0b41ec6bf8fdc66": { + "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 + } + }, + "2970cbc657d244bab22715bcb788be6a": { + "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 + } + }, + "2fa2784330b2439ab884ce0966037961": { + "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 + } + }, + "30918e50f2174d1c8e7af3eef332b6ee": { + "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_f4b34bc9a62f405383c3b81dc87792b9", + "IPY_MODEL_1be74564b60c48d6b21615adf29009fb", + "IPY_MODEL_148125f955954041a8f5631f9338c43e" + ], + "layout": "IPY_MODEL_91693f16da7b421885fe8474cf533327" + } + }, + "3350d22f463643ef9a726227f262ac49": { + "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": "" + } + }, + "33815b4c0485402e838127b32ad14a15": { + "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_81c3ee8d97d543ae83db3d2748ecd7cd", + "IPY_MODEL_70f9bccb201a4ea79c1827057cd746f6", + "IPY_MODEL_b32538030b8649e7851bfd58bef2786c" + ], + "layout": "IPY_MODEL_0abe1a2b12e54bb5a07db1a8f3a77738" + } + }, + "34da5010faa749e0940c2821f2f46e59": { + "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": "" + } + }, + "3530e2b431c041c6aeeaca4808ba0424": { + "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 + } + }, + "353fa47fb98c4070a150edec64503eaa": { + "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 + } + }, + "360142dac8c54a5eb902078ec42abb65": { + "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_70fdd31291b04dd68d66cf31c03d23ff", + "placeholder": "โ€‹", + "style": "IPY_MODEL_6feaf338d39440e78221649ac84af4a6", + "value": "special_tokens_map.json:โ€‡100%" + } + }, + "36c8135711194884be0e03cb5d3ae7e5": { + "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": "" + } + }, + "3bfc7d7dd81f49a59fc8ad0d6fff858b": { + "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_84c68f2059f247628b672b1079130e9b", + "max": 70, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a88fccae11664baa82418c88639f3521", + "value": 70 + } + }, + "3d20e28d74e549c0a43686b214eebd87": { + "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": "" + } + }, + "3e3feb4fcca74c87abb608c0543236b1": { + "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_7e5378838c114195ba3919fdd683fd7d", + "placeholder": "โ€‹", + "style": "IPY_MODEL_3350d22f463643ef9a726227f262ac49", + "value": "โ€‡100000/100000โ€‡[03:03<00:00,โ€‡568.03โ€‡examples/s]" + } + }, + "409488926d2242c5a8e7b3d5b79c59db": { + "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_039f461e15214bd697501219bd9cbbd9", + "max": 192, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9f9d2f43fb5e47df883feb3126fe52e9", + "value": 192 + } + }, + "40bf6f1ffbc5479082fdd7ab153ea974": { + "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": "" + } + }, + "4466f20e614a4cdabe1704859c2f1034": { + "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_be2b1fb954444be089045a378673a958", + "max": 4689074, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9520485cc7c24c8584c3838717655012", + "value": 4689074 + } + }, + "457c60d6a15d4314ba25d370be956a60": { + "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 + } + }, + "4c5e29de7224428bb87de46854ea915a": { + "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_5e9ba3247edc4fafa7687338424ddccb", + "placeholder": "โ€‹", + "style": "IPY_MODEL_97d7e3420e24436cb351b1e9679ff8b6", + "value": "โ€‡670/670โ€‡[00:00<00:00,โ€‡42.7kB/s]" + } + }, + "4f7e8b6b71484cce80ae9cdf0c481825": { + "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": "" + } + }, + "50881898da2f4b35a288ac9befe5024e": { + "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_599375adc5f841d1864166e4d1bd617a", + "IPY_MODEL_3bfc7d7dd81f49a59fc8ad0d6fff858b", + "IPY_MODEL_a0c0025c82394e7fbc6d4cc9a9e9f72f" + ], + "layout": "IPY_MODEL_5f0a37b9edc74cbd822e2e71c6c8a956" + } + }, + "51649c42cf2145f1b1e90c3436805350": { + "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": "" + } + }, + "52f091f99f0442f8bd14a50b7c870c1e": { + "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 + } + }, + "54d2fb7e7c2b4107ba758a7c7ef4f382": { + "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 + } + }, + "54d963afc22a46ae93a6ca4bfaa18cf8": { + "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_52f091f99f0442f8bd14a50b7c870c1e", + "placeholder": "โ€‹", + "style": "IPY_MODEL_c859133fca324effb73ebc3520e746b6", + "value": "โ€‡570/570โ€‡[00:00<00:00,โ€‡61.1kB/s]" + } + }, + "57ed5097e05f4d92a5c492826f989123": { + "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_b5a06422fcac41eb97d2de95f14b1806", + "max": 1157008, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_efa41d07d0fa4adda8025fe9490ed850", + "value": 1157008 + } + }, + "5975cf24b18e4082bd80e3f177e0ec15": { + "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_b5b8482ef7c44e12a83795e7337521c2", + "IPY_MODEL_ea9045a5c4504a5e96e6a7b13767fe4e", + "IPY_MODEL_0cba80b626574c11a44c6ce09b5d6e80" + ], + "layout": "IPY_MODEL_f344c1ab154b4abdb84b2c221b6162a1" + } + }, + "599375adc5f841d1864166e4d1bd617a": { + "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_a15e4524521b42108f49dda23ed56023", + "placeholder": "โ€‹", + "style": "IPY_MODEL_a4eaae1b30d442208257c1870d549738", + "value": "processor_config.json:โ€‡100%" + } + }, + "5c01ab4767104c0c96c42858317f8877": { + "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 + } + }, + "5e48531593d741eaa3669f9118ba8afc": { + "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 + } + }, + "5e9ba3247edc4fafa7687338424ddccb": { + "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 + } + }, + "5f0a37b9edc74cbd822e2e71c6c8a956": { + "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 + } + }, + "62838ffab83d486f86e86417caf0b498": { + "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": "" + } + }, + "677e4d7a08ab408e9430d67a2870f707": { + "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": "" + } + }, + "697a187a07204fdfb8556cf5c5028c6b": { + "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 + } + }, + "69a9d565de6a4d54b8f3989fa8b11941": { + "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_090b146b8c6f4fa1ab0261d2a61be9de", + "IPY_MODEL_d2df1617a4094dd295c49a0a72b269c3", + "IPY_MODEL_54d963afc22a46ae93a6ca4bfaa18cf8" + ], + "layout": "IPY_MODEL_0b1768a5b5be4a4d9e14ed9e168044b4" + } + }, + "6a9baf0a739c4790baf99b0ccadd6873": { + "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": "" + } + }, + "6feaf338d39440e78221649ac84af4a6": { + "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": "" + } + }, + "708d05af00a64d19bb11dc839a5e68db": { + "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 + } + }, + "70f9bccb201a4ea79c1827057cd746f6": { + "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": "danger", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9be36a19ba86494389904b9fffdc2e48", + "max": 4437712931, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_899bf9a4dc594e178d0b95e3cbe08018", + "value": 4437712508 + } + }, + "70fdd31291b04dd68d66cf31c03d23ff": { + "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 + } + }, + "730aa679b5ac483b929a3646bb5947fa": { + "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_1f333859babd4c1abac69cacda6df864", + "IPY_MODEL_e7f8d2c781a64e83988b0bdd090bdb97", + "IPY_MODEL_3e3feb4fcca74c87abb608c0543236b1" + ], + "layout": "IPY_MODEL_2970cbc657d244bab22715bcb788be6a" + } + }, + "73a283e64f324c27b38216e683050b92": { + "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 + } + }, + "740d351b7de241a6acabf6c2853585b6": { + "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": "" + } + }, + "77907c3444174858bbdc548dee8d0d37": { + "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": "" + } + }, + "77c5f8b431ba4c08b8f4d9d8f9fafc16": { + "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_73a283e64f324c27b38216e683050b92", + "placeholder": "โ€‹", + "style": "IPY_MODEL_81bddfaa180d4875b5cdb5cc4ae45dab", + "value": "added_tokens.json:โ€‡100%" + } + }, + "77e843913b6e439ead9cf42725eedf3d": { + "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 + } + }, + "7e5378838c114195ba3919fdd683fd7d": { + "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 + } + }, + "81bddfaa180d4875b5cdb5cc4ae45dab": { + "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": "" + } + }, + "81c3ee8d97d543ae83db3d2748ecd7cd": { + "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_e12bca7d49b149b5b1124c28a669db98", + "placeholder": "โ€‹", + "style": "IPY_MODEL_fab7a02d350946ae9563a05cfd04e22b", + "value": "model.safetensors:โ€‡100%" + } + }, + "84c68f2059f247628b672b1079130e9b": { + "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 + } + }, + "86c6d49a55b3477bbccc275dcb55fb52": { + "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_77c5f8b431ba4c08b8f4d9d8f9fafc16", + "IPY_MODEL_19c3ef35452d406cb18b72e38b631ee7", + "IPY_MODEL_063db74d47814f95b560bd3bab11b55f" + ], + "layout": "IPY_MODEL_5c01ab4767104c0c96c42858317f8877" + } + }, + "879c6a0498e54e5c87145c7f7d32de7e": { + "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 + } + }, + "8864799f440c440c8ff8c0696e64215d": { + "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 + } + }, + "8949c35d68a043c5b1384774bb07b2ea": { + "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_94d9900bc8934de688e95e15c9d0c9bb", + "placeholder": "โ€‹", + "style": "IPY_MODEL_b469cdf580404f498feb062e4dbad10b", + "value": "โ€‡4.69M/4.69Mโ€‡[00:00<00:00,โ€‡22.1MB/s]" + } + }, + "899bf9a4dc594e178d0b95e3cbe08018": { + "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": "" + } + }, + "91693f16da7b421885fe8474cf533327": { + "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 + } + }, + "94d9900bc8934de688e95e15c9d0c9bb": { + "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 + } + }, + "9520485cc7c24c8584c3838717655012": { + "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": "" + } + }, + "97d7e3420e24436cb351b1e9679ff8b6": { + "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": "" + } + }, + "9be36a19ba86494389904b9fffdc2e48": { + "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 + } + }, + "9e20d704e64a4aaabe5e495c468d9670": { + "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 + } + }, + "9f9d2f43fb5e47df883feb3126fe52e9": { + "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": "" + } + }, + "a0c0025c82394e7fbc6d4cc9a9e9f72f": { + "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_1ecb60e1d5934ea19a0d2c29aa01158d", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f920f6cb263c45d59b851b7c6b631cb5", + "value": "โ€‡70.0/70.0โ€‡[00:00<00:00,โ€‡8.21kB/s]" + } + }, + "a15e4524521b42108f49dda23ed56023": { + "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 + } + }, + "a37b4e454c6743a895f159f963366bc8": { + "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_18fce8679d7d4961b88bb2162e7aa9eb", + "IPY_MODEL_fd60bb21ba2e474cb4a6020bd302835e", + "IPY_MODEL_0c3e3fbf02d84114906e939fcca108b5" + ], + "layout": "IPY_MODEL_ab71391446d8482c834429a937f7bb96" + } + }, + "a3ce4f38be9a456c81146fba440c8e3f": { + "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 + } + }, + "a4a64136f6fc48c799abf1701725534e": { + "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_c9fbf40fa3dd4ba1b363802dc88764da", + "max": 670, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ae7f1fd06ddc4881934690675891855c", + "value": 670 + } + }, + "a4eaae1b30d442208257c1870d549738": { + "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": "" + } + }, + "a88fccae11664baa82418c88639f3521": { + "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": "" + } + }, + "a89575b4c58348ac98566c22ab7e4118": { + "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": "" + } + }, + "a92be3fb752148d887e20afe300f9371": { + "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 + } + }, + "aa36bff36ae5448b892afea071fc1f1d": { + "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": "" + } + }, + "ab71391446d8482c834429a937f7bb96": { + "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 + } + }, + "ae4e4537ed1d4df4b1677700d190a2d2": { + "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": "" + } + }, + "ae7f1fd06ddc4881934690675891855c": { + "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": "" + } + }, + "afdb7dfdc17548b39daea1f39d54b45c": { + "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": "" + } + }, + "b32538030b8649e7851bfd58bef2786c": { + "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_2fa2784330b2439ab884ce0966037961", + "placeholder": "โ€‹", + "style": "IPY_MODEL_51649c42cf2145f1b1e90c3436805350", + "value": "โ€‡4.44G/4.44Gโ€‡[00:31<00:00,โ€‡142MB/s]" + } + }, + "b469cdf580404f498feb062e4dbad10b": { + "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": "" + } + }, + "b5a06422fcac41eb97d2de95f14b1806": { + "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 + } + }, + "b5b8482ef7c44e12a83795e7337521c2": { + "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_0881c055108340f7ab4b840ac1545cbb", + "placeholder": "โ€‹", + "style": "IPY_MODEL_77907c3444174858bbdc548dee8d0d37", + "value": "tokenizer.json:โ€‡100%" + } + }, + "bc6f29c9a1e14ce8be374867b8be86ac": { + "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": "" + } + }, + "be2b1fb954444be089045a378673a958": { + "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 + } + }, + "c307400fb17e49ea9d835822e6e22633": { + "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_353fa47fb98c4070a150edec64503eaa", + "placeholder": "โ€‹", + "style": "IPY_MODEL_40bf6f1ffbc5479082fdd7ab153ea974", + "value": "tokenizer_config.json:โ€‡100%" + } + }, + "c43cef665c9542f982986a74dc50ca98": { + "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": "" + } + }, + "c4a69698321d435c94211a9dee913c45": { + "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 + } + }, + "c5b1d1476ddc45249e037df07a96ae37": { + "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 + } + }, + "c6c51a350a0b420aab957e3570098e18": { + "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 + } + }, + "c859133fca324effb73ebc3520e746b6": { + "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": "" + } + }, + "c9fbf40fa3dd4ba1b363802dc88764da": { + "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 + } + }, + "cc14e51320f34274ae12aa28b04183b7": { + "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": "" + } + }, + "cebd4fbf1fcf4ab2b65ecf539eda5a1e": { + "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 + } + }, + "d2df1617a4094dd295c49a0a72b269c3": { + "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_dfac71c6372c46bfad46308bdb04480b", + "max": 570, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_df50d8daa49a4955914704edb89baf61", + "value": 570 + } + }, + "db7e622bbd0f4357b5687a7c09c1f6fd": { + "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_457c60d6a15d4314ba25d370be956a60", + "placeholder": "โ€‹", + "style": "IPY_MODEL_bc6f29c9a1e14ce8be374867b8be86ac", + "value": "โ€‡1.16M/1.16Mโ€‡[00:00<00:00,โ€‡10.7MB/s]" + } + }, + "dd6e4f9b4c6d4260a62b920a6812fd07": { + "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_879c6a0498e54e5c87145c7f7d32de7e", + "placeholder": "โ€‹", + "style": "IPY_MODEL_740d351b7de241a6acabf6c2853585b6", + "value": "tokenizer.model:โ€‡100%" + } + }, + "ded71beadafd438ebff07bb0594771e4": { + "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 + } + }, + "df50d8daa49a4955914704edb89baf61": { + "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": "" + } + }, + "dfac71c6372c46bfad46308bdb04480b": { + "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 + } + }, + "e003ee5cf1804ce3928b544b3fa7ba77": { + "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_dd6e4f9b4c6d4260a62b920a6812fd07", + "IPY_MODEL_4466f20e614a4cdabe1704859c2f1034", + "IPY_MODEL_8949c35d68a043c5b1384774bb07b2ea" + ], + "layout": "IPY_MODEL_fca09f95775047efa9d481173f1ba261" + } + }, + "e12bca7d49b149b5b1124c28a669db98": { + "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 + } + }, + "e7f8d2c781a64e83988b0bdd090bdb97": { + "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_5e48531593d741eaa3669f9118ba8afc", + "max": 100000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_62838ffab83d486f86e86417caf0b498", + "value": 100000 + } + }, + "ea9045a5c4504a5e96e6a7b13767fe4e": { + "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_a92be3fb752148d887e20afe300f9371", + "max": 33384568, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_aa36bff36ae5448b892afea071fc1f1d", + "value": 33384568 + } + }, + "eae020595f574192ad9d132853bbf6ec": { + "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_17eaf723882e4efea38119978166fc75", + "IPY_MODEL_409488926d2242c5a8e7b3d5b79c59db", + "IPY_MODEL_26b61507603d453c8c24af24d301bdb9" + ], + "layout": "IPY_MODEL_c6c51a350a0b420aab957e3570098e18" + } + }, + "efa41d07d0fa4adda8025fe9490ed850": { + "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": "" + } + }, + "f14ea72beac74152af5f970e634769ca": { + "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": "" + } + }, + "f344c1ab154b4abdb84b2c221b6162a1": { + "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 + } + }, + "f373f2c24f3b413aaa9fe1ccfb9c1eab": { + "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_360142dac8c54a5eb902078ec42abb65", + "IPY_MODEL_a4a64136f6fc48c799abf1701725534e", + "IPY_MODEL_4c5e29de7224428bb87de46854ea915a" + ], + "layout": "IPY_MODEL_a3ce4f38be9a456c81146fba440c8e3f" + } + }, + "f4b34bc9a62f405383c3b81dc87792b9": { + "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_28de62814a6847e0a0b41ec6bf8fdc66", + "placeholder": "โ€‹", + "style": "IPY_MODEL_c43cef665c9542f982986a74dc50ca98", + "value": "Mapโ€‡(num_proc=2):โ€‡100%" + } + }, + "f89c08592a25432497bb312f58a13c5c": { + "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_c307400fb17e49ea9d835822e6e22633", + "IPY_MODEL_57ed5097e05f4d92a5c492826f989123", + "IPY_MODEL_db7e622bbd0f4357b5687a7c09c1f6fd" + ], + "layout": "IPY_MODEL_8864799f440c440c8ff8c0696e64215d" + } + }, + "f920f6cb263c45d59b851b7c6b631cb5": { + "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": "" + } + }, + "f9439c3c9b3b4c4a84ed67aa0601a530": { + "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 + } + }, + "fab7a02d350946ae9563a05cfd04e22b": { + "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": "" + } + }, + "fca09f95775047efa9d481173f1ba261": { + "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 + } + }, + "fd60bb21ba2e474cb4a6020bd302835e": { + "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_697a187a07204fdfb8556cf5c5028c6b", + "max": 1615, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_afdb7dfdc17548b39daea1f39d54b45c", + "value": 1615 + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_H100.ipynb b/tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_H100.ipynb new file mode 100644 index 0000000000..003d7049ba --- /dev/null +++ b/tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_H100.ipynb @@ -0,0 +1,1345 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4800978d", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e83fc6ff-29f2-4a57-9ce4-59d91b43ac3d", + "metadata": { + "editable": true, + "id": "e83fc6ff-29f2-4a57-9ce4-59d91b43ac3d", + "outputId": "856c05b4-d520-4dfe-d8e4-d597ae969839", + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "๐Ÿฆฅ Unsloth: Will patch your computer to enable 2x faster free finetuning.\n", + "forward 1 working and being replaced\n", + "๐Ÿฆฅ Unsloth Zoo will now patch everything to make training faster!\n", + "INFO 06-18 05:14:05 [__init__.py:244] Automatically detected platform cuda.\n" + ] + } + ], + "source": [ + "from unsloth import FastVisionModel" + ] + }, + { + "cell_type": "markdown", + "id": "9bca3f87-5973-4d2f-88e8-6de6e05dc4fa", + "metadata": { + "id": "9bca3f87-5973-4d2f-88e8-6de6e05dc4fa" + }, + "source": [ + "# Dataset Preparation" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "12ba9d1e-0ad3-43b7-9a94-fa58f6b1a4f2", + "metadata": { + "colab": { + "referenced_widgets": [ + "905e0b0bcab74845a4858b6de6199c45", + "61e16790b19f496794d91eecc10d369a", + "62ab7989b1bd4179aaff9b09515cad6d" + ] + }, + "id": "12ba9d1e-0ad3-43b7-9a94-fa58f6b1a4f2", + "outputId": "0561eb67-9383-4ecc-ea0d-6cca4e76d006" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ec0110526de74ff589e959db6ee94af5", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Resolving data files: 0%| | 0/50 [00:00 Tuple[Optional[float], Optional[float]]:\n", + " \"\"\"\n", + " Evaluate a Gemma3 model on an OCR dataset.\n", + " \"\"\"\n", + " # Create output directory if it doesn't exist\n", + " os.makedirs(output_dir, exist_ok=True)\n", + "\n", + " # Initialize results storage\n", + " results = []\n", + "\n", + " # Process each sample in the dataset\n", + " for i, sample in enumerate(tqdm(dataset, desc=\"Evaluating OCR performance\", disable=not verbose)):\n", + " try:\n", + " # Extract components from sample\n", + " messages = sample['messages']\n", + "\n", + " # Get ground truth, image, and question, input_messages\n", + " ground_truth, image, question, input_messages = self._extract_sample_components(\n", + " messages, i, verbose\n", + " )\n", + "\n", + " if ground_truth is None or image is None or question is None:\n", + " continue\n", + "\n", + " # Generate model response\n", + " generated_response = self._generate_response(\n", + " model, processor, input_messages, max_new_tokens, temperature, top_p, top_k, do_sample\n", + " )\n", + "\n", + " # Calculate metrics\n", + " word_error = wer(ground_truth, generated_response)\n", + " char_error = cer(ground_truth, generated_response)\n", + "\n", + " # Save individual result\n", + " self._save_individual_result(\n", + " output_dir, i, question, generated_response, ground_truth, word_error, char_error\n", + " )\n", + "\n", + " # Store results for summary\n", + " results.append({\n", + " 'sample_id': i,\n", + " 'wer': word_error,\n", + " 'cer': char_error,\n", + " 'model_output': generated_response.strip(),\n", + " 'ground_truth': ground_truth,\n", + " 'question': question\n", + " })\n", + "\n", + " except Exception as e:\n", + " if verbose:\n", + " print(f\"Error processing sample {i}: {str(e)}\")\n", + " traceback.print_exc()\n", + "\n", + " # Generate summary report\n", + " return self._generate_summary_report(results, output_dir, verbose)\n", + "\n", + " def _extract_sample_components(\n", + " self,\n", + " messages: List[Dict],\n", + " sample_idx: int,\n", + " verbose: bool\n", + " ) -> Tuple[Optional[str], Optional[Any], Optional[str], List[Dict]]:\n", + " \"\"\"Extract ground truth, image, question, and input messages from sample.\"\"\"\n", + "\n", + " # Extract system message (if present)\n", + " system_message = next((msg for msg in messages if msg['role'] == 'system'), None)\n", + "\n", + " # Extract user message with the image and question\n", + " user_message = next((msg for msg in messages if msg['role'] == 'user'), None)\n", + " if not user_message:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No user message found\")\n", + " return None, None, None, []\n", + "\n", + " # Extract assistant message with ground truth\n", + " assistant_message = next((msg for msg in messages if msg['role'] == 'assistant'), None)\n", + " if not assistant_message:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No assistant message (ground truth) found\")\n", + " return None, None, None, []\n", + "\n", + " # Extract ground truth text\n", + " ground_truth = None\n", + " for content_item in assistant_message['content']:\n", + " if content_item['type'] == 'text':\n", + " ground_truth = content_item['text']\n", + " break\n", + "\n", + " if not ground_truth:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No text found in assistant message\")\n", + " return None, None, None, []\n", + "\n", + " # Extract image and question from user message\n", + " image = None\n", + " question = None\n", + "\n", + " for content_item in user_message['content']:\n", + " if content_item['type'] == 'image':\n", + " image = content_item['image']\n", + " # Ensure image is in RGB format\n", + " if hasattr(image, 'convert'):\n", + " image = image.convert('RGB')\n", + " elif content_item['type'] == 'text':\n", + " question = content_item['text']\n", + "\n", + " if not image:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No image found in user message\")\n", + " return None, None, None, []\n", + "\n", + " if not question:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No question found in user message\")\n", + " return None, None, None, []\n", + "\n", + " # Construct messages for the model input (excluding assistant message)\n", + " input_messages = []\n", + " if system_message:\n", + " input_messages.append(system_message)\n", + " input_messages.append(user_message)\n", + "\n", + " return ground_truth, image, question, input_messages\n", + "\n", + " def _process_vision_info(self, messages: List[Dict]) -> List[Image.Image]:\n", + " \"\"\"Extract images from messages in Gemma3 format.\"\"\"\n", + " image_inputs = []\n", + " # Iterate through each conversation\n", + " for msg in messages:\n", + " # Get content (ensure it's a list)\n", + " content = msg.get(\"content\", [])\n", + " if not isinstance(content, list):\n", + " content = [content]\n", + "\n", + " # Check each content element for images\n", + " for element in content:\n", + " if isinstance(element, dict) and (\n", + " \"image\" in element or element.get(\"type\") == \"image\"\n", + " ):\n", + " # Get the image and convert to RGB\n", + " if \"image\" in element:\n", + " image = element[\"image\"]\n", + " else:\n", + " image = element\n", + " if hasattr(image, 'convert'):\n", + " image_inputs.append(image.convert(\"RGB\"))\n", + " else:\n", + " image_inputs.append(image)\n", + " return image_inputs\n", + "\n", + " def _generate_response(\n", + " self,\n", + " model: Any,\n", + " processor: Any,\n", + " input_messages: List[Dict],\n", + " max_new_tokens: int,\n", + " temperature: float,\n", + " top_p: float,\n", + " top_k: int,\n", + " do_sample: bool,\n", + " ) -> str:\n", + " \"\"\"Generate response from the Gemma3 model using the official approach.\"\"\"\n", + "\n", + " # Apply chat template to convert messages to text\n", + " text = processor.apply_chat_template(\n", + " input_messages, tokenize=False, add_generation_prompt=True\n", + " )\n", + "\n", + " # Process the images using the official vision processing function\n", + " image_inputs = self._process_vision_info(input_messages)\n", + "\n", + " # Tokenize the text and process the images\n", + " inputs = processor(\n", + " text=[text],\n", + " images=image_inputs,\n", + " padding=True,\n", + " return_tensors=\"pt\",\n", + " )\n", + "\n", + " # Move the inputs to the device\n", + " inputs = inputs.to(model.device)\n", + "\n", + " # Set up stop tokens (following the official implementation)\n", + " stop_token_ids = [\n", + " processor.tokenizer.eos_token_id, \n", + " processor.tokenizer.convert_tokens_to_ids(\"\")\n", + " ]\n", + "\n", + " # Generate the output with proper parameters\n", + " with torch.inference_mode():\n", + " generated_ids = model.generate(\n", + " **inputs, \n", + " max_new_tokens=max_new_tokens, \n", + " top_p=top_p,\n", + " top_k=top_k,\n", + " do_sample=do_sample, \n", + " temperature=temperature, \n", + " eos_token_id=stop_token_ids,\n", + " disable_compile=True # Following official implementation\n", + " )\n", + "\n", + " # Trim the generation (remove input tokens)\n", + " generated_ids_trimmed = [\n", + " out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)\n", + " ]\n", + "\n", + " # Decode the generated text\n", + " output_text = processor.batch_decode(\n", + " generated_ids_trimmed, \n", + " skip_special_tokens=True, \n", + " clean_up_tokenization_spaces=False\n", + " )\n", + "\n", + " return output_text[0] if output_text else \"\"\n", + "\n", + " def _save_individual_result(\n", + " self,\n", + " output_dir: str,\n", + " sample_idx: int,\n", + " question: str,\n", + " generated_response: str,\n", + " ground_truth: str,\n", + " word_error: float,\n", + " char_error: float\n", + " ):\n", + " \"\"\"Save individual sample result to file.\"\"\"\n", + " output_file = os.path.join(output_dir, f\"sample_{sample_idx}.txt\")\n", + " with open(output_file, 'w', encoding='utf-8') as f:\n", + " f.write(f\"Sample {sample_idx}\\n\")\n", + " f.write(f\"Question: {question}\\n\\n\")\n", + " f.write(f\"Model output:\\n{generated_response.strip()}\\n\\n\")\n", + " f.write(f\"Ground truth:\\n{ground_truth}\\n\\n\")\n", + " f.write(f\"WER: {word_error:.4f}, CER: {char_error:.4f}\")\n", + "\n", + " def _generate_summary_report(\n", + " self,\n", + " results: List[Dict],\n", + " output_dir: str,\n", + " verbose: bool\n", + " ) -> Tuple[Optional[float], Optional[float]]:\n", + " \"\"\"Generate and save summary report.\"\"\"\n", + " if not results:\n", + " if verbose:\n", + " print(\"No results to summarize.\")\n", + " return None, None\n", + "\n", + " df = pd.DataFrame(results)\n", + "\n", + " # Calculate overall averages\n", + " avg_wer = df['wer'].mean()\n", + " avg_cer = df['cer'].mean()\n", + "\n", + " # Save average metrics\n", + " with open(os.path.join(output_dir, \"avg_metrics.txt\"), 'w') as f:\n", + " f.write(f\"Average WER: {avg_wer:.4f}\\n\")\n", + " f.write(f\"Average CER: {avg_cer:.4f}\\n\")\n", + "\n", + " # Save detailed results\n", + " df.to_csv(os.path.join(output_dir, \"detailed_results.csv\"), index=False)\n", + "\n", + " if verbose:\n", + " print(\"\\nResults Summary:\")\n", + " print(f\"Average WER: {avg_wer:.4f}\")\n", + " print(f\"Average CER: {avg_cer:.4f}\")\n", + " print(f\"\\nDetailed results saved to {output_dir}/\")\n", + "\n", + " return avg_wer, avg_cer\n", + "\n", + " def add_to_comparison(self, model_name: str, wer: float, cer: float):\n", + " \"\"\"Add model results to the comparison tracker.\"\"\"\n", + " self.model_comparison_results[model_name] = {\n", + " \"wer\": wer,\n", + " \"cer\": cer\n", + " }\n", + "\n", + " def print_model_comparison(self, save_csv: bool = True, save_plot: bool = True) -> Optional[pd.DataFrame]:\n", + " \"\"\"Print a comparison of all models evaluated so far.\"\"\"\n", + " if not self.model_comparison_results:\n", + " print(\"No model results available for comparison\")\n", + " return None\n", + "\n", + " print(\"\\n==== MODEL COMPARISON REPORT ====\")\n", + "\n", + " # Create a comparison dataframe\n", + " comparison_df = pd.DataFrame({\n", + " \"Model\": list(self.model_comparison_results.keys()),\n", + " \"WER\": [results[\"wer\"] for results in self.model_comparison_results.values()],\n", + " \"CER\": [results[\"cer\"] for results in self.model_comparison_results.values()]\n", + " })\n", + "\n", + " # Sort by WER (best performance first)\n", + " comparison_df = comparison_df.sort_values(\"WER\")\n", + "\n", + " # Display the comparison table\n", + " print(\"\\nComparison Table (sorted by WER):\")\n", + " print(comparison_df.to_string(index=False))\n", + "\n", + " # Save the comparison table\n", + " if save_csv:\n", + " comparison_file = \"model_comparison_results.csv\"\n", + " comparison_df.to_csv(comparison_file, index=False)\n", + " print(f\"\\nComparison table saved to {comparison_file}\")\n", + "\n", + " # Generate a bar chart visualization\n", + " if save_plot:\n", + " self._create_comparison_plot(comparison_df)\n", + "\n", + " return comparison_df\n", + "\n", + " def _create_comparison_plot(self, comparison_df: pd.DataFrame):\n", + " \"\"\"Create and save comparison plot.\"\"\"\n", + " plt.figure(figsize=(12, 6))\n", + "\n", + " # Plot WER\n", + " plt.subplot(1, 2, 1)\n", + " plt.bar(comparison_df[\"Model\"], comparison_df[\"WER\"], color='skyblue')\n", + " plt.title('Word Error Rate Comparison')\n", + " plt.ylabel('WER (lower is better)')\n", + " plt.ylim(bottom=0)\n", + " plt.xticks(rotation=45, ha='right')\n", + "\n", + " # Plot CER\n", + " plt.subplot(1, 2, 2)\n", + " plt.bar(comparison_df[\"Model\"], comparison_df[\"CER\"], color='lightgreen')\n", + " plt.title('Character Error Rate Comparison')\n", + " plt.ylabel('CER (lower is better)')\n", + " plt.ylim(bottom=0)\n", + " plt.xticks(rotation=45, ha='right')\n", + "\n", + " plt.tight_layout()\n", + " plt.savefig('ocr_model_comparison.png')\n", + " plt.show()\n", + "\n", + " print(f\"\\nVisualization saved to ocr_model_comparison.png\")\n", + "\n", + " def get_comparison_results(self) -> Dict[str, Dict[str, float]]:\n", + " \"\"\"Get the current comparison results.\"\"\"\n", + " return self.model_comparison_results.copy()\n", + "\n", + " def clear_comparison_results(self):\n", + " \"\"\"Clear all comparison results.\"\"\"\n", + " self.model_comparison_results.clear()\n", + "\n", + "\n", + "# Convenience functions for backward compatibility\n", + "def evaluate_ocr_model(model, processor, dataset, output_dir=\"ocr_evaluation_results\", **kwargs):\n", + " \"\"\"\n", + " Convenience function that maintains backward compatibility with the original function.\n", + " \"\"\"\n", + " evaluator = OCRModelEvaluator()\n", + " return evaluator.evaluate_model(model, processor, dataset, output_dir, **kwargs)\n", + "\n", + "\n", + "def create_evaluator():\n", + " \"\"\"Create a new OCR evaluator instance.\"\"\"\n", + " return OCRModelEvaluator()" + ] + }, + { + "cell_type": "markdown", + "id": "45f7eeec-ffde-4992-86a7-fd78266219ef", + "metadata": { + "id": "45f7eeec-ffde-4992-86a7-fd78266219ef" + }, + "source": [ + "# Load and finetune gema3 model" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4777f7fe-8fda-449a-b60b-91dfaa159fda", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4. vLLM: 0.9.1.\n", + " \\\\ /| NVIDIA H100 80GB HBM3. Num GPUs = 1. Max memory: 79.179 GB. Platform: Linux.\n", + "O^O/ \\_/ \\ Torch: 2.7.0+cu126. CUDA: 9.0. CUDA Toolkit: 12.6. Triton: 3.3.0\n", + "\\ / Bfloat16 = TRUE. FA [Xformers = None. FA2 = True]\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": [ + "Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.52, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`.\n" + ] + } + ], + "source": [ + "import torch\n", + "model, processor = FastVisionModel.from_pretrained(\n", + " model_name = \"unsloth/gemma-3-4b-it\",\n", + " #model_name = \"meta-llama/Llama-3.2-11B-Vision-Instruct\",\n", + " max_seq_length = 2048, # Choose any for long context!\n", + " load_in_4bit = True, # 4 bit quantization to reduce memory\n", + " load_in_8bit = False, # [NEW!] A bit more accurate, uses 2x memory\n", + " full_finetuning = False, # [NEW!] We have full finetuning now!\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "bba132b7-c9ba-4f43-bf24-7b782dd00eb4", + "metadata": {}, + "outputs": [], + "source": [ + "ocr_evaluator = OCRModelEvaluator()\n", + "model_comparison_results = {}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "44cf255a-50b6-445e-85b8-1fe3d8798d1b", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Evaluating OCR performance: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 200/200 [08:01<00:00, 2.41s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Results Summary:\n", + "Average WER: 0.8584\n", + "Average CER: 0.6946\n", + "\n", + "Detailed results saved to base_model_results/\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# benchmark lora model performance\n", + "model_name = \"Base model\" \n", + "avg_wer, avg_cer = ocr_evaluator.evaluate_model(model=model, processor=processor, dataset=eval_dataset, top_p=0.95, top_k=64, output_dir=\"base_model_results\", max_new_tokens=64, temperature=1.0)\n", + "ocr_evaluator.add_to_comparison(model_name, avg_wer, avg_cer)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "50dda6a4-ede1-4811-82c0-e0a055d12df6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "You have set `compile_config`, but we are unable to meet the criteria for compilation. Compilation will be skipped.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Here's the transcription of the text in the image:\n", + "\n", + "โ€œBeaucoup d'entre vous savent ร  quel point Jimmy รฉtait pour nous, surtout sa maman.โ€\n" + ] + } + ], + "source": [ + "FastVisionModel.for_inference(model) # Enable for inference!\n", + "\n", + "sample = dataset[1]\n", + "image = sample[\"image\"].convert('RGB')\n", + "messages = [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": [\n", + " {\n", + " \"type\": \"text\",\n", + " \"text\": sample[\"question\"],\n", + " },{\n", + " \"type\": \"image\",\n", + " }\n", + " ],\n", + " },\n", + " ]\n", + "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", + "inputs = processor(\n", + " image,\n", + " input_text,\n", + " add_special_tokens = False,\n", + " return_tensors = \"pt\",\n", + ").to(\"cuda\")\n", + "\n", + "from transformers import TextStreamer\n", + "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", + "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", + " use_cache = True, temperature = 1.5, min_p = 0.1)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "3a2deb57-cd2e-47bf-988e-919d3db4d0b2", + "metadata": { + "id": "3a2deb57-cd2e-47bf-988e-919d3db4d0b2", + "outputId": "3cc5911a-cfe5-43e2-e6ca-dfa4a464dfcb" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Unsloth: Making `base_model.model.model.vision_tower.vision_model` require gradients\n" + ] + } + ], + "source": [ + "model = FastVisionModel.get_peft_model(\n", + " model,\n", + " finetune_vision_layers = True, # False if not finetuning vision layers\n", + " finetune_language_layers = True, # False if not finetuning language layers\n", + " finetune_attention_modules = True, # False if not finetuning attention layers\n", + " finetune_mlp_modules = True, # False if not finetuning MLP layers\n", + "\n", + " r = 16, # The larger, the higher the accuracy, but might overfit\n", + " lora_alpha = 16, # Recommended alpha == r at least\n", + " lora_dropout = 0,\n", + " bias = \"none\",\n", + " random_state = 3407,\n", + " use_rslora = False, # We support rank stabilized LoRA\n", + " loftq_config = None, # And LoftQ\n", + " target_modules = \"all-linear\", # Optional now! Can specify a list if needed\n", + " modules_to_save=[\n", + " \"lm_head\",\n", + " \"embed_tokens\",\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "2c7c4695-e93a-4e6d-a943-690543bcbb72", + "metadata": { + "id": "2c7c4695-e93a-4e6d-a943-690543bcbb72" + }, + "outputs": [], + "source": [ + "from unsloth import is_bf16_supported\n", + "from unsloth.trainer import UnslothVisionDataCollator\n", + "from trl import SFTConfig, SFTTrainer\n", + "FastVisionModel.for_training(model) # Enable for training!\n", + "model.config.use_cache = False\n", + "\n", + "\n", + "args = SFTConfig(\n", + " per_device_train_batch_size = 1,\n", + " gradient_accumulation_steps = 4,\n", + " gradient_checkpointing=True,\n", + " gradient_checkpointing_kwargs = {\"use_reentrant\": False}, # use reentrant checkpointing\n", + " max_grad_norm=0.3, # max gradient norm based on QLoRA paper\n", + " warmup_ratio=0.03,\n", + " max_steps=60,\n", + " #num_train_epochs = 2, # Set this instead of max_steps for full training runs\n", + " learning_rate = 2e-4,\n", + " fp16 = not is_bf16_supported(),\n", + " bf16 = is_bf16_supported(),\n", + " logging_steps = 5,\n", + " save_strategy=\"epoch\",\n", + " optim = \"adamw_torch_fused\",\n", + " weight_decay = 0.01,\n", + " lr_scheduler_type = \"cosine\",\n", + " seed = 3407,\n", + " output_dir = \"gemma3-french-ocr-checkpoints\",\n", + " report_to = \"none\", # For Weights and Biases\n", + "\n", + " # You MUST put the below items for vision finetuning:\n", + " remove_unused_columns = False,\n", + " dataset_text_field = \"\",\n", + " dataset_kwargs = {\"skip_prepare_dataset\": True},\n", + " dataset_num_proc = 4,\n", + " max_seq_length = 2048,\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "37acf3c3-2804-4f95-9b78-fdec749112ce", + "metadata": {}, + "outputs": [], + "source": [ + "from trl import SFTTrainer\n", + "from unsloth.trainer import UnslothVisionDataCollator\n", + "trainer = SFTTrainer(\n", + " model=model,\n", + " args=args,\n", + " train_dataset=train_dataset,\n", + " processing_class=processor.tokenizer,\n", + " data_collator=UnslothVisionDataCollator(model,processor),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "70ccb372-8d17-4076-8b2f-692fca151396", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n", + " \\\\ /| Num examples = 2,000 | Num Epochs = 1 | Total steps = 60\n", + "O^O/ \\_/ \\ Batch size per device = 1 | Gradient accumulation steps = 4\n", + "\\ / Data Parallel GPUs = 1 | Total batch size (1 x 4 x 1) = 4\n", + " \"-____-\" Trainable parameters = 38,497,792/4,000,000,000 (0.96% trained)\n", + "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " \n", + " [60/60 02:40, Epoch 0/1]\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StepTraining Loss
522.401200
105.552700
151.127400
200.705900
250.626100
300.519600
350.530200
400.414300
450.512800
500.401000
550.406500
600.512800

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "trainer_stats = trainer.train()" + ] + }, + { + "cell_type": "markdown", + "id": "fb5aa90d-2f90-4e9f-b99c-5bcba0ff68c3", + "metadata": { + "id": "fb5aa90d-2f90-4e9f-b99c-5bcba0ff68c3" + }, + "source": [ + "# save qlora adapter" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "7fa983e6-d0f7-4b4c-a924-5612b47acb2b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tu aurais dรป voir ces hommes, mรจre.\n" + ] + } + ], + "source": [ + "sample=dataset[9]\n", + "image = sample[\"image\"].convert('RGB')\n", + "messages = [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": [\n", + " {\n", + " \"type\": \"text\",\n", + " \"text\": sample[\"question\"],\n", + " },{\n", + " \"type\": \"image\",\n", + " }\n", + " ],\n", + " },\n", + " ]\n", + "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", + "inputs = processor(\n", + " image,\n", + " input_text,\n", + " add_special_tokens = False,\n", + " return_tensors = \"pt\",\n", + ").to(\"cuda\")\n", + "\n", + "from transformers import TextStreamer\n", + "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", + "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", + " use_cache = True, temperature = 1.5, min_p = 0.1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "13aaa234-8452-4a60-92bd-624b58ee91ec", + "metadata": { + "id": "13aaa234-8452-4a60-92bd-624b58ee91ec", + "outputId": "22ebd55a-c605-43fa-d564-46556b506cf5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['unsloth-gemma3-ocr-adapter/processor_config.json']" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.save_pretrained(\"unsloth-gemma3-ocr-adapter\", processor)\n", + "processor.save_pretrained(\"unsloth-gemma3-ocr-adapter\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "73b835c5-ea65-4bbe-bc73-8a712759115d", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Evaluating OCR performance: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 200/200 [08:26<00:00, 2.53s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Results Summary:\n", + "Average WER: 0.0451\n", + "Average CER: 0.0084\n", + "\n", + "Detailed results saved to peft_model_results/\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# benchmark lora model performance\n", + "model_name = \"Peft model\" \n", + "avg_wer, avg_cer = ocr_evaluator.evaluate_model(model=model, processor=processor, dataset=eval_dataset, top_p=0.95, top_k=64, output_dir=\"peft_model_results\", max_new_tokens=64, temperature=1.0)\n", + "ocr_evaluator.add_to_comparison(model_name, avg_wer, avg_cer)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "bc35b36a-e1f9-4c27-812f-54c36083238b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tu aurais dรป voir ces hommes, mรจre.\n" + ] + } + ], + "source": [ + "FastVisionModel.for_inference(model) # Enable for inference! \n", + "\n", + "sample=dataset[9]\n", + "image = sample[\"image\"].convert('RGB')\n", + "messages = [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": [\n", + " {\n", + " \"type\": \"text\",\n", + " \"text\": sample[\"question\"],\n", + " },{\n", + " \"type\": \"image\",\n", + " }\n", + " ],\n", + " },\n", + " ]\n", + "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", + "inputs = processor(\n", + " image,\n", + " input_text,\n", + " add_special_tokens = False,\n", + " return_tensors = \"pt\",\n", + ").to(\"cuda\")\n", + "\n", + "from transformers import TextStreamer\n", + "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", + "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", + " use_cache = True, temperature = 1.5, min_p = 0.1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c966d45e-6c06-44fd-a98d-c07831bee864", + "metadata": { + "id": "c966d45e-6c06-44fd-a98d-c07831bee864" + }, + "source": [ + "# Merge model" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "c88e0a60-9dc9-43e5-a539-7e3430096bfa", + "metadata": { + "id": "c88e0a60-9dc9-43e5-a539-7e3430096bfa", + "outputId": "7de6ef5a-95d1-4212-dddc-9c24c436f54a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found HuggingFace hub cache directory: /mnt/disks/unslothai/.cache/huggingface/hub\n", + "Checking cache directory for required files...\n", + "Successfully copied all 2 files from cache to gemma3-merged-finetune-merge-16bit.\n", + "Downloading safetensors index for unsloth/gemma-3-4b-it...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Unsloth: Merging weights into 16bit: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2/2 [00:23<00:00, 11.69s/it]\n" + ] + } + ], + "source": [ + "# merge default 16 bits\n", + "model.save_pretrained_merged(save_directory=\"gemma3-merged-finetune-merge-16bit\", tokenizer=processor)" + ] + }, + { + "cell_type": "markdown", + "id": "ddfab9db-f358-4372-aece-00997ce2275f", + "metadata": { + "id": "ddfab9db-f358-4372-aece-00997ce2275f" + }, + "source": [ + "# Load Merged model and benchmark" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "322a3a1f-5c5d-4a58-aad0-b348701bbfba", + "metadata": {}, + "outputs": [], + "source": [ + "del model\n", + "del trainer\n", + "torch.cuda.empty_cache()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "8f7fc197-1d0d-430e-b41d-33d1a9a930e5", + "metadata": { + "colab": { + "referenced_widgets": [ + "933fb595cfa5475b87350d81cae515be" + ] + }, + "id": "8f7fc197-1d0d-430e-b41d-33d1a9a930e5", + "outputId": "d34bbe75-1651-4238-f2e0-e207202b68e9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4. vLLM: 0.9.1.\n", + " \\\\ /| NVIDIA H100 80GB HBM3. Num GPUs = 1. Max memory: 79.179 GB. Platform: Linux.\n", + "O^O/ \\_/ \\ Torch: 2.7.0+cu126. CUDA: 9.0. CUDA Toolkit: 12.6. Triton: 3.3.0\n", + "\\ / Bfloat16 = TRUE. FA [Xformers = None. FA2 = True]\n", + " \"-____-\" Free license: http://github.com/unslothai/unsloth\n", + "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c5c24481316e4e2f9528e0d5aafe172f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Loading checkpoint shards: 0%| | 0/2 [00:00\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e83fc6ff-29f2-4a57-9ce4-59d91b43ac3d", + "metadata": { + "editable": true, + "id": "e83fc6ff-29f2-4a57-9ce4-59d91b43ac3d", + "outputId": "396321e7-5726-4cd7-c4bb-64c21cf57f2a", + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "๐Ÿฆฅ Unsloth: Will patch your computer to enable 2x faster free finetuning.\n", + "forward 1 working and being replaced\n", + "๐Ÿฆฅ Unsloth Zoo will now patch everything to make training faster!\n" + ] + } + ], + "source": [ + "from unsloth import FastVisionModel" + ] + }, + { + "cell_type": "markdown", + "id": "9bca3f87-5973-4d2f-88e8-6de6e05dc4fa", + "metadata": { + "id": "9bca3f87-5973-4d2f-88e8-6de6e05dc4fa" + }, + "source": [ + "# Dataset Preparation" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "12ba9d1e-0ad3-43b7-9a94-fa58f6b1a4f2", + "metadata": { + "colab": { + "referenced_widgets": [ + "7051217239fc4348a65d95767f1e98d0", + "a6dd11a1a22e4c41bd649cf508322401", + "01a1fe43179645acbaec2910a8d5ff2d", + "a921c6279b7643f19c4928c9854488bd", + "302e6cbf2ef64d8b946456091cb16b56", + "1b70e010e5504f94bd2b148cfd77b626", + "fa41a757aebe4b418afe376143320e4f", + "147a55da5c3e4f9993222c6cd7751a40", + "c5651fb5a57d4e22b6f58a2756cda4ef", + "0572e4da10e4407e88e2638b6a167fd1", + "af038a990de44f1e8369ff5248740dee", + "53f7bf7db8634e999cf6c94322e884c1", + "6750a77aaabc4e348812d8babdb9d7cb", + "50f8daf2eb2f4bebb29b931ac736ade8", + "7d1721e68e104b5c8d4379376c99323c", + "8e8920fba6e74dad9cffbcf94e5e1b38", + "997d588c13c84a25b109b3fddd90e29e", + "8dc565d10a564ed4a81e0d6a59ba62ba", + "d4a89e4e7115402c8dc5f53a1b7176ef", + "f15c4d24123c467ebb5f68691d07462d", + "8050bcc159a54d5b9ee8dee02cbfa952", + "fe0c5885e8bb4b36a20131263a305d75", + "13ee540d2ab343898fcce948f14446be", + "4996711556b0436ea27ce3a0e55e140b", + "112149582d594cac822f6e40592d2d52", + "078ab257cd934a68bef8c837afe76485", + "5876b64f425c4b8793e308a426a73ec5", + "a9f7bc8abfff4487a0661a1f3238f320", + "e68a83b665f94657b76aac9822ffd79f", + "f56528805cfc448486092d570bee0391", + "19804f5ee7bc4033b76dc283f487ebd1", + "63b7287e2d3344868ae1cc90b590281c", + "5eb264f87ec14d09a8ec2c913d6fe431", + "d0d6fd80cb914d598733aadea8e4ddce", + "c2867f1657e747048a5693558ecc7ba2", + "5601931dc346429183d74a5eb9314189", + "db3171c9c42d4f238476ad65d632f5c3", + "b824a8c11d0544b7af240000b998d967", + "f3e621d5ef964efaa4f1887628ef0d06", + "4668bf27f7c6400693373506566b1546", + "becc3371483245e5a61e6be5218991aa", + "9abc52c940804a598033e844b8b82657", + "cc137be709514145840f3014010e6629", + "7d8ef2d3e6b444b48d8ea62509a7f00d", + "560852db63294f739d3d0b3c1a03edb7", + "4637b69f099d46df9acb8bef5ec0d4cd", + "6bd89e1206d54e42a7186c2720e88e26", + "54abeab07f854a8ab6eb602e0ac71406", + "49db50b74aec440c95230c33714acbd4", + "b9e8d47fa6264fbfbec94b803eb1a33d", + "6f5c7a7ddf374c8aba44005c643571ae", + "9d592ff3a4074e78a76bc65e6a1f0aa2", + "6617e88a9b514a6e8987ce0d840e96f4", + "7133e325a33c45e8bccd43d4ba632660", + "75ee8ee461cc4725b048d563f7bbf643", + "112e31ace6f2473897d39b4375eef129", + "83102f0bc5bf4e6c8a3df64fff797b73", + "9f79b4b9d81e4ea6906b9e0f3d45670f", + "8bb66957bfce45f58daea73e47baaf44", + "ea774b9f66cb40d9819fb4da074e85d2", + "5cbb1118727e4cc7a73887ea560bb6f2", + "9a68bcb277a34ea4ae0c842fa2831da9", + "8d28c1e7cb0f442e8efb9903b3ad2aeb", + "c0fb1f07491441cea318db3a4ff73ed3", + "f187371f68834986a2ae3cd2f4cd2e49", + "0a60a2617cae49309b37835aacfff186", + "478f5aa3a53748bd8ae6580b21e58018", + "04f63240d673499497dbfd24f59cf82a", + "f9bb4854ad8c470e9a5288325ad29668", + "7ebd689a9f4b41da9597b07abbaec7df", + "4969877761804db39e2f64ed5a2dcdc0", + "0ab08ddf1bea404596d99b875b7364e0", + "200e789e031e44c2ae0d1c5e538de964", + "7334640e5ddb41c887b46e40f4b394f2", + "165190d956f841609da21ed070ca77e6", + "feaec0dc962645aebcacacef60960539", + "c5c3c7f816e4496b8cf40645e5a81270", + "92800f522a9f4e84947053aaf8dc77e8", + "219b0dc0460941e9b82f1dc1d6459e54", + "e498909710854c2dbb42ce4dadec3ad5", + "1fde10729b714fea876541436ed31bb1", + "8e0a3512fa43412787f5b2eb5bec1928", + "590717f51fd44c39a7a5371663d1f02a", + "e0fb3429463c4fa991f78cc4a3d79ffe", + "ff4ee330af114812906926384a706ad1", + "c2e1c5d293ba44c38a1bc22de16268cb", + "d40244ea570b4674aff5e5795954f1b8", + "1357688ec17d4d43b24a8f052e15f22c", + "c2336b8bb73944af947ae10023253cca", + "14e4c628e4f14baeb3183ab3a6812a24", + "4f9f86e71c334163a91e20c8c94df4d7", + "7732cc84c4b64d3991df5c541e462c09", + "bc2e478b6eaa4d91b5f34258ed86c37d", + "044d54cca4e74dd197ab0ce31e4fd3e1", + "bcb3662053194450a29659a5f809b9dc", + "0169a32bf8d34588b3a9c261ab974dbf", + "636f659d5502419fbf20915ccb864210", + "ec4ef80194204ebf96e5cdab6ac5f9ce", + "c0cf4f0bf3f04cff92faaa839f19cccf", + "e972770f40ea4da7ad1c1280465e49ab", + "aa7bd9979bac4f2b9c6b8bf0b0c27e5f", + "331ba200fb7c49e4aa8b33dee546dcb5", + "9e9208fa547f41d9903c2aeab36bf2e5", + "795f36d4aba04c35bade97b88aa09a3f", + "ec6ff265d8854216ba4251b66acde39b", + "e1cc80faa0774492ac3395f53de438c2", + "7edbffd7ff314c3fa995ec1f09b6bd21", + "0a2d6ff094ea4e44aac2df010ebf2aa1", + "1b8e36d19ded47cda8f574af8111c035", + "de163053973d4979bbc402a3b11607f0", + "7221af3dfaa94bb286b6f27c9e4e9a3e", + "8f7f77eac8aa4547b8daacf6e72df839", + "cbdfc7093c494bfeb3f5afb1d2f29dd5", + "8611866d84d044b18b8b222995964574", + "aff9009665e84ccf8ae683da08fa4f74", + "c4b479ffc4a14ecb9e5401940536756b", + "5aa59bf45a8b4ad293f79cd65c1f2287", + "b262ad083653406fa468665231f020f6", + "74f1692c34de478093212d35ec511820", + "f01e4de964f64531bb8bf06ced5c3a92", + "ffdabae4d027474ebe4be7e07ba1749d", + "7c0fd15ee4fd4f5b9af89d664bb58ab3", + "5f0be45aa0f54d9eb2411bc937bbd3c6", + "c27ce07dc8db490688ba5f6343087958", + "85ca9e909fd84f31a4f52c5a4e6cde61", + "d97d29043d324bc7af6bd7b53e29422f", + "64b372638eea4201b614ab319ba9b9ae", + "0d75f8ed36f14c87bcbc9f1ff5ddbc4a", + "f10222285e9541fd9d1db8c881ccc09b", + "18b1cf93232a447f8518471d4a9c1e8c", + "1ffc565aeed74ac996d557b0159b2c33", + "af4717d52e504abfaea0c358ae7e0f76", + "9642104f40cf40da95314a6cd44a5fef", + "e6d55ae7d4ed44efafe27101f02aa8f0", + "a92e898d92a74ce495bf77386dc9f21f", + "fe7e19c7622a47ec8e9e2d9d04500213", + "8805aa5076a24ae9bc223fe6cb910005", + "faba1704c59b4d699931f84b6bfa61aa", + "09ac76be51b24d7e9b9be8f7f6614059", + "b83e93f456bc429dabb682a89e128835", + "b5989b8df12e43fea1afef32ac430af3", + "6a25bc3ab90e4314942c447b08650ca7", + "af62a6cf872e43fd8cdb76f7d6e6df0d", + "985d8e12e67c4d07ab103a2d76f99028", + "63852f3e2eeb493d94e3c34771259db5", + "2262d5545b0b4375820e00c7e613ac92", + "ca842b2763d144aea843b59acbda8022", + "832b2db50bfb4fe1b1ab817c2be1ac01", + "0ac6f176dca842f2ba4e09468ab83043", + "6da2a2d4704b4806aacd771b59a43f84", + "5863661aee18406082b51825d69d0a44", + "27d1e9da5dee45fdb63f6de08ae65143", + "8b9886aa35a54a41a6af2afa6e661fbc", + "bddbcef57c864e6286363e858035a169", + "c8535acf855e41f1abd0d8065ed0680c", + "26c17bb78e9945bba56b3a3ce5a42d0d", + "17962665afef4956af6a6e76f35f5b96", + "0b20e34867a44376aac7d93d02df224c", + "2f938f0f854d48b6ad68b7cd0187e470", + "d4266b9e926c47e1a4ce7dad4b4325b5", + "70f966b6a89244a08ec63a16cc248b70", + "f5846789aab34454a1bfcce453a1df09", + "57f0d36ec289411e80c3a2461605a0a7", + "7deb73e1ee7f458ea32b4fd007c19069", + "a64fba89c9d34d81a526a12f21fcf08f", + "4273ac7e401a44d39c6843af8aa31572", + "d1de4b7ddb4c48d58b8be1051eadf140", + "1e23b909290b4962916925ebf586917e", + "92afa2d3ee1f4a5baa8f6f97f7e71892", + "3163cecaab6f4320be2369199d69b5fb", + "f7bab0d3ef5647ffac774871cc0f504c", + "d6efb37d02ab42a1a60ba8965a8d56ac", + "0a657c05ef7e47289a588646411b4318", + "f8c6f7eed198409e815f5845db51b928", + "5e20cc77b7da40fc9135f3ecca62e197", + "f24a39462b914fe99c542ded294aea04", + "ec935b25b52444f3b74c6d7d33f52122", + "3d411c020fe0409a93da112dcabc783a", + "23593594403e45a7b0244f753bcf5b0c", + "5905ab2a69fc49098aa7035e1c6c261d", + "f9e794c3c31847728edc9804702af29f", + "4cd84aaa9186481cb982d2af7e6a11a3", + "509c37b08f63481e9337f9d9a0e5c5ea", + "78b8db32936c423895488078e5a13ce9", + "eb522a2822e24b2dadbc76d48026cf4a", + "20b23431b2694afc812ed0cde81c7f23", + "a9d9b03863104bcfb1c41a5f112bcc9c", + "ce4e8b0534d34514985e8caa3d544621", + "60c913354b83467f8bf77ba2965967ea", + "c46c568119704de5a8962917e89a5079", + "9f94b485a3fa4aec92b7e8722d870695", + "e549fe82aae648a6a0bd98c431b65b32", + "dc5a8326e1384c29b6fd3d7d31d97954", + "db6e37e5de574e609e186a1c21fbe4ac", + "312b93f39f324225b77478b3eac11915", + "05339d7d916c4152ae95ac84a8237d07", + "657d24eb9a6041b6882ecfa975e2cf96", + "fd7f4340dc59470c89a8eaaef13c0a4c", + "08f4a0fdd81c4cb2bf5446516f40874a", + "8c8e21a7d19e44989840e76bb65f2b5e", + "646fed691bbc4fd5b8b56ec0a8ea505a", + "dd9b725937b94e07b1f722fb2e604132", + "32ad13d2aa544eb58acc0fe50c5f6654", + "b47cff39fc3149b4a0298beb3efdbf1d", + "983409daf43f46c3a6a1e033a530d89d", + "a3349a6ffbc44356a2dc3d0a7f294d22", + "aa755212dcb74aba8be832d2354dbf60", + "11cb86d66c204521b1ed7d610c8c5b84", + "fe56f1dc6e32476ab46a11dda735bf41", + "45c99abc8d444aa7bb97e9b21ddff9dd", + "1b9d61e9d6c14318ba9fce0758ec3c12", + "d55026bb9f964155bd4ebaaad01c971a", + "1f3d289555e24b249a866722a75162ab", + "acddaa31d3d9416ba748faf2622cac12", + "fa12a38d74ef4e03bd2fded049321362", + "6f3adce8869f46e1afed76a3f977d511", + "c9ca3f85df284d46bf9d82a8585a980e", + "c020c75e83a0468380a2d1146b6d3c51", + "3afe75b32aef492f9a3a56709ce200d2", + "48a5d54a5282465696c5e1459a02a9ca", + "2c00ce8b031143c1802564b9669f2e32", + "dd0d9f3c7f42445c8cbc29dc301863d4", + "6dcca1ce0d0748309236a2f9c071c8b2", + "1d2e775366874667a9fe2874910cb4a1", + "7ae6c88b4a1c424e886a0ccda1fc5c40", + "54e9e186fb3f4e76b8e814a0e12ab641", + "8221a569768543fe974c86c7e4ee6575", + "f3adfa816f604bdc9cdfc0216aeb2004", + "f77dac6b4b934bdb9b40677120549a3f", + "3f646621f58c4c4f96452e87429f4f54", + "25ee32d48f5c407eb34959eae01b7b5b", + "68ec097813134d2ba0314e95cb830b5c", + "a798d07b6a3747f9b18d4e68b1df59db", + "0f5e3eed24b342ee83bc1099c01d000d", + "b4592d91c67f4743aada76e476a7d139", + "5f216943827748f3abfad381165e7075", + "eabb9fc975574081b78a0904b7d4954e", + "671589b32ef047e3afb754932496ab8c", + "6d21367f9a53420291e7fb17157b222f", + "1a44b5e08e9f45ab9107b2d057d861bf", + "8be205d92e50498fb2e88ff1d561df44", + "963140e969d2478cb5c59bf2a5a26453", + "72806b37f61447cda790213af48f751a", + "ace8c0fe0e8148dd95bb167681e9a3cd", + "e3ab2529e1474cddba6c7139a8a0e333", + "585257c96cd543ce8ce452a1ba5add28", + "d92a97641bfa4878be01ee0b80a754c7", + "c5bb29716c3541bab1a9ccf1ce793826", + "b3f84185ecba40afad401d0321356d25", + "64874f38d09e46d0a5c68d673c089c8f", + "ee0010858a3044d3bcf1d93948ef18f2", + "27edde6ec9ba43eaae22ba337e714d72", + "65d8a9468fb64327ad94d83519931ba6", + "6565f8ad0e9e4d0ca1a47e037db1b44a", + "523183f7233349a686283624460b3825", + "d696b0b1f19b43a5a83eceac504ac011", + "7d12f4cdb7fb4f1088e7b7ba8d249397", + "75d1a3d949884db9b21729286aa0e631", + "db48a7a20f684b348cc4cec8e7a6cd47", + "7c7bc3b6557d4319aaefe186391f642d", + "d9a6ff2fb7a947b3923aab384082234f", + "c4f6d945e9164b56a6a15ef88f1f3228", + "360409dc5471456baacba72e7a00a3a0", + "4d67ac8d60ab47eb90d06f746af28b54", + "6a101771822f4b8bba51fb6b1ab521d5", + "f0b73af7bd6c48e1a3ed32f5dfcb967f", + "b67e83dc3ca64d839b599b4b873954f1", + "8771e565e29349f3a85f734baf794fac", + "b79f4fa45c0e4623bed283bbd03dd631", + "88689860baed4e9cb6c4c66ef172230b", + "bc4972a0f5f14f00975e8028e810cce6", + "2dcb1a510f264f34b9ae43ee2ba25cef", + "17f99d6aea284d5d86ee1e8132c88091", + "aebe0b9972e64924a03b7cd285b4db82", + "036ea88814ad4c58ba0f19dad8a32563", + "6d359082af44449db8488d71389ef000", + "51fd767beb95414683823b012e79ef0b", + "e0e3849e7a994d5693c5b51ca61c6d40", + "0dd0d00ec5294db99a9307083aaaa6b5", + "4bb6c279794542188be3e695e9feae9a", + "562c596d23884806ad08f1ed74167768", + "2e9d338d534442a2b122b383ebb867ae", + "8cbda26cab1a45af8cf03c8c465e47a9", + "8d61f513e66c4049aa47890b9df5da0c", + "cc29fa0ee239448db172375510a6ab90", + "e11d535c20ae45709652f8f318dc1c39", + "4da7a397e1a94c67a8a9331f9d973742", + "5bf9df8c0d2c4b8a97d6313494249c49", + "4ada248b2ecf4cdd82af32788ae57038", + "0db35e6b4dc04217b667e1a8d95e2f28", + "7222fa82d25c4d2eb5a8fad8f8ce65fe", + "120daeed5c8e42afb7acc37b58dc6752", + "7eb0722228714767bc6c51c9dd533dc9", + "1f1c87bda8a54ceca5837240e8012069", + "d1af63f0f32d425e8f0097af7e76530c", + "0a5037c5afd54bae9e416d5e5a487973", + "c57a1526a40449218a8d6c6c29489cbe", + "c2281693bbbb490d9f15e79079156817", + "52d298be3d57438798c2eb2b8a0fd6f8", + "b167952bad4b468ea6a3e7ed9cb9c142", + "76c93458ff434ad3938d307e0dea6111", + "b869eeeb7e2b4c688e7c2ddf2948ac07", + "bc4b7bfb931b4ddcb982cce850bb5ef3", + "7af4c13555c547a6ab1bb2850bdb2bdb", + "1f7a1272b6ac43cc83910147cbf3c4b2", + "73851764bf8846918e33cb1eb60206b3", + "aa6d57c8e72145b69b3b54f433b206e6", + "8d3aafc33e0d461d96ee87acaa13dc2a", + "316c98a8fb444d9a8f19f87be80ce5ac", + "abd31323e4fc43a48121556e861ef276", + "237e55b3a3c745e3897bb86bab57104d", + "bb28b887bfd84e9a85b0e8536f852eef", + "f6081e4103a846d4bcdfaf273069152f", + "de9a8f6653974b54b7fed5afe653c1ed", + "8d792cc582bc44c2ae20a62792e51f9c", + "cfc7c93895c64a4db718cca436f8aa5e", + "58238c55747a45068c5290f4b6a3de0d", + "002f1e63a5e74c9f8a51a0abacd7c98f", + "9f25254c9bad425dbb62a5958c3ad957", + "0d00081b1c104d6e81cad91213515623", + "49bdac785ca94a10a661b52519fc38a7", + "4cbcc8eb76f64207b882996533ea8b98", + "461b184571d04c669b8a2a83065850d1", + "6fa66c3ac5334696b74e4d1fdbe33735", + "5d1195ae5adc414e9ac8a674e4c1afb8", + "5c327b1c06b24f3c926a74a74e26421a", + "9a5c6544e7b64bc5a7cf5226aa8f71a1", + "88ef4babd66f47b09d9b2fe2d7c6180d", + "9f3cb7c933e84da7b74a0cbb636a21fd", + "efe8db89a81b4a1cbbbec77c0120ad9c", + "7e0fdd74bb224767b33075412cdec5c8", + "ff0677ec2cd0481ba0511d50f109701b", + "2574ba7a2d794fffa3efdce1f6d44edf", + "9d6f99b13d6c41dfbe5a29bf46840ce7", + "c5e796e58340425eb169000dcdcace1d", + "b03f35a18a874a0e869c870f0e502f84", + "8bfd97c65d1642788c104034bfa02821", + "db5a4525a19b49f39130df1cbf76338c", + "59262037c8744138bba0161187479447", + "ca730fc329304a13a1b92a2c230880b4", + "78e7bdcb674142fa94b3f5b104b3937b", + "0a9a352990104a87893e109ba065185d", + "e5de48cab8534dbbbe16e72600476d2a", + "af988da28f3b480cad980314cbd2c497", + "8355a644af774487ad283662235950bc", + "cb4124b1c9594270bbddb839b805c157", + "42a8668c2b7d4a7fa724479f3ca791bd", + "4c839e085dd44ff7897abf2e79034233", + "c875b141bcd548399e5a86ddadd3a296", + "ed64d377ea364088a937ffd099b46042", + "243620cd87194a908f18f07d88c7e2fa", + "26772f6eefa64736a6f761889abf19ac", + "93d03f8fe18c4a7aaa421230c021b2fd", + "27b4e61ecc8e49ee8a14bc255199a921", + "dfa1221fa5b84f6b933adf9cbe816de5", + "3025773d5e7642f1b883239b94106284", + "d63e3ff9f7bb403cb023128390fa7e93", + "bda3ad1df50844c8acaa66dea34ec248", + "0c50a4cb12fd42419797ceca32a44875", + "18ed8583cb8b448b91f011e52684d7a1", + "99f420804f15471f963df6c2b390c955", + "b7e1f5d67a4345debdbd9ce6845ddaec", + "d58cdf0fd91f4180b9d392de79eacda0", + "badb295b4c5d420493cd345fe68a2e02", + "beb4a5aa792d4726aa8d3323af17ddda", + "7e1b1d2d574b4e16889802798c645d34", + "2b72097536c743628fca8765700dcb94", + "117de765b0cd4d40babad6018994526d", + "49ac527bd7b94c9892d022319c706a9c", + "f3b05205f76b4c82a5505c94e1f305b2", + "63cf807e22974c62b2728f7d53840c38", + "4599049b64c14b978f28841e7601e469", + "729e3f41652f4d3b8ea797bdaf7b6d69", + "edc968e2053e4fa397fc8c8bc9b78453", + "115f1452356f499b89662160143fb660", + "a1a37ed448254e4c8bc89fd92c8f7040", + "1e4e6ba1baa64e738a71d4c47db3ab33", + "ecda9e28aa554909b550d4ee15b2da2f", + "3a971bac4b30494391b5c02b89749340", + "3c67ae5fd3d047ac8f37b676080cda16", + "7961235508754fe4a2f64e1268d2eb63", + "e1d4c7c49d57454d91fef60f029480a5", + "5c1eee8f6c8540eeb92540ed06d4463b", + "cf14ba2e218b4ff4b265c2fbf3db70ed", + "71dbe847ce6c429184b53514784603c8", + "7531bf2b1d794a4396015e999a533981", + "5fb685a0a1bd4619930518292089415e", + "286823dc618a40978e2914c33643c502", + "668a6f0128d646f0893cd1252a87aa22", + "b3ce9cf69fe1472aa79e68df2310170f", + "53aceed2624c49d5b0eef3aab3348b15", + "cc3ff740f4784abfa12a3531dcadf224", + "265e7613406146b18ba0072dab5c9ff3", + "f0d8c652bd9a44f48628c8fd6980cc58", + "61c258a5a75b46bd8ee3043d230c3d41", + "ea0fced22c124068a3e49d77780c6224", + "e820e75601874758a011a7da12beec6b", + "21c76a8f2fee4d40a5db21b6f4a78606", + "5acc8272e0d74533834ca2b861297a60", + "6c7e109523b84fc1a561f4f6037eebb8", + "d9de028c32a046ad9190f96a14813a85", + "e5f73de6d68241d59dcb9378775e3e1c", + "9707b351538d4f29931718d5223b40d0", + "d6cf3c9612e845a296015f516378457b", + "c7de9cf652ba49dd9b704e31541ec706", + "1f7a25a8512d430a82dad69156a76c38", + "fa7e72cbd0274917b9b03689cff1e499", + "3dd80f9219f0440495052e3eb036a451", + "d941ec9e27224c5aadc4a7190cd65a3a", + "ebcf3497432d441bb4dc3fe431f79c15", + "f877229daf424ea3a80207fc5268c6e9", + "4d4cb7a9a12f40f994d910c1c90140c5", + "7015879beee24afab430f7929ab081ef", + "0c27fdf9d4964fce9ca00783f82d4cae", + "86adbc9233394a748abff850661d4a48", + "1f223c0f8beb433fbd72ca2968ec05c4", + "c0f9f01c88ad46c9bb2d83ba246dd36f", + "8e54310ee90b469ba1015e9bca0ea3f2", + "30d18011729646d8b66d09e7bda3ce34", + "7ec3c478feb2490ba12259bbb6dc1e16", + "55c5a58dd5cd4df7a81b1a5f899b0fe6", + "b246ef088704488abd7dccb64a4dfe8a", + "b8937036edaf4122a51869db85532480", + "cef4c9ff6d5a4667b733525ff79f31a5", + "12243ee700d6495db6dfada2bd2d20c6", + "aa4ac8fee77b4a0ea88626c11d88927a", + "88d97b7486b644daa0e689b7136d26cd", + "5e9d81e06d1e4ff992e20ab4ec893178", + "e58e12291270488ea2c1c082e9d675cf", + "e7beec8597a74b178340af648d2800ea", + "a3ef5b89ec274bdfa1ecdd183f3de92f", + "eeba79e7bdbe423f95dac5a7f85f4d4d", + "c632675e604d4fa8a69709e549b6fad5", + "166ea3a0d64443d2a047a4db97ace0f4", + "c5fcc02e22614f8582a74194b6568073", + "c87bd9146b7f4c7aad89035ebcdf4bbd", + "1bf90eaa0a494dceb1b4944c57905006", + "27f3afb0c9f14e4c922905fcafaf0ce6", + "1e56449472e9432286b27a77ffbc77e7", + "e88a14a3910f4c158136f6075884ae04", + "db1927de659c46c981a3c4c8baa2e80c", + "a59b0fbf659c4a9a8cafcb7f9bb543db", + "0532be16e6cc4e84acfdc2dd863690f8", + "2b802e0dbe3946bb885c4282661fa6b1", + "3da94777a7684c91833dc822c98bdebc", + "11ea467ae3f440a7b3fc46317878ceb3", + "810434bfcba6436aabc64f472ce80a83", + "f93b451500c14f64b8da79c45c6b29cb", + "1d9e88d19d224252bf7a272a1bdf61ce", + "de7bd228a6eb416187c8a8759b42f25c", + "6b62622727d14dba8e4d4387e8afdcc3", + "15193e30504d481ead96c2f3b1c65c5b", + "bb05861217b94fd3998e032c6bf91e3c", + "f00b3345f1504547b449efe5a7f8fba6", + "da69d29f922a4a8ca0354d33bbc55e8a", + "0ad42c1bc319481d87c3cbe9fafec6a7", + "8e98997cec574b5c859257db1a0e4aff", + "8fca739bdcca4a45b51a65abfac5361f", + "78952538bade49a280a3ca0399bdcec6", + "ca764af7caa041f886f7de767f592ef3", + "4da47b74f4484170b3c24c7bd1ff21fd", + "3a730745e39a483bb4c9034ed155cdc0", + "1bac6203840d4d809e813e70e9055e1e", + "36d566082e424061994818bafcb656e9", + "e40a63bd97f34b48bcc508b1bdeaf964", + "66f8e3b0c0c24655ad88a58bba54944d", + "4a1287f18a2a48f69e344463ee7c8507", + "165e4d0577d84f32baf0eafd1c3f41c0", + "630b1906cf744f9885007b0a94ee1fc7", + "4729a8de72614642b488b1eecb415950", + "c9e3d8560523474daab73f0a05b2f692", + "839c19db5677497abb2ecd98ad8650d5", + "1a43aa51ade34190ab35b88d3f654bc5", + "fd78ed13057e4fbd991e21b84898c63f", + "ee321da4379641c48a252374d7f176b0", + "1981578d7dab4cab8d8a4142ae0bb283", + "71177a557ae14884b1fe707040de48be", + "7b012d50f401446b997a808e6d026745", + "880e48841d3b499ca31b7abe9a404df2", + "dceaec8aa4cb45dc91d6640e719a6f3a", + "d0ef85f47d6e46d8bf117261c4955927", + "691ca77011684000874da00fac019bc3", + "f2f1566a4f974d0c8584bfec50d0a2a8", + "294646f425be46d8b2a517184d8edb7d", + "ceda2e4252284898bebea50b42bf01ef", + "6dd882e5b1044aedbb99ee4d82e8399a", + "ad42a472cad04102973a21b19eb1a1c2", + "d0d78609dde74a809af0d81ac6b770bf", + "55a91ec95812429c8112ef20558ca17c", + "e11bceda0ee4428bae61b2b4c547b4f4", + "395f1eeaf28942059b17e2d83434ced8", + "3fd25bb631f5497caaeb184b043c3ab6", + "73f3cec4f20d4a87960803fbb6c6712a", + "0e0b7e13fb20413389ebbc2e11281906", + "be604a38466a45c182f5bbdf886ffdbf", + "f50b356bd6c844efa43297d22cdc053a", + "fa793d5cb0854c73b283872182afea14", + "c82ef4b59fd5480f817d2f59a5cc113f", + "9e10769dc4ae436c9604f6421b93e6b4", + "0cfeb87fd3054c66ae0810e0a7166479", + "704d2e559cb743868769a7bbf40603f8", + "ff4207c786fd4a238c70d2fffbd7dfe6", + "f01dccc90ad54bc99e3f5d2959ab6800", + "82303c74d5be480da718f32bfd7301fe", + "36dacbcbaa5748999b3b49f01cee149b", + "c16dda2a6cad49ddab73494a1bb24eff", + "f46423db7b944ba7a3d690dd598eb0c4", + "a0e1521fc11842f7868edaf660b43cd1", + "f81692540b27432ab2a8cc2d38939f7c", + "78b3d233f2f349938011779a73662b7a", + "ed93ae2fedca4a2b8c4e2c3d7275cf04", + "9dda4ee7d40242828b420b7e424d9d74", + "12c5260fb31b4765b5c338dd5aa4df3e", + "615d5a7c4afc4f51b4eb8dea348455c5", + "80183f885fb34af1950af04b433afe1a", + "8d3ccc1be7b54915911b7823ffa269e9", + "4296a710cc7b44c59f577a66e0245a48", + "6cb05c60a8b44c9d81f76869156fe6bf", + "149313cd47fb46e886a4fe0ad67cc8ca", + "992320681f074a6dbb2b5b2176e5f283", + "5af79e407a58479aa26fb56bb6528a57", + "76028dc817ca44e798058dfd9e6026a2", + "b107a348b5e041cba439903cc8422f16", + "2cadaadaf66d4c498536db2d97a902bf", + "9417690b1a524de886943827820674b8", + "17ef159cc0b04053a4d7e000a35add3a", + "c7c4b55d98a84f328899626963bade34", + "3b4a1442067543238f1e035969f07374", + "19ed115b38084a908384b484f6d7cb92", + "f35b421692fe42fcb6ef6036e7a25aea", + "b71d3c8cd9e6492c8cdc1d380e38cab8", + "d28626c9200b46bfa756beac0a62c076", + "f40dd70206d1434e9ba8947fc6efeb2d", + "6d5179519acb44ad9ec614b3fe549d1c", + "a6d9879eb523449b9b56019705a341c7", + "dc87662e881542efb1b35ca3af11caa9", + "dd3c819ea76f4783ad90b36576793c90", + "c63ab595f72743f6a66241d39a11cf7a", + "493a5a8326804dd88c9db77a5afb4a8c", + "7d5f3540380c4a25aea23a035cee796f", + "a44dfcc6cdbc4cd29e176e2ebcfb1a70", + "4e247a7f4790458499ea761e56fb2a64", + "1d1ea6baaa4140a1bc0e8aec084b36b4", + "426504f1b66e4b448ca112f66bb64933", + "4da735f1ec58438f8eb147d292cf7521", + "f41f40892f494bf180d410e7e47bf8ca", + "32c0af899d7f45b3a886e02ff18bfd02", + "00a371b694d44e85a1e30ef3fdf999b2", + "1c3918a4a6304e018a0e3e2ed3f80d83", + "22029a9301c9405493115e61b5e09673", + "552a17a5896649c8b060ceacd8f44b69", + "1dda5f9dd3d044c38c0d0a434e8e7723", + "121a972f334b455d9978d7cb73d0184e", + "2718767e45e34f21884a6017afffa4d7", + "2e4127908f1440438a6b5987bddb02af", + "151d62dbbf314cf88faa153d71ec7c9a", + "86e982e8d8c04d849eacd203458bba92", + "1bea5782683d42a6a108a6ac7ce64e5e", + "96547033d0a049d79fd9ed3cf3150d25", + "5a167c725a7f46fdbb1cca24e4398d9a", + "f281142bd3b94e33bf9b9b08d4e22711", + "97a1b1d278a04edab83079ee1a05bc3a", + "0c27ad1ab5f9414a9032137ec392d5a3", + "85e5b5b7870b479b93228a7180963507", + "87f14017fe2142ca9ff5553670656cab", + "5de5588bf2bf4cf784ccf7843c40962f", + "1a91cc1e10d2457d9b992f1c0c871203", + "e671fb12eada4b1b9eb6fb4d57b39189", + "7190a803f2464301a7adac2b6c9f47f2", + "6afc05b14609412bb8ee11833bb9f056", + "598e6a44d25b43c290bfe544ad11710b", + "713fe01a522a49b88e5fa8d5457b33b4", + "90f9c5eeaf24472a90f69575c56f42ba", + "6d9ed12955694511b4a4a942fbf10f8a", + "bdad09e44bfd4afaaea35ed9af6c0063", + "9a5d40d24f9c4def86bb156adbe15f99", + "ccfb8149121d442daf5eb11fb486be8c", + "798f83d089c74c5d994ac60b9348849b", + "bae92963e4c3459f82f2d6f3e7f2a0b2", + "9100566c5cfa4091be117bf1abf9e057", + "89117fb0240d4e4ea18677f52f6c47be", + "af9912968457493fa76eedb6e5ffe459", + "a27dd69930bb4974a920c0139be81c1e", + "dad5b83a9e4c4e478afac0cd537e59a2", + "c8a605adf0184a888e8d168064ebf350", + "13948d4594b34f93a299b471c0498d00", + "8b67d17ff1d74fc7805ac968c1bc9092", + "c0ce48bd3ce44f3bad1c95e3e3755656", + "a7833ca4e21b4e9e8102976d46361403", + "17dc5039afca4063852d91d9e91329f7", + "d27ff9f3405a43eca53397ebe39f4ad8", + "101f5ac9e8c743738bb54393a3f61ab2", + "dc03d56a5ffa49159f2a36bfa4406bc8", + "1fcf944c13974eee97fea6ae86186c43", + "8a26beb8090941c3b6cc94b89aacd3d8", + "c0618aae0f664acdbd8f787e06cbd104", + "a9b3fc18da254aa3b91b4ca7d0a403be", + "e3a8ef1048174cca8ff1b43e7369f5b8", + "21969e3e807b4e1788fc6750e29f3703", + "785f05edf93246a5a5d349c26d819dce", + "182a5cd793944bafaf5d96dd4daff5eb", + "f250f11c0f3f49059f45e56142726dcf", + "c20b5faa0e784d449444edd97100d327", + "b28e965ddcb148999e778f65968a2585", + "fc1a4c0040c34a958988eeef131cb6d1", + "37727ecc029b4c5595d9e488f872f2f3", + "9548e0034c5f448bbbe36cfb73ef8f71", + "1ab5f685dde6477c8b5b70d44826d005", + "9cdf2abf84284a768ccc894329574742", + "e7ab554b60aa445b9210145d64997889", + "211019de85a8401da8daac8117a65661", + "bd71637126eb4a41b0ee7e64820b6b3f", + "9f69ccb5992941b0ba11618a0cdeb37a", + "46f48594039f46949f01012f6422f385", + "cd2d74b4f71a4711bef0410a54692b12", + "e3bdcb432caf419990e2974feb58fdb6", + "474f2ff062c141b4be8e0b25f38ac372", + "c6001759a925469c93d33a27741b4e5e", + "11b0592d6210466d8bb94292b678fb20", + "0093de4412684178b1cbc6df6b751552", + "b56ceda414f44b07a24ea1de04aadb75", + "3e4000ce3b86404c8b23abdcb444f94c", + "02508f26a836433982430ac8f24452bb", + "149e4f5d0a3142388a5d1715879f6869", + "1d6446a1c0fd4d7e885eaba16d1ac852", + "ed8c9e810ee84cc29fd9b6654d36d735", + "ea11ad0cd1ee4e5b92736444e30dc92b", + "75b16c475502414cb3b594f995975be6", + "bf96353f30a648e7a4c937973f27e158", + "8f5e37a8aeb14bc4b494816d8cf218de", + "72a4ecfb47d847259c18ab3cf83e8fb7", + "47ba45902ac3432aaa6ee3212614162a", + "a3eb4369b7a34eca84ef9f3f994aa3c8", + "59d500dbb1664995ad7ed6a82e487842", + "493af2603c71475a9431b3cb117900d2", + "bb99c14acc334711834b69dbf8af0617", + "34f8cbfb8d6b49149730867abe768fb3", + "8006f4182b9940a9add1e82da35eb354" + ], + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "12ba9d1e-0ad3-43b7-9a94-fa58f6b1a4f2", + "outputId": "6f42309a-c94c-4375-cd63-9700f9cb90ed" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "README.md: 0%| | 0.00/1.20k [00:00 Tuple[Optional[float], Optional[float]]:\n", + " \"\"\"\n", + " Evaluate a Gemma3 model on an OCR dataset.\n", + " \"\"\"\n", + " # Create output directory if it doesn't exist\n", + " os.makedirs(output_dir, exist_ok=True)\n", + "\n", + " # Initialize results storage\n", + " results = []\n", + "\n", + " # Process each sample in the dataset\n", + " for i, sample in enumerate(tqdm(dataset, desc=\"Evaluating OCR performance\", disable=not verbose)):\n", + " try:\n", + " # Extract components from sample\n", + " messages = sample['messages']\n", + "\n", + " # Get ground truth, image, and question, input_messages\n", + " ground_truth, image, question, input_messages = self._extract_sample_components(\n", + " messages, i, verbose\n", + " )\n", + "\n", + " if ground_truth is None or image is None or question is None:\n", + " continue\n", + "\n", + " # Generate model response\n", + " generated_response = self._generate_response(\n", + " model, processor, input_messages, max_new_tokens, temperature, top_p, top_k, do_sample\n", + " )\n", + "\n", + " # Calculate metrics\n", + " word_error = wer(ground_truth, generated_response)\n", + " char_error = cer(ground_truth, generated_response)\n", + "\n", + " # Save individual result\n", + " self._save_individual_result(\n", + " output_dir, i, question, generated_response, ground_truth, word_error, char_error\n", + " )\n", + "\n", + " # Store results for summary\n", + " results.append({\n", + " 'sample_id': i,\n", + " 'wer': word_error,\n", + " 'cer': char_error,\n", + " 'model_output': generated_response.strip(),\n", + " 'ground_truth': ground_truth,\n", + " 'question': question\n", + " })\n", + "\n", + " except Exception as e:\n", + " if verbose:\n", + " print(f\"Error processing sample {i}: {str(e)}\")\n", + " traceback.print_exc()\n", + "\n", + " # Generate summary report\n", + " return self._generate_summary_report(results, output_dir, verbose)\n", + "\n", + " def _extract_sample_components(\n", + " self,\n", + " messages: List[Dict],\n", + " sample_idx: int,\n", + " verbose: bool\n", + " ) -> Tuple[Optional[str], Optional[Any], Optional[str], List[Dict]]:\n", + " \"\"\"Extract ground truth, image, question, and input messages from sample.\"\"\"\n", + "\n", + " # Extract system message (if present)\n", + " system_message = next((msg for msg in messages if msg['role'] == 'system'), None)\n", + "\n", + " # Extract user message with the image and question\n", + " user_message = next((msg for msg in messages if msg['role'] == 'user'), None)\n", + " if not user_message:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No user message found\")\n", + " return None, None, None, []\n", + "\n", + " # Extract assistant message with ground truth\n", + " assistant_message = next((msg for msg in messages if msg['role'] == 'assistant'), None)\n", + " if not assistant_message:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No assistant message (ground truth) found\")\n", + " return None, None, None, []\n", + "\n", + " # Extract ground truth text\n", + " ground_truth = None\n", + " for content_item in assistant_message['content']:\n", + " if content_item['type'] == 'text':\n", + " ground_truth = content_item['text']\n", + " break\n", + "\n", + " if not ground_truth:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No text found in assistant message\")\n", + " return None, None, None, []\n", + "\n", + " # Extract image and question from user message\n", + " image = None\n", + " question = None\n", + "\n", + " for content_item in user_message['content']:\n", + " if content_item['type'] == 'image':\n", + " image = content_item['image']\n", + " # Ensure image is in RGB format\n", + " if hasattr(image, 'convert'):\n", + " image = image.convert('RGB')\n", + " elif content_item['type'] == 'text':\n", + " question = content_item['text']\n", + "\n", + " if not image:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No image found in user message\")\n", + " return None, None, None, []\n", + "\n", + " if not question:\n", + " if verbose:\n", + " print(f\"Skipping sample {sample_idx}: No question found in user message\")\n", + " return None, None, None, []\n", + "\n", + " # Construct messages for the model input (excluding assistant message)\n", + " input_messages = []\n", + " if system_message:\n", + " input_messages.append(system_message)\n", + " input_messages.append(user_message)\n", + "\n", + " return ground_truth, image, question, input_messages\n", + "\n", + " def _process_vision_info(self, messages: List[Dict]) -> List[Image.Image]:\n", + " \"\"\"Extract images from messages in Gemma3 format.\"\"\"\n", + " image_inputs = []\n", + " # Iterate through each conversation\n", + " for msg in messages:\n", + " # Get content (ensure it's a list)\n", + " content = msg.get(\"content\", [])\n", + " if not isinstance(content, list):\n", + " content = [content]\n", + "\n", + " # Check each content element for images\n", + " for element in content:\n", + " if isinstance(element, dict) and (\n", + " \"image\" in element or element.get(\"type\") == \"image\"\n", + " ):\n", + " # Get the image and convert to RGB\n", + " if \"image\" in element:\n", + " image = element[\"image\"]\n", + " else:\n", + " image = element\n", + " if hasattr(image, 'convert'):\n", + " image_inputs.append(image.convert(\"RGB\"))\n", + " else:\n", + " image_inputs.append(image)\n", + " return image_inputs\n", + "\n", + " def _generate_response(\n", + " self,\n", + " model: Any,\n", + " processor: Any,\n", + " input_messages: List[Dict],\n", + " max_new_tokens: int,\n", + " temperature: float,\n", + " top_p: float,\n", + " top_k: int,\n", + " do_sample: bool,\n", + " ) -> str:\n", + " \"\"\"Generate response from the Gemma3 model using the official approach.\"\"\"\n", + "\n", + " # Apply chat template to convert messages to text\n", + " text = processor.apply_chat_template(\n", + " input_messages, tokenize=False, add_generation_prompt=True\n", + " )\n", + "\n", + " # Process the images using the official vision processing function\n", + " image_inputs = self._process_vision_info(input_messages)\n", + "\n", + " # Tokenize the text and process the images\n", + " inputs = processor(\n", + " text=[text],\n", + " images=image_inputs,\n", + " padding=True,\n", + " return_tensors=\"pt\",\n", + " )\n", + "\n", + " # Move the inputs to the device\n", + " inputs = inputs.to(model.device)\n", + "\n", + " # Set up stop tokens (following the official implementation)\n", + " stop_token_ids = [\n", + " processor.tokenizer.eos_token_id,\n", + " processor.tokenizer.convert_tokens_to_ids(\"\")\n", + " ]\n", + "\n", + " # Generate the output with proper parameters\n", + " with torch.inference_mode():\n", + " generated_ids = model.generate(\n", + " **inputs,\n", + " max_new_tokens=max_new_tokens,\n", + " top_p=top_p,\n", + " top_k=top_k,\n", + " do_sample=do_sample,\n", + " temperature=temperature,\n", + " eos_token_id=stop_token_ids,\n", + " disable_compile=True # Following official implementation\n", + " )\n", + "\n", + " # Trim the generation (remove input tokens)\n", + " generated_ids_trimmed = [\n", + " out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)\n", + " ]\n", + "\n", + " # Decode the generated text\n", + " output_text = processor.batch_decode(\n", + " generated_ids_trimmed,\n", + " skip_special_tokens=True,\n", + " clean_up_tokenization_spaces=False\n", + " )\n", + "\n", + " return output_text[0] if output_text else \"\"\n", + "\n", + " def _save_individual_result(\n", + " self,\n", + " output_dir: str,\n", + " sample_idx: int,\n", + " question: str,\n", + " generated_response: str,\n", + " ground_truth: str,\n", + " word_error: float,\n", + " char_error: float\n", + " ):\n", + " \"\"\"Save individual sample result to file.\"\"\"\n", + " output_file = os.path.join(output_dir, f\"sample_{sample_idx}.txt\")\n", + " with open(output_file, 'w', encoding='utf-8') as f:\n", + " f.write(f\"Sample {sample_idx}\\n\")\n", + " f.write(f\"Question: {question}\\n\\n\")\n", + " f.write(f\"Model output:\\n{generated_response.strip()}\\n\\n\")\n", + " f.write(f\"Ground truth:\\n{ground_truth}\\n\\n\")\n", + " f.write(f\"WER: {word_error:.4f}, CER: {char_error:.4f}\")\n", + "\n", + " def _generate_summary_report(\n", + " self,\n", + " results: List[Dict],\n", + " output_dir: str,\n", + " verbose: bool\n", + " ) -> Tuple[Optional[float], Optional[float]]:\n", + " \"\"\"Generate and save summary report.\"\"\"\n", + " if not results:\n", + " if verbose:\n", + " print(\"No results to summarize.\")\n", + " return None, None\n", + "\n", + " df = pd.DataFrame(results)\n", + "\n", + " # Calculate overall averages\n", + " avg_wer = df['wer'].mean()\n", + " avg_cer = df['cer'].mean()\n", + "\n", + " # Save average metrics\n", + " with open(os.path.join(output_dir, \"avg_metrics.txt\"), 'w') as f:\n", + " f.write(f\"Average WER: {avg_wer:.4f}\\n\")\n", + " f.write(f\"Average CER: {avg_cer:.4f}\\n\")\n", + "\n", + " # Save detailed results\n", + " df.to_csv(os.path.join(output_dir, \"detailed_results.csv\"), index=False)\n", + "\n", + " if verbose:\n", + " print(\"\\nResults Summary:\")\n", + " print(f\"Average WER: {avg_wer:.4f}\")\n", + " print(f\"Average CER: {avg_cer:.4f}\")\n", + " print(f\"\\nDetailed results saved to {output_dir}/\")\n", + "\n", + " return avg_wer, avg_cer\n", + "\n", + " def add_to_comparison(self, model_name: str, wer: float, cer: float):\n", + " \"\"\"Add model results to the comparison tracker.\"\"\"\n", + " self.model_comparison_results[model_name] = {\n", + " \"wer\": wer,\n", + " \"cer\": cer\n", + " }\n", + "\n", + " def print_model_comparison(self, save_csv: bool = True, save_plot: bool = True) -> Optional[pd.DataFrame]:\n", + " \"\"\"Print a comparison of all models evaluated so far.\"\"\"\n", + " if not self.model_comparison_results:\n", + " print(\"No model results available for comparison\")\n", + " return None\n", + "\n", + " print(\"\\n==== MODEL COMPARISON REPORT ====\")\n", + "\n", + " # Create a comparison dataframe\n", + " comparison_df = pd.DataFrame({\n", + " \"Model\": list(self.model_comparison_results.keys()),\n", + " \"WER\": [results[\"wer\"] for results in self.model_comparison_results.values()],\n", + " \"CER\": [results[\"cer\"] for results in self.model_comparison_results.values()]\n", + " })\n", + "\n", + " # Sort by WER (best performance first)\n", + " comparison_df = comparison_df.sort_values(\"WER\")\n", + "\n", + " # Display the comparison table\n", + " print(\"\\nComparison Table (sorted by WER):\")\n", + " print(comparison_df.to_string(index=False))\n", + "\n", + " # Save the comparison table\n", + " if save_csv:\n", + " comparison_file = \"model_comparison_results.csv\"\n", + " comparison_df.to_csv(comparison_file, index=False)\n", + " print(f\"\\nComparison table saved to {comparison_file}\")\n", + "\n", + " # Generate a bar chart visualization\n", + " if save_plot:\n", + " self._create_comparison_plot(comparison_df)\n", + "\n", + " return comparison_df\n", + "\n", + " def _create_comparison_plot(self, comparison_df: pd.DataFrame):\n", + " \"\"\"Create and save comparison plot.\"\"\"\n", + " plt.figure(figsize=(12, 6))\n", + "\n", + " # Plot WER\n", + " plt.subplot(1, 2, 1)\n", + " plt.bar(comparison_df[\"Model\"], comparison_df[\"WER\"], color='skyblue')\n", + " plt.title('Word Error Rate Comparison')\n", + " plt.ylabel('WER (lower is better)')\n", + " plt.ylim(bottom=0)\n", + " plt.xticks(rotation=45, ha='right')\n", + "\n", + " # Plot CER\n", + " plt.subplot(1, 2, 2)\n", + " plt.bar(comparison_df[\"Model\"], comparison_df[\"CER\"], color='lightgreen')\n", + " plt.title('Character Error Rate Comparison')\n", + " plt.ylabel('CER (lower is better)')\n", + " plt.ylim(bottom=0)\n", + " plt.xticks(rotation=45, ha='right')\n", + "\n", + " plt.tight_layout()\n", + " plt.savefig('ocr_model_comparison.png')\n", + " plt.show()\n", + "\n", + " print(f\"\\nVisualization saved to ocr_model_comparison.png\")\n", + "\n", + " def get_comparison_results(self) -> Dict[str, Dict[str, float]]:\n", + " \"\"\"Get the current comparison results.\"\"\"\n", + " return self.model_comparison_results.copy()\n", + "\n", + " def clear_comparison_results(self):\n", + " \"\"\"Clear all comparison results.\"\"\"\n", + " self.model_comparison_results.clear()\n", + "\n", + "\n", + "# Convenience functions for backward compatibility\n", + "def evaluate_ocr_model(model, processor, dataset, output_dir=\"ocr_evaluation_results\", **kwargs):\n", + " \"\"\"\n", + " Convenience function that maintains backward compatibility with the original function.\n", + " \"\"\"\n", + " evaluator = OCRModelEvaluator()\n", + " return evaluator.evaluate_model(model, processor, dataset, output_dir, **kwargs)\n", + "\n", + "\n", + "def create_evaluator():\n", + " \"\"\"Create a new OCR evaluator instance.\"\"\"\n", + " return OCRModelEvaluator()" + ] + }, + { + "cell_type": "markdown", + "id": "45f7eeec-ffde-4992-86a7-fd78266219ef", + "metadata": { + "id": "45f7eeec-ffde-4992-86a7-fd78266219ef" + }, + "source": [ + "# Load and finetune gema3 model" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "4777f7fe-8fda-449a-b60b-91dfaa159fda", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 545, + "referenced_widgets": [ + "d1eef6bdbe3d4bb78ef2a16736b32d34", + "55c496da74c74845a35e8f1a4ac2e67d", + "41d7fbc0616049fda691a4e5ae271c59", + "1f2b028fb40846be9e3ac071a966580d", + "ca5d98cb646c4275bb9d14e492f45ef5", + "5cf9c9ac2fe84e6492b1d8597ebd2761", + "25098380d28f4d44b966855fa704cc18", + "e86d0b9c02504595bcba5832c5c81187", + "ce297effb81648efb902e6e277373731", + "5b871dc4911a4608906666d38b41e81a", + "bf8614f8384f4d43b7b5076d72728be8", + "e1ad1b67a5af44459cbe9c017a9dd548", + "4cd9f972fd484440a44fd5c0463a0837", + "4e86953eae8c404baf740c2179f2db4a", + "397b35406ee54e7e9d395879e8b02100", + "704cdc837e294dd5bc6bc2e1327572ec", + "b5c611e165a3463e8cab311be6b50d92", + "50b26cabf40c4a93990f63cb8b1b7eac", + "3757318cfe7f484ca3ee58a93aa86e51", + "6b54908b0e2047fea06c86c0da4de5e5", + "76d7ca472bd841b392039b0822e9075d", + "a218a8f879b24775989613458acef7d0", + "9956c0622f074f1b9aa49df9552995c4", + "dda301f5f4cc415fa9c838b61cc03a1c", + "8f68fd6d20cd4a458d532a2998a2ac86", + "a7b4aca963fc4fecb3cd76487bfa005e", + "5fef441c8ead4d8a847d7bf0fe4e0ee7", + "e7ccdde727724a3f983073db55829a4a", + "40f9581376d64fb3a02c390f8fd28e70", + "3c980011e337453ab7ad5b23aec3f740", + "00b976f13199467ba4ed1974dc0939be", + "5a9cc93c73484a2290146f6cbb03007b", + "c4d249461c14458881ec61dcd1265366", + "47f94cdb685841bb9c52fb5ee4889dbd", + "d428053cd1d54e789dd56069b4534e73", + "e4959808ccfb4e438fcdbb27f3cbcbf7", + "2db711b173404e81bfb322d2f1bf5674", + "6b7a124075d342c292071da7df1ad6f8", + "d3cb7b784052494392bf54efed0e4ceb", + "ccb6eb195f2c4d52b1b9e43786e4c335", + "eb3ecb80ff4c4a808166255b063f1acb", + "5c98a866c8f54789bca2503576ffb48d", + "6941d9f4f5144fe3af0a7c0670c265fe", + "928eb0bb10154c1ea6c485c0829ca601", + "153052ab0f214ccc812f336a8b9fdb10", + "258606f52534426d809a31ca16c83cff", + "664dee44d4db489ebac3f0f300ae358e", + "6be2e0d618de482ab8449fa4d8f3602c", + "9c6948a5931d4e2991599dd8c67ec96a", + "5c08683bba434c8682abf70ef1e4b236", + "12fcc18072474d73b6c7095a9d89ee38", + "cafa418c77a8446fbcf6e1404cddf727", + "d351059bf934403984334a9d8262877b", + "a7cc713d43da44329d34030a74ce129d", + "99612b25241048f6a4fd7c7787a5146a", + "0aea2306a17b4ed1a17a1c0bf84671cb", + "b73617d7fdf042ac8eb1fb921202485f", + "d22663ed41d54def99f8a7c4054073dc", + "ea938db6cecd421f8a86e8cad059b99e", + "0a35fe04ea534cb1928e332ab26e4464", + "e1b08699068e458eb91f7257eb8b67ba", + "bddebac3960d47eda8d14b7a3821a8e6", + "6c9e1a70a2734c1f90cf1d7e27dfe0bc", + "0a24f30660a04e768d9dd42aa058f570", + "adc63922c235442a82eeaa677e567bfa", + "3119e91b42f647a98c68337633245905", + "97166fdcc29941b5ab43c5b0e8a4b4a1", + "625bd8cb2f73454ba3cfdd09243625b2", + "f8bdca37858149449fd6dee994230866", + "c2d86492980f4cd5bda1b23d2bbec2f9", + "601d02a830f64302ad3e7195070afd18", + "b8395091164147978340c8994f868716", + "c02c7f8724f449fe98f43b18e7ac7683", + "150df82d82be4125881b4d3a4aca7481", + "45dec945707449ffbedaf2a0b02d32ec", + "f252cdafd81c47549d312f8d1389571b", + "6d4a408cac5f476486632163f21c3f9f", + "03f9c0dab35c4598bf0df4cf736ed7ec", + "405a61475e554b7dbd93a179142bef04", + "1db4a4d17f4f4fb6bda53edf385f610c", + "88cb4090c9dc416fbbd8e0bf1cb2237a", + "791806ccfaca49f48a3559aeafbbb4cb", + "3f788ccab44247bdba092c09a466fb29", + "13d85f50a1e044a59c8758dbfe876387", + "9c2afc15277b40d0bd457d080d362b38", + "8afa6211f80f4f08b206c41643615e54", + "71a192bbfe824cb4ade2dc9958214b19", + "d31dff526b7e499788c2bde4e762cf6b", + "f34a03fe9aff48b7b73318c4c3637df6", + "b2cfb1f473524d2a959c2bfca4fb5e00", + "560a298e46c848208acb0f2aed84db05", + "867cce2202344b20ae7df65d465633d9", + "e17b530b233a4ccfa88c0fc33ef2e199", + "24fbbff577e743fbbc638c8980a6d2d9", + "35f5a8497baf44c59e6653d911de8e57", + "6146f1b535ec4b128b631e35b0dce301", + "2367eaa0b63143699bce66ceb523d76b", + "e813e17f60f54f3bbc07eabf67f5b9e0", + "a17917337e644feea716ab7d5fb597ea", + "c6e9dc293eec482f8c2ea928ec13edbd", + "74245415239c44ddbd9691cf6e3d0be5", + "a59a4a271ffb4e8ea0120b6079922e81", + "cea087ca10cf4122902ede311be21b62", + "efa352415a314c4385673f71e65a6021", + "220ffbcb06de430d99a049016cf1b637", + "c0fe9034afcf41ceb79fe41e72b4e691", + "ca9b6376e7904dddbdce29bddba01ead", + "e1f8584327ec473cad71eff637e0ff0d", + "f970303663fc409486ad85cab5382365", + "3dee35b1dde04fa8bfdd9e16a60a0fd8", + "8ea08c40ba58415d97b7a21fa2555c12", + "d17c0c915585494daeaf10b92ff32154", + "7cb8697e17c24045b5987759c09ec345", + "0df79ba1c89745bb9148bfdec51cb1b0", + "4fcf4c4618074a798eafdc6c0ce61337", + "fe5f751c66c24b2996b293f5ec32956a", + "f9a949c4ae8b471f862bfe2835cc876f", + "235945dfb09748e9a139bf901566387c", + "ef94f88b1cb643d0ab04802b542036b8", + "7e02819973814f74953d00d4b5126222", + "2f1e3f1615134b2f8a4f15558a259787" + ] + }, + "id": "4777f7fe-8fda-449a-b60b-91dfaa159fda", + "outputId": "557ba751-acfe-4aa2-d90a-735556d3d4af" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Unsloth: Using float32 gradient checkpointing for FORCE_FLOAT32 mode\n", + "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4.\n", + " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.741 GB. Platform: Linux.\n", + "O^O/ \\_/ \\ Torch: 2.6.0+cu124. CUDA: 7.5. CUDA Toolkit: 12.4. Triton: 3.2.0\n", + "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.29.post3. FA2 = False]\n", + " \"-____-\" Free license: http://github.com/unslothai/unsloth\n", + "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n", + "Unsloth: Using float16 precision for gemma3 won't work! Using float32.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "model.safetensors: 0%| | 0.00/4.56G [00:00\n" + ] + } + ], + "source": [ + "FastVisionModel.for_inference(model) # Enable for inference!\n", + "\n", + "sample = dataset[1]\n", + "\n", + "image = sample[\"image\"].convert('RGB')\n", + "messages = [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": [\n", + " {\n", + " \"type\": \"text\",\n", + " \"text\": sample[\"question\"],\n", + " },{\n", + " \"type\": \"image\",\n", + " }\n", + " ],\n", + " },\n", + " ]\n", + "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", + "inputs = processor(\n", + " image,\n", + " input_text,\n", + " add_special_tokens = False,\n", + " return_tensors = \"pt\",\n", + ").to(\"cuda\")\n", + "\n", + "from transformers import TextStreamer\n", + "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", + "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", + " use_cache = True, temperature = 1.5, min_p = 0.1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "3a2deb57-cd2e-47bf-988e-919d3db4d0b2", + "metadata": { + "id": "3a2deb57-cd2e-47bf-988e-919d3db4d0b2", + "outputId": "aaeb5c2d-db5a-4394-e2c4-2733b1354860", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Unsloth: Making `base_model.model.model.vision_tower.vision_model` require gradients\n" + ] + } + ], + "source": [ + "model = FastVisionModel.get_peft_model(\n", + " model,\n", + " finetune_vision_layers = True, # False if not finetuning vision layers\n", + " finetune_language_layers = True, # False if not finetuning language layers\n", + " finetune_attention_modules = True, # False if not finetuning attention layers\n", + " finetune_mlp_modules = True, # False if not finetuning MLP layers\n", + "\n", + " r = 16, # The larger, the higher the accuracy, but might overfit\n", + " lora_alpha = 16, # Recommended alpha == r at least\n", + " lora_dropout = 0,\n", + " bias = \"none\",\n", + " random_state = 3407,\n", + " use_rslora = False, # We support rank stabilized LoRA\n", + " loftq_config = None, # And LoftQ\n", + " target_modules = \"all-linear\", # Optional now! Can specify a list if needed\n", + " modules_to_save=[\n", + " \"lm_head\",\n", + " \"embed_tokens\",\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "2c7c4695-e93a-4e6d-a943-690543bcbb72", + "metadata": { + "id": "2c7c4695-e93a-4e6d-a943-690543bcbb72" + }, + "outputs": [], + "source": [ + "from unsloth import is_bf16_supported\n", + "from unsloth.trainer import UnslothVisionDataCollator\n", + "from trl import SFTConfig, SFTTrainer\n", + "FastVisionModel.for_training(model) # Enable for training!\n", + "model.config.use_cache = False\n", + "\n", + "\n", + "args = SFTConfig(\n", + " per_device_train_batch_size = 1,\n", + " gradient_accumulation_steps = 4,\n", + " gradient_checkpointing=True,\n", + " gradient_checkpointing_kwargs = {\"use_reentrant\": False}, # use reentrant checkpointing\n", + " max_grad_norm=0.3, # max gradient norm based on QLoRA paper\n", + " warmup_ratio=0.03,\n", + " max_steps=60,\n", + " #num_train_epochs = 2, # Set this instead of max_steps for full training runs\n", + " learning_rate = 2e-4,\n", + " fp16 = not is_bf16_supported(),\n", + " bf16 = is_bf16_supported(),\n", + " logging_steps = 5,\n", + " save_strategy=\"epoch\",\n", + " optim = \"adamw_torch_fused\",\n", + " weight_decay = 0.01,\n", + " lr_scheduler_type = \"cosine\",\n", + " seed = 3407,\n", + " output_dir = \"gemma3-french-ocr-checkpoints\",\n", + " report_to = \"none\", # For Weights and Biases\n", + "\n", + " # You MUST put the below items for vision finetuning:\n", + " remove_unused_columns = False,\n", + " dataset_text_field = \"\",\n", + " dataset_kwargs = {\"skip_prepare_dataset\": True},\n", + " dataset_num_proc = 4,\n", + " max_seq_length = 2048,\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "37acf3c3-2804-4f95-9b78-fdec749112ce", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "37acf3c3-2804-4f95-9b78-fdec749112ce", + "outputId": "26384b4e-2f6c-4223-d32a-d1d9dee5a6b7" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Unsloth: Switching to float32 training since model cannot work with float16\n" + ] + } + ], + "source": [ + "from trl import SFTTrainer\n", + "from unsloth.trainer import UnslothVisionDataCollator\n", + "trainer = SFTTrainer(\n", + " model=model,\n", + " args=args,\n", + " train_dataset=train_dataset,\n", + " processing_class=processor.tokenizer,\n", + " data_collator=UnslothVisionDataCollator(model,processor),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "70ccb372-8d17-4076-8b2f-692fca151396", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 556 + }, + "id": "70ccb372-8d17-4076-8b2f-692fca151396", + "outputId": "93f4674e-3fe8-46ce-d08b-a5246c7edd47" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n", + " \\\\ /| Num examples = 2,000 | Num Epochs = 1 | Total steps = 60\n", + "O^O/ \\_/ \\ Batch size per device = 1 | Gradient accumulation steps = 4\n", + "\\ / Data Parallel GPUs = 1 | Total batch size (1 x 4 x 1) = 4\n", + " \"-____-\" Trainable parameters = 38,497,792/4,000,000,000 (0.96% trained)\n", + "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + "

\n", + " \n", + " \n", + " [60/60 13:11, Epoch 0/1]\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StepTraining Loss
520.030800
104.455900
150.891400
200.677600
250.571900
300.537200
350.535200
400.405400
450.494500
500.407900
550.384700
600.463700

" + ] + }, + "metadata": {} + } + ], + "source": [ + "trainer_stats = trainer.train()" + ] + }, + { + "cell_type": "markdown", + "id": "fb5aa90d-2f90-4e9f-b99c-5bcba0ff68c3", + "metadata": { + "id": "fb5aa90d-2f90-4e9f-b99c-5bcba0ff68c3" + }, + "source": [ + "# save qlora adapter" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "7fa983e6-d0f7-4b4c-a924-5612b47acb2b", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7fa983e6-d0f7-4b4c-a924-5612b47acb2b", + "outputId": "db180cdd-8a92-4ef9-dd13-2d7929f829eb" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Voulez-vous connaรฎtre cette langue belle et mystรฉrieuse qui est le russe?\n" + ] + } + ], + "source": [ + "sample=dataset[6]\n", + "image = sample[\"image\"].convert('RGB')\n", + "messages = [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": [\n", + " {\n", + " \"type\": \"text\",\n", + " \"text\": sample[\"question\"],\n", + " },{\n", + " \"type\": \"image\",\n", + " }\n", + " ],\n", + " },\n", + " ]\n", + "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", + "inputs = processor(\n", + " image,\n", + " input_text,\n", + " add_special_tokens = False,\n", + " return_tensors = \"pt\",\n", + ").to(\"cuda\")\n", + "\n", + "from transformers import TextStreamer\n", + "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", + "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", + " use_cache = True, temperature = 1.5, min_p = 0.1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "13aaa234-8452-4a60-92bd-624b58ee91ec", + "metadata": { + "id": "13aaa234-8452-4a60-92bd-624b58ee91ec", + "outputId": "d8ef4ffb-a3cb-40e3-ef23-a143f961598b", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['unsloth-gemma3-ocr-adapter/processor_config.json']" + ] + }, + "metadata": {}, + "execution_count": 22 + } + ], + "source": [ + "model.save_pretrained(\"unsloth-gemma3-ocr-adapter\", processor)\n", + "processor.save_pretrained(\"unsloth-gemma3-ocr-adapter\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "73b835c5-ea65-4bbe-bc73-8a712759115d", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "73b835c5-ea65-4bbe-bc73-8a712759115d", + "outputId": "f949b94b-7976-484d-fd88-a7cb398bb185" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Evaluating OCR performance: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 200/200 [20:46<00:00, 6.23s/it]" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "Results Summary:\n", + "Average WER: 0.0475\n", + "Average CER: 0.0085\n", + "\n", + "Detailed results saved to peft_model_results/\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\n" + ] + } + ], + "source": [ + "# benchmark lora model performance\n", + "model_name = \"Peft model\"\n", + "avg_wer, avg_cer = ocr_evaluator.evaluate_model(model=model, processor=processor, dataset=eval_dataset, top_p=0.95, top_k=64, output_dir=\"peft_model_results\", max_new_tokens=64, temperature=1.0)\n", + "ocr_evaluator.add_to_comparison(model_name, avg_wer, avg_cer)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "bc35b36a-e1f9-4c27-812f-54c36083238b", + "metadata": { + "id": "bc35b36a-e1f9-4c27-812f-54c36083238b", + "outputId": "42394d8f-9818-4bf2-ff91-154ab9685968", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Tuaurais dรป voir ces hommes, mรจre.\n" + ] + } + ], + "source": [ + "sample=dataset[9]\n", + "image = sample[\"image\"].convert('RGB')\n", + "messages = [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": [\n", + " {\n", + " \"type\": \"text\",\n", + " \"text\": sample[\"question\"],\n", + " },{\n", + " \"type\": \"image\",\n", + " }\n", + " ],\n", + " },\n", + " ]\n", + "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", + "inputs = processor(\n", + " image,\n", + " input_text,\n", + " add_special_tokens = False,\n", + " return_tensors = \"pt\",\n", + ").to(\"cuda\")\n", + "\n", + "from transformers import TextStreamer\n", + "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", + "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", + " use_cache = True, temperature = 1.5, min_p = 0.1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c966d45e-6c06-44fd-a98d-c07831bee864", + "metadata": { + "id": "c966d45e-6c06-44fd-a98d-c07831bee864" + }, + "source": [ + "# Merge model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "922f02f5-1c14-4927-a22c-b7efa57324e5", + "metadata": { + "id": "922f02f5-1c14-4927-a22c-b7efa57324e5" + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "c88e0a60-9dc9-43e5-a539-7e3430096bfa", + "metadata": { + "id": "c88e0a60-9dc9-43e5-a539-7e3430096bfa", + "outputId": "9b5d6e21-bd4a-4b93-914c-f66de92a4f73", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 252, + "referenced_widgets": [ + "aaf4dca7fc2043aa9450cda3cac4a035", + "3c5797f551b54b7cbfeb8abae998d0aa", + "dd0d6209659548918f28179b10bb07f3", + "be5684f4cebc4db99ea76c5dbbfef8a5", + "65b3e158093842288ecac2b6e6f5a7d1", + "6c52ec6005b04251b12c2179de74fdb6", + "eb92790c78ea46f8b980f0235ef798bc", + "2db204cc714d43edb27884c8224c0192", + "bb16b9f789664c64a49fe77c4a269b7a", + "a1dbd08fb74349c2a9769171105e337b", + "1121007f078a4f9eae9edc761258bbd0", + "27d6b7e5deeb4371944b28ff4cfbc4f9", + "88d00e895eff48b59264741987e8ae22", + "4bfd10c842fd49558fa55c9aff701751", + "c01279595f894b079a53fc9a27b85065", + "eee4edf3a74949bba86170aa1f9a9d73", + "64bb8860d5a445e9a0692c556386759a", + "2d511c15f15443f5851cb2f7d0f19657", + "b75ad3dc69b148abb1d7e10da0c4cfa8", + "6f4e2f46cf1b4bdda468f7a7698cd4d2", + "b7140418f90b407abec20f7237da867c", + "c4131b63695d4d7eb917b59073376008", + "de3de45141d64ffb826faefe6b226b1a", + "3921056cf27a4a8a9fe2629d709ccee4", + "396c50ab4b15487bb05d56bd9a44ac1a", + "6f26197b12fc4cd6a39a55b6eb7f082c", + "bdff733a77e7491996cc5282b705ec00", + "2142394c3bdc4c65816d28e8a81b45aa", + "0f9bfb2c3a704bdd908253faf2091041", + "8e1440439c0740d88d2922818393dca7", + "edf7763f12c542d7974e1a89451c6018", + "a770c66d46944da7ad82fdae8300b96a", + "854d90236ebc4fb293345a3bb8b136c2" + ] + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Found HuggingFace hub cache directory: /root/.cache/huggingface/hub\n", + "Checking cache directory for required files...\n", + "Cache check failed: model-00001-of-00002.safetensors not found in local cache.\n", + "Not all required files found in cache. Will proceed with downloading.\n", + "Downloading safetensors index for unsloth/gemma-3-4b-it...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "model.safetensors.index.json: 0%| | 0.00/90.6k [00:00') for convo in convos] + return { "text" : texts, } + +def load_and_compute_8bit_ppl(result_queue, load_in_4bit=False, load_in_8bit=False): + """Load model and compute perplexity in subprocess""" + from unsloth import FastModel + from unsloth.chat_templates import get_chat_template + from perplexity_eval import ppl_model + + # Load model + merged_model, merged_tokenizer = FastModel.from_pretrained( + model_name="./unsloth_out/merged_gemma3_text_model", + max_seq_length=2048, + load_in_4bit=load_in_4bit, + load_in_8bit=load_in_8bit, + ) + # Set up tokenizer + merged_tokenizer = get_chat_template( + merged_tokenizer, + chat_template = "gemma-3", +) + + # Load dataset fresh in subprocess + dataset_ppl = load_dataset("allenai/openassistant-guanaco-reformatted", split="eval") + + # Format the dataset + def formatting_prompts_func(examples): + convos = examples["messages"] + texts = [merged_tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos] + return { "text" : texts, } + dataset_ppl = dataset_ppl.map(formatting_prompts_func, batched=True) + + # Compute perplexity using the passed dataset + ppl_value = ppl_model(merged_model, merged_tokenizer, dataset_ppl) + + + # IMPORTANT: Convert to Python float if it's a tensor + if torch.is_tensor(ppl_value): + ppl_value = ppl_value.cpu().item() # Move to CPU and convert to Python scalar + elif hasattr(ppl_value, 'item'): + ppl_value = ppl_value.item() # Convert numpy or other array types + else: + ppl_value = float(ppl_value) # Ensure it's a float + + # Return only the perplexity value + result_queue.put(ppl_value) + + # Clean up + del merged_model + del merged_tokenizer + del dataset_ppl + torch.cuda.empty_cache() + gc.collect() + +# Main execution code should be wrapped in this guard +if __name__ == "__main__": + mp.set_start_method('spawn', force=True) + + if torch.cuda.is_bf16_supported(): + compute_dtype = torch.bfloat16 + attn_implementation = 'flash_attention_2' + else: + compute_dtype = torch.float16 + attn_implementation = 'sdpa' + + model, tokenizer = FastModel.from_pretrained( + model_name="unsloth/gemma-3-1b-it", + max_seq_length=2048, + dtype=compute_dtype, + load_in_4bit=True, + load_in_8bit=False, + full_finetuning=False, + attn_implementation=attn_implementation + ) + + tokenizer = get_chat_template( + tokenizer, + chat_template = "gemma-3", + ) + + from unsloth.chat_templates import standardize_sharegpt + dataset_train = load_dataset("allenai/openassistant-guanaco-reformatted", split="train") + dataset_ppl = load_dataset("allenai/openassistant-guanaco-reformatted", split="eval") + + dataset_train = dataset_train.map(formatting_prompts_func, batched=True) + dataset_ppl = dataset_ppl.map(formatting_prompts_func, batched=True) + + add_to_comparison("Base model 4 bits", ppl_model(model, tokenizer, dataset_ppl)) + + + model = FastModel.get_peft_model( + model, + finetune_vision_layers = False, # Turn off for just text! + finetune_language_layers = True, # Should leave on! + finetune_attention_modules = True, # Attention good for GRPO + finetune_mlp_modules = True, # SHould leave on always! + + r=16, + #target_modules=['k_proj', 'q_proj', 'v_proj', 'o_proj', "gate_proj", "down_proj", "up_proj"], + target_modules = "all-linear", + lora_alpha=16, + lora_dropout=0, + bias="none", + use_gradient_checkpointing="unsloth", + random_state=3407, + use_rslora=False, + loftq_config=None, + modules_to_save=[ + "lm_head", + "embed_tokens" + ] + ) + + from unsloth import is_bfloat16_supported + + + trainer = SFTTrainer( + model=model, + tokenizer=tokenizer, + train_dataset=dataset_train, + max_seq_length=2048, + packing=False, + args=SFTConfig( + dataset_text_field="text", + per_device_train_batch_size=2, + gradient_accumulation_steps=4, + gradient_checkpointing=True, + gradient_checkpointing_kwargs={"use_reentrant":False}, + warmup_ratio=0.03, + max_steps=40, + learning_rate=3e-4, + fp16=not is_bfloat16_supported(), + bf16=is_bfloat16_supported(), + logging_steps=5, + #optim="adamw_8bit", + optim="adamw_8bit", + lr_scheduler_type="linear", + seed=3407, + output_dir="outputs", + report_to="none", + max_grad_norm=0.3, + dataset_num_proc=2, + ), + ) + + from unsloth.chat_templates import train_on_responses_only + trainer = train_on_responses_only( + trainer, + instruction_part = "user\n", + response_part = "model\n", + ) + + # run training + trainer_stats = trainer.train() + + add_to_comparison("Qlora model", ppl_model(model, tokenizer, dataset_ppl)) + + # saving and merging the model to local disk + print("merge and save to local disk") + model.save_pretrained_merged( + save_directory='./unsloth_out/merged_gemma3_text_model', + tokenizer=tokenizer + ) + + # Clean up + del model + del tokenizer + del trainer + torch.cuda.empty_cache() + gc.collect() + + + # load model from local disk and test + print("Loading merged model in 4 bit for perplexity test") + merged_model, merged_tokenizer = FastModel.from_pretrained( + model_name="./unsloth_out/merged_gemma3_text_model", + max_seq_length=2048, + load_in_4bit=True, + load_in_8bit=False, + ) + + add_to_comparison("merged model load 4bit", ppl_model(merged_model, merged_tokenizer, dataset_ppl)) + + # Clean up + del merged_model + del merged_tokenizer + torch.cuda.empty_cache() + gc.collect() + + + print("Computing 8-bit model perplexity in subprocess...") + result_queue = mp.Queue() + p = mp.Process(target=load_and_compute_8bit_ppl, args=(result_queue, False, True)) + p.start() + p.join() + + ppl_8bit = result_queue.get() + add_to_comparison("merged model loaded 8bits", ppl_8bit) + + print("Loading merged model in 16 bit for perplexity test") + merged_model, merged_tokenizer = FastModel.from_pretrained( + model_name="./unsloth_out/merged_gemma3_text_model", + max_seq_length=2048, + load_in_4bit=False, + load_in_8bit=False, + ) + + add_to_comparison("merged model loaded 16bits", ppl_model(merged_model, merged_tokenizer, dataset_ppl)) + + print_model_comparison() + + # final cleanup + safe_remove_directory("./outputs") + safe_remove_directory("./unsloth_compiled_cache") + safe_remove_directory("./unsloth_out") diff --git a/tests/gemma3_fix_tests/test_gemma3_4b_language_model_perplexity.py b/tests/gemma3_fix_tests/test_gemma3_4b_language_model_perplexity.py new file mode 100644 index 0000000000..aeb8b0b1d4 --- /dev/null +++ b/tests/gemma3_fix_tests/test_gemma3_4b_language_model_perplexity.py @@ -0,0 +1,228 @@ +from unsloth import FastModel, FastVisionModel, UnslothVisionDataCollator +from unsloth.chat_templates import get_chat_template +from trl import SFTTrainer, SFTConfig +from transformers import DataCollatorForLanguageModeling, DataCollatorForSeq2Seq, TrainingArguments +from datasets import load_dataset, Dataset +import torch +from tqdm import tqdm +import pandas as pd +import multiprocessing as mp +from multiprocessing import Process, Queue +import gc + +# ruff: noqa +import sys +from pathlib import Path + + +REPO_ROOT = Path(__file__).parents[2] +sys.path.insert(0, str(REPO_ROOT)) +print(sys.path) + + +from tests.utils.cleanup_utils import safe_remove_directory +from tests.utils.perplexity_eval import ppl_model, add_to_comparison, print_model_comparison + +# Define helper functions outside of main +def formatting_prompts_func(examples): + convos = examples["messages"] + texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos] + return { "text" : texts, } + +def load_and_compute_8bit_ppl(result_queue, load_in_4bit=False, load_in_8bit=False): + """Load model and compute perplexity in subprocess""" + from unsloth import FastModel + from unsloth.chat_templates import get_chat_template + from tests.utils.perplexity_eval import ppl_model + + # Load model + merged_model, merged_tokenizer = FastModel.from_pretrained( + model_name="./unsloth_out/merged_gemma3_text_model", + max_seq_length=2048, + load_in_4bit=load_in_4bit, + load_in_8bit=load_in_8bit, + ) + # Set up tokenizer + merged_tokenizer = get_chat_template( + merged_tokenizer, + chat_template = "gemma-3", +) + + # Load dataset fresh in subprocess + dataset_ppl = load_dataset("allenai/openassistant-guanaco-reformatted", split="eval") + + # Format the dataset + def formatting_prompts_func(examples): + convos = examples["messages"] + texts = [merged_tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos] + return { "text" : texts, } + dataset_ppl = dataset_ppl.map(formatting_prompts_func, batched=True) + + # Compute perplexity using the passed dataset + ppl_value = ppl_model(merged_model, merged_tokenizer, dataset_ppl) + + + # IMPORTANT: Convert to Python float if it's a tensor + if torch.is_tensor(ppl_value): + ppl_value = ppl_value.cpu().item() # Move to CPU and convert to Python scalar + elif hasattr(ppl_value, 'item'): + ppl_value = ppl_value.item() # Convert numpy or other array types + else: + ppl_value = float(ppl_value) # Ensure it's a float + + # Return only the perplexity value + result_queue.put(ppl_value) + + # Clean up + del merged_model + del merged_tokenizer + del dataset_ppl + torch.cuda.empty_cache() + gc.collect() + +# Main execution code should be wrapped in this guard +if __name__ == "__main__": + mp.set_start_method('spawn', force=True) + + if torch.cuda.is_bf16_supported(): + compute_dtype = torch.bfloat16 + attn_implementation = 'flash_attention_2' + else: + compute_dtype = torch.float16 + attn_implementation = 'sdpa' + + model, tokenizer = FastModel.from_pretrained( + model_name="unsloth/gemma-3-4b-it", + max_seq_length=2048, + dtype=compute_dtype, + load_in_4bit=True, + load_in_8bit=False, + full_finetuning=False, + attn_implementation=attn_implementation + ) + + tokenizer = get_chat_template( + tokenizer, + chat_template = "gemma-3", + ) + + from unsloth.chat_templates import standardize_sharegpt + dataset_train = load_dataset("allenai/openassistant-guanaco-reformatted", split="train") + dataset_ppl = load_dataset("allenai/openassistant-guanaco-reformatted", split="eval") + + dataset_train = dataset_train.map(formatting_prompts_func, batched=True) + dataset_ppl = dataset_ppl.map(formatting_prompts_func, batched=True) + + add_to_comparison("Base model 4 bits", ppl_model(model, tokenizer, dataset_ppl)) + + model = FastModel.get_peft_model( + model, + finetune_vision_layers = False, # Turn off for just text! + finetune_language_layers = True, # Should leave on! + finetune_attention_modules = True, # Attention good for GRPO + finetune_mlp_modules = True, # SHould leave on always! + + r=16, + #target_modules=['k_proj', 'q_proj', 'v_proj', 'o_proj', "gate_proj", "down_proj", "up_proj"], + target_modules = "all-linear", + lora_alpha=16, + lora_dropout=0, + bias="none", + use_gradient_checkpointing="unsloth", + random_state=3407, + use_rslora=False, + loftq_config=None, + modules_to_save=[ + "lm_head", + "embed_tokens" + ] + ) + + from unsloth import is_bfloat16_supported + + trainer = SFTTrainer( + model=model, + tokenizer=tokenizer, + train_dataset=dataset_train, + max_seq_length=2048, + packing=False, + args=SFTConfig( + dataset_text_field="text", + per_device_train_batch_size=2, + gradient_accumulation_steps=4, + gradient_checkpointing=True, + gradient_checkpointing_kwargs={"use_reentrant":False}, + warmup_ratio=0.03, + max_steps=40, + learning_rate=3e-4, + fp16=not is_bfloat16_supported(), + bf16=is_bfloat16_supported(), + logging_steps=5, + #optim="adamw_8bit", + optim="adamw_8bit", + lr_scheduler_type="linear", + seed=3407, + output_dir="outputs", + report_to="none", + max_grad_norm=0.3, + dataset_num_proc=2, + ), + ) + + from unsloth.chat_templates import train_on_responses_only + trainer = train_on_responses_only( + trainer, + instruction_part = "user\n", + response_part = "model\n", + ) + + # run training + trainer_stats = trainer.train() + + add_to_comparison("Qlora model", ppl_model(model, tokenizer, dataset_ppl)) + + # saving and merging the model to local disk + print("merge and save to local disk") + model.save_pretrained_merged( + save_directory='./unsloth_out/merged_gemma3_text_model', + tokenizer=tokenizer + ) + + + # load model from local disk and test + print("Loading merged model in 4 bit for perplexity test") + merged_model, merged_tokenizer = FastModel.from_pretrained( + model_name="./unsloth_out/merged_gemma3_text_model", + max_seq_length=2048, + load_in_4bit=True, + load_in_8bit=False, + ) + + add_to_comparison("merged model load 4bit", ppl_model(merged_model, merged_tokenizer, dataset_ppl)) + + + print("Computing 8-bit model perplexity in subprocess...") + result_queue = mp.Queue() + p = mp.Process(target=load_and_compute_8bit_ppl, args=(result_queue, False, True)) + p.start() + p.join() + + ppl_8bit = result_queue.get() + add_to_comparison("merged model loaded 8bits", ppl_8bit) + + print("Loading merged model in 16 bit for perplexity test") + merged_model, merged_tokenizer = FastModel.from_pretrained( + model_name="./unsloth_out/merged_gemma3_text_model", + max_seq_length=2048, + load_in_4bit=False, + load_in_8bit=False, + ) + + add_to_comparison("merged model loaded 16bits", ppl_model(merged_model, merged_tokenizer, dataset_ppl)) + + print_model_comparison() + + # final cleanup + safe_remove_directory("./outputs") + safe_remove_directory("./unsloth_compiled_cache") + safe_remove_directory("./unsloth_out") diff --git a/tests/gemma3_fix_tests/test_gemma3_grpo_model.py b/tests/gemma3_fix_tests/test_gemma3_grpo_model.py new file mode 100644 index 0000000000..1ae94fc645 --- /dev/null +++ b/tests/gemma3_fix_tests/test_gemma3_grpo_model.py @@ -0,0 +1,802 @@ +# -*- coding: utf-8 -*- +"""test_Llama3_1_(3B)_GRPO_LoRA (1).ipynb + +### Unsloth + +""" +# import os +# os.environ['CUDA_LAUNCH_BLOCKING'] = '1' +# os.environ['TORCH_USE_CUDA_DSA'] = '1' +# +# # Add at the beginning of your training script +# import torch +# torch.backends.cuda.matmul.allow_tf32 = False +# torch.backends.cudnn.allow_tf32 = False + +from unsloth import FastLanguageModel +import torch +import sys +from pathlib import Path +import multiprocessing as mp +import gc +from multiprocessing import Queue + +REPO_ROOT = Path(__file__).parents[2] +sys.path.insert(0, str(REPO_ROOT)) + +from tests.utils.cleanup_utils import safe_remove_directory +from tests.utils.aime_eval import evaluate_model_aime, compare_aime_results + + +max_seq_length = 2048 # Can increase for longer reasoning traces +lora_rank = 64 # Larger rank = smarter, but slower + + +def evaluate_merged_model(result_queue, load_in_4bit=False, load_in_8bit=False): + from unsloth import FastLanguageModel + from tests.utils.aime_eval import evaluate_model_aime + max_seq_length = 2048 # Can increase for longer reasoning traces + lora_rank = 64 # Larger rank = smarter, but slower + + model, tokenizer = FastLanguageModel.from_pretrained( + model_name = "./final_merged_model", + max_seq_length = max_seq_length, + load_in_4bit = True, # False for LoRA 16bit + fast_inference = True, # Enable vLLM fast inference + max_lora_rank = lora_rank, + gpu_memory_utilization = 0.8, # Reduce if out of memory + ) + + print(f"\n{'='*60}") + if load_in_4bit: + print("๐Ÿ” EVALUATION Merged model: 4 bits load") + model_type="merged_model_4bits" + elif load_in_8bit: + print("๐Ÿ” EVALUATION Merged model: 8 bits load") + model_type="merged_model_8bits" + else: + print("๐Ÿ” EVALUATION Merged model: 16 bits load") + model_type="merged_model_16bits" + print(f"{'='*60}") + + evaluate_model_aime( + model=model, + tokenizer=tokenizer, + model_type=model_type, + temperature=0.3, + n_sampling=8, + max_tokens=32768, + top_p=0.95, + seed=0 + ) + + result_queue.put(results) + + del model + del tokenizer + torch.cuda.empty_cache() + gc.collect() + + + +# Main execution code should be wrapped in this guard +def training_run(result_queue): + model, tokenizer = FastLanguageModel.from_pretrained( + model_name = "unsloth/gemma-3-1b-it", + max_seq_length = max_seq_length, + load_in_4bit = False, # False for LoRA 16bit + fast_inference = True, # Enable vLLM fast inference + max_lora_rank = lora_rank, + gpu_memory_utilization = 0.8, # Reduce if out of memory + ) + + """### Helper Functions + + +#### Helper functions - Data Prep + """ + + import re + import json + + reasoning_start = "" + reasoning_end = "" + solution_start = "" + solution_end = "" + + def extract_hash_answer(text): + """Extract answer from GSM8K format""" + if "####" not in text: + return None + return text.split("####")[1].strip() + + def prepare_gsm8k_dataset(dataset): + """Format GSM8K dataset for training""" + reasoning_start = "" + reasoning_end = "" + solution_start = "" + solution_end = "" + + system_prompt = ( + f"You are given a problem. Think about the problem and reason step by step. " + f"Place your thinking process between {reasoning_start} and {reasoning_end}. " + f"Then, provide your final numerical solution between {solution_start}{solution_end}" + ) + + def format_gsm8k(example): + return { + "prompt": [ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": example["question"]}, + ], + "answer": extract_hash_answer(example["answer"]), + } + + return dataset.map(format_gsm8k) + + def prepare_limo_dataset(dataset): + """Format LIMO dataset for SFT training""" + if dataset is None: + return None + + system_prompt = """You are a helpful reasoning assistant. When given a problem, think through it step by step and provide your answer in the following format: + + + [Your detailed step-by-step reasoning and solution process] + + + [Your final numerical answer] + """ + + def format_limo(example): + # Create the assistant response + assistant_response = f"\n{example['solution']}\n\n\n{example['answer']}\n" + + # Return a DICTIONARY with the conversation in a field + return { + "prompt": [ # โ† This is the key change - wrap in a dict + {"role": "system", "content": system_prompt}, + {"role": "user", "content": example["question"]}, + {"role": "assistant", "content": assistant_response} + ] + } + + return dataset.map(format_limo) + + print("\nโœ… Dataset preparation functions defined!") + + """#### Helper functions - Evaluation""" + + def get_max_prompt_length(dataset, tokenizer): + """Calculate maximum and average prompt length in dataset""" + print("Analyzing prompt lengths...") + + lengths = dataset.map( + lambda x: { + "tokens": tokenizer.apply_chat_template( + x["prompt"], + add_generation_prompt=True, + tokenize=True + ) + }, + batched=True, + ).map(lambda x: {"length": len(x["tokens"])})["length"] + + max_length = max(lengths) + avg_length = sum(lengths) / len(lengths) + min_length = min(lengths) + + print(f"Prompt lengths - Min: {min_length}, Max: {max_length}, Avg: {avg_length:.1f}") + return max_length, avg_length + + def extract_unsloth_answer(text, start_tag="", end_tag=""): + """Extract answer from Unsloth SOLUTION tags""" + pattern = re.escape(start_tag) + r"(.*?)" + re.escape(end_tag) + matches = re.findall(pattern, text, re.DOTALL) + + if matches: + answer = matches[-1] # Get the last match + answer = re.sub(r"[%$,]", "", answer).strip() + return answer + return "" + + def find_number(search_string): + """Find the last number in a string""" + numbers = re.compile( + r"-?[\d,]*\.?\d+", + re.MULTILINE | re.DOTALL | re.IGNORECASE, + ).findall(search_string) + + if numbers: + return numbers[-1].replace(",", "").strip() + return "" + + def remove_symbols(x: str) -> str: + """Remove commas, percent and dollar symbols""" + if not x: + return "" + return x.replace(",", "").replace("%", "").replace("$", "").strip() + + def get_num_tokens(text, tokenizer_instance): + """Count tokens in text""" + if not text: + return 0 + encoding = tokenizer_instance(text, return_tensors="pt") + return len(encoding["input_ids"][0]) + + def check_format_compliance(text, format_type="unsloth"): + """Check if response follows expected format""" + if format_type == "unsloth": + reasoning_start = "" + reasoning_end = "" + solution_start = "" + solution_end = "" + + pattern = ( + rf"^[\s]*{re.escape(reasoning_start)}.+?{re.escape(reasoning_end)}.*?" + rf"{re.escape(solution_start)}.+?{re.escape(solution_end)}[\s]*$" + ) + else: + return False + + return bool(re.match(pattern, text.strip(), re.DOTALL)) + + def normalize_answer(answer): + """Normalize answer for comparison""" + if not answer: + return "" + + normalized = remove_symbols(str(answer)) + + try: + float_val = float(normalized) + if float_val.is_integer(): + return str(int(float_val)) + else: + return str(float_val) + except (ValueError, TypeError): + return normalized + + def evaluate_answer_correctness(extracted_answer, ground_truth): + """Evaluate answer correctness with multiple criteria""" + if not extracted_answer or not ground_truth: + return False, False, 0.0 + + norm_extracted = normalize_answer(extracted_answer) + norm_ground_truth = normalize_answer(ground_truth) + + if norm_extracted == norm_ground_truth: + return True, True, 1.0 + + try: + extracted_num = float(norm_extracted) + ground_truth_num = float(norm_ground_truth) + + if ground_truth_num != 0: + relative_error = abs(extracted_num - ground_truth_num) / abs(ground_truth_num) + + if relative_error < 0.01: + return True, True, 0.9 + elif relative_error < 0.05: + return False, True, 0.7 + elif relative_error < 0.10: + return False, True, 0.5 + else: + if extracted_num == 0: + return True, True, 1.0 + elif abs(extracted_num) < 0.01: + return False, True, 0.7 + + except (ValueError, TypeError): + if norm_extracted.lower() == norm_ground_truth.lower(): + return True, True, 1.0 + + return False, False, 0.0 + + """#### Reward Functions for GRPO""" + + def match_format_exactly(completions, **kwargs): + """Reward function for exact format matching""" + reasoning_start = "" + reasoning_end = "" + solution_start = "" + solution_end = "" + + pattern = ( + rf"^[\s]*{re.escape(reasoning_start)}.+?{re.escape(reasoning_end)}.*?" + rf"{re.escape(solution_start)}.+?{re.escape(solution_end)}[\s]*$" + ) + + responses = [completion[0]["content"] for completion in completions] + rewards = [3.0 if re.match(pattern, response, re.DOTALL) else 0.0 for response in responses] + return rewards + + def match_format_approximately(completions, **kwargs): + """Reward function for approximate format matching""" + reasoning_start = "" + reasoning_end = "" + solution_start = "" + solution_end = "" + + scores = [] + for completion in completions: + score = 0 + response = completion[0]["content"] + score += 0.5 if response.count(reasoning_start) == 1 else -1.0 + score += 0.5 if response.count(reasoning_end) == 1 else -1.0 + score += 0.5 if response.count(solution_start) == 1 else -1.0 + score += 0.5 if response.count(solution_end) == 1 else -1.0 + scores.append(score) + return scores + + def check_answer_correctness(prompts, completions, answer, **kwargs): + """Reward function for answer correctness""" + def extract_solution_answer(text): + pattern = r"(.*?)" + match = re.search(pattern, text, re.DOTALL) + if match: + return re.sub(r"[%$,]", "", match.group(1)).strip() + return "" + + responses = [completion[0]["content"] for completion in completions] + extracted_responses = [extract_solution_answer(r) for r in responses] + + scores = [] + for guess, true_answer in zip(extracted_responses, answer): + score = 0 + if not guess: + scores.append(0) + continue + + if guess == true_answer: + score += 3.0 + elif guess.strip() == true_answer.strip(): + score += 1.5 + else: + try: + ratio = float(guess) / float(true_answer) + if 0.9 <= ratio <= 1.1: + score += 1.0 + elif 0.8 <= ratio <= 1.2: + score += 0.5 + else: + score -= 1.5 + except: + score -= 1.5 + scores.append(score) + return scores + + print("โœ… Reward functions defined!") + + """#### Main Evaluation Function""" + + import gc + + + + """#### Comparison and Memory Management""" + + def compare_model_results(all_results): + """Generate comprehensive comparison of multiple model results""" + print(f"\n{'='*80}") + print("COMPREHENSIVE MODEL COMPARISON") + print(f"{'='*80}") + + # Main table + print(f"{'Model':<15} {'Format %':<10} {'Exact %':<10} {'Plausible %':<12} {'Confidence':<12}") + print("-" * 80) + + for result in all_results: + print(f"{result['model_type']:<15} " + f"{result['correct_format_pct']:<10.1f} " + f"{result['exact_match_pct']:<10.1f} " + f"{result['plausible_match_pct']:<12.1f} " + f"{result['avg_confidence']:<12.3f}") + + # Improvement analysis + if len(all_results) > 1: + print(f"\n{'='*50}") + print("IMPROVEMENT ANALYSIS") + print(f"{'='*50}") + + base_result = all_results[0] + for result in all_results[1:]: + print(f"\n{result['model_type']} vs {base_result['model_type']}:") + format_improvement = result['correct_format_pct'] - base_result['correct_format_pct'] + exact_improvement = result['exact_match_pct'] - base_result['exact_match_pct'] + plausible_improvement = result['plausible_match_pct'] - base_result['plausible_match_pct'] + + print(f" Format compliance: {format_improvement:+.1f}%") + print(f" Exact matches: {exact_improvement:+.1f}%") + print(f" Plausible matches: {plausible_improvement:+.1f}%") + + # Save comparison + comparison_data = { + "summary": all_results, + "best_model": max(all_results, key=lambda x: x['exact_match_pct']), + } + + with open("model_comparison_comprehensive.json", "w") as f: + json.dump(comparison_data, f, indent=4) + + print(f"\nBest performing model: {comparison_data['best_model']['model_type']} " + f"({comparison_data['best_model']['exact_match_pct']:.1f}% exact matches)") + + def cleanup_memory(): + """Comprehensive memory cleanup""" + print("๐Ÿงน Cleaning up GPU memory...") + for _ in range(10): + torch.cuda.empty_cache() + gc.collect() + + if torch.cuda.is_available(): + allocated = torch.cuda.memory_allocated() / 1024**3 + reserved = torch.cuda.memory_reserved() / 1024**3 + print(f"GPU memory - Allocated: {allocated:.2f} GB, Reserved: {reserved:.2f} GB") + + """#### Data Loading and Preparation""" + + from datasets import load_dataset + + +# Load GSM8K + gsm8k_dataset = load_dataset("openai/gsm8k", "main", split="train") + +# Load LIMO (adjust this based on your access method) + limo_train = load_dataset("GAIR/LIMO", split="train") + +# Prepare datasets + gsm8k_train = prepare_gsm8k_dataset(gsm8k_dataset) + limo_train = prepare_limo_dataset(limo_train) + + + print(f" GSM8K train: {len(gsm8k_train)}") + print(f" LIMO train: {len(limo_train) if limo_train else 0}") + +# Store results + all_results = [] + +# Single temperature evaluation on combined dataset + # results = evaluate_model_aime( + # model=model, + # tokenizer=tokenizer, + # model_type="base", + # temperature=0.3, + # n_sampling=8, + # max_tokens=32768, + # top_p=0.95, + # seed=0 + # ) + # + from unsloth.chat_templates import get_chat_template + + tokenizer = get_chat_template( + tokenizer, + chat_template = "gemma-3", + ) + + def formatting_prompts_func(examples): + convos = examples["prompt"] + texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos] + return { "text" : texts, } + + limo_train = limo_train.map(formatting_prompts_func, batched = True,) + + from trl import SFTTrainer + from transformers import DataCollatorForSeq2Seq, TrainingArguments + from unsloth import is_bfloat16_supported + + + print(f"\n{'*'*60}") + print("๐ŸŽฏ STAGE 1: Qlora Fine-Tuning on LIMO") + print(f"{'*'*60}") + + model = FastLanguageModel.get_peft_model( + model, + r = lora_rank, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128 + target_modules = [ + "q_proj", "k_proj", "v_proj", "o_proj", + "gate_proj", "up_proj", "down_proj", + ], # Remove QKVO if out of memory + lora_alpha = lora_rank, + use_gradient_checkpointing = "unsloth", # Enable long context finetuning + random_state = 3407, + ) + + + if limo_train is not None: + trainer = SFTTrainer( + model = model, + tokenizer = tokenizer, + train_dataset = limo_train, + dataset_text_field = "text", + max_seq_length = max_seq_length, + data_collator = DataCollatorForSeq2Seq(tokenizer = tokenizer), + dataset_num_proc = 2, + packing = False, # Can make training 5x faster for short sequences. + args = TrainingArguments( + per_device_train_batch_size = 2, + gradient_accumulation_steps = 4, + warmup_steps = 5, + num_train_epochs = 1, # Set this for 1 full training run. + #max_steps = 60, + learning_rate = 2e-4, + fp16 = not is_bfloat16_supported(), + bf16 = is_bfloat16_supported(), + logging_steps = 1, + optim = "adamw_8bit", + weight_decay = 0.01, + lr_scheduler_type = "linear", + seed = 3407, + output_dir = "outputs", + report_to = "none", # Use this for WandB etc + ), + ) + + + from unsloth.chat_templates import train_on_responses_only + trainer = train_on_responses_only( + trainer, + instruction_part = "user\n", + response_part = "model\n", + ) + + # Train + #print(f"๐Ÿš‚ Starting SFT training on {len(limo_train)} examples...") + #trainer.train() + + # Save checkpoint + #model.save_pretrained("qlora_checkpoint") + #tokenizer.save_pretrained("qlora_checkpoint") + #print("๐Ÿ’พ Qlora checkpoint saved!") + + # Cleanup + del trainer + cleanup_memory() + + #print("โœ… Qlora training completed!") + else: + print("โš ๏ธ Skipping Qlora training - no LIMO dataset available") + +# Cleanup + cleanup_memory() + + global PRINTED_TIMES + PRINTED_TIMES = 0 + global PRINT_EVERY_STEPS + PRINT_EVERY_STEPS = 5 + + match_numbers = re.compile( + solution_start + r".*?([\d\.\,]{1,})", + flags = re.MULTILINE | re.DOTALL + ) + + def check_numbers(prompts, completions, answer, **kwargs): + question = prompts[0][-1]["content"] + responses = [completion[0]["content"] for completion in completions] + + extracted_responses = [ + guess.group(1) + if (guess := match_numbers.search(r)) is not None else None \ + for r in responses + ] + + scores = [] + # Print only every few steps + global PRINTED_TIMES + global PRINT_EVERY_STEPS + if PRINTED_TIMES % PRINT_EVERY_STEPS == 0: + print('*'*20, f"Question:\n{question}", f"\nAnswer:\n{answer[0]}", f"\nResponse:\n{responses[0]}", f"\nExtracted:\n{extracted_responses[0]}") + PRINTED_TIMES += 1 + + for guess, true_answer in zip(extracted_responses, answer): + if guess is None: + scores.append(0) + continue + # Convert to numbers + try: + true_answer = float(true_answer.strip()) + # Remove commas like in 123,456 + guess = float(guess.strip().replace(",", "")) + scores.append(1.5 if guess == true_answer else -0.5) + except: + scores.append(0) + continue + return scores + + print(f"\n{'*'*60}") + print("๐ŸŽฏ STAGE 2: GRPO Fine-Tuning on GSM8K") + print(f"{'*'*60}") + +# Get max prompt length + max_prompt_length, _ = get_max_prompt_length(gsm8k_train, tokenizer) + max_prompt_length = min(max_prompt_length + 10, 512) # Add buffer, cap at 512 + + print(f"Using max_prompt_length: {max_prompt_length}") + + from trl import GRPOConfig, GRPOTrainer + training_args = GRPOConfig( + learning_rate = 5e-6, + weight_decay = 0.1, + warmup_ratio = 0.1, + lr_scheduler_type = "cosine", + optim = "adamw_torch_fused", + logging_steps = 1, + per_device_train_batch_size = 1, + gradient_accumulation_steps = 4, # Increase to 4 for smoother training + num_generations = 8, # Decrease if out of memory + max_prompt_length = max_prompt_length, + max_completion_length = max_seq_length - max_prompt_length, + # num_train_epochs = 1, # Set to 1 for a full training run + #max_steps = 250, + max_steps = 1000, + save_steps = 250, + max_grad_norm = 0.1, + report_to = "none", # Can use Weights & Biases + output_dir = "outputs", + ) + + trainer = GRPOTrainer( + model = model, + processing_class = tokenizer, + reward_funcs = [ + match_format_exactly, + match_format_approximately, + check_answer_correctness, + check_numbers, + ], + args = training_args, + train_dataset = gsm8k_train, + ) + + +# Train + print(f"๐Ÿš‚ Starting GRPO training on {len(gsm8k_train)} examples...") + trainer.train() + +# Save checkpoint + model.save_pretrained("grpo_checkpoint") + tokenizer.save_pretrained("grpo_checkpoint") + print("๐Ÿ’พ GRPO checkpoint saved!") + +# Cleanup + del trainer + del training_args + cleanup_memory() + + print("โœ… GRPO training completed!") + + print(f"\n{'='*60}") + print("๐Ÿ” EVALUATION 3: Final GRPO Model") + print(f"{'='*60}") + + grpo_results = evaluate_model_aime( + model=model, + tokenizer=tokenizer, + model_type="grpo", + temperature=0.3, + n_sampling=8, + max_tokens=32768, + top_p=0.95, + seed=0 + ) + + all_results.append(grpo_results) + print("โœ… Final model evaluation complete!") + + print(f"\n{'='*60}") + print("๐Ÿ’พ SAVING FINAL MODEL") + print(f"{'='*60}") + + # Save as merged model + try: + model.save_pretrained_merged("final_merged_model", tokenizer, save_method="merged_16bit") + print("โœ… Merged model saved to: final_merged_model/") + except Exception as e: + print(f"โš ๏ธ Could not save merged model: {e}") + print("Final model saved as LoRA adapter only") + + print("๐Ÿ’พ Model saving complete!") + + + safe_remove_directory("./unsloth_compiled_cache") + + result_queue.put(results) + + # Clean up + del model + del tokenizer + torch.cuda.empty_cache() + gc.collect() + + + # # Merged model load 16 bits model AIME eval + # result_queue = mp.Queue() + # p = mp.Process(target=evaluate_merged_model, args=(result_queue, False, False)) + # p.start() + # p.join() + # + # merged_16bits = result_queue.get() + # all_results.append(merged_16bits) + # + # # Clean up + # del merged_model + # del merged_tokenizer + # del dataset_ppl + # torch.cuda.empty_cache() + # gc.collect() + # + # safe_remove_directory("./unsloth_compiled_cache") + # + # # Merged model load 8 bits model AIME eval + # + # result_queue = mp.Queue() + # p = mp.Process(target=evaluate_merged_model, args=(result_queue, False, True)) + # p.start() + # p.join() + # + # merged_16bits = result_queue.get() + # all_results.append(merged_16bits) + + + # Merged model load 4 bits AIME eval + # result_queue = mp.Queue() + # p = mp.Process(target=evaluate_merged_model, args=(result_queue, True, False)) + # p.start() + # p.join() + # + # merged_16bits = result_queue.get() + # all_results.append(merged_16bits) + +if __name__ == "__main__": + mp.set_start_method('spawn', force=True) + result_queue = mp.Queue() + all_results = [] + + + # run main finetuning and grpo loop + p = mp.Process(target=training_run, args=(result_queue,)) + p.start() + p.join() + + results = result_queue.get() + all_results = results + + # evaluate merged model loaded 16bits + p = mp.Process(target=evaluate_merged_model, args=(result_queue, False, False)) + p.start() + p.join() + + merged_load_16bits = result_queue.get() + all_results.append(merged_load_16bits) + safe_remove_directory("./unsloth_compiled_cache") + + # Merged model load 8 bits model AIME eval + p = mp.Process(target=evaluate_merged_model, args=(result_queue, False, True)) + p.start() + p.join() + + merged_load_8bits = result_queue.get() + all_results.append(merged_load_8bits) + + safe_remove_directory("./unsloth_compiled_cache") + + # Merged model load 4 bits model AIME eval + p = mp.Process(target=evaluate_merged_model, args=(result_queue, True, False)) + p.start() + p.join() + + merged_load_4bits = result_queue.get() + all_results.append(merged_load_4bits) + + safe_remove_directory("./unsloth_compiled_cache") + + +# AIME-specific comparison function + + print(f"\n{'='*80}") + print("๐Ÿ† FINAL TRAINING PIPELINE RESULTS") + print(f"{'='*80}") + +# Use the AIME-specific comparison + compare_aime_results(all_results) From 17563176d935f8199052eae6916dad057b839931 Mon Sep 17 00:00:00 2001 From: Roland Tannous Date: Sat, 21 Jun 2025 00:40:13 +0000 Subject: [PATCH 16/22] Fix Gemma3ForCausalLm does not have attribute self.llm --- tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb | 8848 ----- tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb | 5292 --- .../gemma3_4b_vision_french_ocr_H100.ipynb | 1345 - .../gemma3_4b_vision_french_ocr_T4.ipynb | 28611 ---------------- ...est_gemma3_1b_language_model_perplexity.py | 240 - ...est_gemma3_4b_language_model_perplexity.py | 228 - .../test_gemma3_grpo_model.py | 802 - unsloth/models/rl_replacements.py | 23 +- 8 files changed, 13 insertions(+), 45376 deletions(-) delete mode 100644 tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb delete mode 100644 tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb delete mode 100644 tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_H100.ipynb delete mode 100644 tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_T4.ipynb delete mode 100644 tests/gemma3_fix_tests/test_gemma3_1b_language_model_perplexity.py delete mode 100644 tests/gemma3_fix_tests/test_gemma3_4b_language_model_perplexity.py delete mode 100644 tests/gemma3_fix_tests/test_gemma3_grpo_model.py diff --git a/tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb b/tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb deleted file mode 100644 index 11d336b2aa..0000000000 --- a/tests/gemma3_fix_tests/Gemma3_4B_T4.ipynb +++ /dev/null @@ -1,8848 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "Ya4hWtsWgt6m" - }, - "source": [ - "To run this, press \"*Runtime*\" and press \"*Run all*\" on a **free** Tesla T4 Google Colab instance!\n", - "

\n", - "\n", - "\n", - " Join Discord if you need help + โญ Star us on Github โญ\n", - "
\n", - "\n", - "To install Unsloth on your own computer, follow the installation instructions on our Github page [here](https://docs.unsloth.ai/get-started/installing-+-updating).\n", - "\n", - "You will learn how to do [data prep](#Data), how to [train](#Train), how to [run the model](#Inference), & [how to save it](#Save)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BOuS2Goegt6o" - }, - "source": [ - "### News" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "tfzMngqfgt6p" - }, - "source": [ - "Unsloth now supports Text-to-Speech (TTS) models. Read our [guide here](https://docs.unsloth.ai/basics/text-to-speech-tts-fine-tuning).\n", - "\n", - "Read our **[Qwen3 Guide](https://docs.unsloth.ai/basics/qwen3-how-to-run-and-fine-tune)** and check out our new **[Dynamic 2.0](https://docs.unsloth.ai/basics/unsloth-dynamic-2.0-ggufs)** quants which outperforms other quantization methods!\n", - "\n", - "Visit our docs for all our [model uploads](https://docs.unsloth.ai/get-started/all-our-models) and [notebooks](https://docs.unsloth.ai/get-started/unsloth-notebooks).\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jdo0bz0Rgt6p" - }, - "source": [ - "### Installation" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "id": "89WLvodBgt6p" - }, - "outputs": [], - "source": [ - "%%capture\n", - "import os\n", - "if \"COLAB_\" not in \"\".join(os.environ.keys()):\n", - " !pip install unsloth\n", - "else:\n", - " # Do this only in Colab notebooks! Otherwise use pip install unsloth\n", - " !pip install --no-deps bitsandbytes accelerate xformers==0.0.29.post3 peft trl triton cut_cross_entropy unsloth_zoo\n", - " !pip install sentencepiece protobuf \"datasets>=3.4.1\" huggingface_hub hf_transfer msgspec tyro einops ninja\n", - " !pip install --no-deps unsloth\n", - " !pip install --force-reinstall --no-deps git+https://github.com/unslothai/unsloth-zoo.git\n", - " !pip install --force-reinstall --no-deps git+https://github.com/unslothai/unsloth.git" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TGMWlrRdzwgf" - }, - "source": [ - "### Unsloth\n", - "\n", - "`FastModel` supports loading nearly any model now! This includes Vision and Text models!" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 649, - "referenced_widgets": [ - "d4357f34982d44b49c92d35b48b63a52", - "1e37fe89cfad4a77a1077204b42238c0", - "222338617d2d4249a92a440cafe85ef5", - "cffb8c2c82ae4ac89223ec87cbf200a9", - "b02d8c71475b42148f8e32305d3d1ed4", - "3c7fcb9a462b47fe95f9633e72c7bc49", - "c693409aa2454122a9e045f49fcc1742", - "0300298391b24647b326e8fbc2471f06", - "0c9d49b5ed0d4f7aad2121d1b0373141", - "67ae316732804b77803657115a159e23", - "5a25ef912d5f4ef3bf9f3dc754daa7ef", - "c03e144d2c494e87ba6146ba80e725a7", - "616d6f38053046aaaa12cb96becf64d6", - "9adfec4bb7f3462887bb0a24ddc3fa69", - "60fcd348eea04bf19f780202c2f13d6e", - "59b4dc1570af42d488763597d6a782e7", - "306add97e53d4c0096c1ab99b92947b5", - "6b6696c6ac99472f95b8a8c034c9556f", - "9d9590f4554b44238581f07d9d3e96c6", - "25b4ab518467463caf45c9ef7e887212", - "925cf4589b674e0a9c8902dd36c3c9cf", - "b76352afbe044bdd995ca1b1cab4e83a", - "14b22c40642846f39da17cc00ef7fb88", - "ef00f30da2dc4d1e8289afcf7c80b860", - "6bdded4a3cae49e5907e1e8a9fd4e740", - "9281201d6eb345ae9f962dcdf200a081", - "f1f1f1a1e0f74f54ade609402550c6a7", - "6c87361beb0f4cfda95b7d080d7f343e", - "08afa202d3094daeab96a49990aa9c8f", - "6551142c2ae04475a07ec463c172ef94", - "62b2d8f968cd44cc85689a9f007f2615", - "cce60bdf161342a38cc148321ad87d89", - "cd9432ae568e4d1ab95686e66f1aacfc", - "971e7cbf682240568771230b07de1851", - "20cf3c6e82aa4507848e5df26252491a", - "a4abbef450034782bdb7604452a23272", - "a1f64e37020d42d1be67d3a28041f834", - "0eb03d301f5947f5a5d3faf8dee32772", - "29655da1abc94c959f7f94ad4b6d7ceb", - "263adc24127a45069391edfd83c11a1c", - "a9f1a0430fff480daeca436391147329", - "d8412a1915fc403a9f36da76588f9135", - "a3b2f29f6c604c16b7efb3a71433e74e", - "a9260c2d28d040d89b8ac9559dea9cd6", - "4300cfae504442f2a047b535a013c364", - "c81bbf9321c14b0dbf43ffdf387d7dba", - "005bd5aaffa3414b9f38c62716fa21f3", - "377f281812074f2c88a28780b60d9090", - "d78d84e7f4174408a0bd59b71b027cd5", - "d2dbe752c1994eb3badd431451253e99", - "7c22eb210647406e90b0fb94c6c2f05e", - "745460a76a774dca88e31c59937758a6", - "0fb0b715f98644efbb171fc399d7f931", - "b3ffd445e8cb446eb3d73b811c2e44cc", - "8110b1c4057b44ad8b92dbfd18bd1664", - "35838d1c2ce349af9a0a72b8b3251240", - "48c552d0240a4b1f8e0aa20120336bab", - "dfcf0b8a6e874730aebad7500ee42962", - "ea17eb4f3ace49e0a7c6cbed28889954", - "eb9efe55ac6d4a67b0aea9adea5e4667", - "a5ba3c2194da4fec956a1308a5696d83", - "abeb2ebb23b9466786f609cc2eb0310f", - "872df6a1722b4415b76da470afcf249e", - "658aa1de62184c6fa0a582b2867334ed", - "c1a0b7b0bfe94e34b42f9fbb3eabb3d8", - "8734730bc2f44eaa818dcf1a60909e96", - "dc11e9e86024408a9415bc3fb5a23f86", - "f7610773092e451397fb9c90cdc572fe", - "e943a9b9343f40eaaac24f220284e848", - "0a72e21a56c94f0cbaff4c4d7027b696", - "61826fd6f7364eb1a63bf4185c71e70c", - "cf9a808f07544cef813777dfe8b45466", - "21c746d72bd74493aa786b578563c09b", - "c73e32012e2f49aa9c68b8ecbaade794", - "4b35dc02722b4cecb442d427d9ca1e63", - "86b9cc5844e94f399835643c49460189", - "9916b2d18aa74a3f9bcf794910510586", - "d2d0037baa9a4900891882176b6d34a6", - "cd35c22bbe9745329d9858b770fbb81e", - "f11b24ea370040a09a453b971fca31c7", - "267e82e16a1b471396e19b8456663eaa", - "ab8235ccadad4e19968ddbbaac0a16ff", - "afab8c071937454dbda89c0752314c60", - "aad16109af6b43f09e67617671759ebb", - "a35dbc25393a41e7bbb579a5b890032b", - "e298ae95556544cea377256a5d6bad67", - "0c7bb45a565b4d72b9e2708c4005495f", - "2580b74f38b74189b73c5c1adb124411", - "5508647fe53148158c264dbb73c3f32e", - "fd2fcfd902654152a1ac84bee4f93270", - "b9a75cf3a6f04ba3bc41271bbd0c6b62", - "19a5a899060f4d8db55b11c4d7e7cd9d", - "06f7299115c14218b9896db0a01667ca", - "d7e2a97b96124f6ba29ef605ba14fd65", - "9d737dfb034743829a12dbd173dd52d0", - "49c266fb3f844e8f8fe6bd059b932cd5", - "f18f9276aea6436bb714332e4652a5a6", - "1a9a0308fa62444a95e014e5e4d5c3fc", - "ea901074586043129c6a3adbcb942fad", - "9f963624927e404b81d41e9030e4fd4a", - "3fa30d51f5b24dc38f7997b00a419bde", - "2f23e495371b429e8ca9c8f05924fe97", - "f6ebb0c6780c42248e64733c442a40f5", - "d17c3102803c48e182aef09a4849468e", - "abc60719f0774ccba72431145338ab31", - "b282f87f82db4a0c8b8ecec301144a14", - "58bea53d5f0d4af6b6dc586ebf8808d6", - "1ea9ff8b681f4182b77bf6827866e47c", - "aa25e6337a51473aa30067cd214580a6", - "aaab621de1ae4d0e9c0db6bf15d5edf9", - "df2091cf02a841a1a5bb9f22802de104", - "31b75cd349334aab89e55ef02186d30c", - "05f0d644c2d24584a69f3bec4d0aa468", - "a0f99a5907084714b12756d34d7d0cc4", - "9d493b3551d14cf3983a7db93a840b2c", - "06fb7ae0129f4b1bb33745533b464c1a", - "b1bc57ad3f8044f595e839067e5b15b0", - "f2a39e1dcb474a529576ac3930b0beb7", - "8e26d862735b4e58896cdd4986df14bf", - "c144b67f69404373b4f6899839742df3", - "aadf48eeeb98475d9aff2b37a76a3255" - ] - }, - "id": "-Xbb0cuLzwgf", - "outputId": "1261eb6f-89d3-4882-c2d2-9a1ddb384d24" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "๐Ÿฆฅ Unsloth: Will patch your computer to enable 2x faster free finetuning.\n", - "Forward Router Patched and working\n", - "forward 1 working and being replaced\n", - "Unsloth: Patched Gemma3ForConditionalGeneration llm forward\n", - "Unsloth: Patched Gemma3ForCausalLM.forward for GRPO compatibility.\n", - "๐Ÿฆฅ Unsloth Zoo will now patch everything to make training faster!\n", - "Unsloth: Using float32 gradient checkpointing for FORCE_FLOAT32 mode\n", - "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4.\n", - " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.741 GB. Platform: Linux.\n", - "O^O/ \\_/ \\ Torch: 2.6.0+cu124. CUDA: 7.5. CUDA Toolkit: 12.4. Triton: 3.2.0\n", - "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.29.post3. FA2 = False]\n", - " \"-____-\" Free license: http://github.com/unslothai/unsloth\n", - "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n", - "Unsloth: Using float16 precision for gemma3 won't work! Using float32.\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "model.safetensors: 0%| | 0.00/4.56G [00:00\n", - "### Data Prep\n", - "We now use the `Gemma-3` format for conversation style finetunes. We use [Maxime Labonne's FineTome-100k](https://huggingface.co/datasets/mlabonne/FineTome-100k) dataset in ShareGPT style. Gemma-3 renders multi turn conversations like below:\n", - "\n", - "```\n", - "user\n", - "Hello!\n", - "model\n", - "Hey there!\n", - "```\n", - "\n", - "We use our `get_chat_template` function to get the correct chat template. We support `zephyr, chatml, mistral, llama, alpaca, vicuna, vicuna_old, phi3, llama3, phi4, qwen2.5, gemma3` and more." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "LjY75GoYUCB8" - }, - "outputs": [], - "source": [ - "from unsloth.chat_templates import get_chat_template\n", - "tokenizer = get_chat_template(\n", - " tokenizer,\n", - " chat_template = \"gemma-3\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "id": "Mkq4RvEq7FQr", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 113, - "referenced_widgets": [ - "0c01b2a17cc14a859d65dab518e7a98f", - "1b018ab085ad4f8d91b1943de944a07c", - "6e9c3dc53a3e48cd80f81c5868a8c25b", - "23d700e3d79f4cf2b9b7829e400fb36e", - "ca50038524fe403b935951b2103b7e37", - "4e64129ef7be4605a19a00f82611f501", - "200b532be3eb4cb5b72d357d58446d56", - "74c3f8874b2d4bf08e212bcb4a2f4d30", - "e1b83736a1464936a845f4a4bb8c9c87", - "cf0aeee0b2a84161a16a80cb1dcff948", - "8762c99ed7b940f2b9de85a1d77dc7bf", - "ba8e6fb4120a40e7bf3f01be180ad698", - "e139dcb62648439197af2f75281d49e2", - "e391fcb714e246aa9a3213c50e5006af", - "5e1448a080184bce85ac3a6d75c0798c", - "bbaafcdbf60b40cd828024917ff67fc2", - "c29d400791d34064914ff2b831d5844c", - "eede6c18332f4b77a30ce14676e52307", - "34af403270d94792bca566c43bf402f0", - "012595756eef4c918cfe3f580dba2c37", - "f34cb28303bc4089bb276b9b41a3b92b", - "da7e57d90cd84b59b817e26b4a7287fa", - "48bc63a3954d4f928da7b41dc9a59221", - "09cb3384bd73421a80099a07603c34ae", - "697e7dff10344f2883c377a092645a21", - "dc21632cee14404fb785fe4d01ebc4ba", - "d04fc5687a6d42728e36c2f698739df9", - "3962af438c2345789d1ef27c2de54b7b", - "089e89e22a314a4b96d576eed56d29dc", - "6b8057ede4c544249500ea7a85ed0aca", - "456161f177ae4d83a27015ff1b03aba3", - "19b01f4701cf4ddda39d8fe44ef50859", - "acb6c9083d884baca2bfb66b86167d67" - ] - }, - "outputId": "ac72ccce-5aa2-4d94-8d03-e0af41cdd08b" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "README.md: 0%| | 0.00/982 [00:00` token using removeprefix(`''`) since we're finetuning. The Processor will add this token before training and the model expects only one." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "id": "1ahE8Ys37JDJ", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 49, - "referenced_widgets": [ - "eae8887f2332426c8238bae4c1cd73a1", - "486251b70cce420589ad27ab14c47dcc", - "ded81d21ad544ea294ed89c0fe6a82b1", - "d904853f64224c09a109261d35c380d2", - "e05dfd2b79ed4d6ab48a71e73d4bf530", - "6249d50fc8e948f1a5621de01f71a186", - "1f9709a6ead2491ca760d3ef00a057fb", - "d9fb781f50c7445b9622923e26150e78", - "63fa705847904d43b93d2b5a3f7b798b", - "812970cf649647159678ffb30a5bf898", - "cebdd0e4ee2b4c8195c7d1a4c305e79b" - ] - }, - "outputId": "e5dbe42d-14ba-45e2-952d-fd87aa4bb551" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "Map: 0%| | 0/100000 [00:00') for convo in convos]\n", - " return { \"text\" : texts, }\n", - "\n", - "dataset = dataset.map(formatting_prompts_func, batched = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ndDUB23CGAC5" - }, - "source": [ - "Let's see how the chat template did! Notice there is no `` token as the processor tokenizer will be adding one." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 122 - }, - "id": "gGFzmplrEy9I", - "outputId": "4ff90a36-6e3c-4086-e178-ea6d87a2f791" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "'user\\nWhat is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?\\nmodel\\nIn programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" - ], - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - } - }, - "metadata": {}, - "execution_count": 9 - } - ], - "source": [ - "dataset[100][\"text\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "idAEIeSQ3xdS" - }, - "source": [ - "\n", - "### Train the model\n", - "Now let's use Huggingface TRL's `SFTTrainer`! More docs here: [TRL SFT docs](https://huggingface.co/docs/trl/sft_trainer). We do 60 steps to speed things up, but you can set `num_train_epochs=1` for a full run, and turn off `max_steps=None`." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 66, - "referenced_widgets": [ - "22cd66b0ba0a44aeafb6031d422105aa", - "be0dea815ff141a380af46c995e21e3d", - "68b0cfb889e1451691769455545fcc33", - "16c098858a9a469ab3235f78c4e0d412", - "1a4bfd6451114eb08a36186d9632a795", - "70c8fe0bb9df4d08925124ab6e1ff3de", - "65b7014a9ef14fd2b19048eb80b627e6", - "595b376fbf7f4471a3d91555a25baa37", - "9ea86535f09b4505ac321c0a75be87ba", - "cc96706dc78b4ef39bb7cc32b95799df", - "bc9dd3a3c6964dca8c392ba626ef0099" - ] - }, - "id": "95_Nn-89DhsL", - "outputId": "9c43fc09-7111-473b-cf5a-5ef52499aa1b" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Unsloth: Switching to float32 training since model cannot work with float16\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "Unsloth: Tokenizing [\"text\"] (num_proc=2): 0%| | 0/100000 [00:00user\\n\",\n", - " response_part = \"model\\n\",\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Dv1NBUozV78l" - }, - "source": [ - "Let's verify masking the instruction part is done! Let's print the 100th row again. Notice how the sample only has a single `` as expected!" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 122 - }, - "id": "LtsMVtlkUhja", - "outputId": "8e62426b-4b49-4a4b-eb05-93cebffd049b" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "'user\\nWhat is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?\\nmodel\\nIn programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" - ], - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - } - }, - "metadata": {}, - "execution_count": 12 - } - ], - "source": [ - "tokenizer.decode(trainer.train_dataset[100][\"input_ids\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "4Kyjy__m9KY3" - }, - "source": [ - "Now let's print the masked out example - you should see only the answer is present:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 122 - }, - "id": "_rD6fl8EUxnG", - "outputId": "3de009e1-ea7b-4c53-fefe-6ca2b6764c81" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "' In programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" - ], - "application/vnd.google.colaboratory.intrinsic+json": { - "type": "string" - } - }, - "metadata": {}, - "execution_count": 13 - } - ], - "source": [ - "tokenizer.decode([tokenizer.pad_token_id if x == -100 else x for x in trainer.train_dataset[100][\"labels\"]]).replace(tokenizer.pad_token, \" \")" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "cellView": "form", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "2ejIt2xSNKKp", - "outputId": "710edfa9-bc16-4d6e-bf44-2f3c91eb6d1e" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "GPU = Tesla T4. Max memory = 14.741 GB.\n", - "5.59 GB of memory reserved.\n" - ] - } - ], - "source": [ - "# @title Show current memory stats\n", - "gpu_stats = torch.cuda.get_device_properties(0)\n", - "start_gpu_memory = round(torch.cuda.max_memory_reserved() / 1024 / 1024 / 1024, 3)\n", - "max_memory = round(gpu_stats.total_memory / 1024 / 1024 / 1024, 3)\n", - "print(f\"GPU = {gpu_stats.name}. Max memory = {max_memory} GB.\")\n", - "print(f\"{start_gpu_memory} GB of memory reserved.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "CNP1Uidk9mrz" - }, - "source": [ - "Let's train the model! To resume a training run, set `trainer.train(resume_from_checkpoint = True)`" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 368 - }, - "id": "yqxqAZ7KJ4oL", - "outputId": "a68bbefe-2fc2-4591-9016-3dfbb26a8088" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n", - " \\\\ /| Num examples = 100,000 | Num Epochs = 1 | Total steps = 30\n", - "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 4\n", - "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 4 x 1) = 8\n", - " \"-____-\" Trainable parameters = 14,901,248/4,000,000,000 (0.37% trained)\n", - "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "" - ], - "text/html": [ - "\n", - "
\n", - " \n", - " \n", - " [30/30 08:54, Epoch 0/1]\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
StepTraining Loss
51.306200
100.871300
150.952600
200.929800
250.899800
300.941100

" - ] - }, - "metadata": {} - } - ], - "source": [ - "trainer_stats = trainer.train()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "cellView": "form", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "pCqnaKmlO1U9", - "outputId": "5d5d33ee-7a84-4418-b038-bd15fb4614e4" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "76.5953 seconds used for training.\n", - "1.28 minutes used for training.\n", - "Peak reserved memory = 11.619 GB.\n", - "Peak reserved memory for training = 6.947 GB.\n", - "Peak reserved memory % of max memory = 14.674 %.\n", - "Peak reserved memory for training % of max memory = 8.774 %.\n" - ] - } - ], - "source": [ - "# @title Show final memory and time stats\n", - "used_memory = round(torch.cuda.max_memory_reserved() / 1024 / 1024 / 1024, 3)\n", - "used_memory_for_lora = round(used_memory - start_gpu_memory, 3)\n", - "used_percentage = round(used_memory / max_memory * 100, 3)\n", - "lora_percentage = round(used_memory_for_lora / max_memory * 100, 3)\n", - "print(f\"{trainer_stats.metrics['train_runtime']} seconds used for training.\")\n", - "print(\n", - " f\"{round(trainer_stats.metrics['train_runtime']/60, 2)} minutes used for training.\"\n", - ")\n", - "print(f\"Peak reserved memory = {used_memory} GB.\")\n", - "print(f\"Peak reserved memory for training = {used_memory_for_lora} GB.\")\n", - "print(f\"Peak reserved memory % of max memory = {used_percentage} %.\")\n", - "print(f\"Peak reserved memory for training % of max memory = {lora_percentage} %.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ekOmTR1hSNcr" - }, - "source": [ - "\n", - "### Inference\n", - "Let's run the model via Unsloth native inference! According to the `Gemma-3` team, the recommended settings for inference are `temperature = 1.0, top_p = 0.95, top_k = 64`" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "kR3gIAX-SM2q", - "outputId": "84033a7b-db31-405d-eb36-711af2e86b50" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "You have set `compile_config`, but we are unable to meet the criteria for compilation. Compilation will be skipped.\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['user\\nContinue the sequence: 1, 1, 2, 3, 5, 8,\\nmodel\\nThe sequence provided is the Fibonacci Sequence, which is defined by each number being the sum of the two previous.\\nFor example, 3 = 1 + 2 and 5 = 2 + 3. The first two numbers are 1 and 1.\\nIn this case, we are looking for']" - ] - }, - "metadata": {}, - "execution_count": 16 - } - ], - "source": [ - "from unsloth.chat_templates import get_chat_template\n", - "tokenizer = get_chat_template(\n", - " tokenizer,\n", - " chat_template = \"gemma-3\",\n", - ")\n", - "messages = [{\n", - " \"role\": \"user\",\n", - " \"content\": [{\n", - " \"type\" : \"text\",\n", - " \"text\" : \"Continue the sequence: 1, 1, 2, 3, 5, 8,\",\n", - " }]\n", - "}]\n", - "text = tokenizer.apply_chat_template(\n", - " messages,\n", - " add_generation_prompt = True, # Must add for generation\n", - ")\n", - "outputs = model.generate(\n", - " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", - " max_new_tokens = 64, # Increase for longer outputs!\n", - " # Recommended Gemma-3 settings!\n", - " temperature = 1.0, top_p = 0.95, top_k = 64,\n", - ")\n", - "tokenizer.batch_decode(outputs)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "CrSvZObor0lY" - }, - "source": [ - " You can also use a `TextStreamer` for continuous inference - so you can see the generation token by token, instead of waiting the whole time!" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "e2pEuRb1r2Vg", - "outputId": "42f92b39-9d2e-40d9-dcca-5ad5d50cda6e" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "The sky is blue because of a phenomenon called Rayleigh scattering, which is the effect by which photons are scattered by particles in a medium. The higher the frequency of the photon, the more likely it is to be scattered (Scattering occurs when a photon hits an atom or molecule and bounces off).\n", - "\n", - "The atmosphere of the\n" - ] - } - ], - "source": [ - "messages = [{\n", - " \"role\": \"user\",\n", - " \"content\": [{\"type\" : \"text\", \"text\" : \"Why is the sky blue?\",}]\n", - "}]\n", - "text = tokenizer.apply_chat_template(\n", - " messages,\n", - " add_generation_prompt = True, # Must add for generation\n", - ")\n", - "\n", - "from transformers import TextStreamer\n", - "_ = model.generate(\n", - " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", - " max_new_tokens = 64, # Increase for longer outputs!\n", - " # Recommended Gemma-3 settings!\n", - " temperature = 1.0, top_p = 0.95, top_k = 64,\n", - " streamer = TextStreamer(tokenizer, skip_prompt = True),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "uMuVrWbjAzhc" - }, - "source": [ - "\n", - "### Saving, loading finetuned models\n", - "To save the final model as LoRA adapters, either use Huggingface's `push_to_hub` for an online save or `save_pretrained` for a local save.\n", - "\n", - "**[NOTE]** This ONLY saves the LoRA adapters, and not the full model. To save to 16bit or GGUF, scroll down!" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "upcOlWe7A1vc", - "outputId": "4f28e6cb-1301-4764-c1ee-dbc594b41323" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['gemma-3/processor_config.json']" - ] - }, - "metadata": {}, - "execution_count": 18 - } - ], - "source": [ - "model.save_pretrained(\"gemma-3\") # Local saving\n", - "tokenizer.save_pretrained(\"gemma-3\")\n", - "# model.push_to_hub(\"HF_ACCOUNT/gemma-3\", token = \"...\") # Online saving\n", - "# tokenizer.push_to_hub(\"HF_ACCOUNT/gemma-3\", token = \"...\") # Online saving" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "AEEcJ4qfC7Lp" - }, - "source": [ - "Now if you want to load the LoRA adapters we just saved for inference, set `False` to `True`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "MKX_XKs_BNZR", - "outputId": "d016d936-4bd5-40f8-dffa-bcfad987f489" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gemma is a family of open-source language models created by the team at Google DeepMind. There are different sizes of Gemma models that can be downloaded from the Google Cloud Marketplace, and the open-source models can be used to generate text, translate languages, write different kinds of creative content, and answer your questions\n" - ] - } - ], - "source": [ - "if False:\n", - " from unsloth import FastModel\n", - " model, tokenizer = FastModel.from_pretrained(\n", - " model_name = \"lora_model\", # YOUR MODEL YOU USED FOR TRAINING\n", - " max_seq_length = 2048,\n", - " load_in_4bit = True,\n", - " )\n", - "\n", - "messages = [{\n", - " \"role\": \"user\",\n", - " \"content\": [{\"type\" : \"text\", \"text\" : \"What is Gemma-3?\",}]\n", - "}]\n", - "text = tokenizer.apply_chat_template(\n", - " messages,\n", - " add_generation_prompt = True, # Must add for generation\n", - ")\n", - "\n", - "from transformers import TextStreamer\n", - "_ = model.generate(\n", - " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", - " max_new_tokens = 64, # Increase for longer outputs!\n", - " # Recommended Gemma-3 settings!\n", - " temperature = 1.0, top_p = 0.95, top_k = 64,\n", - " streamer = TextStreamer(tokenizer, skip_prompt = True),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "f422JgM9sdVT" - }, - "source": [ - "### Saving to float16 for VLLM\n", - "\n", - "We also support saving to `float16` directly for deployment! We save it in the folder `gemma-3-finetune`. Set `if False` to `if True` to let it run!" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "id": "iHjt_SMYsd3P", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 252, - "referenced_widgets": [ - "b85f7f7d75a64eaa82c9168315eeaa12", - "339a816b9f6d473ea9006828597e3b9f", - "7ef367cab0c54d7485244645787a8158", - "cc731c8351b84336a32ef79b8532e196", - "6150d9a88f9e4d89872a8018b1818175", - "1d691cb677f740908bb7f1f92c4b1cbb", - "40ea8f66d8ae44209977f84a2bf8260f", - "1fa23b65d10d4bf28cb8f39679a0ed10", - "2a6eef0d636a4ccd8b1e3df7ea8f73ce", - "d2b6586ecf2f49248941178f886b8747", - "b9ec89ab499a4483bfeef0c257815ac9", - "94ee261670d74fc586e92749195f840c", - "3f549e391ef04e87858d329713ca53fa", - "26a064257ab842ed88e4cf1a1284a72e", - "97e7187039e441ea94f6670f1fe7605d", - "3df0097f611f40858a604797a70e44f3", - "013b075b8e1d4e84932de8b7aa984b3a", - "59145eea0ee94e3b845cd212669cec58", - "6714ce7fbde04e10bc5e537703b7c744", - "eb2b167de1974ef19d4ffcaf1fe0dd65", - "4dc3d628f0f14ec2beea903375bca642", - "878f005901e24bc7b45361e41fc38cde", - "a45c64eacd084dfa9a822e86a5c003a4", - "c0c762d121f84ec7bb190a28418ae494", - "4588b16c54a649d1af49f6aef7673991", - "bf4b4ba94ba849cc8372e297b06b957a", - "ae11658399d742c2afec62941aec6b01", - "d4b7722ba8de4ed4a842dc6744508015", - "b2abfb50fbb84d9884a1faf9a98e286d", - "f5fdc873c5c54087a6cc2851cffc1e11", - "f9296c9f10234936b39902c00bb562e6", - "a8208321cb474d0e84ea5b2f085f8cfc", - "51f4df66b2c849468b6df712aaa21b61" - ] - }, - "outputId": "e97ee42d-a702-4e93-8652-73ea2da39148" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Found HuggingFace hub cache directory: /root/.cache/huggingface/hub\n", - "Checking cache directory for required files...\n", - "Cache check failed: model-00001-of-00002.safetensors not found in local cache.\n", - "Not all required files found in cache. Will proceed with downloading.\n", - "Downloading safetensors index for unsloth/gemma-3-4b-it...\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "model.safetensors.index.json: 0%| | 0.00/90.6k [00:00\n", - " \n", - " \n", - " \n", - "\n", - " Join Discord if you need help + โญ๏ธ Star us on Github โญ๏ธ\n", - "\n" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "gpuType": "T4", - "provenance": [], - "machine_shape": "hm" - }, - "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.11.0" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "d4357f34982d44b49c92d35b48b63a52": { - "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_1e37fe89cfad4a77a1077204b42238c0", - "IPY_MODEL_222338617d2d4249a92a440cafe85ef5", - "IPY_MODEL_cffb8c2c82ae4ac89223ec87cbf200a9" - ], - "layout": "IPY_MODEL_b02d8c71475b42148f8e32305d3d1ed4" - } - }, - "1e37fe89cfad4a77a1077204b42238c0": { - "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_3c7fcb9a462b47fe95f9633e72c7bc49", - "placeholder": "โ€‹", - "style": "IPY_MODEL_c693409aa2454122a9e045f49fcc1742", - "value": "model.safetensors:โ€‡100%" - } - }, - "222338617d2d4249a92a440cafe85ef5": { - "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_0300298391b24647b326e8fbc2471f06", - "max": 4562294331, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0c9d49b5ed0d4f7aad2121d1b0373141", - "value": 4562294331 - } - }, - "cffb8c2c82ae4ac89223ec87cbf200a9": { - "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_67ae316732804b77803657115a159e23", - "placeholder": "โ€‹", - "style": "IPY_MODEL_5a25ef912d5f4ef3bf9f3dc754daa7ef", - "value": "โ€‡4.56G/4.56Gโ€‡[00:15<00:00,โ€‡480MB/s]" - } - }, - "b02d8c71475b42148f8e32305d3d1ed4": { - "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 - } - }, - "3c7fcb9a462b47fe95f9633e72c7bc49": { - "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 - } - }, - "c693409aa2454122a9e045f49fcc1742": { - "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": "" - } - }, - "0300298391b24647b326e8fbc2471f06": { - "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 - } - }, - "0c9d49b5ed0d4f7aad2121d1b0373141": { - "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": "" - } - }, - "67ae316732804b77803657115a159e23": { - "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 - } - }, - "5a25ef912d5f4ef3bf9f3dc754daa7ef": { - "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": "" - } - }, - "c03e144d2c494e87ba6146ba80e725a7": { - "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_616d6f38053046aaaa12cb96becf64d6", - "IPY_MODEL_9adfec4bb7f3462887bb0a24ddc3fa69", - "IPY_MODEL_60fcd348eea04bf19f780202c2f13d6e" - ], - "layout": "IPY_MODEL_59b4dc1570af42d488763597d6a782e7" - } - }, - "616d6f38053046aaaa12cb96becf64d6": { - "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_306add97e53d4c0096c1ab99b92947b5", - "placeholder": "โ€‹", - "style": "IPY_MODEL_6b6696c6ac99472f95b8a8c034c9556f", - "value": "generation_config.json:โ€‡100%" - } - }, - "9adfec4bb7f3462887bb0a24ddc3fa69": { - "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_9d9590f4554b44238581f07d9d3e96c6", - "max": 210, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_25b4ab518467463caf45c9ef7e887212", - "value": 210 - } - }, - "60fcd348eea04bf19f780202c2f13d6e": { - "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_925cf4589b674e0a9c8902dd36c3c9cf", - "placeholder": "โ€‹", - "style": "IPY_MODEL_b76352afbe044bdd995ca1b1cab4e83a", - "value": "โ€‡210/210โ€‡[00:00<00:00,โ€‡27.9kB/s]" - } - }, - "59b4dc1570af42d488763597d6a782e7": { - "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 - } - }, - "306add97e53d4c0096c1ab99b92947b5": { - "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 - } - }, - "6b6696c6ac99472f95b8a8c034c9556f": { - "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": "" - } - }, - "9d9590f4554b44238581f07d9d3e96c6": { - "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 - } - }, - "25b4ab518467463caf45c9ef7e887212": { - "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": "" - } - }, - "925cf4589b674e0a9c8902dd36c3c9cf": { - "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 - } - }, - "b76352afbe044bdd995ca1b1cab4e83a": { - "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": "" - } - }, - "14b22c40642846f39da17cc00ef7fb88": { - "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_ef00f30da2dc4d1e8289afcf7c80b860", - "IPY_MODEL_6bdded4a3cae49e5907e1e8a9fd4e740", - "IPY_MODEL_9281201d6eb345ae9f962dcdf200a081" - ], - "layout": "IPY_MODEL_f1f1f1a1e0f74f54ade609402550c6a7" - } - }, - "ef00f30da2dc4d1e8289afcf7c80b860": { - "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_6c87361beb0f4cfda95b7d080d7f343e", - "placeholder": "โ€‹", - "style": "IPY_MODEL_08afa202d3094daeab96a49990aa9c8f", - "value": "processor_config.json:โ€‡100%" - } - }, - "6bdded4a3cae49e5907e1e8a9fd4e740": { - "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_6551142c2ae04475a07ec463c172ef94", - "max": 70, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_62b2d8f968cd44cc85689a9f007f2615", - "value": 70 - } - }, - "9281201d6eb345ae9f962dcdf200a081": { - "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_cce60bdf161342a38cc148321ad87d89", - "placeholder": "โ€‹", - "style": "IPY_MODEL_cd9432ae568e4d1ab95686e66f1aacfc", - "value": "โ€‡70.0/70.0โ€‡[00:00<00:00,โ€‡8.49kB/s]" - } - }, - "f1f1f1a1e0f74f54ade609402550c6a7": { - "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 - } - }, - "6c87361beb0f4cfda95b7d080d7f343e": { - "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 - } - }, - "08afa202d3094daeab96a49990aa9c8f": { - "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": "" - } - }, - "6551142c2ae04475a07ec463c172ef94": { - "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 - } - }, - "62b2d8f968cd44cc85689a9f007f2615": { - "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": "" - } - }, - "cce60bdf161342a38cc148321ad87d89": { - "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 - } - }, - "cd9432ae568e4d1ab95686e66f1aacfc": { - "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": "" - } - }, - "971e7cbf682240568771230b07de1851": { - "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_20cf3c6e82aa4507848e5df26252491a", - "IPY_MODEL_a4abbef450034782bdb7604452a23272", - "IPY_MODEL_a1f64e37020d42d1be67d3a28041f834" - ], - "layout": "IPY_MODEL_0eb03d301f5947f5a5d3faf8dee32772" - } - }, - "20cf3c6e82aa4507848e5df26252491a": { - "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_29655da1abc94c959f7f94ad4b6d7ceb", - "placeholder": "โ€‹", - "style": "IPY_MODEL_263adc24127a45069391edfd83c11a1c", - "value": "chat_template.json:โ€‡100%" - } - }, - "a4abbef450034782bdb7604452a23272": { - "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_a9f1a0430fff480daeca436391147329", - "max": 1615, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_d8412a1915fc403a9f36da76588f9135", - "value": 1615 - } - }, - "a1f64e37020d42d1be67d3a28041f834": { - "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_a3b2f29f6c604c16b7efb3a71433e74e", - "placeholder": "โ€‹", - "style": "IPY_MODEL_a9260c2d28d040d89b8ac9559dea9cd6", - "value": "โ€‡1.61k/1.61kโ€‡[00:00<00:00,โ€‡228kB/s]" - } - }, - "0eb03d301f5947f5a5d3faf8dee32772": { - "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 - } - }, - "29655da1abc94c959f7f94ad4b6d7ceb": { - "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 - } - }, - "263adc24127a45069391edfd83c11a1c": { - "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": "" - } - }, - "a9f1a0430fff480daeca436391147329": { - "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 - } - }, - "d8412a1915fc403a9f36da76588f9135": { - "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": "" - } - }, - "a3b2f29f6c604c16b7efb3a71433e74e": { - "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 - } - }, - "a9260c2d28d040d89b8ac9559dea9cd6": { - "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": "" - } - }, - "4300cfae504442f2a047b535a013c364": { - "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_c81bbf9321c14b0dbf43ffdf387d7dba", - "IPY_MODEL_005bd5aaffa3414b9f38c62716fa21f3", - "IPY_MODEL_377f281812074f2c88a28780b60d9090" - ], - "layout": "IPY_MODEL_d78d84e7f4174408a0bd59b71b027cd5" - } - }, - "c81bbf9321c14b0dbf43ffdf387d7dba": { - "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_d2dbe752c1994eb3badd431451253e99", - "placeholder": "โ€‹", - "style": "IPY_MODEL_7c22eb210647406e90b0fb94c6c2f05e", - "value": "chat_template.jinja:โ€‡100%" - } - }, - "005bd5aaffa3414b9f38c62716fa21f3": { - "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_745460a76a774dca88e31c59937758a6", - "max": 1532, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0fb0b715f98644efbb171fc399d7f931", - "value": 1532 - } - }, - "377f281812074f2c88a28780b60d9090": { - "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_b3ffd445e8cb446eb3d73b811c2e44cc", - "placeholder": "โ€‹", - "style": "IPY_MODEL_8110b1c4057b44ad8b92dbfd18bd1664", - "value": "โ€‡1.53k/1.53kโ€‡[00:00<00:00,โ€‡205kB/s]" - } - }, - "d78d84e7f4174408a0bd59b71b027cd5": { - "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 - } - }, - "d2dbe752c1994eb3badd431451253e99": { - "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 - } - }, - "7c22eb210647406e90b0fb94c6c2f05e": { - "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": "" - } - }, - "745460a76a774dca88e31c59937758a6": { - "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 - } - }, - "0fb0b715f98644efbb171fc399d7f931": { - "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": "" - } - }, - "b3ffd445e8cb446eb3d73b811c2e44cc": { - "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 - } - }, - "8110b1c4057b44ad8b92dbfd18bd1664": { - "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": "" - } - }, - "35838d1c2ce349af9a0a72b8b3251240": { - "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_48c552d0240a4b1f8e0aa20120336bab", - "IPY_MODEL_dfcf0b8a6e874730aebad7500ee42962", - "IPY_MODEL_ea17eb4f3ace49e0a7c6cbed28889954" - ], - "layout": "IPY_MODEL_eb9efe55ac6d4a67b0aea9adea5e4667" - } - }, - "48c552d0240a4b1f8e0aa20120336bab": { - "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_a5ba3c2194da4fec956a1308a5696d83", - "placeholder": "โ€‹", - "style": "IPY_MODEL_abeb2ebb23b9466786f609cc2eb0310f", - "value": "preprocessor_config.json:โ€‡100%" - } - }, - "dfcf0b8a6e874730aebad7500ee42962": { - "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_872df6a1722b4415b76da470afcf249e", - "max": 570, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_658aa1de62184c6fa0a582b2867334ed", - "value": 570 - } - }, - "ea17eb4f3ace49e0a7c6cbed28889954": { - "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_c1a0b7b0bfe94e34b42f9fbb3eabb3d8", - "placeholder": "โ€‹", - "style": "IPY_MODEL_8734730bc2f44eaa818dcf1a60909e96", - "value": "โ€‡570/570โ€‡[00:00<00:00,โ€‡72.9kB/s]" - } - }, - "eb9efe55ac6d4a67b0aea9adea5e4667": { - "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 - } - }, - "a5ba3c2194da4fec956a1308a5696d83": { - "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 - } - }, - "abeb2ebb23b9466786f609cc2eb0310f": { - "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": "" - } - }, - "872df6a1722b4415b76da470afcf249e": { - "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 - } - }, - "658aa1de62184c6fa0a582b2867334ed": { - "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": "" - } - }, - "c1a0b7b0bfe94e34b42f9fbb3eabb3d8": { - "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 - } - }, - "8734730bc2f44eaa818dcf1a60909e96": { - "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": "" - } - }, - "dc11e9e86024408a9415bc3fb5a23f86": { - "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_f7610773092e451397fb9c90cdc572fe", - "IPY_MODEL_e943a9b9343f40eaaac24f220284e848", - "IPY_MODEL_0a72e21a56c94f0cbaff4c4d7027b696" - ], - "layout": "IPY_MODEL_61826fd6f7364eb1a63bf4185c71e70c" - } - }, - "f7610773092e451397fb9c90cdc572fe": { - "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_cf9a808f07544cef813777dfe8b45466", - "placeholder": "โ€‹", - "style": "IPY_MODEL_21c746d72bd74493aa786b578563c09b", - "value": "tokenizer_config.json:โ€‡100%" - } - }, - "e943a9b9343f40eaaac24f220284e848": { - "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_c73e32012e2f49aa9c68b8ecbaade794", - "max": 1158492, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_4b35dc02722b4cecb442d427d9ca1e63", - "value": 1158492 - } - }, - "0a72e21a56c94f0cbaff4c4d7027b696": { - "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_86b9cc5844e94f399835643c49460189", - "placeholder": "โ€‹", - "style": "IPY_MODEL_9916b2d18aa74a3f9bcf794910510586", - "value": "โ€‡1.16M/1.16Mโ€‡[00:00<00:00,โ€‡5.01MB/s]" - } - }, - "61826fd6f7364eb1a63bf4185c71e70c": { - "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 - } - }, - "cf9a808f07544cef813777dfe8b45466": { - "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 - } - }, - "21c746d72bd74493aa786b578563c09b": { - "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": "" - } - }, - "c73e32012e2f49aa9c68b8ecbaade794": { - "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 - } - }, - "4b35dc02722b4cecb442d427d9ca1e63": { - "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": "" - } - }, - "86b9cc5844e94f399835643c49460189": { - "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 - } - }, - "9916b2d18aa74a3f9bcf794910510586": { - "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": "" - } - }, - "d2d0037baa9a4900891882176b6d34a6": { - "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_cd35c22bbe9745329d9858b770fbb81e", - "IPY_MODEL_f11b24ea370040a09a453b971fca31c7", - "IPY_MODEL_267e82e16a1b471396e19b8456663eaa" - ], - "layout": "IPY_MODEL_ab8235ccadad4e19968ddbbaac0a16ff" - } - }, - "cd35c22bbe9745329d9858b770fbb81e": { - "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_afab8c071937454dbda89c0752314c60", - "placeholder": "โ€‹", - "style": "IPY_MODEL_aad16109af6b43f09e67617671759ebb", - "value": "tokenizer.model:โ€‡100%" - } - }, - "f11b24ea370040a09a453b971fca31c7": { - "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_a35dbc25393a41e7bbb579a5b890032b", - "max": 4689074, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_e298ae95556544cea377256a5d6bad67", - "value": 4689074 - } - }, - "267e82e16a1b471396e19b8456663eaa": { - "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_0c7bb45a565b4d72b9e2708c4005495f", - "placeholder": "โ€‹", - "style": "IPY_MODEL_2580b74f38b74189b73c5c1adb124411", - "value": "โ€‡4.69M/4.69Mโ€‡[00:01<00:00,โ€‡3.89MB/s]" - } - }, - "ab8235ccadad4e19968ddbbaac0a16ff": { - "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 - } - }, - "afab8c071937454dbda89c0752314c60": { - "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 - } - }, - "aad16109af6b43f09e67617671759ebb": { - "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": "" - } - }, - "a35dbc25393a41e7bbb579a5b890032b": { - "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 - } - }, - "e298ae95556544cea377256a5d6bad67": { - "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": "" - } - }, - "0c7bb45a565b4d72b9e2708c4005495f": { - "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 - } - }, - "2580b74f38b74189b73c5c1adb124411": { - "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": "" - } - }, - "5508647fe53148158c264dbb73c3f32e": { - "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_fd2fcfd902654152a1ac84bee4f93270", - "IPY_MODEL_b9a75cf3a6f04ba3bc41271bbd0c6b62", - "IPY_MODEL_19a5a899060f4d8db55b11c4d7e7cd9d" - ], - "layout": "IPY_MODEL_06f7299115c14218b9896db0a01667ca" - } - }, - "fd2fcfd902654152a1ac84bee4f93270": { - "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_d7e2a97b96124f6ba29ef605ba14fd65", - "placeholder": "โ€‹", - "style": "IPY_MODEL_9d737dfb034743829a12dbd173dd52d0", - "value": "tokenizer.json:โ€‡100%" - } - }, - "b9a75cf3a6f04ba3bc41271bbd0c6b62": { - "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_49c266fb3f844e8f8fe6bd059b932cd5", - "max": 33384568, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_f18f9276aea6436bb714332e4652a5a6", - "value": 33384568 - } - }, - "19a5a899060f4d8db55b11c4d7e7cd9d": { - "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_1a9a0308fa62444a95e014e5e4d5c3fc", - "placeholder": "โ€‹", - "style": "IPY_MODEL_ea901074586043129c6a3adbcb942fad", - "value": "โ€‡33.4M/33.4Mโ€‡[00:01<00:00,โ€‡28.0MB/s]" - } - }, - "06f7299115c14218b9896db0a01667ca": { - "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 - } - }, - "d7e2a97b96124f6ba29ef605ba14fd65": { - "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 - } - }, - "9d737dfb034743829a12dbd173dd52d0": { - "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": "" - } - }, - "49c266fb3f844e8f8fe6bd059b932cd5": { - "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 - } - }, - "f18f9276aea6436bb714332e4652a5a6": { - "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": "" - } - }, - "1a9a0308fa62444a95e014e5e4d5c3fc": { - "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 - } - }, - "ea901074586043129c6a3adbcb942fad": { - "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": "" - } - }, - "9f963624927e404b81d41e9030e4fd4a": { - "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_3fa30d51f5b24dc38f7997b00a419bde", - "IPY_MODEL_2f23e495371b429e8ca9c8f05924fe97", - "IPY_MODEL_f6ebb0c6780c42248e64733c442a40f5" - ], - "layout": "IPY_MODEL_d17c3102803c48e182aef09a4849468e" - } - }, - "3fa30d51f5b24dc38f7997b00a419bde": { - "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_abc60719f0774ccba72431145338ab31", - "placeholder": "โ€‹", - "style": "IPY_MODEL_b282f87f82db4a0c8b8ecec301144a14", - "value": "added_tokens.json:โ€‡100%" - } - }, - "2f23e495371b429e8ca9c8f05924fe97": { - "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_58bea53d5f0d4af6b6dc586ebf8808d6", - "max": 35, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_1ea9ff8b681f4182b77bf6827866e47c", - "value": 35 - } - }, - "f6ebb0c6780c42248e64733c442a40f5": { - "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_aa25e6337a51473aa30067cd214580a6", - "placeholder": "โ€‹", - "style": "IPY_MODEL_aaab621de1ae4d0e9c0db6bf15d5edf9", - "value": "โ€‡35.0/35.0โ€‡[00:00<00:00,โ€‡4.61kB/s]" - } - }, - "d17c3102803c48e182aef09a4849468e": { - "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 - } - }, - "abc60719f0774ccba72431145338ab31": { - "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 - } - }, - "b282f87f82db4a0c8b8ecec301144a14": { - "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": "" - } - }, - "58bea53d5f0d4af6b6dc586ebf8808d6": { - "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 - } - }, - "1ea9ff8b681f4182b77bf6827866e47c": { - "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": "" - } - }, - "aa25e6337a51473aa30067cd214580a6": { - "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 - } - }, - "aaab621de1ae4d0e9c0db6bf15d5edf9": { - "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": "" - } - }, - "df2091cf02a841a1a5bb9f22802de104": { - "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_31b75cd349334aab89e55ef02186d30c", - "IPY_MODEL_05f0d644c2d24584a69f3bec4d0aa468", - "IPY_MODEL_a0f99a5907084714b12756d34d7d0cc4" - ], - "layout": "IPY_MODEL_9d493b3551d14cf3983a7db93a840b2c" - } - }, - "31b75cd349334aab89e55ef02186d30c": { - "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_06fb7ae0129f4b1bb33745533b464c1a", - "placeholder": "โ€‹", - "style": "IPY_MODEL_b1bc57ad3f8044f595e839067e5b15b0", - "value": "special_tokens_map.json:โ€‡100%" - } - }, - "05f0d644c2d24584a69f3bec4d0aa468": { - "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_f2a39e1dcb474a529576ac3930b0beb7", - "max": 670, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_8e26d862735b4e58896cdd4986df14bf", - "value": 670 - } - }, - "a0f99a5907084714b12756d34d7d0cc4": { - "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_c144b67f69404373b4f6899839742df3", - "placeholder": "โ€‹", - "style": "IPY_MODEL_aadf48eeeb98475d9aff2b37a76a3255", - "value": "โ€‡670/670โ€‡[00:00<00:00,โ€‡73.3kB/s]" - } - }, - "9d493b3551d14cf3983a7db93a840b2c": { - "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 - } - }, - "06fb7ae0129f4b1bb33745533b464c1a": { - "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 - } - }, - "b1bc57ad3f8044f595e839067e5b15b0": { - "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": "" - } - }, - "f2a39e1dcb474a529576ac3930b0beb7": { - "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 - } - }, - "8e26d862735b4e58896cdd4986df14bf": { - "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": "" - } - }, - "c144b67f69404373b4f6899839742df3": { - "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 - } - }, - "aadf48eeeb98475d9aff2b37a76a3255": { - "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": "" - } - }, - "0c01b2a17cc14a859d65dab518e7a98f": { - "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_1b018ab085ad4f8d91b1943de944a07c", - "IPY_MODEL_6e9c3dc53a3e48cd80f81c5868a8c25b", - "IPY_MODEL_23d700e3d79f4cf2b9b7829e400fb36e" - ], - "layout": "IPY_MODEL_ca50038524fe403b935951b2103b7e37" - } - }, - "1b018ab085ad4f8d91b1943de944a07c": { - "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_4e64129ef7be4605a19a00f82611f501", - "placeholder": "โ€‹", - "style": "IPY_MODEL_200b532be3eb4cb5b72d357d58446d56", - "value": "README.md:โ€‡100%" - } - }, - "6e9c3dc53a3e48cd80f81c5868a8c25b": { - "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_74c3f8874b2d4bf08e212bcb4a2f4d30", - "max": 982, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_e1b83736a1464936a845f4a4bb8c9c87", - "value": 982 - } - }, - "23d700e3d79f4cf2b9b7829e400fb36e": { - "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_cf0aeee0b2a84161a16a80cb1dcff948", - "placeholder": "โ€‹", - "style": "IPY_MODEL_8762c99ed7b940f2b9de85a1d77dc7bf", - "value": "โ€‡982/982โ€‡[00:00<00:00,โ€‡121kB/s]" - } - }, - "ca50038524fe403b935951b2103b7e37": { - "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 - } - }, - "4e64129ef7be4605a19a00f82611f501": { - "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 - } - }, - "200b532be3eb4cb5b72d357d58446d56": { - "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": "" - } - }, - "74c3f8874b2d4bf08e212bcb4a2f4d30": { - "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 - } - }, - "e1b83736a1464936a845f4a4bb8c9c87": { - "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": "" - } - }, - "cf0aeee0b2a84161a16a80cb1dcff948": { - "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 - } - }, - "8762c99ed7b940f2b9de85a1d77dc7bf": { - "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": "" - } - }, - "ba8e6fb4120a40e7bf3f01be180ad698": { - "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_e139dcb62648439197af2f75281d49e2", - "IPY_MODEL_e391fcb714e246aa9a3213c50e5006af", - "IPY_MODEL_5e1448a080184bce85ac3a6d75c0798c" - ], - "layout": "IPY_MODEL_bbaafcdbf60b40cd828024917ff67fc2" - } - }, - "e139dcb62648439197af2f75281d49e2": { - "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_c29d400791d34064914ff2b831d5844c", - "placeholder": "โ€‹", - "style": "IPY_MODEL_eede6c18332f4b77a30ce14676e52307", - "value": "data/train-00000-of-00001.parquet:โ€‡100%" - } - }, - "e391fcb714e246aa9a3213c50e5006af": { - "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_34af403270d94792bca566c43bf402f0", - "max": 116531415, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_012595756eef4c918cfe3f580dba2c37", - "value": 116531415 - } - }, - "5e1448a080184bce85ac3a6d75c0798c": { - "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_f34cb28303bc4089bb276b9b41a3b92b", - "placeholder": "โ€‹", - "style": "IPY_MODEL_da7e57d90cd84b59b817e26b4a7287fa", - "value": "โ€‡117M/117Mโ€‡[00:02<00:00,โ€‡71.8MB/s]" - } - }, - "bbaafcdbf60b40cd828024917ff67fc2": { - "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 - } - }, - "c29d400791d34064914ff2b831d5844c": { - "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 - } - }, - "eede6c18332f4b77a30ce14676e52307": { - "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": "" - } - }, - "34af403270d94792bca566c43bf402f0": { - "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 - } - }, - "012595756eef4c918cfe3f580dba2c37": { - "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": "" - } - }, - "f34cb28303bc4089bb276b9b41a3b92b": { - "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 - } - }, - "da7e57d90cd84b59b817e26b4a7287fa": { - "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": "" - } - }, - "48bc63a3954d4f928da7b41dc9a59221": { - "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_09cb3384bd73421a80099a07603c34ae", - "IPY_MODEL_697e7dff10344f2883c377a092645a21", - "IPY_MODEL_dc21632cee14404fb785fe4d01ebc4ba" - ], - "layout": "IPY_MODEL_d04fc5687a6d42728e36c2f698739df9" - } - }, - "09cb3384bd73421a80099a07603c34ae": { - "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_3962af438c2345789d1ef27c2de54b7b", - "placeholder": "โ€‹", - "style": "IPY_MODEL_089e89e22a314a4b96d576eed56d29dc", - "value": "Generatingโ€‡trainโ€‡split:โ€‡100%" - } - }, - "697e7dff10344f2883c377a092645a21": { - "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_6b8057ede4c544249500ea7a85ed0aca", - "max": 100000, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_456161f177ae4d83a27015ff1b03aba3", - "value": 100000 - } - }, - "dc21632cee14404fb785fe4d01ebc4ba": { - "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_19b01f4701cf4ddda39d8fe44ef50859", - "placeholder": "โ€‹", - "style": "IPY_MODEL_acb6c9083d884baca2bfb66b86167d67", - "value": "โ€‡100000/100000โ€‡[00:00<00:00,โ€‡141008.13โ€‡examples/s]" - } - }, - "d04fc5687a6d42728e36c2f698739df9": { - "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 - } - }, - "3962af438c2345789d1ef27c2de54b7b": { - "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 - } - }, - "089e89e22a314a4b96d576eed56d29dc": { - "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": "" - } - }, - "6b8057ede4c544249500ea7a85ed0aca": { - "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 - } - }, - "456161f177ae4d83a27015ff1b03aba3": { - "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": "" - } - }, - "19b01f4701cf4ddda39d8fe44ef50859": { - "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 - } - }, - "acb6c9083d884baca2bfb66b86167d67": { - "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": "" - } - }, - "3dfef9f859144f0f97657ac9e4b978fb": { - "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_6e5521052c534f31b246dd03d693f853", - "IPY_MODEL_09ef7c3eca124b79b2e9540d5f6d9eb5", - "IPY_MODEL_3bb21972b94848feb23264e70701b46d" - ], - "layout": "IPY_MODEL_d93c1e8632c44dc68fc4ce911c05bcca" - } - }, - "6e5521052c534f31b246dd03d693f853": { - "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_9197aae2ec3e4a378608d3b65ee81610", - "placeholder": "โ€‹", - "style": "IPY_MODEL_da994a41920c44a5b7228dac17ef30ae", - "value": "Unsloth:โ€‡Standardizingโ€‡formatsโ€‡(num_proc=8):โ€‡100%" - } - }, - "09ef7c3eca124b79b2e9540d5f6d9eb5": { - "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_efd4f46596eb49768a2d5650eacd04f1", - "max": 100000, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_e27e20b0bf7445708620ac5d52dda0f1", - "value": 100000 - } - }, - "3bb21972b94848feb23264e70701b46d": { - "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_92eba4a0fd0e403385015f0dad410ee4", - "placeholder": "โ€‹", - "style": "IPY_MODEL_34d6ea7ba4d04a70b61b68e39d95b32a", - "value": "โ€‡100000/100000โ€‡[00:01<00:00,โ€‡116370.10โ€‡examples/s]" - } - }, - "d93c1e8632c44dc68fc4ce911c05bcca": { - "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 - } - }, - "9197aae2ec3e4a378608d3b65ee81610": { - "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 - } - }, - "da994a41920c44a5b7228dac17ef30ae": { - "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": "" - } - }, - "efd4f46596eb49768a2d5650eacd04f1": { - "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 - } - }, - "e27e20b0bf7445708620ac5d52dda0f1": { - "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": "" - } - }, - "92eba4a0fd0e403385015f0dad410ee4": { - "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 - } - }, - "34d6ea7ba4d04a70b61b68e39d95b32a": { - "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": "" - } - }, - "eae8887f2332426c8238bae4c1cd73a1": { - "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_486251b70cce420589ad27ab14c47dcc", - "IPY_MODEL_ded81d21ad544ea294ed89c0fe6a82b1", - "IPY_MODEL_d904853f64224c09a109261d35c380d2" - ], - "layout": "IPY_MODEL_e05dfd2b79ed4d6ab48a71e73d4bf530" - } - }, - "486251b70cce420589ad27ab14c47dcc": { - "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_6249d50fc8e948f1a5621de01f71a186", - "placeholder": "โ€‹", - "style": "IPY_MODEL_1f9709a6ead2491ca760d3ef00a057fb", - "value": "Map:โ€‡100%" - } - }, - "ded81d21ad544ea294ed89c0fe6a82b1": { - "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_d9fb781f50c7445b9622923e26150e78", - "max": 100000, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_63fa705847904d43b93d2b5a3f7b798b", - "value": 100000 - } - }, - "d904853f64224c09a109261d35c380d2": { - "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_812970cf649647159678ffb30a5bf898", - "placeholder": "โ€‹", - "style": "IPY_MODEL_cebdd0e4ee2b4c8195c7d1a4c305e79b", - "value": "โ€‡100000/100000โ€‡[00:11<00:00,โ€‡8547.34โ€‡examples/s]" - } - }, - "e05dfd2b79ed4d6ab48a71e73d4bf530": { - "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 - } - }, - "6249d50fc8e948f1a5621de01f71a186": { - "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 - } - }, - "1f9709a6ead2491ca760d3ef00a057fb": { - "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": "" - } - }, - "d9fb781f50c7445b9622923e26150e78": { - "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 - } - }, - "63fa705847904d43b93d2b5a3f7b798b": { - "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": "" - } - }, - "812970cf649647159678ffb30a5bf898": { - "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 - } - }, - "cebdd0e4ee2b4c8195c7d1a4c305e79b": { - "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": "" - } - }, - "22cd66b0ba0a44aeafb6031d422105aa": { - "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_be0dea815ff141a380af46c995e21e3d", - "IPY_MODEL_68b0cfb889e1451691769455545fcc33", - "IPY_MODEL_16c098858a9a469ab3235f78c4e0d412" - ], - "layout": "IPY_MODEL_1a4bfd6451114eb08a36186d9632a795" - } - }, - "be0dea815ff141a380af46c995e21e3d": { - "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_70c8fe0bb9df4d08925124ab6e1ff3de", - "placeholder": "โ€‹", - "style": "IPY_MODEL_65b7014a9ef14fd2b19048eb80b627e6", - "value": "Unsloth:โ€‡Tokenizingโ€‡["text"]โ€‡(num_proc=2):โ€‡100%" - } - }, - "68b0cfb889e1451691769455545fcc33": { - "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_595b376fbf7f4471a3d91555a25baa37", - "max": 100000, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_9ea86535f09b4505ac321c0a75be87ba", - "value": 100000 - } - }, - "16c098858a9a469ab3235f78c4e0d412": { - "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_cc96706dc78b4ef39bb7cc32b95799df", - "placeholder": "โ€‹", - "style": "IPY_MODEL_bc9dd3a3c6964dca8c392ba626ef0099", - "value": "โ€‡100000/100000โ€‡[01:28<00:00,โ€‡794.85โ€‡examples/s]" - } - }, - "1a4bfd6451114eb08a36186d9632a795": { - "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 - } - }, - "70c8fe0bb9df4d08925124ab6e1ff3de": { - "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 - } - }, - "65b7014a9ef14fd2b19048eb80b627e6": { - "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": "" - } - }, - "595b376fbf7f4471a3d91555a25baa37": { - "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 - } - }, - "9ea86535f09b4505ac321c0a75be87ba": { - "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": "" - } - }, - "cc96706dc78b4ef39bb7cc32b95799df": { - "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 - } - }, - "bc9dd3a3c6964dca8c392ba626ef0099": { - "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": "" - } - }, - "b9bf4c2156574bfca823b1113a77463b": { - "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_abd55d5d76e54e24825e9a552bc5a8d6", - "IPY_MODEL_6c7d6e81de9e4ede8e9ea356fd2eb373", - "IPY_MODEL_f55b25973e134c2cbf70e14923e92f14" - ], - "layout": "IPY_MODEL_ef8ca365a30a45c28d5c6919a1b57752" - } - }, - "abd55d5d76e54e24825e9a552bc5a8d6": { - "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_306e1bdd4bcd42fba8ecc49a06b973b7", - "placeholder": "โ€‹", - "style": "IPY_MODEL_4ec168cd178a4c1aa543982f293e9c37", - "value": "Mapโ€‡(num_proc=8):โ€‡100%" - } - }, - "6c7d6e81de9e4ede8e9ea356fd2eb373": { - "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_471427b714714c6fa35379c5e1d0dd45", - "max": 100000, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_b17d64b4ee9a4f7a8862381547934170", - "value": 100000 - } - }, - "f55b25973e134c2cbf70e14923e92f14": { - "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_bfd76a73918541aeaea902d0ffe31296", - "placeholder": "โ€‹", - "style": "IPY_MODEL_cceaf871c7d5456a96d072b9cf039033", - "value": "โ€‡100000/100000โ€‡[00:11<00:00,โ€‡5555.35โ€‡examples/s]" - } - }, - "ef8ca365a30a45c28d5c6919a1b57752": { - "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 - } - }, - "306e1bdd4bcd42fba8ecc49a06b973b7": { - "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 - } - }, - "4ec168cd178a4c1aa543982f293e9c37": { - "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": "" - } - }, - "471427b714714c6fa35379c5e1d0dd45": { - "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 - } - }, - "b17d64b4ee9a4f7a8862381547934170": { - "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": "" - } - }, - "bfd76a73918541aeaea902d0ffe31296": { - "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 - } - }, - "cceaf871c7d5456a96d072b9cf039033": { - "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": "" - } - }, - "b85f7f7d75a64eaa82c9168315eeaa12": { - "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_339a816b9f6d473ea9006828597e3b9f", - "IPY_MODEL_7ef367cab0c54d7485244645787a8158", - "IPY_MODEL_cc731c8351b84336a32ef79b8532e196" - ], - "layout": "IPY_MODEL_6150d9a88f9e4d89872a8018b1818175" - } - }, - "339a816b9f6d473ea9006828597e3b9f": { - "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_1d691cb677f740908bb7f1f92c4b1cbb", - "placeholder": "โ€‹", - "style": "IPY_MODEL_40ea8f66d8ae44209977f84a2bf8260f", - "value": "model.safetensors.index.json:โ€‡100%" - } - }, - "7ef367cab0c54d7485244645787a8158": { - "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_1fa23b65d10d4bf28cb8f39679a0ed10", - "max": 90558, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_2a6eef0d636a4ccd8b1e3df7ea8f73ce", - "value": 90558 - } - }, - "cc731c8351b84336a32ef79b8532e196": { - "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_d2b6586ecf2f49248941178f886b8747", - "placeholder": "โ€‹", - "style": "IPY_MODEL_b9ec89ab499a4483bfeef0c257815ac9", - "value": "โ€‡90.6k/90.6kโ€‡[00:00<00:00,โ€‡9.88MB/s]" - } - }, - "6150d9a88f9e4d89872a8018b1818175": { - "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 - } - }, - "1d691cb677f740908bb7f1f92c4b1cbb": { - "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 - } - }, - "40ea8f66d8ae44209977f84a2bf8260f": { - "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": "" - } - }, - "1fa23b65d10d4bf28cb8f39679a0ed10": { - "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 - } - }, - "2a6eef0d636a4ccd8b1e3df7ea8f73ce": { - "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": "" - } - }, - "d2b6586ecf2f49248941178f886b8747": { - "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 - } - }, - "b9ec89ab499a4483bfeef0c257815ac9": { - "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": "" - } - }, - "94ee261670d74fc586e92749195f840c": { - "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_3f549e391ef04e87858d329713ca53fa", - "IPY_MODEL_26a064257ab842ed88e4cf1a1284a72e", - "IPY_MODEL_97e7187039e441ea94f6670f1fe7605d" - ], - "layout": "IPY_MODEL_3df0097f611f40858a604797a70e44f3" - } - }, - "3f549e391ef04e87858d329713ca53fa": { - "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_013b075b8e1d4e84932de8b7aa984b3a", - "placeholder": "โ€‹", - "style": "IPY_MODEL_59145eea0ee94e3b845cd212669cec58", - "value": "model-00001-of-00002.safetensors:โ€‡100%" - } - }, - "26a064257ab842ed88e4cf1a1284a72e": { - "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_6714ce7fbde04e10bc5e537703b7c744", - "max": 4961251752, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_eb2b167de1974ef19d4ffcaf1fe0dd65", - "value": 4961251752 - } - }, - "97e7187039e441ea94f6670f1fe7605d": { - "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_4dc3d628f0f14ec2beea903375bca642", - "placeholder": "โ€‹", - "style": "IPY_MODEL_878f005901e24bc7b45361e41fc38cde", - "value": "โ€‡4.96G/4.96Gโ€‡[00:15<00:00,โ€‡425MB/s]" - } - }, - "3df0097f611f40858a604797a70e44f3": { - "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 - } - }, - "013b075b8e1d4e84932de8b7aa984b3a": { - "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 - } - }, - "59145eea0ee94e3b845cd212669cec58": { - "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": "" - } - }, - "6714ce7fbde04e10bc5e537703b7c744": { - "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 - } - }, - "eb2b167de1974ef19d4ffcaf1fe0dd65": { - "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": "" - } - }, - "4dc3d628f0f14ec2beea903375bca642": { - "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 - } - }, - "878f005901e24bc7b45361e41fc38cde": { - "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": "" - } - }, - "a45c64eacd084dfa9a822e86a5c003a4": { - "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_c0c762d121f84ec7bb190a28418ae494", - "IPY_MODEL_4588b16c54a649d1af49f6aef7673991", - "IPY_MODEL_bf4b4ba94ba849cc8372e297b06b957a" - ], - "layout": "IPY_MODEL_ae11658399d742c2afec62941aec6b01" - } - }, - "c0c762d121f84ec7bb190a28418ae494": { - "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_d4b7722ba8de4ed4a842dc6744508015", - "placeholder": "โ€‹", - "style": "IPY_MODEL_b2abfb50fbb84d9884a1faf9a98e286d", - "value": "model-00002-of-00002.safetensors:โ€‡100%" - } - }, - "4588b16c54a649d1af49f6aef7673991": { - "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_f5fdc873c5c54087a6cc2851cffc1e11", - "max": 3639026128, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_f9296c9f10234936b39902c00bb562e6", - "value": 3639026128 - } - }, - "bf4b4ba94ba849cc8372e297b06b957a": { - "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_a8208321cb474d0e84ea5b2f085f8cfc", - "placeholder": "โ€‹", - "style": "IPY_MODEL_51f4df66b2c849468b6df712aaa21b61", - "value": "โ€‡3.64G/3.64Gโ€‡[00:11<00:00,โ€‡421MB/s]" - } - }, - "ae11658399d742c2afec62941aec6b01": { - "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 - } - }, - "d4b7722ba8de4ed4a842dc6744508015": { - "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 - } - }, - "b2abfb50fbb84d9884a1faf9a98e286d": { - "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": "" - } - }, - "f5fdc873c5c54087a6cc2851cffc1e11": { - "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 - } - }, - "f9296c9f10234936b39902c00bb562e6": { - "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": "" - } - }, - "a8208321cb474d0e84ea5b2f085f8cfc": { - "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 - } - }, - "51f4df66b2c849468b6df712aaa21b61": { - "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": 0 -} \ No newline at end of file diff --git a/tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb b/tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb deleted file mode 100644 index 0f3d0d4bda..0000000000 --- a/tests/gemma3_fix_tests/Gemma3_4B_h100.ipynb +++ /dev/null @@ -1,5292 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "Ya4hWtsWgt6m" - }, - "source": [ - "To run this, press \"*Runtime*\" and press \"*Run all*\" on a **free** Tesla T4 Google Colab instance!\n", - "

\n", - "\n", - "\n", - " Join Discord if you need help + โญ Star us on Github โญ\n", - "
\n", - "\n", - "To install Unsloth on your own computer, follow the installation instructions on our Github page [here](https://docs.unsloth.ai/get-started/installing-+-updating).\n", - "\n", - "You will learn how to do [data prep](#Data), how to [train](#Train), how to [run the model](#Inference), & [how to save it](#Save)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BOuS2Goegt6o" - }, - "source": [ - "### News" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "tfzMngqfgt6p" - }, - "source": [ - "Unsloth now supports Text-to-Speech (TTS) models. Read our [guide here](https://docs.unsloth.ai/basics/text-to-speech-tts-fine-tuning).\n", - "\n", - "Read our **[Qwen3 Guide](https://docs.unsloth.ai/basics/qwen3-how-to-run-and-fine-tune)** and check out our new **[Dynamic 2.0](https://docs.unsloth.ai/basics/unsloth-dynamic-2.0-ggufs)** quants which outperforms other quantization methods!\n", - "\n", - "Visit our docs for all our [model uploads](https://docs.unsloth.ai/get-started/all-our-models) and [notebooks](https://docs.unsloth.ai/get-started/unsloth-notebooks).\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jdo0bz0Rgt6p" - }, - "source": [ - "### Installation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "89WLvodBgt6p" - }, - "outputs": [], - "source": [ - "%%capture\n", - "import os\n", - "if \"COLAB_\" not in \"\".join(os.environ.keys()):\n", - " !pip install unsloth\n", - "else:\n", - " # Do this only in Colab notebooks! Otherwise use pip install unsloth\n", - " !pip install --no-deps bitsandbytes accelerate xformers==0.0.29.post3 peft trl triton cut_cross_entropy unsloth_zoo\n", - " !pip install sentencepiece protobuf \"datasets>=3.4.1\" huggingface_hub hf_transfer\n", - " !pip install --no-deps unsloth" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TGMWlrRdzwgf" - }, - "source": [ - "### Unsloth\n", - "\n", - "`FastModel` supports loading nearly any model now! This includes Vision and Text models!" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 533, - "referenced_widgets": [ - "33815b4c0485402e838127b32ad14a15", - "81c3ee8d97d543ae83db3d2748ecd7cd", - "70f9bccb201a4ea79c1827057cd746f6", - "b32538030b8649e7851bfd58bef2786c", - "0abe1a2b12e54bb5a07db1a8f3a77738", - "e12bca7d49b149b5b1124c28a669db98", - "fab7a02d350946ae9563a05cfd04e22b", - "9be36a19ba86494389904b9fffdc2e48", - "899bf9a4dc594e178d0b95e3cbe08018", - "2fa2784330b2439ab884ce0966037961", - "51649c42cf2145f1b1e90c3436805350", - "eae020595f574192ad9d132853bbf6ec", - "17eaf723882e4efea38119978166fc75", - "409488926d2242c5a8e7b3d5b79c59db", - "26b61507603d453c8c24af24d301bdb9", - "c6c51a350a0b420aab957e3570098e18", - "cebd4fbf1fcf4ab2b65ecf539eda5a1e", - "f14ea72beac74152af5f970e634769ca", - "039f461e15214bd697501219bd9cbbd9", - "9f9d2f43fb5e47df883feb3126fe52e9", - "9e20d704e64a4aaabe5e495c468d9670", - "ae4e4537ed1d4df4b1677700d190a2d2", - "50881898da2f4b35a288ac9befe5024e", - "599375adc5f841d1864166e4d1bd617a", - "3bfc7d7dd81f49a59fc8ad0d6fff858b", - "a0c0025c82394e7fbc6d4cc9a9e9f72f", - "5f0a37b9edc74cbd822e2e71c6c8a956", - "a15e4524521b42108f49dda23ed56023", - "a4eaae1b30d442208257c1870d549738", - "84c68f2059f247628b672b1079130e9b", - "a88fccae11664baa82418c88639f3521", - "1ecb60e1d5934ea19a0d2c29aa01158d", - "f920f6cb263c45d59b851b7c6b631cb5", - "a37b4e454c6743a895f159f963366bc8", - "18fce8679d7d4961b88bb2162e7aa9eb", - "fd60bb21ba2e474cb4a6020bd302835e", - "0c3e3fbf02d84114906e939fcca108b5", - "ab71391446d8482c834429a937f7bb96", - "f9439c3c9b3b4c4a84ed67aa0601a530", - "a89575b4c58348ac98566c22ab7e4118", - "697a187a07204fdfb8556cf5c5028c6b", - "afdb7dfdc17548b39daea1f39d54b45c", - "c4a69698321d435c94211a9dee913c45", - "36c8135711194884be0e03cb5d3ae7e5", - "69a9d565de6a4d54b8f3989fa8b11941", - "090b146b8c6f4fa1ab0261d2a61be9de", - "d2df1617a4094dd295c49a0a72b269c3", - "54d963afc22a46ae93a6ca4bfaa18cf8", - "0b1768a5b5be4a4d9e14ed9e168044b4", - "708d05af00a64d19bb11dc839a5e68db", - "3d20e28d74e549c0a43686b214eebd87", - "dfac71c6372c46bfad46308bdb04480b", - "df50d8daa49a4955914704edb89baf61", - "52f091f99f0442f8bd14a50b7c870c1e", - "c859133fca324effb73ebc3520e746b6", - "f89c08592a25432497bb312f58a13c5c", - "c307400fb17e49ea9d835822e6e22633", - "57ed5097e05f4d92a5c492826f989123", - "db7e622bbd0f4357b5687a7c09c1f6fd", - "8864799f440c440c8ff8c0696e64215d", - "353fa47fb98c4070a150edec64503eaa", - "40bf6f1ffbc5479082fdd7ab153ea974", - "b5a06422fcac41eb97d2de95f14b1806", - "efa41d07d0fa4adda8025fe9490ed850", - "457c60d6a15d4314ba25d370be956a60", - "bc6f29c9a1e14ce8be374867b8be86ac", - "e003ee5cf1804ce3928b544b3fa7ba77", - "dd6e4f9b4c6d4260a62b920a6812fd07", - "4466f20e614a4cdabe1704859c2f1034", - "8949c35d68a043c5b1384774bb07b2ea", - "fca09f95775047efa9d481173f1ba261", - "879c6a0498e54e5c87145c7f7d32de7e", - "740d351b7de241a6acabf6c2853585b6", - "be2b1fb954444be089045a378673a958", - "9520485cc7c24c8584c3838717655012", - "94d9900bc8934de688e95e15c9d0c9bb", - "b469cdf580404f498feb062e4dbad10b", - "5975cf24b18e4082bd80e3f177e0ec15", - "b5b8482ef7c44e12a83795e7337521c2", - "ea9045a5c4504a5e96e6a7b13767fe4e", - "0cba80b626574c11a44c6ce09b5d6e80", - "f344c1ab154b4abdb84b2c221b6162a1", - "0881c055108340f7ab4b840ac1545cbb", - "77907c3444174858bbdc548dee8d0d37", - "a92be3fb752148d887e20afe300f9371", - "aa36bff36ae5448b892afea071fc1f1d", - "12d3049cca4a46c08cf5cdfcd5225248", - "6a9baf0a739c4790baf99b0ccadd6873", - "86c6d49a55b3477bbccc275dcb55fb52", - "77c5f8b431ba4c08b8f4d9d8f9fafc16", - "19c3ef35452d406cb18b72e38b631ee7", - "063db74d47814f95b560bd3bab11b55f", - "5c01ab4767104c0c96c42858317f8877", - "73a283e64f324c27b38216e683050b92", - "81bddfaa180d4875b5cdb5cc4ae45dab", - "77e843913b6e439ead9cf42725eedf3d", - "4f7e8b6b71484cce80ae9cdf0c481825", - "3530e2b431c041c6aeeaca4808ba0424", - "cc14e51320f34274ae12aa28b04183b7", - "f373f2c24f3b413aaa9fe1ccfb9c1eab", - "360142dac8c54a5eb902078ec42abb65", - "a4a64136f6fc48c799abf1701725534e", - "4c5e29de7224428bb87de46854ea915a", - "a3ce4f38be9a456c81146fba440c8e3f", - "70fdd31291b04dd68d66cf31c03d23ff", - "6feaf338d39440e78221649ac84af4a6", - "c9fbf40fa3dd4ba1b363802dc88764da", - "ae7f1fd06ddc4881934690675891855c", - "5e9ba3247edc4fafa7687338424ddccb", - "97d7e3420e24436cb351b1e9679ff8b6" - ] - }, - "id": "-Xbb0cuLzwgf", - "outputId": "3396a9bf-5d9b-45e7-a13e-ac57a78dd441" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "๐Ÿฆฅ Unsloth: Will patch your computer to enable 2x faster free finetuning.\n", - "Forward Router Patched and working\n", - "forward 1 working and being replaced\n", - "Unsloth: Patched Gemma3ForConditionalGeneration llm forward\n", - "๐Ÿฆฅ Unsloth Zoo will now patch everything to make training faster!\n", - "INFO 06-19 09:41:59 [__init__.py:244] Automatically detected platform cuda.\n", - "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4. vLLM: 0.9.1.\n", - " \\\\ /| NVIDIA H100 80GB HBM3. Num GPUs = 1. Max memory: 79.179 GB. Platform: Linux.\n", - "O^O/ \\_/ \\ Torch: 2.7.0+cu126. CUDA: 9.0. CUDA Toolkit: 12.6. Triton: 3.3.0\n", - "\\ / Bfloat16 = TRUE. FA [Xformers = None. FA2 = True]\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": [ - "Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.52, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`.\n" - ] - } - ], - "source": [ - "from unsloth import FastModel\n", - "import torch\n", - "\n", - "fourbit_models = [\n", - " # 4bit dynamic quants for superior accuracy and low memory use\n", - " \"unsloth/gemma-3-1b-it-unsloth-bnb-4bit\",\n", - " \"unsloth/gemma-3-4b-it-unsloth-bnb-4bit\",\n", - " \"unsloth/gemma-3-12b-it-unsloth-bnb-4bit\",\n", - " \"unsloth/gemma-3-27b-it-unsloth-bnb-4bit\",\n", - "\n", - " # Other popular models!\n", - " \"unsloth/Llama-3.1-8B\",\n", - " \"unsloth/Llama-3.2-3B\",\n", - " \"unsloth/Llama-3.3-70B\",\n", - " \"unsloth/mistral-7b-instruct-v0.3\",\n", - " \"unsloth/Phi-4\",\n", - "] # More models at https://huggingface.co/unsloth\n", - "\n", - "model, tokenizer = FastModel.from_pretrained(\n", - " model_name = \"unsloth/gemma-3-4b-it\",\n", - " max_seq_length = 2048, # Choose any for long context!\n", - " load_in_4bit = True, # 4 bit quantization to reduce memory\n", - " load_in_8bit = False, # [NEW!] A bit more accurate, uses 2x memory\n", - " full_finetuning = False, # [NEW!] We have full finetuning now!\n", - " # token = \"hf_...\", # use one if using gated models\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "SXd9bTZd1aaL" - }, - "source": [ - "We now add LoRA adapters so we only need to update a small amount of parameters!" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "6bZsfBuZDeCL", - "outputId": "af5ba973-a3ce-4b2c-b66f-c5c7bc2cdb8e" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unsloth: Making `model.base_model.model.model.language_model` require gradients\n" - ] - } - ], - "source": [ - "model = FastModel.get_peft_model(\n", - " model,\n", - " finetune_vision_layers = False, # Turn off for just text!\n", - " finetune_language_layers = True, # Should leave on!\n", - " finetune_attention_modules = True, # Attention good for GRPO\n", - " finetune_mlp_modules = True, # SHould leave on always!\n", - "\n", - " r = 8, # Larger = higher accuracy, but might overfit\n", - " lora_alpha = 8, # Recommended alpha == r at least\n", - " lora_dropout = 0,\n", - " bias = \"none\",\n", - " random_state = 3407,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "vITh0KVJ10qX" - }, - "source": [ - "\n", - "### Data Prep\n", - "We now use the `Gemma-3` format for conversation style finetunes. We use [Maxime Labonne's FineTome-100k](https://huggingface.co/datasets/mlabonne/FineTome-100k) dataset in ShareGPT style. Gemma-3 renders multi turn conversations like below:\n", - "\n", - "```\n", - "user\n", - "Hello!\n", - "model\n", - "Hey there!\n", - "```\n", - "\n", - "We use our `get_chat_template` function to get the correct chat template. We support `zephyr, chatml, mistral, llama, alpaca, vicuna, vicuna_old, phi3, llama3, phi4, qwen2.5, gemma3` and more." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "id": "LjY75GoYUCB8" - }, - "outputs": [], - "source": [ - "from unsloth.chat_templates import get_chat_template\n", - "tokenizer = get_chat_template(\n", - " tokenizer,\n", - " chat_template = \"gemma-3\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "Mkq4RvEq7FQr" - }, - "outputs": [], - "source": [ - "from datasets import load_dataset\n", - "dataset = load_dataset(\"mlabonne/FineTome-100k\", split = \"train\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "K9CBpiISFa6C" - }, - "source": [ - "We now use `standardize_data_formats` to try converting datasets to the correct format for finetuning purposes!" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "id": "reoBXmAn7HlN" - }, - "outputs": [], - "source": [ - "from unsloth.chat_templates import standardize_data_formats\n", - "dataset = standardize_data_formats(dataset)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "6i5Sx9In7vHi" - }, - "source": [ - "Let's see how row 100 looks like!" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "dzE1OEXi7s3P", - "outputId": "233eab5d-45b8-4ac2-e64d-20e0b6a13a0e" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'conversations': [{'content': 'What is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?',\n", - " 'role': 'user'},\n", - " {'content': 'In programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.',\n", - " 'role': 'assistant'}],\n", - " 'source': 'infini-instruct-top-500k',\n", - " 'score': 4.774171352386475}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataset[100]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "8Xs0LXio7rfd" - }, - "source": [ - "We now have to apply the chat template for `Gemma-3` onto the conversations, and save it to `text`. We remove the `` token using removeprefix(`''`) since we're finetuning. The Processor will add this token before training and the model expects only one." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "id": "1ahE8Ys37JDJ" - }, - "outputs": [], - "source": [ - "def formatting_prompts_func(examples):\n", - " convos = examples[\"conversations\"]\n", - " texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos]\n", - " return { \"text\" : texts, }\n", - "\n", - "dataset = dataset.map(formatting_prompts_func, batched = True)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ndDUB23CGAC5" - }, - "source": [ - "Let's see how the chat template did! Notice there is no `` token as the processor tokenizer will be adding one." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 175 - }, - "id": "gGFzmplrEy9I", - "outputId": "7acc565b-0759-4438-cd0c-fa68d0570863" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'user\\nWhat is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?\\nmodel\\nIn programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataset[100][\"text\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "idAEIeSQ3xdS" - }, - "source": [ - "\n", - "### Train the model\n", - "Now let's use Huggingface TRL's `SFTTrainer`! More docs here: [TRL SFT docs](https://huggingface.co/docs/trl/sft_trainer). We do 60 steps to speed things up, but you can set `num_train_epochs=1` for a full run, and turn off `max_steps=None`." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 112, - "referenced_widgets": [ - "730aa679b5ac483b929a3646bb5947fa", - "1f333859babd4c1abac69cacda6df864", - "e7f8d2c781a64e83988b0bdd090bdb97", - "3e3feb4fcca74c87abb608c0543236b1", - "2970cbc657d244bab22715bcb788be6a", - "c5b1d1476ddc45249e037df07a96ae37", - "19c27988e01d47e79319f89b5cfd73e2", - "5e48531593d741eaa3669f9118ba8afc", - "62838ffab83d486f86e86417caf0b498", - "7e5378838c114195ba3919fdd683fd7d", - "3350d22f463643ef9a726227f262ac49", - "a8559112c61949318ef9e4ab4cadfeda" - ] - }, - "id": "95_Nn-89DhsL", - "outputId": "2ffe3c70-8c46-41a1-ef51-07c220b5935d" - }, - "outputs": [], - "source": [ - "from trl import SFTTrainer, SFTConfig\n", - "from unsloth import is_bfloat16_supported\n", - "\n", - "trainer = SFTTrainer(\n", - " model=model,\n", - " tokenizer=tokenizer,\n", - " train_dataset=dataset, \n", - " max_seq_length=2048,\n", - " packing=False,\n", - " args=SFTConfig(\n", - " dataset_text_field=\"text\",\n", - " per_device_train_batch_size=2,\n", - " gradient_accumulation_steps=4,\n", - " gradient_checkpointing=True,\n", - " gradient_checkpointing_kwargs={\"use_reentrant\":False},\n", - " warmup_ratio=0.03,\n", - " max_steps=30,\n", - " learning_rate=3e-4,\n", - " fp16=not is_bfloat16_supported(),\n", - " bf16=is_bfloat16_supported(),\n", - " logging_steps=5,\n", - " #optim=\"adamw_8bit\",\n", - " optim=\"adamw_8bit\",\n", - " lr_scheduler_type=\"linear\",\n", - " seed=3407,\n", - " output_dir=\"outputs\",\n", - " report_to=\"none\",\n", - " max_grad_norm=0.3,\n", - " dataset_num_proc=2,\n", - " ),\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "C_sGp5XlG6dq" - }, - "source": [ - "We also use Unsloth's `train_on_completions` method to only train on the assistant outputs and ignore the loss on the user's inputs. This helps increase accuracy of finetunes!" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 49, - "referenced_widgets": [ - "30918e50f2174d1c8e7af3eef332b6ee", - "f4b34bc9a62f405383c3b81dc87792b9", - "1be74564b60c48d6b21615adf29009fb", - "148125f955954041a8f5631f9338c43e", - "91693f16da7b421885fe8474cf533327", - "28de62814a6847e0a0b41ec6bf8fdc66", - "c43cef665c9542f982986a74dc50ca98", - "ded71beadafd438ebff07bb0594771e4", - "677e4d7a08ab408e9430d67a2870f707", - "54d2fb7e7c2b4107ba758a7c7ef4f382", - "34da5010faa749e0940c2821f2f46e59", - "d94e1d86e3274277a9d908a7498ef1fa" - ] - }, - "id": "juQiExuBG5Bt", - "outputId": "6f017a0d-2ccc-429e-8a27-ab76c6c23b57" - }, - "outputs": [], - "source": [ - "from unsloth.chat_templates import train_on_responses_only\n", - "trainer = train_on_responses_only(\n", - " trainer,\n", - " instruction_part = \"user\\n\",\n", - " response_part = \"model\\n\",\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Dv1NBUozV78l" - }, - "source": [ - "Let's verify masking the instruction part is done! Let's print the 100th row again. Notice how the sample only has a single `` as expected!" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 175 - }, - "id": "LtsMVtlkUhja", - "outputId": "aebb55c2-3883-4494-e9f8-78d60b9b08e8" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'user\\nWhat is the modulus operator in programming and how can I use it to calculate the modulus of two given numbers?\\nmodel\\nIn programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tokenizer.decode(trainer.train_dataset[100][\"input_ids\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "4Kyjy__m9KY3" - }, - "source": [ - "Now let's print the masked out example - you should see only the answer is present:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 175 - }, - "id": "_rD6fl8EUxnG", - "outputId": "e9012c2a-60eb-437e-f145-3e11e9a0dd34" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "' In programming, the modulus operator is represented by the \\'%\\' symbol. It calculates the remainder when one number is divided by another. To calculate the modulus of two given numbers, you can use the modulus operator in the following way:\\n\\n```python\\n# Calculate the modulus\\nModulus = a % b\\n\\nprint(\"Modulus of the given numbers is: \", Modulus)\\n```\\n\\nIn this code snippet, the variables \\'a\\' and \\'b\\' represent the two given numbers for which you want to calculate the modulus. By using the modulus operator \\'%\\', we calculate the remainder when \\'a\\' is divided by \\'b\\'. The result is then stored in the variable \\'Modulus\\'. Finally, the modulus value is printed using the \\'print\\' statement.\\n\\nFor example, if \\'a\\' is 10 and \\'b\\' is 4, the modulus calculation would be 10 % 4, which equals 2. Therefore, the output of the above code would be:\\n\\n```\\nModulus of the given numbers is: 2\\n```\\n\\nThis means that the modulus of 10 and 4 is 2.\\n'" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tokenizer.decode([tokenizer.pad_token_id if x == -100 else x for x in trainer.train_dataset[100][\"labels\"]]).replace(tokenizer.pad_token, \" \")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "cellView": "form", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "2ejIt2xSNKKp", - "outputId": "ba6de9bc-35f1-48ed-8552-5cf1943d0478" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GPU = NVIDIA H100 80GB HBM3. Max memory = 79.179 GB.\n", - "4.672 GB of memory reserved.\n" - ] - } - ], - "source": [ - "# @title Show current memory stats\n", - "gpu_stats = torch.cuda.get_device_properties(0)\n", - "start_gpu_memory = round(torch.cuda.max_memory_reserved() / 1024 / 1024 / 1024, 3)\n", - "max_memory = round(gpu_stats.total_memory / 1024 / 1024 / 1024, 3)\n", - "print(f\"GPU = {gpu_stats.name}. Max memory = {max_memory} GB.\")\n", - "print(f\"{start_gpu_memory} GB of memory reserved.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "CNP1Uidk9mrz" - }, - "source": [ - "Let's train the model! To resume a training run, set `trainer.train(resume_from_checkpoint = True)`" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - }, - "id": "yqxqAZ7KJ4oL", - "outputId": "b44425bc-2ccf-4683-ce72-a837e5a07e9e" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n", - " \\\\ /| Num examples = 100,000 | Num Epochs = 1 | Total steps = 30\n", - "O^O/ \\_/ \\ Batch size per device = 2 | Gradient accumulation steps = 4\n", - "\\ / Data Parallel GPUs = 1 | Total batch size (2 x 4 x 1) = 8\n", - " \"-____-\" Trainable parameters = 14,901,248/4,000,000,000 (0.37% trained)\n", - "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "
\n", - " \n", - " \n", - " [30/30 01:08, Epoch 0/1]\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
StepTraining Loss
51.338200
100.867400
150.894900
200.846400
250.837000
300.886700

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "trainer_stats = trainer.train()" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "cellView": "form", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "pCqnaKmlO1U9", - "outputId": "5d5d33ee-7a84-4418-b038-bd15fb4614e4" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "76.5953 seconds used for training.\n", - "1.28 minutes used for training.\n", - "Peak reserved memory = 11.619 GB.\n", - "Peak reserved memory for training = 6.947 GB.\n", - "Peak reserved memory % of max memory = 14.674 %.\n", - "Peak reserved memory for training % of max memory = 8.774 %.\n" - ] - } - ], - "source": [ - "# @title Show final memory and time stats\n", - "used_memory = round(torch.cuda.max_memory_reserved() / 1024 / 1024 / 1024, 3)\n", - "used_memory_for_lora = round(used_memory - start_gpu_memory, 3)\n", - "used_percentage = round(used_memory / max_memory * 100, 3)\n", - "lora_percentage = round(used_memory_for_lora / max_memory * 100, 3)\n", - "print(f\"{trainer_stats.metrics['train_runtime']} seconds used for training.\")\n", - "print(\n", - " f\"{round(trainer_stats.metrics['train_runtime']/60, 2)} minutes used for training.\"\n", - ")\n", - "print(f\"Peak reserved memory = {used_memory} GB.\")\n", - "print(f\"Peak reserved memory for training = {used_memory_for_lora} GB.\")\n", - "print(f\"Peak reserved memory % of max memory = {used_percentage} %.\")\n", - "print(f\"Peak reserved memory for training % of max memory = {lora_percentage} %.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ekOmTR1hSNcr" - }, - "source": [ - "\n", - "### Inference\n", - "Let's run the model via Unsloth native inference! According to the `Gemma-3` team, the recommended settings for inference are `temperature = 1.0, top_p = 0.95, top_k = 64`" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "kR3gIAX-SM2q", - "outputId": "407daa07-ae31-4771-8c31-779665e53bd8" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "You have set `compile_config`, but we are unable to meet the criteria for compilation. Compilation will be skipped.\n" - ] - }, - { - "data": { - "text/plain": [ - "['user\\nContinue the sequence: 1, 1, 2, 3, 5, 8,\\nmodel\\nThe next term in the sequence is 13, and the next is 21, following the pattern of the Fibonacci sequence.']" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from unsloth.chat_templates import get_chat_template\n", - "tokenizer = get_chat_template(\n", - " tokenizer,\n", - " chat_template = \"gemma-3\",\n", - ")\n", - "messages = [{\n", - " \"role\": \"user\",\n", - " \"content\": [{\n", - " \"type\" : \"text\",\n", - " \"text\" : \"Continue the sequence: 1, 1, 2, 3, 5, 8,\",\n", - " }]\n", - "}]\n", - "text = tokenizer.apply_chat_template(\n", - " messages,\n", - " add_generation_prompt = True, # Must add for generation\n", - ")\n", - "outputs = model.generate(\n", - " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", - " max_new_tokens = 64, # Increase for longer outputs!\n", - " # Recommended Gemma-3 settings!\n", - " temperature = 1.0, top_p = 0.95, top_k = 64,\n", - ")\n", - "tokenizer.batch_decode(outputs)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "CrSvZObor0lY" - }, - "source": [ - " You can also use a `TextStreamer` for continuous inference - so you can see the generation token by token, instead of waiting the whole time!" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "e2pEuRb1r2Vg", - "outputId": "de757d2d-a66b-4be6-c9c9-78cf491dfeba" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The sky appears blue due to a phenomenon called Rayleigh scattering. Here's how it works:\n", - "\n", - "1. Sunlight, or white light, is made up of all the colors of the rainbow.\n", - "\n", - "2. As sunlight travels through the Earth's atmosphere, it collides with tiny air molecules, such as nitrogen and\n" - ] - } - ], - "source": [ - "messages = [{\n", - " \"role\": \"user\",\n", - " \"content\": [{\"type\" : \"text\", \"text\" : \"Why is the sky blue?\",}]\n", - "}]\n", - "text = tokenizer.apply_chat_template(\n", - " messages,\n", - " add_generation_prompt = True, # Must add for generation\n", - ")\n", - "\n", - "from transformers import TextStreamer\n", - "_ = model.generate(\n", - " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", - " max_new_tokens = 64, # Increase for longer outputs!\n", - " # Recommended Gemma-3 settings!\n", - " temperature = 1.0, top_p = 0.95, top_k = 64,\n", - " streamer = TextStreamer(tokenizer, skip_prompt = True),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "uMuVrWbjAzhc" - }, - "source": [ - "\n", - "### Saving, loading finetuned models\n", - "To save the final model as LoRA adapters, either use Huggingface's `push_to_hub` for an online save or `save_pretrained` for a local save.\n", - "\n", - "**[NOTE]** This ONLY saves the LoRA adapters, and not the full model. To save to 16bit or GGUF, scroll down!" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "upcOlWe7A1vc", - "outputId": "a99a1086-5a2d-4828-d599-7e3634a069cd" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['gemma-3/processor_config.json']" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.save_pretrained(\"gemma-3\") # Local saving\n", - "tokenizer.save_pretrained(\"gemma-3\")\n", - "# model.push_to_hub(\"HF_ACCOUNT/gemma-3\", token = \"...\") # Online saving\n", - "# tokenizer.push_to_hub(\"HF_ACCOUNT/gemma-3\", token = \"...\") # Online saving" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "AEEcJ4qfC7Lp" - }, - "source": [ - "Now if you want to load the LoRA adapters we just saved for inference, set `False` to `True`:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "MKX_XKs_BNZR", - "outputId": "d016d936-4bd5-40f8-dffa-bcfad987f489" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gemma is a family of open-source language models created by the team at Google DeepMind. There are different sizes of Gemma models that can be downloaded from the Google Cloud Marketplace, and the open-source models can be used to generate text, translate languages, write different kinds of creative content, and answer your questions\n" - ] - } - ], - "source": [ - "if False:\n", - " from unsloth import FastModel\n", - " model, tokenizer = FastModel.from_pretrained(\n", - " model_name = \"lora_model\", # YOUR MODEL YOU USED FOR TRAINING\n", - " max_seq_length = 2048,\n", - " load_in_4bit = True,\n", - " )\n", - "\n", - "messages = [{\n", - " \"role\": \"user\",\n", - " \"content\": [{\"type\" : \"text\", \"text\" : \"What is Gemma-3?\",}]\n", - "}]\n", - "text = tokenizer.apply_chat_template(\n", - " messages,\n", - " add_generation_prompt = True, # Must add for generation\n", - ")\n", - "\n", - "from transformers import TextStreamer\n", - "_ = model.generate(\n", - " **tokenizer([text], return_tensors = \"pt\").to(\"cuda\"),\n", - " max_new_tokens = 64, # Increase for longer outputs!\n", - " # Recommended Gemma-3 settings!\n", - " temperature = 1.0, top_p = 0.95, top_k = 64,\n", - " streamer = TextStreamer(tokenizer, skip_prompt = True),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "f422JgM9sdVT" - }, - "source": [ - "### Saving to float16 for VLLM\n", - "\n", - "We also support saving to `float16` directly for deployment! We save it in the folder `gemma-3-finetune`. Set `if False` to `if True` to let it run!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "iHjt_SMYsd3P" - }, - "outputs": [], - "source": [ - "if False: # Change to True to save finetune!\n", - " model.save_pretrained_merged(\"gemma-3-finetune\", tokenizer)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "z6O48DbNIAr0" - }, - "source": [ - "If you want to upload / push to your Hugging Face account, set `if False` to `if True` and add your Hugging Face token and upload location!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ZV-CiKPrIFG0" - }, - "outputs": [], - "source": [ - "if False: # Change to True to upload finetune\n", - " model.push_to_hub_merged(\n", - " \"HF_ACCOUNT/gemma-3-finetune\", tokenizer,\n", - " token = \"hf_...\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TCv4vXHd61i7" - }, - "source": [ - "### GGUF / llama.cpp Conversion\n", - "To save to `GGUF` / `llama.cpp`, we support it natively now for all models! For now, you can convert easily to `Q8_0, F16 or BF16` precision. `Q4_K_M` for 4bit will come later!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "FqfebeAdT073" - }, - "outputs": [], - "source": [ - "if False: # Change to True to save to GGUF\n", - " model.save_pretrained_gguf(\n", - " \"gemma-3-finetune\",\n", - " quantization_type = \"Q8_0\", # For now only Q8_0, BF16, F16 supported\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Q974YEVPI7JS" - }, - "source": [ - "Likewise, if you want to instead push to GGUF to your Hugging Face account, set `if False` to `if True` and add your Hugging Face token and upload location!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ZgcJIhJ0I_es" - }, - "outputs": [], - "source": [ - "if False: # Change to True to upload GGUF\n", - " model.push_to_hub_gguf(\n", - " \"gemma-3-finetune\",\n", - " quantization_type = \"Q8_0\", # Only Q8_0, BF16, F16 supported\n", - " repo_id = \"HF_ACCOUNT/gemma-finetune-gguf\",\n", - " token = \"hf_...\",\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "IXhcqGKAgt7E" - }, - "source": [ - "Now, use the `gemma-3-finetune.gguf` file or `gemma-3-finetune-Q4_K_M.gguf` file in llama.cpp or a UI based system like Jan or Open WebUI. You can install Jan [here](https://github.com/janhq/jan) and Open WebUI [here](https://github.com/open-webui/open-webui)\n", - "\n", - "And we're done! If you have any questions on Unsloth, we have a [Discord](https://discord.gg/unsloth) channel! If you find any bugs or want to keep updated with the latest LLM stuff, or need help, join projects etc, feel free to join our Discord!\n", - "\n", - "Some other links:\n", - "1. Train your own reasoning model - Llama GRPO notebook [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.1_(8B)-GRPO.ipynb)\n", - "2. Saving finetunes to Ollama. [Free notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_(8B)-Ollama.ipynb)\n", - "3. Llama 3.2 Vision finetuning - Radiography use case. [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.2_(11B)-Vision.ipynb)\n", - "6. See notebooks for DPO, ORPO, Continued pretraining, conversational finetuning and more on our [documentation](https://docs.unsloth.ai/get-started/unsloth-notebooks)!\n", - "\n", - "

\n", - " \n", - " \n", - " \n", - "\n", - " Join Discord if you need help + โญ๏ธ Star us on Github โญ๏ธ\n", - "
\n" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "gpuType": "T4", - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.0" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "039f461e15214bd697501219bd9cbbd9": { - "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 - } - }, - "063db74d47814f95b560bd3bab11b55f": { - "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_3530e2b431c041c6aeeaca4808ba0424", - "placeholder": "โ€‹", - "style": "IPY_MODEL_cc14e51320f34274ae12aa28b04183b7", - "value": "โ€‡35.0/35.0โ€‡[00:00<00:00,โ€‡2.05kB/s]" - } - }, - "0881c055108340f7ab4b840ac1545cbb": { - "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 - } - }, - "090b146b8c6f4fa1ab0261d2a61be9de": { - "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_708d05af00a64d19bb11dc839a5e68db", - "placeholder": "โ€‹", - "style": "IPY_MODEL_3d20e28d74e549c0a43686b214eebd87", - "value": "preprocessor_config.json:โ€‡100%" - } - }, - "0abe1a2b12e54bb5a07db1a8f3a77738": { - "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 - } - }, - "0b1768a5b5be4a4d9e14ed9e168044b4": { - "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 - } - }, - "0c3e3fbf02d84114906e939fcca108b5": { - "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_c4a69698321d435c94211a9dee913c45", - "placeholder": "โ€‹", - "style": "IPY_MODEL_36c8135711194884be0e03cb5d3ae7e5", - "value": "โ€‡1.61k/1.61kโ€‡[00:00<00:00,โ€‡181kB/s]" - } - }, - "0cba80b626574c11a44c6ce09b5d6e80": { - "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_12d3049cca4a46c08cf5cdfcd5225248", - "placeholder": "โ€‹", - "style": "IPY_MODEL_6a9baf0a739c4790baf99b0ccadd6873", - "value": "โ€‡33.4M/33.4Mโ€‡[00:00<00:00,โ€‡70.2MB/s]" - } - }, - "12d3049cca4a46c08cf5cdfcd5225248": { - "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 - } - }, - "148125f955954041a8f5631f9338c43e": { - "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_54d2fb7e7c2b4107ba758a7c7ef4f382", - "placeholder": "โ€‹", - "style": "IPY_MODEL_34da5010faa749e0940c2821f2f46e59", - "value": "โ€‡100000/100000โ€‡[00:43<00:00,โ€‡2627.58โ€‡examples/s]" - } - }, - "17eaf723882e4efea38119978166fc75": { - "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_cebd4fbf1fcf4ab2b65ecf539eda5a1e", - "placeholder": "โ€‹", - "style": "IPY_MODEL_f14ea72beac74152af5f970e634769ca", - "value": "generation_config.json:โ€‡100%" - } - }, - "18fce8679d7d4961b88bb2162e7aa9eb": { - "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_f9439c3c9b3b4c4a84ed67aa0601a530", - "placeholder": "โ€‹", - "style": "IPY_MODEL_a89575b4c58348ac98566c22ab7e4118", - "value": "chat_template.json:โ€‡100%" - } - }, - "19c27988e01d47e79319f89b5cfd73e2": { - "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": "" - } - }, - "19c3ef35452d406cb18b72e38b631ee7": { - "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_77e843913b6e439ead9cf42725eedf3d", - "max": 35, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_4f7e8b6b71484cce80ae9cdf0c481825", - "value": 35 - } - }, - "1be74564b60c48d6b21615adf29009fb": { - "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_ded71beadafd438ebff07bb0594771e4", - "max": 100000, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_677e4d7a08ab408e9430d67a2870f707", - "value": 100000 - } - }, - "1ecb60e1d5934ea19a0d2c29aa01158d": { - "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 - } - }, - "1f333859babd4c1abac69cacda6df864": { - "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_c5b1d1476ddc45249e037df07a96ae37", - "placeholder": "โ€‹", - "style": "IPY_MODEL_19c27988e01d47e79319f89b5cfd73e2", - "value": "Unsloth:โ€‡Tokenizingโ€‡["text"]โ€‡(num_proc=2):โ€‡100%" - } - }, - "26b61507603d453c8c24af24d301bdb9": { - "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_9e20d704e64a4aaabe5e495c468d9670", - "placeholder": "โ€‹", - "style": "IPY_MODEL_ae4e4537ed1d4df4b1677700d190a2d2", - "value": "โ€‡192/192โ€‡[00:00<00:00,โ€‡20.1kB/s]" - } - }, - "28de62814a6847e0a0b41ec6bf8fdc66": { - "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 - } - }, - "2970cbc657d244bab22715bcb788be6a": { - "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 - } - }, - "2fa2784330b2439ab884ce0966037961": { - "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 - } - }, - "30918e50f2174d1c8e7af3eef332b6ee": { - "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_f4b34bc9a62f405383c3b81dc87792b9", - "IPY_MODEL_1be74564b60c48d6b21615adf29009fb", - "IPY_MODEL_148125f955954041a8f5631f9338c43e" - ], - "layout": "IPY_MODEL_91693f16da7b421885fe8474cf533327" - } - }, - "3350d22f463643ef9a726227f262ac49": { - "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": "" - } - }, - "33815b4c0485402e838127b32ad14a15": { - "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_81c3ee8d97d543ae83db3d2748ecd7cd", - "IPY_MODEL_70f9bccb201a4ea79c1827057cd746f6", - "IPY_MODEL_b32538030b8649e7851bfd58bef2786c" - ], - "layout": "IPY_MODEL_0abe1a2b12e54bb5a07db1a8f3a77738" - } - }, - "34da5010faa749e0940c2821f2f46e59": { - "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": "" - } - }, - "3530e2b431c041c6aeeaca4808ba0424": { - "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 - } - }, - "353fa47fb98c4070a150edec64503eaa": { - "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 - } - }, - "360142dac8c54a5eb902078ec42abb65": { - "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_70fdd31291b04dd68d66cf31c03d23ff", - "placeholder": "โ€‹", - "style": "IPY_MODEL_6feaf338d39440e78221649ac84af4a6", - "value": "special_tokens_map.json:โ€‡100%" - } - }, - "36c8135711194884be0e03cb5d3ae7e5": { - "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": "" - } - }, - "3bfc7d7dd81f49a59fc8ad0d6fff858b": { - "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_84c68f2059f247628b672b1079130e9b", - "max": 70, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_a88fccae11664baa82418c88639f3521", - "value": 70 - } - }, - "3d20e28d74e549c0a43686b214eebd87": { - "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": "" - } - }, - "3e3feb4fcca74c87abb608c0543236b1": { - "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_7e5378838c114195ba3919fdd683fd7d", - "placeholder": "โ€‹", - "style": "IPY_MODEL_3350d22f463643ef9a726227f262ac49", - "value": "โ€‡100000/100000โ€‡[03:03<00:00,โ€‡568.03โ€‡examples/s]" - } - }, - "409488926d2242c5a8e7b3d5b79c59db": { - "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_039f461e15214bd697501219bd9cbbd9", - "max": 192, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_9f9d2f43fb5e47df883feb3126fe52e9", - "value": 192 - } - }, - "40bf6f1ffbc5479082fdd7ab153ea974": { - "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": "" - } - }, - "4466f20e614a4cdabe1704859c2f1034": { - "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_be2b1fb954444be089045a378673a958", - "max": 4689074, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_9520485cc7c24c8584c3838717655012", - "value": 4689074 - } - }, - "457c60d6a15d4314ba25d370be956a60": { - "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 - } - }, - "4c5e29de7224428bb87de46854ea915a": { - "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_5e9ba3247edc4fafa7687338424ddccb", - "placeholder": "โ€‹", - "style": "IPY_MODEL_97d7e3420e24436cb351b1e9679ff8b6", - "value": "โ€‡670/670โ€‡[00:00<00:00,โ€‡42.7kB/s]" - } - }, - "4f7e8b6b71484cce80ae9cdf0c481825": { - "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": "" - } - }, - "50881898da2f4b35a288ac9befe5024e": { - "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_599375adc5f841d1864166e4d1bd617a", - "IPY_MODEL_3bfc7d7dd81f49a59fc8ad0d6fff858b", - "IPY_MODEL_a0c0025c82394e7fbc6d4cc9a9e9f72f" - ], - "layout": "IPY_MODEL_5f0a37b9edc74cbd822e2e71c6c8a956" - } - }, - "51649c42cf2145f1b1e90c3436805350": { - "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": "" - } - }, - "52f091f99f0442f8bd14a50b7c870c1e": { - "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 - } - }, - "54d2fb7e7c2b4107ba758a7c7ef4f382": { - "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 - } - }, - "54d963afc22a46ae93a6ca4bfaa18cf8": { - "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_52f091f99f0442f8bd14a50b7c870c1e", - "placeholder": "โ€‹", - "style": "IPY_MODEL_c859133fca324effb73ebc3520e746b6", - "value": "โ€‡570/570โ€‡[00:00<00:00,โ€‡61.1kB/s]" - } - }, - "57ed5097e05f4d92a5c492826f989123": { - "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_b5a06422fcac41eb97d2de95f14b1806", - "max": 1157008, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_efa41d07d0fa4adda8025fe9490ed850", - "value": 1157008 - } - }, - "5975cf24b18e4082bd80e3f177e0ec15": { - "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_b5b8482ef7c44e12a83795e7337521c2", - "IPY_MODEL_ea9045a5c4504a5e96e6a7b13767fe4e", - "IPY_MODEL_0cba80b626574c11a44c6ce09b5d6e80" - ], - "layout": "IPY_MODEL_f344c1ab154b4abdb84b2c221b6162a1" - } - }, - "599375adc5f841d1864166e4d1bd617a": { - "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_a15e4524521b42108f49dda23ed56023", - "placeholder": "โ€‹", - "style": "IPY_MODEL_a4eaae1b30d442208257c1870d549738", - "value": "processor_config.json:โ€‡100%" - } - }, - "5c01ab4767104c0c96c42858317f8877": { - "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 - } - }, - "5e48531593d741eaa3669f9118ba8afc": { - "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 - } - }, - "5e9ba3247edc4fafa7687338424ddccb": { - "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 - } - }, - "5f0a37b9edc74cbd822e2e71c6c8a956": { - "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 - } - }, - "62838ffab83d486f86e86417caf0b498": { - "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": "" - } - }, - "677e4d7a08ab408e9430d67a2870f707": { - "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": "" - } - }, - "697a187a07204fdfb8556cf5c5028c6b": { - "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 - } - }, - "69a9d565de6a4d54b8f3989fa8b11941": { - "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_090b146b8c6f4fa1ab0261d2a61be9de", - "IPY_MODEL_d2df1617a4094dd295c49a0a72b269c3", - "IPY_MODEL_54d963afc22a46ae93a6ca4bfaa18cf8" - ], - "layout": "IPY_MODEL_0b1768a5b5be4a4d9e14ed9e168044b4" - } - }, - "6a9baf0a739c4790baf99b0ccadd6873": { - "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": "" - } - }, - "6feaf338d39440e78221649ac84af4a6": { - "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": "" - } - }, - "708d05af00a64d19bb11dc839a5e68db": { - "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 - } - }, - "70f9bccb201a4ea79c1827057cd746f6": { - "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": "danger", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9be36a19ba86494389904b9fffdc2e48", - "max": 4437712931, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_899bf9a4dc594e178d0b95e3cbe08018", - "value": 4437712508 - } - }, - "70fdd31291b04dd68d66cf31c03d23ff": { - "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 - } - }, - "730aa679b5ac483b929a3646bb5947fa": { - "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_1f333859babd4c1abac69cacda6df864", - "IPY_MODEL_e7f8d2c781a64e83988b0bdd090bdb97", - "IPY_MODEL_3e3feb4fcca74c87abb608c0543236b1" - ], - "layout": "IPY_MODEL_2970cbc657d244bab22715bcb788be6a" - } - }, - "73a283e64f324c27b38216e683050b92": { - "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 - } - }, - "740d351b7de241a6acabf6c2853585b6": { - "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": "" - } - }, - "77907c3444174858bbdc548dee8d0d37": { - "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": "" - } - }, - "77c5f8b431ba4c08b8f4d9d8f9fafc16": { - "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_73a283e64f324c27b38216e683050b92", - "placeholder": "โ€‹", - "style": "IPY_MODEL_81bddfaa180d4875b5cdb5cc4ae45dab", - "value": "added_tokens.json:โ€‡100%" - } - }, - "77e843913b6e439ead9cf42725eedf3d": { - "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 - } - }, - "7e5378838c114195ba3919fdd683fd7d": { - "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 - } - }, - "81bddfaa180d4875b5cdb5cc4ae45dab": { - "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": "" - } - }, - "81c3ee8d97d543ae83db3d2748ecd7cd": { - "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_e12bca7d49b149b5b1124c28a669db98", - "placeholder": "โ€‹", - "style": "IPY_MODEL_fab7a02d350946ae9563a05cfd04e22b", - "value": "model.safetensors:โ€‡100%" - } - }, - "84c68f2059f247628b672b1079130e9b": { - "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 - } - }, - "86c6d49a55b3477bbccc275dcb55fb52": { - "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_77c5f8b431ba4c08b8f4d9d8f9fafc16", - "IPY_MODEL_19c3ef35452d406cb18b72e38b631ee7", - "IPY_MODEL_063db74d47814f95b560bd3bab11b55f" - ], - "layout": "IPY_MODEL_5c01ab4767104c0c96c42858317f8877" - } - }, - "879c6a0498e54e5c87145c7f7d32de7e": { - "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 - } - }, - "8864799f440c440c8ff8c0696e64215d": { - "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 - } - }, - "8949c35d68a043c5b1384774bb07b2ea": { - "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_94d9900bc8934de688e95e15c9d0c9bb", - "placeholder": "โ€‹", - "style": "IPY_MODEL_b469cdf580404f498feb062e4dbad10b", - "value": "โ€‡4.69M/4.69Mโ€‡[00:00<00:00,โ€‡22.1MB/s]" - } - }, - "899bf9a4dc594e178d0b95e3cbe08018": { - "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": "" - } - }, - "91693f16da7b421885fe8474cf533327": { - "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 - } - }, - "94d9900bc8934de688e95e15c9d0c9bb": { - "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 - } - }, - "9520485cc7c24c8584c3838717655012": { - "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": "" - } - }, - "97d7e3420e24436cb351b1e9679ff8b6": { - "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": "" - } - }, - "9be36a19ba86494389904b9fffdc2e48": { - "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 - } - }, - "9e20d704e64a4aaabe5e495c468d9670": { - "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 - } - }, - "9f9d2f43fb5e47df883feb3126fe52e9": { - "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": "" - } - }, - "a0c0025c82394e7fbc6d4cc9a9e9f72f": { - "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_1ecb60e1d5934ea19a0d2c29aa01158d", - "placeholder": "โ€‹", - "style": "IPY_MODEL_f920f6cb263c45d59b851b7c6b631cb5", - "value": "โ€‡70.0/70.0โ€‡[00:00<00:00,โ€‡8.21kB/s]" - } - }, - "a15e4524521b42108f49dda23ed56023": { - "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 - } - }, - "a37b4e454c6743a895f159f963366bc8": { - "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_18fce8679d7d4961b88bb2162e7aa9eb", - "IPY_MODEL_fd60bb21ba2e474cb4a6020bd302835e", - "IPY_MODEL_0c3e3fbf02d84114906e939fcca108b5" - ], - "layout": "IPY_MODEL_ab71391446d8482c834429a937f7bb96" - } - }, - "a3ce4f38be9a456c81146fba440c8e3f": { - "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 - } - }, - "a4a64136f6fc48c799abf1701725534e": { - "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_c9fbf40fa3dd4ba1b363802dc88764da", - "max": 670, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_ae7f1fd06ddc4881934690675891855c", - "value": 670 - } - }, - "a4eaae1b30d442208257c1870d549738": { - "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": "" - } - }, - "a88fccae11664baa82418c88639f3521": { - "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": "" - } - }, - "a89575b4c58348ac98566c22ab7e4118": { - "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": "" - } - }, - "a92be3fb752148d887e20afe300f9371": { - "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 - } - }, - "aa36bff36ae5448b892afea071fc1f1d": { - "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": "" - } - }, - "ab71391446d8482c834429a937f7bb96": { - "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 - } - }, - "ae4e4537ed1d4df4b1677700d190a2d2": { - "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": "" - } - }, - "ae7f1fd06ddc4881934690675891855c": { - "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": "" - } - }, - "afdb7dfdc17548b39daea1f39d54b45c": { - "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": "" - } - }, - "b32538030b8649e7851bfd58bef2786c": { - "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_2fa2784330b2439ab884ce0966037961", - "placeholder": "โ€‹", - "style": "IPY_MODEL_51649c42cf2145f1b1e90c3436805350", - "value": "โ€‡4.44G/4.44Gโ€‡[00:31<00:00,โ€‡142MB/s]" - } - }, - "b469cdf580404f498feb062e4dbad10b": { - "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": "" - } - }, - "b5a06422fcac41eb97d2de95f14b1806": { - "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 - } - }, - "b5b8482ef7c44e12a83795e7337521c2": { - "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_0881c055108340f7ab4b840ac1545cbb", - "placeholder": "โ€‹", - "style": "IPY_MODEL_77907c3444174858bbdc548dee8d0d37", - "value": "tokenizer.json:โ€‡100%" - } - }, - "bc6f29c9a1e14ce8be374867b8be86ac": { - "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": "" - } - }, - "be2b1fb954444be089045a378673a958": { - "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 - } - }, - "c307400fb17e49ea9d835822e6e22633": { - "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_353fa47fb98c4070a150edec64503eaa", - "placeholder": "โ€‹", - "style": "IPY_MODEL_40bf6f1ffbc5479082fdd7ab153ea974", - "value": "tokenizer_config.json:โ€‡100%" - } - }, - "c43cef665c9542f982986a74dc50ca98": { - "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": "" - } - }, - "c4a69698321d435c94211a9dee913c45": { - "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 - } - }, - "c5b1d1476ddc45249e037df07a96ae37": { - "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 - } - }, - "c6c51a350a0b420aab957e3570098e18": { - "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 - } - }, - "c859133fca324effb73ebc3520e746b6": { - "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": "" - } - }, - "c9fbf40fa3dd4ba1b363802dc88764da": { - "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 - } - }, - "cc14e51320f34274ae12aa28b04183b7": { - "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": "" - } - }, - "cebd4fbf1fcf4ab2b65ecf539eda5a1e": { - "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 - } - }, - "d2df1617a4094dd295c49a0a72b269c3": { - "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_dfac71c6372c46bfad46308bdb04480b", - "max": 570, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_df50d8daa49a4955914704edb89baf61", - "value": 570 - } - }, - "db7e622bbd0f4357b5687a7c09c1f6fd": { - "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_457c60d6a15d4314ba25d370be956a60", - "placeholder": "โ€‹", - "style": "IPY_MODEL_bc6f29c9a1e14ce8be374867b8be86ac", - "value": "โ€‡1.16M/1.16Mโ€‡[00:00<00:00,โ€‡10.7MB/s]" - } - }, - "dd6e4f9b4c6d4260a62b920a6812fd07": { - "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_879c6a0498e54e5c87145c7f7d32de7e", - "placeholder": "โ€‹", - "style": "IPY_MODEL_740d351b7de241a6acabf6c2853585b6", - "value": "tokenizer.model:โ€‡100%" - } - }, - "ded71beadafd438ebff07bb0594771e4": { - "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 - } - }, - "df50d8daa49a4955914704edb89baf61": { - "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": "" - } - }, - "dfac71c6372c46bfad46308bdb04480b": { - "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 - } - }, - "e003ee5cf1804ce3928b544b3fa7ba77": { - "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_dd6e4f9b4c6d4260a62b920a6812fd07", - "IPY_MODEL_4466f20e614a4cdabe1704859c2f1034", - "IPY_MODEL_8949c35d68a043c5b1384774bb07b2ea" - ], - "layout": "IPY_MODEL_fca09f95775047efa9d481173f1ba261" - } - }, - "e12bca7d49b149b5b1124c28a669db98": { - "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 - } - }, - "e7f8d2c781a64e83988b0bdd090bdb97": { - "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_5e48531593d741eaa3669f9118ba8afc", - "max": 100000, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_62838ffab83d486f86e86417caf0b498", - "value": 100000 - } - }, - "ea9045a5c4504a5e96e6a7b13767fe4e": { - "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_a92be3fb752148d887e20afe300f9371", - "max": 33384568, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_aa36bff36ae5448b892afea071fc1f1d", - "value": 33384568 - } - }, - "eae020595f574192ad9d132853bbf6ec": { - "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_17eaf723882e4efea38119978166fc75", - "IPY_MODEL_409488926d2242c5a8e7b3d5b79c59db", - "IPY_MODEL_26b61507603d453c8c24af24d301bdb9" - ], - "layout": "IPY_MODEL_c6c51a350a0b420aab957e3570098e18" - } - }, - "efa41d07d0fa4adda8025fe9490ed850": { - "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": "" - } - }, - "f14ea72beac74152af5f970e634769ca": { - "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": "" - } - }, - "f344c1ab154b4abdb84b2c221b6162a1": { - "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 - } - }, - "f373f2c24f3b413aaa9fe1ccfb9c1eab": { - "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_360142dac8c54a5eb902078ec42abb65", - "IPY_MODEL_a4a64136f6fc48c799abf1701725534e", - "IPY_MODEL_4c5e29de7224428bb87de46854ea915a" - ], - "layout": "IPY_MODEL_a3ce4f38be9a456c81146fba440c8e3f" - } - }, - "f4b34bc9a62f405383c3b81dc87792b9": { - "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_28de62814a6847e0a0b41ec6bf8fdc66", - "placeholder": "โ€‹", - "style": "IPY_MODEL_c43cef665c9542f982986a74dc50ca98", - "value": "Mapโ€‡(num_proc=2):โ€‡100%" - } - }, - "f89c08592a25432497bb312f58a13c5c": { - "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_c307400fb17e49ea9d835822e6e22633", - "IPY_MODEL_57ed5097e05f4d92a5c492826f989123", - "IPY_MODEL_db7e622bbd0f4357b5687a7c09c1f6fd" - ], - "layout": "IPY_MODEL_8864799f440c440c8ff8c0696e64215d" - } - }, - "f920f6cb263c45d59b851b7c6b631cb5": { - "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": "" - } - }, - "f9439c3c9b3b4c4a84ed67aa0601a530": { - "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 - } - }, - "fab7a02d350946ae9563a05cfd04e22b": { - "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": "" - } - }, - "fca09f95775047efa9d481173f1ba261": { - "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 - } - }, - "fd60bb21ba2e474cb4a6020bd302835e": { - "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_697a187a07204fdfb8556cf5c5028c6b", - "max": 1615, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_afdb7dfdc17548b39daea1f39d54b45c", - "value": 1615 - } - } - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_H100.ipynb b/tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_H100.ipynb deleted file mode 100644 index 003d7049ba..0000000000 --- a/tests/gemma3_fix_tests/gemma3_4b_vision_french_ocr_H100.ipynb +++ /dev/null @@ -1,1345 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4800978d", - "metadata": { - "colab_type": "text", - "id": "view-in-github" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e83fc6ff-29f2-4a57-9ce4-59d91b43ac3d", - "metadata": { - "editable": true, - "id": "e83fc6ff-29f2-4a57-9ce4-59d91b43ac3d", - "outputId": "856c05b4-d520-4dfe-d8e4-d597ae969839", - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "๐Ÿฆฅ Unsloth: Will patch your computer to enable 2x faster free finetuning.\n", - "forward 1 working and being replaced\n", - "๐Ÿฆฅ Unsloth Zoo will now patch everything to make training faster!\n", - "INFO 06-18 05:14:05 [__init__.py:244] Automatically detected platform cuda.\n" - ] - } - ], - "source": [ - "from unsloth import FastVisionModel" - ] - }, - { - "cell_type": "markdown", - "id": "9bca3f87-5973-4d2f-88e8-6de6e05dc4fa", - "metadata": { - "id": "9bca3f87-5973-4d2f-88e8-6de6e05dc4fa" - }, - "source": [ - "# Dataset Preparation" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "12ba9d1e-0ad3-43b7-9a94-fa58f6b1a4f2", - "metadata": { - "colab": { - "referenced_widgets": [ - "905e0b0bcab74845a4858b6de6199c45", - "61e16790b19f496794d91eecc10d369a", - "62ab7989b1bd4179aaff9b09515cad6d" - ] - }, - "id": "12ba9d1e-0ad3-43b7-9a94-fa58f6b1a4f2", - "outputId": "0561eb67-9383-4ecc-ea0d-6cca4e76d006" - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ec0110526de74ff589e959db6ee94af5", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Resolving data files: 0%| | 0/50 [00:00 Tuple[Optional[float], Optional[float]]:\n", - " \"\"\"\n", - " Evaluate a Gemma3 model on an OCR dataset.\n", - " \"\"\"\n", - " # Create output directory if it doesn't exist\n", - " os.makedirs(output_dir, exist_ok=True)\n", - "\n", - " # Initialize results storage\n", - " results = []\n", - "\n", - " # Process each sample in the dataset\n", - " for i, sample in enumerate(tqdm(dataset, desc=\"Evaluating OCR performance\", disable=not verbose)):\n", - " try:\n", - " # Extract components from sample\n", - " messages = sample['messages']\n", - "\n", - " # Get ground truth, image, and question, input_messages\n", - " ground_truth, image, question, input_messages = self._extract_sample_components(\n", - " messages, i, verbose\n", - " )\n", - "\n", - " if ground_truth is None or image is None or question is None:\n", - " continue\n", - "\n", - " # Generate model response\n", - " generated_response = self._generate_response(\n", - " model, processor, input_messages, max_new_tokens, temperature, top_p, top_k, do_sample\n", - " )\n", - "\n", - " # Calculate metrics\n", - " word_error = wer(ground_truth, generated_response)\n", - " char_error = cer(ground_truth, generated_response)\n", - "\n", - " # Save individual result\n", - " self._save_individual_result(\n", - " output_dir, i, question, generated_response, ground_truth, word_error, char_error\n", - " )\n", - "\n", - " # Store results for summary\n", - " results.append({\n", - " 'sample_id': i,\n", - " 'wer': word_error,\n", - " 'cer': char_error,\n", - " 'model_output': generated_response.strip(),\n", - " 'ground_truth': ground_truth,\n", - " 'question': question\n", - " })\n", - "\n", - " except Exception as e:\n", - " if verbose:\n", - " print(f\"Error processing sample {i}: {str(e)}\")\n", - " traceback.print_exc()\n", - "\n", - " # Generate summary report\n", - " return self._generate_summary_report(results, output_dir, verbose)\n", - "\n", - " def _extract_sample_components(\n", - " self,\n", - " messages: List[Dict],\n", - " sample_idx: int,\n", - " verbose: bool\n", - " ) -> Tuple[Optional[str], Optional[Any], Optional[str], List[Dict]]:\n", - " \"\"\"Extract ground truth, image, question, and input messages from sample.\"\"\"\n", - "\n", - " # Extract system message (if present)\n", - " system_message = next((msg for msg in messages if msg['role'] == 'system'), None)\n", - "\n", - " # Extract user message with the image and question\n", - " user_message = next((msg for msg in messages if msg['role'] == 'user'), None)\n", - " if not user_message:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No user message found\")\n", - " return None, None, None, []\n", - "\n", - " # Extract assistant message with ground truth\n", - " assistant_message = next((msg for msg in messages if msg['role'] == 'assistant'), None)\n", - " if not assistant_message:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No assistant message (ground truth) found\")\n", - " return None, None, None, []\n", - "\n", - " # Extract ground truth text\n", - " ground_truth = None\n", - " for content_item in assistant_message['content']:\n", - " if content_item['type'] == 'text':\n", - " ground_truth = content_item['text']\n", - " break\n", - "\n", - " if not ground_truth:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No text found in assistant message\")\n", - " return None, None, None, []\n", - "\n", - " # Extract image and question from user message\n", - " image = None\n", - " question = None\n", - "\n", - " for content_item in user_message['content']:\n", - " if content_item['type'] == 'image':\n", - " image = content_item['image']\n", - " # Ensure image is in RGB format\n", - " if hasattr(image, 'convert'):\n", - " image = image.convert('RGB')\n", - " elif content_item['type'] == 'text':\n", - " question = content_item['text']\n", - "\n", - " if not image:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No image found in user message\")\n", - " return None, None, None, []\n", - "\n", - " if not question:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No question found in user message\")\n", - " return None, None, None, []\n", - "\n", - " # Construct messages for the model input (excluding assistant message)\n", - " input_messages = []\n", - " if system_message:\n", - " input_messages.append(system_message)\n", - " input_messages.append(user_message)\n", - "\n", - " return ground_truth, image, question, input_messages\n", - "\n", - " def _process_vision_info(self, messages: List[Dict]) -> List[Image.Image]:\n", - " \"\"\"Extract images from messages in Gemma3 format.\"\"\"\n", - " image_inputs = []\n", - " # Iterate through each conversation\n", - " for msg in messages:\n", - " # Get content (ensure it's a list)\n", - " content = msg.get(\"content\", [])\n", - " if not isinstance(content, list):\n", - " content = [content]\n", - "\n", - " # Check each content element for images\n", - " for element in content:\n", - " if isinstance(element, dict) and (\n", - " \"image\" in element or element.get(\"type\") == \"image\"\n", - " ):\n", - " # Get the image and convert to RGB\n", - " if \"image\" in element:\n", - " image = element[\"image\"]\n", - " else:\n", - " image = element\n", - " if hasattr(image, 'convert'):\n", - " image_inputs.append(image.convert(\"RGB\"))\n", - " else:\n", - " image_inputs.append(image)\n", - " return image_inputs\n", - "\n", - " def _generate_response(\n", - " self,\n", - " model: Any,\n", - " processor: Any,\n", - " input_messages: List[Dict],\n", - " max_new_tokens: int,\n", - " temperature: float,\n", - " top_p: float,\n", - " top_k: int,\n", - " do_sample: bool,\n", - " ) -> str:\n", - " \"\"\"Generate response from the Gemma3 model using the official approach.\"\"\"\n", - "\n", - " # Apply chat template to convert messages to text\n", - " text = processor.apply_chat_template(\n", - " input_messages, tokenize=False, add_generation_prompt=True\n", - " )\n", - "\n", - " # Process the images using the official vision processing function\n", - " image_inputs = self._process_vision_info(input_messages)\n", - "\n", - " # Tokenize the text and process the images\n", - " inputs = processor(\n", - " text=[text],\n", - " images=image_inputs,\n", - " padding=True,\n", - " return_tensors=\"pt\",\n", - " )\n", - "\n", - " # Move the inputs to the device\n", - " inputs = inputs.to(model.device)\n", - "\n", - " # Set up stop tokens (following the official implementation)\n", - " stop_token_ids = [\n", - " processor.tokenizer.eos_token_id, \n", - " processor.tokenizer.convert_tokens_to_ids(\"\")\n", - " ]\n", - "\n", - " # Generate the output with proper parameters\n", - " with torch.inference_mode():\n", - " generated_ids = model.generate(\n", - " **inputs, \n", - " max_new_tokens=max_new_tokens, \n", - " top_p=top_p,\n", - " top_k=top_k,\n", - " do_sample=do_sample, \n", - " temperature=temperature, \n", - " eos_token_id=stop_token_ids,\n", - " disable_compile=True # Following official implementation\n", - " )\n", - "\n", - " # Trim the generation (remove input tokens)\n", - " generated_ids_trimmed = [\n", - " out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)\n", - " ]\n", - "\n", - " # Decode the generated text\n", - " output_text = processor.batch_decode(\n", - " generated_ids_trimmed, \n", - " skip_special_tokens=True, \n", - " clean_up_tokenization_spaces=False\n", - " )\n", - "\n", - " return output_text[0] if output_text else \"\"\n", - "\n", - " def _save_individual_result(\n", - " self,\n", - " output_dir: str,\n", - " sample_idx: int,\n", - " question: str,\n", - " generated_response: str,\n", - " ground_truth: str,\n", - " word_error: float,\n", - " char_error: float\n", - " ):\n", - " \"\"\"Save individual sample result to file.\"\"\"\n", - " output_file = os.path.join(output_dir, f\"sample_{sample_idx}.txt\")\n", - " with open(output_file, 'w', encoding='utf-8') as f:\n", - " f.write(f\"Sample {sample_idx}\\n\")\n", - " f.write(f\"Question: {question}\\n\\n\")\n", - " f.write(f\"Model output:\\n{generated_response.strip()}\\n\\n\")\n", - " f.write(f\"Ground truth:\\n{ground_truth}\\n\\n\")\n", - " f.write(f\"WER: {word_error:.4f}, CER: {char_error:.4f}\")\n", - "\n", - " def _generate_summary_report(\n", - " self,\n", - " results: List[Dict],\n", - " output_dir: str,\n", - " verbose: bool\n", - " ) -> Tuple[Optional[float], Optional[float]]:\n", - " \"\"\"Generate and save summary report.\"\"\"\n", - " if not results:\n", - " if verbose:\n", - " print(\"No results to summarize.\")\n", - " return None, None\n", - "\n", - " df = pd.DataFrame(results)\n", - "\n", - " # Calculate overall averages\n", - " avg_wer = df['wer'].mean()\n", - " avg_cer = df['cer'].mean()\n", - "\n", - " # Save average metrics\n", - " with open(os.path.join(output_dir, \"avg_metrics.txt\"), 'w') as f:\n", - " f.write(f\"Average WER: {avg_wer:.4f}\\n\")\n", - " f.write(f\"Average CER: {avg_cer:.4f}\\n\")\n", - "\n", - " # Save detailed results\n", - " df.to_csv(os.path.join(output_dir, \"detailed_results.csv\"), index=False)\n", - "\n", - " if verbose:\n", - " print(\"\\nResults Summary:\")\n", - " print(f\"Average WER: {avg_wer:.4f}\")\n", - " print(f\"Average CER: {avg_cer:.4f}\")\n", - " print(f\"\\nDetailed results saved to {output_dir}/\")\n", - "\n", - " return avg_wer, avg_cer\n", - "\n", - " def add_to_comparison(self, model_name: str, wer: float, cer: float):\n", - " \"\"\"Add model results to the comparison tracker.\"\"\"\n", - " self.model_comparison_results[model_name] = {\n", - " \"wer\": wer,\n", - " \"cer\": cer\n", - " }\n", - "\n", - " def print_model_comparison(self, save_csv: bool = True, save_plot: bool = True) -> Optional[pd.DataFrame]:\n", - " \"\"\"Print a comparison of all models evaluated so far.\"\"\"\n", - " if not self.model_comparison_results:\n", - " print(\"No model results available for comparison\")\n", - " return None\n", - "\n", - " print(\"\\n==== MODEL COMPARISON REPORT ====\")\n", - "\n", - " # Create a comparison dataframe\n", - " comparison_df = pd.DataFrame({\n", - " \"Model\": list(self.model_comparison_results.keys()),\n", - " \"WER\": [results[\"wer\"] for results in self.model_comparison_results.values()],\n", - " \"CER\": [results[\"cer\"] for results in self.model_comparison_results.values()]\n", - " })\n", - "\n", - " # Sort by WER (best performance first)\n", - " comparison_df = comparison_df.sort_values(\"WER\")\n", - "\n", - " # Display the comparison table\n", - " print(\"\\nComparison Table (sorted by WER):\")\n", - " print(comparison_df.to_string(index=False))\n", - "\n", - " # Save the comparison table\n", - " if save_csv:\n", - " comparison_file = \"model_comparison_results.csv\"\n", - " comparison_df.to_csv(comparison_file, index=False)\n", - " print(f\"\\nComparison table saved to {comparison_file}\")\n", - "\n", - " # Generate a bar chart visualization\n", - " if save_plot:\n", - " self._create_comparison_plot(comparison_df)\n", - "\n", - " return comparison_df\n", - "\n", - " def _create_comparison_plot(self, comparison_df: pd.DataFrame):\n", - " \"\"\"Create and save comparison plot.\"\"\"\n", - " plt.figure(figsize=(12, 6))\n", - "\n", - " # Plot WER\n", - " plt.subplot(1, 2, 1)\n", - " plt.bar(comparison_df[\"Model\"], comparison_df[\"WER\"], color='skyblue')\n", - " plt.title('Word Error Rate Comparison')\n", - " plt.ylabel('WER (lower is better)')\n", - " plt.ylim(bottom=0)\n", - " plt.xticks(rotation=45, ha='right')\n", - "\n", - " # Plot CER\n", - " plt.subplot(1, 2, 2)\n", - " plt.bar(comparison_df[\"Model\"], comparison_df[\"CER\"], color='lightgreen')\n", - " plt.title('Character Error Rate Comparison')\n", - " plt.ylabel('CER (lower is better)')\n", - " plt.ylim(bottom=0)\n", - " plt.xticks(rotation=45, ha='right')\n", - "\n", - " plt.tight_layout()\n", - " plt.savefig('ocr_model_comparison.png')\n", - " plt.show()\n", - "\n", - " print(f\"\\nVisualization saved to ocr_model_comparison.png\")\n", - "\n", - " def get_comparison_results(self) -> Dict[str, Dict[str, float]]:\n", - " \"\"\"Get the current comparison results.\"\"\"\n", - " return self.model_comparison_results.copy()\n", - "\n", - " def clear_comparison_results(self):\n", - " \"\"\"Clear all comparison results.\"\"\"\n", - " self.model_comparison_results.clear()\n", - "\n", - "\n", - "# Convenience functions for backward compatibility\n", - "def evaluate_ocr_model(model, processor, dataset, output_dir=\"ocr_evaluation_results\", **kwargs):\n", - " \"\"\"\n", - " Convenience function that maintains backward compatibility with the original function.\n", - " \"\"\"\n", - " evaluator = OCRModelEvaluator()\n", - " return evaluator.evaluate_model(model, processor, dataset, output_dir, **kwargs)\n", - "\n", - "\n", - "def create_evaluator():\n", - " \"\"\"Create a new OCR evaluator instance.\"\"\"\n", - " return OCRModelEvaluator()" - ] - }, - { - "cell_type": "markdown", - "id": "45f7eeec-ffde-4992-86a7-fd78266219ef", - "metadata": { - "id": "45f7eeec-ffde-4992-86a7-fd78266219ef" - }, - "source": [ - "# Load and finetune gema3 model" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "4777f7fe-8fda-449a-b60b-91dfaa159fda", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4. vLLM: 0.9.1.\n", - " \\\\ /| NVIDIA H100 80GB HBM3. Num GPUs = 1. Max memory: 79.179 GB. Platform: Linux.\n", - "O^O/ \\_/ \\ Torch: 2.7.0+cu126. CUDA: 9.0. CUDA Toolkit: 12.6. Triton: 3.3.0\n", - "\\ / Bfloat16 = TRUE. FA [Xformers = None. FA2 = True]\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": [ - "Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.52, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`.\n" - ] - } - ], - "source": [ - "import torch\n", - "model, processor = FastVisionModel.from_pretrained(\n", - " model_name = \"unsloth/gemma-3-4b-it\",\n", - " #model_name = \"meta-llama/Llama-3.2-11B-Vision-Instruct\",\n", - " max_seq_length = 2048, # Choose any for long context!\n", - " load_in_4bit = True, # 4 bit quantization to reduce memory\n", - " load_in_8bit = False, # [NEW!] A bit more accurate, uses 2x memory\n", - " full_finetuning = False, # [NEW!] We have full finetuning now!\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "bba132b7-c9ba-4f43-bf24-7b782dd00eb4", - "metadata": {}, - "outputs": [], - "source": [ - "ocr_evaluator = OCRModelEvaluator()\n", - "model_comparison_results = {}" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "44cf255a-50b6-445e-85b8-1fe3d8798d1b", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Evaluating OCR performance: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 200/200 [08:01<00:00, 2.41s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Results Summary:\n", - "Average WER: 0.8584\n", - "Average CER: 0.6946\n", - "\n", - "Detailed results saved to base_model_results/\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "# benchmark lora model performance\n", - "model_name = \"Base model\" \n", - "avg_wer, avg_cer = ocr_evaluator.evaluate_model(model=model, processor=processor, dataset=eval_dataset, top_p=0.95, top_k=64, output_dir=\"base_model_results\", max_new_tokens=64, temperature=1.0)\n", - "ocr_evaluator.add_to_comparison(model_name, avg_wer, avg_cer)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "50dda6a4-ede1-4811-82c0-e0a055d12df6", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "You have set `compile_config`, but we are unable to meet the criteria for compilation. Compilation will be skipped.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Here's the transcription of the text in the image:\n", - "\n", - "โ€œBeaucoup d'entre vous savent ร  quel point Jimmy รฉtait pour nous, surtout sa maman.โ€\n" - ] - } - ], - "source": [ - "FastVisionModel.for_inference(model) # Enable for inference!\n", - "\n", - "sample = dataset[1]\n", - "image = sample[\"image\"].convert('RGB')\n", - "messages = [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": [\n", - " {\n", - " \"type\": \"text\",\n", - " \"text\": sample[\"question\"],\n", - " },{\n", - " \"type\": \"image\",\n", - " }\n", - " ],\n", - " },\n", - " ]\n", - "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", - "inputs = processor(\n", - " image,\n", - " input_text,\n", - " add_special_tokens = False,\n", - " return_tensors = \"pt\",\n", - ").to(\"cuda\")\n", - "\n", - "from transformers import TextStreamer\n", - "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", - "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", - " use_cache = True, temperature = 1.5, min_p = 0.1)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "3a2deb57-cd2e-47bf-988e-919d3db4d0b2", - "metadata": { - "id": "3a2deb57-cd2e-47bf-988e-919d3db4d0b2", - "outputId": "3cc5911a-cfe5-43e2-e6ca-dfa4a464dfcb" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unsloth: Making `base_model.model.model.vision_tower.vision_model` require gradients\n" - ] - } - ], - "source": [ - "model = FastVisionModel.get_peft_model(\n", - " model,\n", - " finetune_vision_layers = True, # False if not finetuning vision layers\n", - " finetune_language_layers = True, # False if not finetuning language layers\n", - " finetune_attention_modules = True, # False if not finetuning attention layers\n", - " finetune_mlp_modules = True, # False if not finetuning MLP layers\n", - "\n", - " r = 16, # The larger, the higher the accuracy, but might overfit\n", - " lora_alpha = 16, # Recommended alpha == r at least\n", - " lora_dropout = 0,\n", - " bias = \"none\",\n", - " random_state = 3407,\n", - " use_rslora = False, # We support rank stabilized LoRA\n", - " loftq_config = None, # And LoftQ\n", - " target_modules = \"all-linear\", # Optional now! Can specify a list if needed\n", - " modules_to_save=[\n", - " \"lm_head\",\n", - " \"embed_tokens\",\n", - " ],\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "2c7c4695-e93a-4e6d-a943-690543bcbb72", - "metadata": { - "id": "2c7c4695-e93a-4e6d-a943-690543bcbb72" - }, - "outputs": [], - "source": [ - "from unsloth import is_bf16_supported\n", - "from unsloth.trainer import UnslothVisionDataCollator\n", - "from trl import SFTConfig, SFTTrainer\n", - "FastVisionModel.for_training(model) # Enable for training!\n", - "model.config.use_cache = False\n", - "\n", - "\n", - "args = SFTConfig(\n", - " per_device_train_batch_size = 1,\n", - " gradient_accumulation_steps = 4,\n", - " gradient_checkpointing=True,\n", - " gradient_checkpointing_kwargs = {\"use_reentrant\": False}, # use reentrant checkpointing\n", - " max_grad_norm=0.3, # max gradient norm based on QLoRA paper\n", - " warmup_ratio=0.03,\n", - " max_steps=60,\n", - " #num_train_epochs = 2, # Set this instead of max_steps for full training runs\n", - " learning_rate = 2e-4,\n", - " fp16 = not is_bf16_supported(),\n", - " bf16 = is_bf16_supported(),\n", - " logging_steps = 5,\n", - " save_strategy=\"epoch\",\n", - " optim = \"adamw_torch_fused\",\n", - " weight_decay = 0.01,\n", - " lr_scheduler_type = \"cosine\",\n", - " seed = 3407,\n", - " output_dir = \"gemma3-french-ocr-checkpoints\",\n", - " report_to = \"none\", # For Weights and Biases\n", - "\n", - " # You MUST put the below items for vision finetuning:\n", - " remove_unused_columns = False,\n", - " dataset_text_field = \"\",\n", - " dataset_kwargs = {\"skip_prepare_dataset\": True},\n", - " dataset_num_proc = 4,\n", - " max_seq_length = 2048,\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "37acf3c3-2804-4f95-9b78-fdec749112ce", - "metadata": {}, - "outputs": [], - "source": [ - "from trl import SFTTrainer\n", - "from unsloth.trainer import UnslothVisionDataCollator\n", - "trainer = SFTTrainer(\n", - " model=model,\n", - " args=args,\n", - " train_dataset=train_dataset,\n", - " processing_class=processor.tokenizer,\n", - " data_collator=UnslothVisionDataCollator(model,processor),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "70ccb372-8d17-4076-8b2f-692fca151396", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n", - " \\\\ /| Num examples = 2,000 | Num Epochs = 1 | Total steps = 60\n", - "O^O/ \\_/ \\ Batch size per device = 1 | Gradient accumulation steps = 4\n", - "\\ / Data Parallel GPUs = 1 | Total batch size (1 x 4 x 1) = 4\n", - " \"-____-\" Trainable parameters = 38,497,792/4,000,000,000 (0.96% trained)\n", - "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "
\n", - " \n", - " \n", - " [60/60 02:40, Epoch 0/1]\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
StepTraining Loss
522.401200
105.552700
151.127400
200.705900
250.626100
300.519600
350.530200
400.414300
450.512800
500.401000
550.406500
600.512800

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "trainer_stats = trainer.train()" - ] - }, - { - "cell_type": "markdown", - "id": "fb5aa90d-2f90-4e9f-b99c-5bcba0ff68c3", - "metadata": { - "id": "fb5aa90d-2f90-4e9f-b99c-5bcba0ff68c3" - }, - "source": [ - "# save qlora adapter" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "7fa983e6-d0f7-4b4c-a924-5612b47acb2b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tu aurais dรป voir ces hommes, mรจre.\n" - ] - } - ], - "source": [ - "sample=dataset[9]\n", - "image = sample[\"image\"].convert('RGB')\n", - "messages = [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": [\n", - " {\n", - " \"type\": \"text\",\n", - " \"text\": sample[\"question\"],\n", - " },{\n", - " \"type\": \"image\",\n", - " }\n", - " ],\n", - " },\n", - " ]\n", - "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", - "inputs = processor(\n", - " image,\n", - " input_text,\n", - " add_special_tokens = False,\n", - " return_tensors = \"pt\",\n", - ").to(\"cuda\")\n", - "\n", - "from transformers import TextStreamer\n", - "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", - "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", - " use_cache = True, temperature = 1.5, min_p = 0.1)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "13aaa234-8452-4a60-92bd-624b58ee91ec", - "metadata": { - "id": "13aaa234-8452-4a60-92bd-624b58ee91ec", - "outputId": "22ebd55a-c605-43fa-d564-46556b506cf5" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['unsloth-gemma3-ocr-adapter/processor_config.json']" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.save_pretrained(\"unsloth-gemma3-ocr-adapter\", processor)\n", - "processor.save_pretrained(\"unsloth-gemma3-ocr-adapter\")" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "73b835c5-ea65-4bbe-bc73-8a712759115d", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Evaluating OCR performance: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 200/200 [08:26<00:00, 2.53s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Results Summary:\n", - "Average WER: 0.0451\n", - "Average CER: 0.0084\n", - "\n", - "Detailed results saved to peft_model_results/\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "# benchmark lora model performance\n", - "model_name = \"Peft model\" \n", - "avg_wer, avg_cer = ocr_evaluator.evaluate_model(model=model, processor=processor, dataset=eval_dataset, top_p=0.95, top_k=64, output_dir=\"peft_model_results\", max_new_tokens=64, temperature=1.0)\n", - "ocr_evaluator.add_to_comparison(model_name, avg_wer, avg_cer)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "bc35b36a-e1f9-4c27-812f-54c36083238b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tu aurais dรป voir ces hommes, mรจre.\n" - ] - } - ], - "source": [ - "FastVisionModel.for_inference(model) # Enable for inference! \n", - "\n", - "sample=dataset[9]\n", - "image = sample[\"image\"].convert('RGB')\n", - "messages = [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": [\n", - " {\n", - " \"type\": \"text\",\n", - " \"text\": sample[\"question\"],\n", - " },{\n", - " \"type\": \"image\",\n", - " }\n", - " ],\n", - " },\n", - " ]\n", - "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", - "inputs = processor(\n", - " image,\n", - " input_text,\n", - " add_special_tokens = False,\n", - " return_tensors = \"pt\",\n", - ").to(\"cuda\")\n", - "\n", - "from transformers import TextStreamer\n", - "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", - "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", - " use_cache = True, temperature = 1.5, min_p = 0.1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "c966d45e-6c06-44fd-a98d-c07831bee864", - "metadata": { - "id": "c966d45e-6c06-44fd-a98d-c07831bee864" - }, - "source": [ - "# Merge model" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "c88e0a60-9dc9-43e5-a539-7e3430096bfa", - "metadata": { - "id": "c88e0a60-9dc9-43e5-a539-7e3430096bfa", - "outputId": "7de6ef5a-95d1-4212-dddc-9c24c436f54a" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found HuggingFace hub cache directory: /mnt/disks/unslothai/.cache/huggingface/hub\n", - "Checking cache directory for required files...\n", - "Successfully copied all 2 files from cache to gemma3-merged-finetune-merge-16bit.\n", - "Downloading safetensors index for unsloth/gemma-3-4b-it...\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Unsloth: Merging weights into 16bit: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2/2 [00:23<00:00, 11.69s/it]\n" - ] - } - ], - "source": [ - "# merge default 16 bits\n", - "model.save_pretrained_merged(save_directory=\"gemma3-merged-finetune-merge-16bit\", tokenizer=processor)" - ] - }, - { - "cell_type": "markdown", - "id": "ddfab9db-f358-4372-aece-00997ce2275f", - "metadata": { - "id": "ddfab9db-f358-4372-aece-00997ce2275f" - }, - "source": [ - "# Load Merged model and benchmark" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "322a3a1f-5c5d-4a58-aad0-b348701bbfba", - "metadata": {}, - "outputs": [], - "source": [ - "del model\n", - "del trainer\n", - "torch.cuda.empty_cache()" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "8f7fc197-1d0d-430e-b41d-33d1a9a930e5", - "metadata": { - "colab": { - "referenced_widgets": [ - "933fb595cfa5475b87350d81cae515be" - ] - }, - "id": "8f7fc197-1d0d-430e-b41d-33d1a9a930e5", - "outputId": "d34bbe75-1651-4238-f2e0-e207202b68e9" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4. vLLM: 0.9.1.\n", - " \\\\ /| NVIDIA H100 80GB HBM3. Num GPUs = 1. Max memory: 79.179 GB. Platform: Linux.\n", - "O^O/ \\_/ \\ Torch: 2.7.0+cu126. CUDA: 9.0. CUDA Toolkit: 12.6. Triton: 3.3.0\n", - "\\ / Bfloat16 = TRUE. FA [Xformers = None. FA2 = True]\n", - " \"-____-\" Free license: http://github.com/unslothai/unsloth\n", - "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c5c24481316e4e2f9528e0d5aafe172f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Loading checkpoint shards: 0%| | 0/2 [00:00\"Open" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e83fc6ff-29f2-4a57-9ce4-59d91b43ac3d", - "metadata": { - "editable": true, - "id": "e83fc6ff-29f2-4a57-9ce4-59d91b43ac3d", - "outputId": "396321e7-5726-4cd7-c4bb-64c21cf57f2a", - "tags": [], - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "๐Ÿฆฅ Unsloth: Will patch your computer to enable 2x faster free finetuning.\n", - "forward 1 working and being replaced\n", - "๐Ÿฆฅ Unsloth Zoo will now patch everything to make training faster!\n" - ] - } - ], - "source": [ - "from unsloth import FastVisionModel" - ] - }, - { - "cell_type": "markdown", - "id": "9bca3f87-5973-4d2f-88e8-6de6e05dc4fa", - "metadata": { - "id": "9bca3f87-5973-4d2f-88e8-6de6e05dc4fa" - }, - "source": [ - "# Dataset Preparation" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "12ba9d1e-0ad3-43b7-9a94-fa58f6b1a4f2", - "metadata": { - "colab": { - "referenced_widgets": [ - "7051217239fc4348a65d95767f1e98d0", - "a6dd11a1a22e4c41bd649cf508322401", - "01a1fe43179645acbaec2910a8d5ff2d", - "a921c6279b7643f19c4928c9854488bd", - "302e6cbf2ef64d8b946456091cb16b56", - "1b70e010e5504f94bd2b148cfd77b626", - "fa41a757aebe4b418afe376143320e4f", - "147a55da5c3e4f9993222c6cd7751a40", - "c5651fb5a57d4e22b6f58a2756cda4ef", - "0572e4da10e4407e88e2638b6a167fd1", - "af038a990de44f1e8369ff5248740dee", - "53f7bf7db8634e999cf6c94322e884c1", - "6750a77aaabc4e348812d8babdb9d7cb", - "50f8daf2eb2f4bebb29b931ac736ade8", - "7d1721e68e104b5c8d4379376c99323c", - "8e8920fba6e74dad9cffbcf94e5e1b38", - "997d588c13c84a25b109b3fddd90e29e", - "8dc565d10a564ed4a81e0d6a59ba62ba", - "d4a89e4e7115402c8dc5f53a1b7176ef", - "f15c4d24123c467ebb5f68691d07462d", - "8050bcc159a54d5b9ee8dee02cbfa952", - "fe0c5885e8bb4b36a20131263a305d75", - "13ee540d2ab343898fcce948f14446be", - "4996711556b0436ea27ce3a0e55e140b", - "112149582d594cac822f6e40592d2d52", - "078ab257cd934a68bef8c837afe76485", - "5876b64f425c4b8793e308a426a73ec5", - "a9f7bc8abfff4487a0661a1f3238f320", - "e68a83b665f94657b76aac9822ffd79f", - "f56528805cfc448486092d570bee0391", - "19804f5ee7bc4033b76dc283f487ebd1", - "63b7287e2d3344868ae1cc90b590281c", - "5eb264f87ec14d09a8ec2c913d6fe431", - "d0d6fd80cb914d598733aadea8e4ddce", - "c2867f1657e747048a5693558ecc7ba2", - "5601931dc346429183d74a5eb9314189", - "db3171c9c42d4f238476ad65d632f5c3", - "b824a8c11d0544b7af240000b998d967", - "f3e621d5ef964efaa4f1887628ef0d06", - "4668bf27f7c6400693373506566b1546", - "becc3371483245e5a61e6be5218991aa", - "9abc52c940804a598033e844b8b82657", - "cc137be709514145840f3014010e6629", - "7d8ef2d3e6b444b48d8ea62509a7f00d", - "560852db63294f739d3d0b3c1a03edb7", - "4637b69f099d46df9acb8bef5ec0d4cd", - "6bd89e1206d54e42a7186c2720e88e26", - "54abeab07f854a8ab6eb602e0ac71406", - "49db50b74aec440c95230c33714acbd4", - "b9e8d47fa6264fbfbec94b803eb1a33d", - "6f5c7a7ddf374c8aba44005c643571ae", - "9d592ff3a4074e78a76bc65e6a1f0aa2", - "6617e88a9b514a6e8987ce0d840e96f4", - "7133e325a33c45e8bccd43d4ba632660", - "75ee8ee461cc4725b048d563f7bbf643", - "112e31ace6f2473897d39b4375eef129", - "83102f0bc5bf4e6c8a3df64fff797b73", - "9f79b4b9d81e4ea6906b9e0f3d45670f", - "8bb66957bfce45f58daea73e47baaf44", - "ea774b9f66cb40d9819fb4da074e85d2", - "5cbb1118727e4cc7a73887ea560bb6f2", - "9a68bcb277a34ea4ae0c842fa2831da9", - "8d28c1e7cb0f442e8efb9903b3ad2aeb", - "c0fb1f07491441cea318db3a4ff73ed3", - "f187371f68834986a2ae3cd2f4cd2e49", - "0a60a2617cae49309b37835aacfff186", - "478f5aa3a53748bd8ae6580b21e58018", - "04f63240d673499497dbfd24f59cf82a", - "f9bb4854ad8c470e9a5288325ad29668", - "7ebd689a9f4b41da9597b07abbaec7df", - "4969877761804db39e2f64ed5a2dcdc0", - "0ab08ddf1bea404596d99b875b7364e0", - "200e789e031e44c2ae0d1c5e538de964", - "7334640e5ddb41c887b46e40f4b394f2", - "165190d956f841609da21ed070ca77e6", - "feaec0dc962645aebcacacef60960539", - "c5c3c7f816e4496b8cf40645e5a81270", - "92800f522a9f4e84947053aaf8dc77e8", - "219b0dc0460941e9b82f1dc1d6459e54", - "e498909710854c2dbb42ce4dadec3ad5", - "1fde10729b714fea876541436ed31bb1", - "8e0a3512fa43412787f5b2eb5bec1928", - "590717f51fd44c39a7a5371663d1f02a", - "e0fb3429463c4fa991f78cc4a3d79ffe", - "ff4ee330af114812906926384a706ad1", - "c2e1c5d293ba44c38a1bc22de16268cb", - "d40244ea570b4674aff5e5795954f1b8", - "1357688ec17d4d43b24a8f052e15f22c", - "c2336b8bb73944af947ae10023253cca", - "14e4c628e4f14baeb3183ab3a6812a24", - "4f9f86e71c334163a91e20c8c94df4d7", - "7732cc84c4b64d3991df5c541e462c09", - "bc2e478b6eaa4d91b5f34258ed86c37d", - "044d54cca4e74dd197ab0ce31e4fd3e1", - "bcb3662053194450a29659a5f809b9dc", - "0169a32bf8d34588b3a9c261ab974dbf", - "636f659d5502419fbf20915ccb864210", - "ec4ef80194204ebf96e5cdab6ac5f9ce", - "c0cf4f0bf3f04cff92faaa839f19cccf", - "e972770f40ea4da7ad1c1280465e49ab", - "aa7bd9979bac4f2b9c6b8bf0b0c27e5f", - "331ba200fb7c49e4aa8b33dee546dcb5", - "9e9208fa547f41d9903c2aeab36bf2e5", - "795f36d4aba04c35bade97b88aa09a3f", - "ec6ff265d8854216ba4251b66acde39b", - "e1cc80faa0774492ac3395f53de438c2", - "7edbffd7ff314c3fa995ec1f09b6bd21", - "0a2d6ff094ea4e44aac2df010ebf2aa1", - "1b8e36d19ded47cda8f574af8111c035", - "de163053973d4979bbc402a3b11607f0", - "7221af3dfaa94bb286b6f27c9e4e9a3e", - "8f7f77eac8aa4547b8daacf6e72df839", - "cbdfc7093c494bfeb3f5afb1d2f29dd5", - "8611866d84d044b18b8b222995964574", - "aff9009665e84ccf8ae683da08fa4f74", - "c4b479ffc4a14ecb9e5401940536756b", - "5aa59bf45a8b4ad293f79cd65c1f2287", - "b262ad083653406fa468665231f020f6", - "74f1692c34de478093212d35ec511820", - "f01e4de964f64531bb8bf06ced5c3a92", - "ffdabae4d027474ebe4be7e07ba1749d", - "7c0fd15ee4fd4f5b9af89d664bb58ab3", - "5f0be45aa0f54d9eb2411bc937bbd3c6", - "c27ce07dc8db490688ba5f6343087958", - "85ca9e909fd84f31a4f52c5a4e6cde61", - "d97d29043d324bc7af6bd7b53e29422f", - "64b372638eea4201b614ab319ba9b9ae", - "0d75f8ed36f14c87bcbc9f1ff5ddbc4a", - "f10222285e9541fd9d1db8c881ccc09b", - "18b1cf93232a447f8518471d4a9c1e8c", - "1ffc565aeed74ac996d557b0159b2c33", - "af4717d52e504abfaea0c358ae7e0f76", - "9642104f40cf40da95314a6cd44a5fef", - "e6d55ae7d4ed44efafe27101f02aa8f0", - "a92e898d92a74ce495bf77386dc9f21f", - "fe7e19c7622a47ec8e9e2d9d04500213", - "8805aa5076a24ae9bc223fe6cb910005", - "faba1704c59b4d699931f84b6bfa61aa", - "09ac76be51b24d7e9b9be8f7f6614059", - "b83e93f456bc429dabb682a89e128835", - "b5989b8df12e43fea1afef32ac430af3", - "6a25bc3ab90e4314942c447b08650ca7", - "af62a6cf872e43fd8cdb76f7d6e6df0d", - "985d8e12e67c4d07ab103a2d76f99028", - "63852f3e2eeb493d94e3c34771259db5", - "2262d5545b0b4375820e00c7e613ac92", - "ca842b2763d144aea843b59acbda8022", - "832b2db50bfb4fe1b1ab817c2be1ac01", - "0ac6f176dca842f2ba4e09468ab83043", - "6da2a2d4704b4806aacd771b59a43f84", - "5863661aee18406082b51825d69d0a44", - "27d1e9da5dee45fdb63f6de08ae65143", - "8b9886aa35a54a41a6af2afa6e661fbc", - "bddbcef57c864e6286363e858035a169", - "c8535acf855e41f1abd0d8065ed0680c", - "26c17bb78e9945bba56b3a3ce5a42d0d", - "17962665afef4956af6a6e76f35f5b96", - "0b20e34867a44376aac7d93d02df224c", - "2f938f0f854d48b6ad68b7cd0187e470", - "d4266b9e926c47e1a4ce7dad4b4325b5", - "70f966b6a89244a08ec63a16cc248b70", - "f5846789aab34454a1bfcce453a1df09", - "57f0d36ec289411e80c3a2461605a0a7", - "7deb73e1ee7f458ea32b4fd007c19069", - "a64fba89c9d34d81a526a12f21fcf08f", - "4273ac7e401a44d39c6843af8aa31572", - "d1de4b7ddb4c48d58b8be1051eadf140", - "1e23b909290b4962916925ebf586917e", - "92afa2d3ee1f4a5baa8f6f97f7e71892", - "3163cecaab6f4320be2369199d69b5fb", - "f7bab0d3ef5647ffac774871cc0f504c", - "d6efb37d02ab42a1a60ba8965a8d56ac", - "0a657c05ef7e47289a588646411b4318", - "f8c6f7eed198409e815f5845db51b928", - "5e20cc77b7da40fc9135f3ecca62e197", - "f24a39462b914fe99c542ded294aea04", - "ec935b25b52444f3b74c6d7d33f52122", - "3d411c020fe0409a93da112dcabc783a", - "23593594403e45a7b0244f753bcf5b0c", - "5905ab2a69fc49098aa7035e1c6c261d", - "f9e794c3c31847728edc9804702af29f", - "4cd84aaa9186481cb982d2af7e6a11a3", - "509c37b08f63481e9337f9d9a0e5c5ea", - "78b8db32936c423895488078e5a13ce9", - "eb522a2822e24b2dadbc76d48026cf4a", - "20b23431b2694afc812ed0cde81c7f23", - "a9d9b03863104bcfb1c41a5f112bcc9c", - "ce4e8b0534d34514985e8caa3d544621", - "60c913354b83467f8bf77ba2965967ea", - "c46c568119704de5a8962917e89a5079", - "9f94b485a3fa4aec92b7e8722d870695", - "e549fe82aae648a6a0bd98c431b65b32", - "dc5a8326e1384c29b6fd3d7d31d97954", - "db6e37e5de574e609e186a1c21fbe4ac", - "312b93f39f324225b77478b3eac11915", - "05339d7d916c4152ae95ac84a8237d07", - "657d24eb9a6041b6882ecfa975e2cf96", - "fd7f4340dc59470c89a8eaaef13c0a4c", - "08f4a0fdd81c4cb2bf5446516f40874a", - "8c8e21a7d19e44989840e76bb65f2b5e", - "646fed691bbc4fd5b8b56ec0a8ea505a", - "dd9b725937b94e07b1f722fb2e604132", - "32ad13d2aa544eb58acc0fe50c5f6654", - "b47cff39fc3149b4a0298beb3efdbf1d", - "983409daf43f46c3a6a1e033a530d89d", - "a3349a6ffbc44356a2dc3d0a7f294d22", - "aa755212dcb74aba8be832d2354dbf60", - "11cb86d66c204521b1ed7d610c8c5b84", - "fe56f1dc6e32476ab46a11dda735bf41", - "45c99abc8d444aa7bb97e9b21ddff9dd", - "1b9d61e9d6c14318ba9fce0758ec3c12", - "d55026bb9f964155bd4ebaaad01c971a", - "1f3d289555e24b249a866722a75162ab", - "acddaa31d3d9416ba748faf2622cac12", - "fa12a38d74ef4e03bd2fded049321362", - "6f3adce8869f46e1afed76a3f977d511", - "c9ca3f85df284d46bf9d82a8585a980e", - "c020c75e83a0468380a2d1146b6d3c51", - "3afe75b32aef492f9a3a56709ce200d2", - "48a5d54a5282465696c5e1459a02a9ca", - "2c00ce8b031143c1802564b9669f2e32", - "dd0d9f3c7f42445c8cbc29dc301863d4", - "6dcca1ce0d0748309236a2f9c071c8b2", - "1d2e775366874667a9fe2874910cb4a1", - "7ae6c88b4a1c424e886a0ccda1fc5c40", - "54e9e186fb3f4e76b8e814a0e12ab641", - "8221a569768543fe974c86c7e4ee6575", - "f3adfa816f604bdc9cdfc0216aeb2004", - "f77dac6b4b934bdb9b40677120549a3f", - "3f646621f58c4c4f96452e87429f4f54", - "25ee32d48f5c407eb34959eae01b7b5b", - "68ec097813134d2ba0314e95cb830b5c", - "a798d07b6a3747f9b18d4e68b1df59db", - "0f5e3eed24b342ee83bc1099c01d000d", - "b4592d91c67f4743aada76e476a7d139", - "5f216943827748f3abfad381165e7075", - "eabb9fc975574081b78a0904b7d4954e", - "671589b32ef047e3afb754932496ab8c", - "6d21367f9a53420291e7fb17157b222f", - "1a44b5e08e9f45ab9107b2d057d861bf", - "8be205d92e50498fb2e88ff1d561df44", - "963140e969d2478cb5c59bf2a5a26453", - "72806b37f61447cda790213af48f751a", - "ace8c0fe0e8148dd95bb167681e9a3cd", - "e3ab2529e1474cddba6c7139a8a0e333", - "585257c96cd543ce8ce452a1ba5add28", - "d92a97641bfa4878be01ee0b80a754c7", - "c5bb29716c3541bab1a9ccf1ce793826", - "b3f84185ecba40afad401d0321356d25", - "64874f38d09e46d0a5c68d673c089c8f", - "ee0010858a3044d3bcf1d93948ef18f2", - "27edde6ec9ba43eaae22ba337e714d72", - "65d8a9468fb64327ad94d83519931ba6", - "6565f8ad0e9e4d0ca1a47e037db1b44a", - "523183f7233349a686283624460b3825", - "d696b0b1f19b43a5a83eceac504ac011", - "7d12f4cdb7fb4f1088e7b7ba8d249397", - "75d1a3d949884db9b21729286aa0e631", - "db48a7a20f684b348cc4cec8e7a6cd47", - "7c7bc3b6557d4319aaefe186391f642d", - "d9a6ff2fb7a947b3923aab384082234f", - "c4f6d945e9164b56a6a15ef88f1f3228", - "360409dc5471456baacba72e7a00a3a0", - "4d67ac8d60ab47eb90d06f746af28b54", - "6a101771822f4b8bba51fb6b1ab521d5", - "f0b73af7bd6c48e1a3ed32f5dfcb967f", - "b67e83dc3ca64d839b599b4b873954f1", - "8771e565e29349f3a85f734baf794fac", - "b79f4fa45c0e4623bed283bbd03dd631", - "88689860baed4e9cb6c4c66ef172230b", - "bc4972a0f5f14f00975e8028e810cce6", - "2dcb1a510f264f34b9ae43ee2ba25cef", - "17f99d6aea284d5d86ee1e8132c88091", - "aebe0b9972e64924a03b7cd285b4db82", - "036ea88814ad4c58ba0f19dad8a32563", - "6d359082af44449db8488d71389ef000", - "51fd767beb95414683823b012e79ef0b", - "e0e3849e7a994d5693c5b51ca61c6d40", - "0dd0d00ec5294db99a9307083aaaa6b5", - "4bb6c279794542188be3e695e9feae9a", - "562c596d23884806ad08f1ed74167768", - "2e9d338d534442a2b122b383ebb867ae", - "8cbda26cab1a45af8cf03c8c465e47a9", - "8d61f513e66c4049aa47890b9df5da0c", - "cc29fa0ee239448db172375510a6ab90", - "e11d535c20ae45709652f8f318dc1c39", - "4da7a397e1a94c67a8a9331f9d973742", - "5bf9df8c0d2c4b8a97d6313494249c49", - "4ada248b2ecf4cdd82af32788ae57038", - "0db35e6b4dc04217b667e1a8d95e2f28", - "7222fa82d25c4d2eb5a8fad8f8ce65fe", - "120daeed5c8e42afb7acc37b58dc6752", - "7eb0722228714767bc6c51c9dd533dc9", - "1f1c87bda8a54ceca5837240e8012069", - "d1af63f0f32d425e8f0097af7e76530c", - "0a5037c5afd54bae9e416d5e5a487973", - "c57a1526a40449218a8d6c6c29489cbe", - "c2281693bbbb490d9f15e79079156817", - "52d298be3d57438798c2eb2b8a0fd6f8", - "b167952bad4b468ea6a3e7ed9cb9c142", - "76c93458ff434ad3938d307e0dea6111", - "b869eeeb7e2b4c688e7c2ddf2948ac07", - "bc4b7bfb931b4ddcb982cce850bb5ef3", - "7af4c13555c547a6ab1bb2850bdb2bdb", - "1f7a1272b6ac43cc83910147cbf3c4b2", - "73851764bf8846918e33cb1eb60206b3", - "aa6d57c8e72145b69b3b54f433b206e6", - "8d3aafc33e0d461d96ee87acaa13dc2a", - "316c98a8fb444d9a8f19f87be80ce5ac", - "abd31323e4fc43a48121556e861ef276", - "237e55b3a3c745e3897bb86bab57104d", - "bb28b887bfd84e9a85b0e8536f852eef", - "f6081e4103a846d4bcdfaf273069152f", - "de9a8f6653974b54b7fed5afe653c1ed", - "8d792cc582bc44c2ae20a62792e51f9c", - "cfc7c93895c64a4db718cca436f8aa5e", - "58238c55747a45068c5290f4b6a3de0d", - "002f1e63a5e74c9f8a51a0abacd7c98f", - "9f25254c9bad425dbb62a5958c3ad957", - "0d00081b1c104d6e81cad91213515623", - "49bdac785ca94a10a661b52519fc38a7", - "4cbcc8eb76f64207b882996533ea8b98", - "461b184571d04c669b8a2a83065850d1", - "6fa66c3ac5334696b74e4d1fdbe33735", - "5d1195ae5adc414e9ac8a674e4c1afb8", - "5c327b1c06b24f3c926a74a74e26421a", - "9a5c6544e7b64bc5a7cf5226aa8f71a1", - "88ef4babd66f47b09d9b2fe2d7c6180d", - "9f3cb7c933e84da7b74a0cbb636a21fd", - "efe8db89a81b4a1cbbbec77c0120ad9c", - "7e0fdd74bb224767b33075412cdec5c8", - "ff0677ec2cd0481ba0511d50f109701b", - "2574ba7a2d794fffa3efdce1f6d44edf", - "9d6f99b13d6c41dfbe5a29bf46840ce7", - "c5e796e58340425eb169000dcdcace1d", - "b03f35a18a874a0e869c870f0e502f84", - "8bfd97c65d1642788c104034bfa02821", - "db5a4525a19b49f39130df1cbf76338c", - "59262037c8744138bba0161187479447", - "ca730fc329304a13a1b92a2c230880b4", - "78e7bdcb674142fa94b3f5b104b3937b", - "0a9a352990104a87893e109ba065185d", - "e5de48cab8534dbbbe16e72600476d2a", - "af988da28f3b480cad980314cbd2c497", - "8355a644af774487ad283662235950bc", - "cb4124b1c9594270bbddb839b805c157", - "42a8668c2b7d4a7fa724479f3ca791bd", - "4c839e085dd44ff7897abf2e79034233", - "c875b141bcd548399e5a86ddadd3a296", - "ed64d377ea364088a937ffd099b46042", - "243620cd87194a908f18f07d88c7e2fa", - "26772f6eefa64736a6f761889abf19ac", - "93d03f8fe18c4a7aaa421230c021b2fd", - "27b4e61ecc8e49ee8a14bc255199a921", - "dfa1221fa5b84f6b933adf9cbe816de5", - "3025773d5e7642f1b883239b94106284", - "d63e3ff9f7bb403cb023128390fa7e93", - "bda3ad1df50844c8acaa66dea34ec248", - "0c50a4cb12fd42419797ceca32a44875", - "18ed8583cb8b448b91f011e52684d7a1", - "99f420804f15471f963df6c2b390c955", - "b7e1f5d67a4345debdbd9ce6845ddaec", - "d58cdf0fd91f4180b9d392de79eacda0", - "badb295b4c5d420493cd345fe68a2e02", - "beb4a5aa792d4726aa8d3323af17ddda", - "7e1b1d2d574b4e16889802798c645d34", - "2b72097536c743628fca8765700dcb94", - "117de765b0cd4d40babad6018994526d", - "49ac527bd7b94c9892d022319c706a9c", - "f3b05205f76b4c82a5505c94e1f305b2", - "63cf807e22974c62b2728f7d53840c38", - "4599049b64c14b978f28841e7601e469", - "729e3f41652f4d3b8ea797bdaf7b6d69", - "edc968e2053e4fa397fc8c8bc9b78453", - "115f1452356f499b89662160143fb660", - "a1a37ed448254e4c8bc89fd92c8f7040", - "1e4e6ba1baa64e738a71d4c47db3ab33", - "ecda9e28aa554909b550d4ee15b2da2f", - "3a971bac4b30494391b5c02b89749340", - "3c67ae5fd3d047ac8f37b676080cda16", - "7961235508754fe4a2f64e1268d2eb63", - "e1d4c7c49d57454d91fef60f029480a5", - "5c1eee8f6c8540eeb92540ed06d4463b", - "cf14ba2e218b4ff4b265c2fbf3db70ed", - "71dbe847ce6c429184b53514784603c8", - "7531bf2b1d794a4396015e999a533981", - "5fb685a0a1bd4619930518292089415e", - "286823dc618a40978e2914c33643c502", - "668a6f0128d646f0893cd1252a87aa22", - "b3ce9cf69fe1472aa79e68df2310170f", - "53aceed2624c49d5b0eef3aab3348b15", - "cc3ff740f4784abfa12a3531dcadf224", - "265e7613406146b18ba0072dab5c9ff3", - "f0d8c652bd9a44f48628c8fd6980cc58", - "61c258a5a75b46bd8ee3043d230c3d41", - "ea0fced22c124068a3e49d77780c6224", - "e820e75601874758a011a7da12beec6b", - "21c76a8f2fee4d40a5db21b6f4a78606", - "5acc8272e0d74533834ca2b861297a60", - "6c7e109523b84fc1a561f4f6037eebb8", - "d9de028c32a046ad9190f96a14813a85", - "e5f73de6d68241d59dcb9378775e3e1c", - "9707b351538d4f29931718d5223b40d0", - "d6cf3c9612e845a296015f516378457b", - "c7de9cf652ba49dd9b704e31541ec706", - "1f7a25a8512d430a82dad69156a76c38", - "fa7e72cbd0274917b9b03689cff1e499", - "3dd80f9219f0440495052e3eb036a451", - "d941ec9e27224c5aadc4a7190cd65a3a", - "ebcf3497432d441bb4dc3fe431f79c15", - "f877229daf424ea3a80207fc5268c6e9", - "4d4cb7a9a12f40f994d910c1c90140c5", - "7015879beee24afab430f7929ab081ef", - "0c27fdf9d4964fce9ca00783f82d4cae", - "86adbc9233394a748abff850661d4a48", - "1f223c0f8beb433fbd72ca2968ec05c4", - "c0f9f01c88ad46c9bb2d83ba246dd36f", - "8e54310ee90b469ba1015e9bca0ea3f2", - "30d18011729646d8b66d09e7bda3ce34", - "7ec3c478feb2490ba12259bbb6dc1e16", - "55c5a58dd5cd4df7a81b1a5f899b0fe6", - "b246ef088704488abd7dccb64a4dfe8a", - "b8937036edaf4122a51869db85532480", - "cef4c9ff6d5a4667b733525ff79f31a5", - "12243ee700d6495db6dfada2bd2d20c6", - "aa4ac8fee77b4a0ea88626c11d88927a", - "88d97b7486b644daa0e689b7136d26cd", - "5e9d81e06d1e4ff992e20ab4ec893178", - "e58e12291270488ea2c1c082e9d675cf", - "e7beec8597a74b178340af648d2800ea", - "a3ef5b89ec274bdfa1ecdd183f3de92f", - "eeba79e7bdbe423f95dac5a7f85f4d4d", - "c632675e604d4fa8a69709e549b6fad5", - "166ea3a0d64443d2a047a4db97ace0f4", - "c5fcc02e22614f8582a74194b6568073", - "c87bd9146b7f4c7aad89035ebcdf4bbd", - "1bf90eaa0a494dceb1b4944c57905006", - "27f3afb0c9f14e4c922905fcafaf0ce6", - "1e56449472e9432286b27a77ffbc77e7", - "e88a14a3910f4c158136f6075884ae04", - "db1927de659c46c981a3c4c8baa2e80c", - "a59b0fbf659c4a9a8cafcb7f9bb543db", - "0532be16e6cc4e84acfdc2dd863690f8", - "2b802e0dbe3946bb885c4282661fa6b1", - "3da94777a7684c91833dc822c98bdebc", - "11ea467ae3f440a7b3fc46317878ceb3", - "810434bfcba6436aabc64f472ce80a83", - "f93b451500c14f64b8da79c45c6b29cb", - "1d9e88d19d224252bf7a272a1bdf61ce", - "de7bd228a6eb416187c8a8759b42f25c", - "6b62622727d14dba8e4d4387e8afdcc3", - "15193e30504d481ead96c2f3b1c65c5b", - "bb05861217b94fd3998e032c6bf91e3c", - "f00b3345f1504547b449efe5a7f8fba6", - "da69d29f922a4a8ca0354d33bbc55e8a", - "0ad42c1bc319481d87c3cbe9fafec6a7", - "8e98997cec574b5c859257db1a0e4aff", - "8fca739bdcca4a45b51a65abfac5361f", - "78952538bade49a280a3ca0399bdcec6", - "ca764af7caa041f886f7de767f592ef3", - "4da47b74f4484170b3c24c7bd1ff21fd", - "3a730745e39a483bb4c9034ed155cdc0", - "1bac6203840d4d809e813e70e9055e1e", - "36d566082e424061994818bafcb656e9", - "e40a63bd97f34b48bcc508b1bdeaf964", - "66f8e3b0c0c24655ad88a58bba54944d", - "4a1287f18a2a48f69e344463ee7c8507", - "165e4d0577d84f32baf0eafd1c3f41c0", - "630b1906cf744f9885007b0a94ee1fc7", - "4729a8de72614642b488b1eecb415950", - "c9e3d8560523474daab73f0a05b2f692", - "839c19db5677497abb2ecd98ad8650d5", - "1a43aa51ade34190ab35b88d3f654bc5", - "fd78ed13057e4fbd991e21b84898c63f", - "ee321da4379641c48a252374d7f176b0", - "1981578d7dab4cab8d8a4142ae0bb283", - "71177a557ae14884b1fe707040de48be", - "7b012d50f401446b997a808e6d026745", - "880e48841d3b499ca31b7abe9a404df2", - "dceaec8aa4cb45dc91d6640e719a6f3a", - "d0ef85f47d6e46d8bf117261c4955927", - "691ca77011684000874da00fac019bc3", - "f2f1566a4f974d0c8584bfec50d0a2a8", - "294646f425be46d8b2a517184d8edb7d", - "ceda2e4252284898bebea50b42bf01ef", - "6dd882e5b1044aedbb99ee4d82e8399a", - "ad42a472cad04102973a21b19eb1a1c2", - "d0d78609dde74a809af0d81ac6b770bf", - "55a91ec95812429c8112ef20558ca17c", - "e11bceda0ee4428bae61b2b4c547b4f4", - "395f1eeaf28942059b17e2d83434ced8", - "3fd25bb631f5497caaeb184b043c3ab6", - "73f3cec4f20d4a87960803fbb6c6712a", - "0e0b7e13fb20413389ebbc2e11281906", - "be604a38466a45c182f5bbdf886ffdbf", - "f50b356bd6c844efa43297d22cdc053a", - "fa793d5cb0854c73b283872182afea14", - "c82ef4b59fd5480f817d2f59a5cc113f", - "9e10769dc4ae436c9604f6421b93e6b4", - "0cfeb87fd3054c66ae0810e0a7166479", - "704d2e559cb743868769a7bbf40603f8", - "ff4207c786fd4a238c70d2fffbd7dfe6", - "f01dccc90ad54bc99e3f5d2959ab6800", - "82303c74d5be480da718f32bfd7301fe", - "36dacbcbaa5748999b3b49f01cee149b", - "c16dda2a6cad49ddab73494a1bb24eff", - "f46423db7b944ba7a3d690dd598eb0c4", - "a0e1521fc11842f7868edaf660b43cd1", - "f81692540b27432ab2a8cc2d38939f7c", - "78b3d233f2f349938011779a73662b7a", - "ed93ae2fedca4a2b8c4e2c3d7275cf04", - "9dda4ee7d40242828b420b7e424d9d74", - "12c5260fb31b4765b5c338dd5aa4df3e", - "615d5a7c4afc4f51b4eb8dea348455c5", - "80183f885fb34af1950af04b433afe1a", - "8d3ccc1be7b54915911b7823ffa269e9", - "4296a710cc7b44c59f577a66e0245a48", - "6cb05c60a8b44c9d81f76869156fe6bf", - "149313cd47fb46e886a4fe0ad67cc8ca", - "992320681f074a6dbb2b5b2176e5f283", - "5af79e407a58479aa26fb56bb6528a57", - "76028dc817ca44e798058dfd9e6026a2", - "b107a348b5e041cba439903cc8422f16", - "2cadaadaf66d4c498536db2d97a902bf", - "9417690b1a524de886943827820674b8", - "17ef159cc0b04053a4d7e000a35add3a", - "c7c4b55d98a84f328899626963bade34", - "3b4a1442067543238f1e035969f07374", - "19ed115b38084a908384b484f6d7cb92", - "f35b421692fe42fcb6ef6036e7a25aea", - "b71d3c8cd9e6492c8cdc1d380e38cab8", - "d28626c9200b46bfa756beac0a62c076", - "f40dd70206d1434e9ba8947fc6efeb2d", - "6d5179519acb44ad9ec614b3fe549d1c", - "a6d9879eb523449b9b56019705a341c7", - "dc87662e881542efb1b35ca3af11caa9", - "dd3c819ea76f4783ad90b36576793c90", - "c63ab595f72743f6a66241d39a11cf7a", - "493a5a8326804dd88c9db77a5afb4a8c", - "7d5f3540380c4a25aea23a035cee796f", - "a44dfcc6cdbc4cd29e176e2ebcfb1a70", - "4e247a7f4790458499ea761e56fb2a64", - "1d1ea6baaa4140a1bc0e8aec084b36b4", - "426504f1b66e4b448ca112f66bb64933", - "4da735f1ec58438f8eb147d292cf7521", - "f41f40892f494bf180d410e7e47bf8ca", - "32c0af899d7f45b3a886e02ff18bfd02", - "00a371b694d44e85a1e30ef3fdf999b2", - "1c3918a4a6304e018a0e3e2ed3f80d83", - "22029a9301c9405493115e61b5e09673", - "552a17a5896649c8b060ceacd8f44b69", - "1dda5f9dd3d044c38c0d0a434e8e7723", - "121a972f334b455d9978d7cb73d0184e", - "2718767e45e34f21884a6017afffa4d7", - "2e4127908f1440438a6b5987bddb02af", - "151d62dbbf314cf88faa153d71ec7c9a", - "86e982e8d8c04d849eacd203458bba92", - "1bea5782683d42a6a108a6ac7ce64e5e", - "96547033d0a049d79fd9ed3cf3150d25", - "5a167c725a7f46fdbb1cca24e4398d9a", - "f281142bd3b94e33bf9b9b08d4e22711", - "97a1b1d278a04edab83079ee1a05bc3a", - "0c27ad1ab5f9414a9032137ec392d5a3", - "85e5b5b7870b479b93228a7180963507", - "87f14017fe2142ca9ff5553670656cab", - "5de5588bf2bf4cf784ccf7843c40962f", - "1a91cc1e10d2457d9b992f1c0c871203", - "e671fb12eada4b1b9eb6fb4d57b39189", - "7190a803f2464301a7adac2b6c9f47f2", - "6afc05b14609412bb8ee11833bb9f056", - "598e6a44d25b43c290bfe544ad11710b", - "713fe01a522a49b88e5fa8d5457b33b4", - "90f9c5eeaf24472a90f69575c56f42ba", - "6d9ed12955694511b4a4a942fbf10f8a", - "bdad09e44bfd4afaaea35ed9af6c0063", - "9a5d40d24f9c4def86bb156adbe15f99", - "ccfb8149121d442daf5eb11fb486be8c", - "798f83d089c74c5d994ac60b9348849b", - "bae92963e4c3459f82f2d6f3e7f2a0b2", - "9100566c5cfa4091be117bf1abf9e057", - "89117fb0240d4e4ea18677f52f6c47be", - "af9912968457493fa76eedb6e5ffe459", - "a27dd69930bb4974a920c0139be81c1e", - "dad5b83a9e4c4e478afac0cd537e59a2", - "c8a605adf0184a888e8d168064ebf350", - "13948d4594b34f93a299b471c0498d00", - "8b67d17ff1d74fc7805ac968c1bc9092", - "c0ce48bd3ce44f3bad1c95e3e3755656", - "a7833ca4e21b4e9e8102976d46361403", - "17dc5039afca4063852d91d9e91329f7", - "d27ff9f3405a43eca53397ebe39f4ad8", - "101f5ac9e8c743738bb54393a3f61ab2", - "dc03d56a5ffa49159f2a36bfa4406bc8", - "1fcf944c13974eee97fea6ae86186c43", - "8a26beb8090941c3b6cc94b89aacd3d8", - "c0618aae0f664acdbd8f787e06cbd104", - "a9b3fc18da254aa3b91b4ca7d0a403be", - "e3a8ef1048174cca8ff1b43e7369f5b8", - "21969e3e807b4e1788fc6750e29f3703", - "785f05edf93246a5a5d349c26d819dce", - "182a5cd793944bafaf5d96dd4daff5eb", - "f250f11c0f3f49059f45e56142726dcf", - "c20b5faa0e784d449444edd97100d327", - "b28e965ddcb148999e778f65968a2585", - "fc1a4c0040c34a958988eeef131cb6d1", - "37727ecc029b4c5595d9e488f872f2f3", - "9548e0034c5f448bbbe36cfb73ef8f71", - "1ab5f685dde6477c8b5b70d44826d005", - "9cdf2abf84284a768ccc894329574742", - "e7ab554b60aa445b9210145d64997889", - "211019de85a8401da8daac8117a65661", - "bd71637126eb4a41b0ee7e64820b6b3f", - "9f69ccb5992941b0ba11618a0cdeb37a", - "46f48594039f46949f01012f6422f385", - "cd2d74b4f71a4711bef0410a54692b12", - "e3bdcb432caf419990e2974feb58fdb6", - "474f2ff062c141b4be8e0b25f38ac372", - "c6001759a925469c93d33a27741b4e5e", - "11b0592d6210466d8bb94292b678fb20", - "0093de4412684178b1cbc6df6b751552", - "b56ceda414f44b07a24ea1de04aadb75", - "3e4000ce3b86404c8b23abdcb444f94c", - "02508f26a836433982430ac8f24452bb", - "149e4f5d0a3142388a5d1715879f6869", - "1d6446a1c0fd4d7e885eaba16d1ac852", - "ed8c9e810ee84cc29fd9b6654d36d735", - "ea11ad0cd1ee4e5b92736444e30dc92b", - "75b16c475502414cb3b594f995975be6", - "bf96353f30a648e7a4c937973f27e158", - "8f5e37a8aeb14bc4b494816d8cf218de", - "72a4ecfb47d847259c18ab3cf83e8fb7", - "47ba45902ac3432aaa6ee3212614162a", - "a3eb4369b7a34eca84ef9f3f994aa3c8", - "59d500dbb1664995ad7ed6a82e487842", - "493af2603c71475a9431b3cb117900d2", - "bb99c14acc334711834b69dbf8af0617", - "34f8cbfb8d6b49149730867abe768fb3", - "8006f4182b9940a9add1e82da35eb354" - ], - "base_uri": "https://localhost:8080/", - "height": 1000 - }, - "id": "12ba9d1e-0ad3-43b7-9a94-fa58f6b1a4f2", - "outputId": "6f42309a-c94c-4375-cd63-9700f9cb90ed" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "README.md: 0%| | 0.00/1.20k [00:00 Tuple[Optional[float], Optional[float]]:\n", - " \"\"\"\n", - " Evaluate a Gemma3 model on an OCR dataset.\n", - " \"\"\"\n", - " # Create output directory if it doesn't exist\n", - " os.makedirs(output_dir, exist_ok=True)\n", - "\n", - " # Initialize results storage\n", - " results = []\n", - "\n", - " # Process each sample in the dataset\n", - " for i, sample in enumerate(tqdm(dataset, desc=\"Evaluating OCR performance\", disable=not verbose)):\n", - " try:\n", - " # Extract components from sample\n", - " messages = sample['messages']\n", - "\n", - " # Get ground truth, image, and question, input_messages\n", - " ground_truth, image, question, input_messages = self._extract_sample_components(\n", - " messages, i, verbose\n", - " )\n", - "\n", - " if ground_truth is None or image is None or question is None:\n", - " continue\n", - "\n", - " # Generate model response\n", - " generated_response = self._generate_response(\n", - " model, processor, input_messages, max_new_tokens, temperature, top_p, top_k, do_sample\n", - " )\n", - "\n", - " # Calculate metrics\n", - " word_error = wer(ground_truth, generated_response)\n", - " char_error = cer(ground_truth, generated_response)\n", - "\n", - " # Save individual result\n", - " self._save_individual_result(\n", - " output_dir, i, question, generated_response, ground_truth, word_error, char_error\n", - " )\n", - "\n", - " # Store results for summary\n", - " results.append({\n", - " 'sample_id': i,\n", - " 'wer': word_error,\n", - " 'cer': char_error,\n", - " 'model_output': generated_response.strip(),\n", - " 'ground_truth': ground_truth,\n", - " 'question': question\n", - " })\n", - "\n", - " except Exception as e:\n", - " if verbose:\n", - " print(f\"Error processing sample {i}: {str(e)}\")\n", - " traceback.print_exc()\n", - "\n", - " # Generate summary report\n", - " return self._generate_summary_report(results, output_dir, verbose)\n", - "\n", - " def _extract_sample_components(\n", - " self,\n", - " messages: List[Dict],\n", - " sample_idx: int,\n", - " verbose: bool\n", - " ) -> Tuple[Optional[str], Optional[Any], Optional[str], List[Dict]]:\n", - " \"\"\"Extract ground truth, image, question, and input messages from sample.\"\"\"\n", - "\n", - " # Extract system message (if present)\n", - " system_message = next((msg for msg in messages if msg['role'] == 'system'), None)\n", - "\n", - " # Extract user message with the image and question\n", - " user_message = next((msg for msg in messages if msg['role'] == 'user'), None)\n", - " if not user_message:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No user message found\")\n", - " return None, None, None, []\n", - "\n", - " # Extract assistant message with ground truth\n", - " assistant_message = next((msg for msg in messages if msg['role'] == 'assistant'), None)\n", - " if not assistant_message:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No assistant message (ground truth) found\")\n", - " return None, None, None, []\n", - "\n", - " # Extract ground truth text\n", - " ground_truth = None\n", - " for content_item in assistant_message['content']:\n", - " if content_item['type'] == 'text':\n", - " ground_truth = content_item['text']\n", - " break\n", - "\n", - " if not ground_truth:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No text found in assistant message\")\n", - " return None, None, None, []\n", - "\n", - " # Extract image and question from user message\n", - " image = None\n", - " question = None\n", - "\n", - " for content_item in user_message['content']:\n", - " if content_item['type'] == 'image':\n", - " image = content_item['image']\n", - " # Ensure image is in RGB format\n", - " if hasattr(image, 'convert'):\n", - " image = image.convert('RGB')\n", - " elif content_item['type'] == 'text':\n", - " question = content_item['text']\n", - "\n", - " if not image:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No image found in user message\")\n", - " return None, None, None, []\n", - "\n", - " if not question:\n", - " if verbose:\n", - " print(f\"Skipping sample {sample_idx}: No question found in user message\")\n", - " return None, None, None, []\n", - "\n", - " # Construct messages for the model input (excluding assistant message)\n", - " input_messages = []\n", - " if system_message:\n", - " input_messages.append(system_message)\n", - " input_messages.append(user_message)\n", - "\n", - " return ground_truth, image, question, input_messages\n", - "\n", - " def _process_vision_info(self, messages: List[Dict]) -> List[Image.Image]:\n", - " \"\"\"Extract images from messages in Gemma3 format.\"\"\"\n", - " image_inputs = []\n", - " # Iterate through each conversation\n", - " for msg in messages:\n", - " # Get content (ensure it's a list)\n", - " content = msg.get(\"content\", [])\n", - " if not isinstance(content, list):\n", - " content = [content]\n", - "\n", - " # Check each content element for images\n", - " for element in content:\n", - " if isinstance(element, dict) and (\n", - " \"image\" in element or element.get(\"type\") == \"image\"\n", - " ):\n", - " # Get the image and convert to RGB\n", - " if \"image\" in element:\n", - " image = element[\"image\"]\n", - " else:\n", - " image = element\n", - " if hasattr(image, 'convert'):\n", - " image_inputs.append(image.convert(\"RGB\"))\n", - " else:\n", - " image_inputs.append(image)\n", - " return image_inputs\n", - "\n", - " def _generate_response(\n", - " self,\n", - " model: Any,\n", - " processor: Any,\n", - " input_messages: List[Dict],\n", - " max_new_tokens: int,\n", - " temperature: float,\n", - " top_p: float,\n", - " top_k: int,\n", - " do_sample: bool,\n", - " ) -> str:\n", - " \"\"\"Generate response from the Gemma3 model using the official approach.\"\"\"\n", - "\n", - " # Apply chat template to convert messages to text\n", - " text = processor.apply_chat_template(\n", - " input_messages, tokenize=False, add_generation_prompt=True\n", - " )\n", - "\n", - " # Process the images using the official vision processing function\n", - " image_inputs = self._process_vision_info(input_messages)\n", - "\n", - " # Tokenize the text and process the images\n", - " inputs = processor(\n", - " text=[text],\n", - " images=image_inputs,\n", - " padding=True,\n", - " return_tensors=\"pt\",\n", - " )\n", - "\n", - " # Move the inputs to the device\n", - " inputs = inputs.to(model.device)\n", - "\n", - " # Set up stop tokens (following the official implementation)\n", - " stop_token_ids = [\n", - " processor.tokenizer.eos_token_id,\n", - " processor.tokenizer.convert_tokens_to_ids(\"\")\n", - " ]\n", - "\n", - " # Generate the output with proper parameters\n", - " with torch.inference_mode():\n", - " generated_ids = model.generate(\n", - " **inputs,\n", - " max_new_tokens=max_new_tokens,\n", - " top_p=top_p,\n", - " top_k=top_k,\n", - " do_sample=do_sample,\n", - " temperature=temperature,\n", - " eos_token_id=stop_token_ids,\n", - " disable_compile=True # Following official implementation\n", - " )\n", - "\n", - " # Trim the generation (remove input tokens)\n", - " generated_ids_trimmed = [\n", - " out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)\n", - " ]\n", - "\n", - " # Decode the generated text\n", - " output_text = processor.batch_decode(\n", - " generated_ids_trimmed,\n", - " skip_special_tokens=True,\n", - " clean_up_tokenization_spaces=False\n", - " )\n", - "\n", - " return output_text[0] if output_text else \"\"\n", - "\n", - " def _save_individual_result(\n", - " self,\n", - " output_dir: str,\n", - " sample_idx: int,\n", - " question: str,\n", - " generated_response: str,\n", - " ground_truth: str,\n", - " word_error: float,\n", - " char_error: float\n", - " ):\n", - " \"\"\"Save individual sample result to file.\"\"\"\n", - " output_file = os.path.join(output_dir, f\"sample_{sample_idx}.txt\")\n", - " with open(output_file, 'w', encoding='utf-8') as f:\n", - " f.write(f\"Sample {sample_idx}\\n\")\n", - " f.write(f\"Question: {question}\\n\\n\")\n", - " f.write(f\"Model output:\\n{generated_response.strip()}\\n\\n\")\n", - " f.write(f\"Ground truth:\\n{ground_truth}\\n\\n\")\n", - " f.write(f\"WER: {word_error:.4f}, CER: {char_error:.4f}\")\n", - "\n", - " def _generate_summary_report(\n", - " self,\n", - " results: List[Dict],\n", - " output_dir: str,\n", - " verbose: bool\n", - " ) -> Tuple[Optional[float], Optional[float]]:\n", - " \"\"\"Generate and save summary report.\"\"\"\n", - " if not results:\n", - " if verbose:\n", - " print(\"No results to summarize.\")\n", - " return None, None\n", - "\n", - " df = pd.DataFrame(results)\n", - "\n", - " # Calculate overall averages\n", - " avg_wer = df['wer'].mean()\n", - " avg_cer = df['cer'].mean()\n", - "\n", - " # Save average metrics\n", - " with open(os.path.join(output_dir, \"avg_metrics.txt\"), 'w') as f:\n", - " f.write(f\"Average WER: {avg_wer:.4f}\\n\")\n", - " f.write(f\"Average CER: {avg_cer:.4f}\\n\")\n", - "\n", - " # Save detailed results\n", - " df.to_csv(os.path.join(output_dir, \"detailed_results.csv\"), index=False)\n", - "\n", - " if verbose:\n", - " print(\"\\nResults Summary:\")\n", - " print(f\"Average WER: {avg_wer:.4f}\")\n", - " print(f\"Average CER: {avg_cer:.4f}\")\n", - " print(f\"\\nDetailed results saved to {output_dir}/\")\n", - "\n", - " return avg_wer, avg_cer\n", - "\n", - " def add_to_comparison(self, model_name: str, wer: float, cer: float):\n", - " \"\"\"Add model results to the comparison tracker.\"\"\"\n", - " self.model_comparison_results[model_name] = {\n", - " \"wer\": wer,\n", - " \"cer\": cer\n", - " }\n", - "\n", - " def print_model_comparison(self, save_csv: bool = True, save_plot: bool = True) -> Optional[pd.DataFrame]:\n", - " \"\"\"Print a comparison of all models evaluated so far.\"\"\"\n", - " if not self.model_comparison_results:\n", - " print(\"No model results available for comparison\")\n", - " return None\n", - "\n", - " print(\"\\n==== MODEL COMPARISON REPORT ====\")\n", - "\n", - " # Create a comparison dataframe\n", - " comparison_df = pd.DataFrame({\n", - " \"Model\": list(self.model_comparison_results.keys()),\n", - " \"WER\": [results[\"wer\"] for results in self.model_comparison_results.values()],\n", - " \"CER\": [results[\"cer\"] for results in self.model_comparison_results.values()]\n", - " })\n", - "\n", - " # Sort by WER (best performance first)\n", - " comparison_df = comparison_df.sort_values(\"WER\")\n", - "\n", - " # Display the comparison table\n", - " print(\"\\nComparison Table (sorted by WER):\")\n", - " print(comparison_df.to_string(index=False))\n", - "\n", - " # Save the comparison table\n", - " if save_csv:\n", - " comparison_file = \"model_comparison_results.csv\"\n", - " comparison_df.to_csv(comparison_file, index=False)\n", - " print(f\"\\nComparison table saved to {comparison_file}\")\n", - "\n", - " # Generate a bar chart visualization\n", - " if save_plot:\n", - " self._create_comparison_plot(comparison_df)\n", - "\n", - " return comparison_df\n", - "\n", - " def _create_comparison_plot(self, comparison_df: pd.DataFrame):\n", - " \"\"\"Create and save comparison plot.\"\"\"\n", - " plt.figure(figsize=(12, 6))\n", - "\n", - " # Plot WER\n", - " plt.subplot(1, 2, 1)\n", - " plt.bar(comparison_df[\"Model\"], comparison_df[\"WER\"], color='skyblue')\n", - " plt.title('Word Error Rate Comparison')\n", - " plt.ylabel('WER (lower is better)')\n", - " plt.ylim(bottom=0)\n", - " plt.xticks(rotation=45, ha='right')\n", - "\n", - " # Plot CER\n", - " plt.subplot(1, 2, 2)\n", - " plt.bar(comparison_df[\"Model\"], comparison_df[\"CER\"], color='lightgreen')\n", - " plt.title('Character Error Rate Comparison')\n", - " plt.ylabel('CER (lower is better)')\n", - " plt.ylim(bottom=0)\n", - " plt.xticks(rotation=45, ha='right')\n", - "\n", - " plt.tight_layout()\n", - " plt.savefig('ocr_model_comparison.png')\n", - " plt.show()\n", - "\n", - " print(f\"\\nVisualization saved to ocr_model_comparison.png\")\n", - "\n", - " def get_comparison_results(self) -> Dict[str, Dict[str, float]]:\n", - " \"\"\"Get the current comparison results.\"\"\"\n", - " return self.model_comparison_results.copy()\n", - "\n", - " def clear_comparison_results(self):\n", - " \"\"\"Clear all comparison results.\"\"\"\n", - " self.model_comparison_results.clear()\n", - "\n", - "\n", - "# Convenience functions for backward compatibility\n", - "def evaluate_ocr_model(model, processor, dataset, output_dir=\"ocr_evaluation_results\", **kwargs):\n", - " \"\"\"\n", - " Convenience function that maintains backward compatibility with the original function.\n", - " \"\"\"\n", - " evaluator = OCRModelEvaluator()\n", - " return evaluator.evaluate_model(model, processor, dataset, output_dir, **kwargs)\n", - "\n", - "\n", - "def create_evaluator():\n", - " \"\"\"Create a new OCR evaluator instance.\"\"\"\n", - " return OCRModelEvaluator()" - ] - }, - { - "cell_type": "markdown", - "id": "45f7eeec-ffde-4992-86a7-fd78266219ef", - "metadata": { - "id": "45f7eeec-ffde-4992-86a7-fd78266219ef" - }, - "source": [ - "# Load and finetune gema3 model" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "4777f7fe-8fda-449a-b60b-91dfaa159fda", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 545, - "referenced_widgets": [ - "d1eef6bdbe3d4bb78ef2a16736b32d34", - "55c496da74c74845a35e8f1a4ac2e67d", - "41d7fbc0616049fda691a4e5ae271c59", - "1f2b028fb40846be9e3ac071a966580d", - "ca5d98cb646c4275bb9d14e492f45ef5", - "5cf9c9ac2fe84e6492b1d8597ebd2761", - "25098380d28f4d44b966855fa704cc18", - "e86d0b9c02504595bcba5832c5c81187", - "ce297effb81648efb902e6e277373731", - "5b871dc4911a4608906666d38b41e81a", - "bf8614f8384f4d43b7b5076d72728be8", - "e1ad1b67a5af44459cbe9c017a9dd548", - "4cd9f972fd484440a44fd5c0463a0837", - "4e86953eae8c404baf740c2179f2db4a", - "397b35406ee54e7e9d395879e8b02100", - "704cdc837e294dd5bc6bc2e1327572ec", - "b5c611e165a3463e8cab311be6b50d92", - "50b26cabf40c4a93990f63cb8b1b7eac", - "3757318cfe7f484ca3ee58a93aa86e51", - "6b54908b0e2047fea06c86c0da4de5e5", - "76d7ca472bd841b392039b0822e9075d", - "a218a8f879b24775989613458acef7d0", - "9956c0622f074f1b9aa49df9552995c4", - "dda301f5f4cc415fa9c838b61cc03a1c", - "8f68fd6d20cd4a458d532a2998a2ac86", - "a7b4aca963fc4fecb3cd76487bfa005e", - "5fef441c8ead4d8a847d7bf0fe4e0ee7", - "e7ccdde727724a3f983073db55829a4a", - "40f9581376d64fb3a02c390f8fd28e70", - "3c980011e337453ab7ad5b23aec3f740", - "00b976f13199467ba4ed1974dc0939be", - "5a9cc93c73484a2290146f6cbb03007b", - "c4d249461c14458881ec61dcd1265366", - "47f94cdb685841bb9c52fb5ee4889dbd", - "d428053cd1d54e789dd56069b4534e73", - "e4959808ccfb4e438fcdbb27f3cbcbf7", - "2db711b173404e81bfb322d2f1bf5674", - "6b7a124075d342c292071da7df1ad6f8", - "d3cb7b784052494392bf54efed0e4ceb", - "ccb6eb195f2c4d52b1b9e43786e4c335", - "eb3ecb80ff4c4a808166255b063f1acb", - "5c98a866c8f54789bca2503576ffb48d", - "6941d9f4f5144fe3af0a7c0670c265fe", - "928eb0bb10154c1ea6c485c0829ca601", - "153052ab0f214ccc812f336a8b9fdb10", - "258606f52534426d809a31ca16c83cff", - "664dee44d4db489ebac3f0f300ae358e", - "6be2e0d618de482ab8449fa4d8f3602c", - "9c6948a5931d4e2991599dd8c67ec96a", - "5c08683bba434c8682abf70ef1e4b236", - "12fcc18072474d73b6c7095a9d89ee38", - "cafa418c77a8446fbcf6e1404cddf727", - "d351059bf934403984334a9d8262877b", - "a7cc713d43da44329d34030a74ce129d", - "99612b25241048f6a4fd7c7787a5146a", - "0aea2306a17b4ed1a17a1c0bf84671cb", - "b73617d7fdf042ac8eb1fb921202485f", - "d22663ed41d54def99f8a7c4054073dc", - "ea938db6cecd421f8a86e8cad059b99e", - "0a35fe04ea534cb1928e332ab26e4464", - "e1b08699068e458eb91f7257eb8b67ba", - "bddebac3960d47eda8d14b7a3821a8e6", - "6c9e1a70a2734c1f90cf1d7e27dfe0bc", - "0a24f30660a04e768d9dd42aa058f570", - "adc63922c235442a82eeaa677e567bfa", - "3119e91b42f647a98c68337633245905", - "97166fdcc29941b5ab43c5b0e8a4b4a1", - "625bd8cb2f73454ba3cfdd09243625b2", - "f8bdca37858149449fd6dee994230866", - "c2d86492980f4cd5bda1b23d2bbec2f9", - "601d02a830f64302ad3e7195070afd18", - "b8395091164147978340c8994f868716", - "c02c7f8724f449fe98f43b18e7ac7683", - "150df82d82be4125881b4d3a4aca7481", - "45dec945707449ffbedaf2a0b02d32ec", - "f252cdafd81c47549d312f8d1389571b", - "6d4a408cac5f476486632163f21c3f9f", - "03f9c0dab35c4598bf0df4cf736ed7ec", - "405a61475e554b7dbd93a179142bef04", - "1db4a4d17f4f4fb6bda53edf385f610c", - "88cb4090c9dc416fbbd8e0bf1cb2237a", - "791806ccfaca49f48a3559aeafbbb4cb", - "3f788ccab44247bdba092c09a466fb29", - "13d85f50a1e044a59c8758dbfe876387", - "9c2afc15277b40d0bd457d080d362b38", - "8afa6211f80f4f08b206c41643615e54", - "71a192bbfe824cb4ade2dc9958214b19", - "d31dff526b7e499788c2bde4e762cf6b", - "f34a03fe9aff48b7b73318c4c3637df6", - "b2cfb1f473524d2a959c2bfca4fb5e00", - "560a298e46c848208acb0f2aed84db05", - "867cce2202344b20ae7df65d465633d9", - "e17b530b233a4ccfa88c0fc33ef2e199", - "24fbbff577e743fbbc638c8980a6d2d9", - "35f5a8497baf44c59e6653d911de8e57", - "6146f1b535ec4b128b631e35b0dce301", - "2367eaa0b63143699bce66ceb523d76b", - "e813e17f60f54f3bbc07eabf67f5b9e0", - "a17917337e644feea716ab7d5fb597ea", - "c6e9dc293eec482f8c2ea928ec13edbd", - "74245415239c44ddbd9691cf6e3d0be5", - "a59a4a271ffb4e8ea0120b6079922e81", - "cea087ca10cf4122902ede311be21b62", - "efa352415a314c4385673f71e65a6021", - "220ffbcb06de430d99a049016cf1b637", - "c0fe9034afcf41ceb79fe41e72b4e691", - "ca9b6376e7904dddbdce29bddba01ead", - "e1f8584327ec473cad71eff637e0ff0d", - "f970303663fc409486ad85cab5382365", - "3dee35b1dde04fa8bfdd9e16a60a0fd8", - "8ea08c40ba58415d97b7a21fa2555c12", - "d17c0c915585494daeaf10b92ff32154", - "7cb8697e17c24045b5987759c09ec345", - "0df79ba1c89745bb9148bfdec51cb1b0", - "4fcf4c4618074a798eafdc6c0ce61337", - "fe5f751c66c24b2996b293f5ec32956a", - "f9a949c4ae8b471f862bfe2835cc876f", - "235945dfb09748e9a139bf901566387c", - "ef94f88b1cb643d0ab04802b542036b8", - "7e02819973814f74953d00d4b5126222", - "2f1e3f1615134b2f8a4f15558a259787" - ] - }, - "id": "4777f7fe-8fda-449a-b60b-91dfaa159fda", - "outputId": "557ba751-acfe-4aa2-d90a-735556d3d4af" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Unsloth: Using float32 gradient checkpointing for FORCE_FLOAT32 mode\n", - "==((====))== Unsloth 2025.6.2: Fast Gemma3 patching. Transformers: 4.52.4.\n", - " \\\\ /| Tesla T4. Num GPUs = 1. Max memory: 14.741 GB. Platform: Linux.\n", - "O^O/ \\_/ \\ Torch: 2.6.0+cu124. CUDA: 7.5. CUDA Toolkit: 12.4. Triton: 3.2.0\n", - "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.29.post3. FA2 = False]\n", - " \"-____-\" Free license: http://github.com/unslothai/unsloth\n", - "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n", - "Unsloth: Using float16 precision for gemma3 won't work! Using float32.\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "model.safetensors: 0%| | 0.00/4.56G [00:00\n" - ] - } - ], - "source": [ - "FastVisionModel.for_inference(model) # Enable for inference!\n", - "\n", - "sample = dataset[1]\n", - "\n", - "image = sample[\"image\"].convert('RGB')\n", - "messages = [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": [\n", - " {\n", - " \"type\": \"text\",\n", - " \"text\": sample[\"question\"],\n", - " },{\n", - " \"type\": \"image\",\n", - " }\n", - " ],\n", - " },\n", - " ]\n", - "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", - "inputs = processor(\n", - " image,\n", - " input_text,\n", - " add_special_tokens = False,\n", - " return_tensors = \"pt\",\n", - ").to(\"cuda\")\n", - "\n", - "from transformers import TextStreamer\n", - "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", - "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", - " use_cache = True, temperature = 1.5, min_p = 0.1)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "3a2deb57-cd2e-47bf-988e-919d3db4d0b2", - "metadata": { - "id": "3a2deb57-cd2e-47bf-988e-919d3db4d0b2", - "outputId": "aaeb5c2d-db5a-4394-e2c4-2733b1354860", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Unsloth: Making `base_model.model.model.vision_tower.vision_model` require gradients\n" - ] - } - ], - "source": [ - "model = FastVisionModel.get_peft_model(\n", - " model,\n", - " finetune_vision_layers = True, # False if not finetuning vision layers\n", - " finetune_language_layers = True, # False if not finetuning language layers\n", - " finetune_attention_modules = True, # False if not finetuning attention layers\n", - " finetune_mlp_modules = True, # False if not finetuning MLP layers\n", - "\n", - " r = 16, # The larger, the higher the accuracy, but might overfit\n", - " lora_alpha = 16, # Recommended alpha == r at least\n", - " lora_dropout = 0,\n", - " bias = \"none\",\n", - " random_state = 3407,\n", - " use_rslora = False, # We support rank stabilized LoRA\n", - " loftq_config = None, # And LoftQ\n", - " target_modules = \"all-linear\", # Optional now! Can specify a list if needed\n", - " modules_to_save=[\n", - " \"lm_head\",\n", - " \"embed_tokens\",\n", - " ],\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "2c7c4695-e93a-4e6d-a943-690543bcbb72", - "metadata": { - "id": "2c7c4695-e93a-4e6d-a943-690543bcbb72" - }, - "outputs": [], - "source": [ - "from unsloth import is_bf16_supported\n", - "from unsloth.trainer import UnslothVisionDataCollator\n", - "from trl import SFTConfig, SFTTrainer\n", - "FastVisionModel.for_training(model) # Enable for training!\n", - "model.config.use_cache = False\n", - "\n", - "\n", - "args = SFTConfig(\n", - " per_device_train_batch_size = 1,\n", - " gradient_accumulation_steps = 4,\n", - " gradient_checkpointing=True,\n", - " gradient_checkpointing_kwargs = {\"use_reentrant\": False}, # use reentrant checkpointing\n", - " max_grad_norm=0.3, # max gradient norm based on QLoRA paper\n", - " warmup_ratio=0.03,\n", - " max_steps=60,\n", - " #num_train_epochs = 2, # Set this instead of max_steps for full training runs\n", - " learning_rate = 2e-4,\n", - " fp16 = not is_bf16_supported(),\n", - " bf16 = is_bf16_supported(),\n", - " logging_steps = 5,\n", - " save_strategy=\"epoch\",\n", - " optim = \"adamw_torch_fused\",\n", - " weight_decay = 0.01,\n", - " lr_scheduler_type = \"cosine\",\n", - " seed = 3407,\n", - " output_dir = \"gemma3-french-ocr-checkpoints\",\n", - " report_to = \"none\", # For Weights and Biases\n", - "\n", - " # You MUST put the below items for vision finetuning:\n", - " remove_unused_columns = False,\n", - " dataset_text_field = \"\",\n", - " dataset_kwargs = {\"skip_prepare_dataset\": True},\n", - " dataset_num_proc = 4,\n", - " max_seq_length = 2048,\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "37acf3c3-2804-4f95-9b78-fdec749112ce", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "37acf3c3-2804-4f95-9b78-fdec749112ce", - "outputId": "26384b4e-2f6c-4223-d32a-d1d9dee5a6b7" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Unsloth: Switching to float32 training since model cannot work with float16\n" - ] - } - ], - "source": [ - "from trl import SFTTrainer\n", - "from unsloth.trainer import UnslothVisionDataCollator\n", - "trainer = SFTTrainer(\n", - " model=model,\n", - " args=args,\n", - " train_dataset=train_dataset,\n", - " processing_class=processor.tokenizer,\n", - " data_collator=UnslothVisionDataCollator(model,processor),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "70ccb372-8d17-4076-8b2f-692fca151396", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 556 - }, - "id": "70ccb372-8d17-4076-8b2f-692fca151396", - "outputId": "93f4674e-3fe8-46ce-d08b-a5246c7edd47" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n", - " \\\\ /| Num examples = 2,000 | Num Epochs = 1 | Total steps = 60\n", - "O^O/ \\_/ \\ Batch size per device = 1 | Gradient accumulation steps = 4\n", - "\\ / Data Parallel GPUs = 1 | Total batch size (1 x 4 x 1) = 4\n", - " \"-____-\" Trainable parameters = 38,497,792/4,000,000,000 (0.96% trained)\n", - "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "" - ], - "text/html": [ - "\n", - "

\n", - " \n", - " \n", - " [60/60 13:11, Epoch 0/1]\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
StepTraining Loss
520.030800
104.455900
150.891400
200.677600
250.571900
300.537200
350.535200
400.405400
450.494500
500.407900
550.384700
600.463700

" - ] - }, - "metadata": {} - } - ], - "source": [ - "trainer_stats = trainer.train()" - ] - }, - { - "cell_type": "markdown", - "id": "fb5aa90d-2f90-4e9f-b99c-5bcba0ff68c3", - "metadata": { - "id": "fb5aa90d-2f90-4e9f-b99c-5bcba0ff68c3" - }, - "source": [ - "# save qlora adapter" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "7fa983e6-d0f7-4b4c-a924-5612b47acb2b", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "7fa983e6-d0f7-4b4c-a924-5612b47acb2b", - "outputId": "db180cdd-8a92-4ef9-dd13-2d7929f829eb" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Voulez-vous connaรฎtre cette langue belle et mystรฉrieuse qui est le russe?\n" - ] - } - ], - "source": [ - "sample=dataset[6]\n", - "image = sample[\"image\"].convert('RGB')\n", - "messages = [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": [\n", - " {\n", - " \"type\": \"text\",\n", - " \"text\": sample[\"question\"],\n", - " },{\n", - " \"type\": \"image\",\n", - " }\n", - " ],\n", - " },\n", - " ]\n", - "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", - "inputs = processor(\n", - " image,\n", - " input_text,\n", - " add_special_tokens = False,\n", - " return_tensors = \"pt\",\n", - ").to(\"cuda\")\n", - "\n", - "from transformers import TextStreamer\n", - "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", - "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", - " use_cache = True, temperature = 1.5, min_p = 0.1)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "13aaa234-8452-4a60-92bd-624b58ee91ec", - "metadata": { - "id": "13aaa234-8452-4a60-92bd-624b58ee91ec", - "outputId": "d8ef4ffb-a3cb-40e3-ef23-a143f961598b", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['unsloth-gemma3-ocr-adapter/processor_config.json']" - ] - }, - "metadata": {}, - "execution_count": 22 - } - ], - "source": [ - "model.save_pretrained(\"unsloth-gemma3-ocr-adapter\", processor)\n", - "processor.save_pretrained(\"unsloth-gemma3-ocr-adapter\")" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "73b835c5-ea65-4bbe-bc73-8a712759115d", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "73b835c5-ea65-4bbe-bc73-8a712759115d", - "outputId": "f949b94b-7976-484d-fd88-a7cb398bb185" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "Evaluating OCR performance: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 200/200 [20:46<00:00, 6.23s/it]" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "\n", - "Results Summary:\n", - "Average WER: 0.0475\n", - "Average CER: 0.0085\n", - "\n", - "Detailed results saved to peft_model_results/\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "\n" - ] - } - ], - "source": [ - "# benchmark lora model performance\n", - "model_name = \"Peft model\"\n", - "avg_wer, avg_cer = ocr_evaluator.evaluate_model(model=model, processor=processor, dataset=eval_dataset, top_p=0.95, top_k=64, output_dir=\"peft_model_results\", max_new_tokens=64, temperature=1.0)\n", - "ocr_evaluator.add_to_comparison(model_name, avg_wer, avg_cer)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "bc35b36a-e1f9-4c27-812f-54c36083238b", - "metadata": { - "id": "bc35b36a-e1f9-4c27-812f-54c36083238b", - "outputId": "42394d8f-9818-4bf2-ff91-154ab9685968", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Tuaurais dรป voir ces hommes, mรจre.\n" - ] - } - ], - "source": [ - "sample=dataset[9]\n", - "image = sample[\"image\"].convert('RGB')\n", - "messages = [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": [\n", - " {\n", - " \"type\": \"text\",\n", - " \"text\": sample[\"question\"],\n", - " },{\n", - " \"type\": \"image\",\n", - " }\n", - " ],\n", - " },\n", - " ]\n", - "input_text = processor.apply_chat_template(messages, add_generation_prompt = True)\n", - "inputs = processor(\n", - " image,\n", - " input_text,\n", - " add_special_tokens = False,\n", - " return_tensors = \"pt\",\n", - ").to(\"cuda\")\n", - "\n", - "from transformers import TextStreamer\n", - "text_streamer = TextStreamer(processor.tokenizer, skip_prompt = True)\n", - "_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 128,\n", - " use_cache = True, temperature = 1.5, min_p = 0.1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "c966d45e-6c06-44fd-a98d-c07831bee864", - "metadata": { - "id": "c966d45e-6c06-44fd-a98d-c07831bee864" - }, - "source": [ - "# Merge model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "922f02f5-1c14-4927-a22c-b7efa57324e5", - "metadata": { - "id": "922f02f5-1c14-4927-a22c-b7efa57324e5" - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "c88e0a60-9dc9-43e5-a539-7e3430096bfa", - "metadata": { - "id": "c88e0a60-9dc9-43e5-a539-7e3430096bfa", - "outputId": "9b5d6e21-bd4a-4b93-914c-f66de92a4f73", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 252, - "referenced_widgets": [ - "aaf4dca7fc2043aa9450cda3cac4a035", - "3c5797f551b54b7cbfeb8abae998d0aa", - "dd0d6209659548918f28179b10bb07f3", - "be5684f4cebc4db99ea76c5dbbfef8a5", - "65b3e158093842288ecac2b6e6f5a7d1", - "6c52ec6005b04251b12c2179de74fdb6", - "eb92790c78ea46f8b980f0235ef798bc", - "2db204cc714d43edb27884c8224c0192", - "bb16b9f789664c64a49fe77c4a269b7a", - "a1dbd08fb74349c2a9769171105e337b", - "1121007f078a4f9eae9edc761258bbd0", - "27d6b7e5deeb4371944b28ff4cfbc4f9", - "88d00e895eff48b59264741987e8ae22", - "4bfd10c842fd49558fa55c9aff701751", - "c01279595f894b079a53fc9a27b85065", - "eee4edf3a74949bba86170aa1f9a9d73", - "64bb8860d5a445e9a0692c556386759a", - "2d511c15f15443f5851cb2f7d0f19657", - "b75ad3dc69b148abb1d7e10da0c4cfa8", - "6f4e2f46cf1b4bdda468f7a7698cd4d2", - "b7140418f90b407abec20f7237da867c", - "c4131b63695d4d7eb917b59073376008", - "de3de45141d64ffb826faefe6b226b1a", - "3921056cf27a4a8a9fe2629d709ccee4", - "396c50ab4b15487bb05d56bd9a44ac1a", - "6f26197b12fc4cd6a39a55b6eb7f082c", - "bdff733a77e7491996cc5282b705ec00", - "2142394c3bdc4c65816d28e8a81b45aa", - "0f9bfb2c3a704bdd908253faf2091041", - "8e1440439c0740d88d2922818393dca7", - "edf7763f12c542d7974e1a89451c6018", - "a770c66d46944da7ad82fdae8300b96a", - "854d90236ebc4fb293345a3bb8b136c2" - ] - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Found HuggingFace hub cache directory: /root/.cache/huggingface/hub\n", - "Checking cache directory for required files...\n", - "Cache check failed: model-00001-of-00002.safetensors not found in local cache.\n", - "Not all required files found in cache. Will proceed with downloading.\n", - "Downloading safetensors index for unsloth/gemma-3-4b-it...\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "model.safetensors.index.json: 0%| | 0.00/90.6k [00:00') for convo in convos] - return { "text" : texts, } - -def load_and_compute_8bit_ppl(result_queue, load_in_4bit=False, load_in_8bit=False): - """Load model and compute perplexity in subprocess""" - from unsloth import FastModel - from unsloth.chat_templates import get_chat_template - from perplexity_eval import ppl_model - - # Load model - merged_model, merged_tokenizer = FastModel.from_pretrained( - model_name="./unsloth_out/merged_gemma3_text_model", - max_seq_length=2048, - load_in_4bit=load_in_4bit, - load_in_8bit=load_in_8bit, - ) - # Set up tokenizer - merged_tokenizer = get_chat_template( - merged_tokenizer, - chat_template = "gemma-3", -) - - # Load dataset fresh in subprocess - dataset_ppl = load_dataset("allenai/openassistant-guanaco-reformatted", split="eval") - - # Format the dataset - def formatting_prompts_func(examples): - convos = examples["messages"] - texts = [merged_tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos] - return { "text" : texts, } - dataset_ppl = dataset_ppl.map(formatting_prompts_func, batched=True) - - # Compute perplexity using the passed dataset - ppl_value = ppl_model(merged_model, merged_tokenizer, dataset_ppl) - - - # IMPORTANT: Convert to Python float if it's a tensor - if torch.is_tensor(ppl_value): - ppl_value = ppl_value.cpu().item() # Move to CPU and convert to Python scalar - elif hasattr(ppl_value, 'item'): - ppl_value = ppl_value.item() # Convert numpy or other array types - else: - ppl_value = float(ppl_value) # Ensure it's a float - - # Return only the perplexity value - result_queue.put(ppl_value) - - # Clean up - del merged_model - del merged_tokenizer - del dataset_ppl - torch.cuda.empty_cache() - gc.collect() - -# Main execution code should be wrapped in this guard -if __name__ == "__main__": - mp.set_start_method('spawn', force=True) - - if torch.cuda.is_bf16_supported(): - compute_dtype = torch.bfloat16 - attn_implementation = 'flash_attention_2' - else: - compute_dtype = torch.float16 - attn_implementation = 'sdpa' - - model, tokenizer = FastModel.from_pretrained( - model_name="unsloth/gemma-3-1b-it", - max_seq_length=2048, - dtype=compute_dtype, - load_in_4bit=True, - load_in_8bit=False, - full_finetuning=False, - attn_implementation=attn_implementation - ) - - tokenizer = get_chat_template( - tokenizer, - chat_template = "gemma-3", - ) - - from unsloth.chat_templates import standardize_sharegpt - dataset_train = load_dataset("allenai/openassistant-guanaco-reformatted", split="train") - dataset_ppl = load_dataset("allenai/openassistant-guanaco-reformatted", split="eval") - - dataset_train = dataset_train.map(formatting_prompts_func, batched=True) - dataset_ppl = dataset_ppl.map(formatting_prompts_func, batched=True) - - add_to_comparison("Base model 4 bits", ppl_model(model, tokenizer, dataset_ppl)) - - - model = FastModel.get_peft_model( - model, - finetune_vision_layers = False, # Turn off for just text! - finetune_language_layers = True, # Should leave on! - finetune_attention_modules = True, # Attention good for GRPO - finetune_mlp_modules = True, # SHould leave on always! - - r=16, - #target_modules=['k_proj', 'q_proj', 'v_proj', 'o_proj', "gate_proj", "down_proj", "up_proj"], - target_modules = "all-linear", - lora_alpha=16, - lora_dropout=0, - bias="none", - use_gradient_checkpointing="unsloth", - random_state=3407, - use_rslora=False, - loftq_config=None, - modules_to_save=[ - "lm_head", - "embed_tokens" - ] - ) - - from unsloth import is_bfloat16_supported - - - trainer = SFTTrainer( - model=model, - tokenizer=tokenizer, - train_dataset=dataset_train, - max_seq_length=2048, - packing=False, - args=SFTConfig( - dataset_text_field="text", - per_device_train_batch_size=2, - gradient_accumulation_steps=4, - gradient_checkpointing=True, - gradient_checkpointing_kwargs={"use_reentrant":False}, - warmup_ratio=0.03, - max_steps=40, - learning_rate=3e-4, - fp16=not is_bfloat16_supported(), - bf16=is_bfloat16_supported(), - logging_steps=5, - #optim="adamw_8bit", - optim="adamw_8bit", - lr_scheduler_type="linear", - seed=3407, - output_dir="outputs", - report_to="none", - max_grad_norm=0.3, - dataset_num_proc=2, - ), - ) - - from unsloth.chat_templates import train_on_responses_only - trainer = train_on_responses_only( - trainer, - instruction_part = "user\n", - response_part = "model\n", - ) - - # run training - trainer_stats = trainer.train() - - add_to_comparison("Qlora model", ppl_model(model, tokenizer, dataset_ppl)) - - # saving and merging the model to local disk - print("merge and save to local disk") - model.save_pretrained_merged( - save_directory='./unsloth_out/merged_gemma3_text_model', - tokenizer=tokenizer - ) - - # Clean up - del model - del tokenizer - del trainer - torch.cuda.empty_cache() - gc.collect() - - - # load model from local disk and test - print("Loading merged model in 4 bit for perplexity test") - merged_model, merged_tokenizer = FastModel.from_pretrained( - model_name="./unsloth_out/merged_gemma3_text_model", - max_seq_length=2048, - load_in_4bit=True, - load_in_8bit=False, - ) - - add_to_comparison("merged model load 4bit", ppl_model(merged_model, merged_tokenizer, dataset_ppl)) - - # Clean up - del merged_model - del merged_tokenizer - torch.cuda.empty_cache() - gc.collect() - - - print("Computing 8-bit model perplexity in subprocess...") - result_queue = mp.Queue() - p = mp.Process(target=load_and_compute_8bit_ppl, args=(result_queue, False, True)) - p.start() - p.join() - - ppl_8bit = result_queue.get() - add_to_comparison("merged model loaded 8bits", ppl_8bit) - - print("Loading merged model in 16 bit for perplexity test") - merged_model, merged_tokenizer = FastModel.from_pretrained( - model_name="./unsloth_out/merged_gemma3_text_model", - max_seq_length=2048, - load_in_4bit=False, - load_in_8bit=False, - ) - - add_to_comparison("merged model loaded 16bits", ppl_model(merged_model, merged_tokenizer, dataset_ppl)) - - print_model_comparison() - - # final cleanup - safe_remove_directory("./outputs") - safe_remove_directory("./unsloth_compiled_cache") - safe_remove_directory("./unsloth_out") diff --git a/tests/gemma3_fix_tests/test_gemma3_4b_language_model_perplexity.py b/tests/gemma3_fix_tests/test_gemma3_4b_language_model_perplexity.py deleted file mode 100644 index aeb8b0b1d4..0000000000 --- a/tests/gemma3_fix_tests/test_gemma3_4b_language_model_perplexity.py +++ /dev/null @@ -1,228 +0,0 @@ -from unsloth import FastModel, FastVisionModel, UnslothVisionDataCollator -from unsloth.chat_templates import get_chat_template -from trl import SFTTrainer, SFTConfig -from transformers import DataCollatorForLanguageModeling, DataCollatorForSeq2Seq, TrainingArguments -from datasets import load_dataset, Dataset -import torch -from tqdm import tqdm -import pandas as pd -import multiprocessing as mp -from multiprocessing import Process, Queue -import gc - -# ruff: noqa -import sys -from pathlib import Path - - -REPO_ROOT = Path(__file__).parents[2] -sys.path.insert(0, str(REPO_ROOT)) -print(sys.path) - - -from tests.utils.cleanup_utils import safe_remove_directory -from tests.utils.perplexity_eval import ppl_model, add_to_comparison, print_model_comparison - -# Define helper functions outside of main -def formatting_prompts_func(examples): - convos = examples["messages"] - texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos] - return { "text" : texts, } - -def load_and_compute_8bit_ppl(result_queue, load_in_4bit=False, load_in_8bit=False): - """Load model and compute perplexity in subprocess""" - from unsloth import FastModel - from unsloth.chat_templates import get_chat_template - from tests.utils.perplexity_eval import ppl_model - - # Load model - merged_model, merged_tokenizer = FastModel.from_pretrained( - model_name="./unsloth_out/merged_gemma3_text_model", - max_seq_length=2048, - load_in_4bit=load_in_4bit, - load_in_8bit=load_in_8bit, - ) - # Set up tokenizer - merged_tokenizer = get_chat_template( - merged_tokenizer, - chat_template = "gemma-3", -) - - # Load dataset fresh in subprocess - dataset_ppl = load_dataset("allenai/openassistant-guanaco-reformatted", split="eval") - - # Format the dataset - def formatting_prompts_func(examples): - convos = examples["messages"] - texts = [merged_tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos] - return { "text" : texts, } - dataset_ppl = dataset_ppl.map(formatting_prompts_func, batched=True) - - # Compute perplexity using the passed dataset - ppl_value = ppl_model(merged_model, merged_tokenizer, dataset_ppl) - - - # IMPORTANT: Convert to Python float if it's a tensor - if torch.is_tensor(ppl_value): - ppl_value = ppl_value.cpu().item() # Move to CPU and convert to Python scalar - elif hasattr(ppl_value, 'item'): - ppl_value = ppl_value.item() # Convert numpy or other array types - else: - ppl_value = float(ppl_value) # Ensure it's a float - - # Return only the perplexity value - result_queue.put(ppl_value) - - # Clean up - del merged_model - del merged_tokenizer - del dataset_ppl - torch.cuda.empty_cache() - gc.collect() - -# Main execution code should be wrapped in this guard -if __name__ == "__main__": - mp.set_start_method('spawn', force=True) - - if torch.cuda.is_bf16_supported(): - compute_dtype = torch.bfloat16 - attn_implementation = 'flash_attention_2' - else: - compute_dtype = torch.float16 - attn_implementation = 'sdpa' - - model, tokenizer = FastModel.from_pretrained( - model_name="unsloth/gemma-3-4b-it", - max_seq_length=2048, - dtype=compute_dtype, - load_in_4bit=True, - load_in_8bit=False, - full_finetuning=False, - attn_implementation=attn_implementation - ) - - tokenizer = get_chat_template( - tokenizer, - chat_template = "gemma-3", - ) - - from unsloth.chat_templates import standardize_sharegpt - dataset_train = load_dataset("allenai/openassistant-guanaco-reformatted", split="train") - dataset_ppl = load_dataset("allenai/openassistant-guanaco-reformatted", split="eval") - - dataset_train = dataset_train.map(formatting_prompts_func, batched=True) - dataset_ppl = dataset_ppl.map(formatting_prompts_func, batched=True) - - add_to_comparison("Base model 4 bits", ppl_model(model, tokenizer, dataset_ppl)) - - model = FastModel.get_peft_model( - model, - finetune_vision_layers = False, # Turn off for just text! - finetune_language_layers = True, # Should leave on! - finetune_attention_modules = True, # Attention good for GRPO - finetune_mlp_modules = True, # SHould leave on always! - - r=16, - #target_modules=['k_proj', 'q_proj', 'v_proj', 'o_proj', "gate_proj", "down_proj", "up_proj"], - target_modules = "all-linear", - lora_alpha=16, - lora_dropout=0, - bias="none", - use_gradient_checkpointing="unsloth", - random_state=3407, - use_rslora=False, - loftq_config=None, - modules_to_save=[ - "lm_head", - "embed_tokens" - ] - ) - - from unsloth import is_bfloat16_supported - - trainer = SFTTrainer( - model=model, - tokenizer=tokenizer, - train_dataset=dataset_train, - max_seq_length=2048, - packing=False, - args=SFTConfig( - dataset_text_field="text", - per_device_train_batch_size=2, - gradient_accumulation_steps=4, - gradient_checkpointing=True, - gradient_checkpointing_kwargs={"use_reentrant":False}, - warmup_ratio=0.03, - max_steps=40, - learning_rate=3e-4, - fp16=not is_bfloat16_supported(), - bf16=is_bfloat16_supported(), - logging_steps=5, - #optim="adamw_8bit", - optim="adamw_8bit", - lr_scheduler_type="linear", - seed=3407, - output_dir="outputs", - report_to="none", - max_grad_norm=0.3, - dataset_num_proc=2, - ), - ) - - from unsloth.chat_templates import train_on_responses_only - trainer = train_on_responses_only( - trainer, - instruction_part = "user\n", - response_part = "model\n", - ) - - # run training - trainer_stats = trainer.train() - - add_to_comparison("Qlora model", ppl_model(model, tokenizer, dataset_ppl)) - - # saving and merging the model to local disk - print("merge and save to local disk") - model.save_pretrained_merged( - save_directory='./unsloth_out/merged_gemma3_text_model', - tokenizer=tokenizer - ) - - - # load model from local disk and test - print("Loading merged model in 4 bit for perplexity test") - merged_model, merged_tokenizer = FastModel.from_pretrained( - model_name="./unsloth_out/merged_gemma3_text_model", - max_seq_length=2048, - load_in_4bit=True, - load_in_8bit=False, - ) - - add_to_comparison("merged model load 4bit", ppl_model(merged_model, merged_tokenizer, dataset_ppl)) - - - print("Computing 8-bit model perplexity in subprocess...") - result_queue = mp.Queue() - p = mp.Process(target=load_and_compute_8bit_ppl, args=(result_queue, False, True)) - p.start() - p.join() - - ppl_8bit = result_queue.get() - add_to_comparison("merged model loaded 8bits", ppl_8bit) - - print("Loading merged model in 16 bit for perplexity test") - merged_model, merged_tokenizer = FastModel.from_pretrained( - model_name="./unsloth_out/merged_gemma3_text_model", - max_seq_length=2048, - load_in_4bit=False, - load_in_8bit=False, - ) - - add_to_comparison("merged model loaded 16bits", ppl_model(merged_model, merged_tokenizer, dataset_ppl)) - - print_model_comparison() - - # final cleanup - safe_remove_directory("./outputs") - safe_remove_directory("./unsloth_compiled_cache") - safe_remove_directory("./unsloth_out") diff --git a/tests/gemma3_fix_tests/test_gemma3_grpo_model.py b/tests/gemma3_fix_tests/test_gemma3_grpo_model.py deleted file mode 100644 index 1ae94fc645..0000000000 --- a/tests/gemma3_fix_tests/test_gemma3_grpo_model.py +++ /dev/null @@ -1,802 +0,0 @@ -# -*- coding: utf-8 -*- -"""test_Llama3_1_(3B)_GRPO_LoRA (1).ipynb - -### Unsloth - -""" -# import os -# os.environ['CUDA_LAUNCH_BLOCKING'] = '1' -# os.environ['TORCH_USE_CUDA_DSA'] = '1' -# -# # Add at the beginning of your training script -# import torch -# torch.backends.cuda.matmul.allow_tf32 = False -# torch.backends.cudnn.allow_tf32 = False - -from unsloth import FastLanguageModel -import torch -import sys -from pathlib import Path -import multiprocessing as mp -import gc -from multiprocessing import Queue - -REPO_ROOT = Path(__file__).parents[2] -sys.path.insert(0, str(REPO_ROOT)) - -from tests.utils.cleanup_utils import safe_remove_directory -from tests.utils.aime_eval import evaluate_model_aime, compare_aime_results - - -max_seq_length = 2048 # Can increase for longer reasoning traces -lora_rank = 64 # Larger rank = smarter, but slower - - -def evaluate_merged_model(result_queue, load_in_4bit=False, load_in_8bit=False): - from unsloth import FastLanguageModel - from tests.utils.aime_eval import evaluate_model_aime - max_seq_length = 2048 # Can increase for longer reasoning traces - lora_rank = 64 # Larger rank = smarter, but slower - - model, tokenizer = FastLanguageModel.from_pretrained( - model_name = "./final_merged_model", - max_seq_length = max_seq_length, - load_in_4bit = True, # False for LoRA 16bit - fast_inference = True, # Enable vLLM fast inference - max_lora_rank = lora_rank, - gpu_memory_utilization = 0.8, # Reduce if out of memory - ) - - print(f"\n{'='*60}") - if load_in_4bit: - print("๐Ÿ” EVALUATION Merged model: 4 bits load") - model_type="merged_model_4bits" - elif load_in_8bit: - print("๐Ÿ” EVALUATION Merged model: 8 bits load") - model_type="merged_model_8bits" - else: - print("๐Ÿ” EVALUATION Merged model: 16 bits load") - model_type="merged_model_16bits" - print(f"{'='*60}") - - evaluate_model_aime( - model=model, - tokenizer=tokenizer, - model_type=model_type, - temperature=0.3, - n_sampling=8, - max_tokens=32768, - top_p=0.95, - seed=0 - ) - - result_queue.put(results) - - del model - del tokenizer - torch.cuda.empty_cache() - gc.collect() - - - -# Main execution code should be wrapped in this guard -def training_run(result_queue): - model, tokenizer = FastLanguageModel.from_pretrained( - model_name = "unsloth/gemma-3-1b-it", - max_seq_length = max_seq_length, - load_in_4bit = False, # False for LoRA 16bit - fast_inference = True, # Enable vLLM fast inference - max_lora_rank = lora_rank, - gpu_memory_utilization = 0.8, # Reduce if out of memory - ) - - """### Helper Functions - - -#### Helper functions - Data Prep - """ - - import re - import json - - reasoning_start = "" - reasoning_end = "" - solution_start = "" - solution_end = "" - - def extract_hash_answer(text): - """Extract answer from GSM8K format""" - if "####" not in text: - return None - return text.split("####")[1].strip() - - def prepare_gsm8k_dataset(dataset): - """Format GSM8K dataset for training""" - reasoning_start = "" - reasoning_end = "" - solution_start = "" - solution_end = "" - - system_prompt = ( - f"You are given a problem. Think about the problem and reason step by step. " - f"Place your thinking process between {reasoning_start} and {reasoning_end}. " - f"Then, provide your final numerical solution between {solution_start}{solution_end}" - ) - - def format_gsm8k(example): - return { - "prompt": [ - {"role": "system", "content": system_prompt}, - {"role": "user", "content": example["question"]}, - ], - "answer": extract_hash_answer(example["answer"]), - } - - return dataset.map(format_gsm8k) - - def prepare_limo_dataset(dataset): - """Format LIMO dataset for SFT training""" - if dataset is None: - return None - - system_prompt = """You are a helpful reasoning assistant. When given a problem, think through it step by step and provide your answer in the following format: - - - [Your detailed step-by-step reasoning and solution process] - - - [Your final numerical answer] - """ - - def format_limo(example): - # Create the assistant response - assistant_response = f"\n{example['solution']}\n\n\n{example['answer']}\n" - - # Return a DICTIONARY with the conversation in a field - return { - "prompt": [ # โ† This is the key change - wrap in a dict - {"role": "system", "content": system_prompt}, - {"role": "user", "content": example["question"]}, - {"role": "assistant", "content": assistant_response} - ] - } - - return dataset.map(format_limo) - - print("\nโœ… Dataset preparation functions defined!") - - """#### Helper functions - Evaluation""" - - def get_max_prompt_length(dataset, tokenizer): - """Calculate maximum and average prompt length in dataset""" - print("Analyzing prompt lengths...") - - lengths = dataset.map( - lambda x: { - "tokens": tokenizer.apply_chat_template( - x["prompt"], - add_generation_prompt=True, - tokenize=True - ) - }, - batched=True, - ).map(lambda x: {"length": len(x["tokens"])})["length"] - - max_length = max(lengths) - avg_length = sum(lengths) / len(lengths) - min_length = min(lengths) - - print(f"Prompt lengths - Min: {min_length}, Max: {max_length}, Avg: {avg_length:.1f}") - return max_length, avg_length - - def extract_unsloth_answer(text, start_tag="", end_tag=""): - """Extract answer from Unsloth SOLUTION tags""" - pattern = re.escape(start_tag) + r"(.*?)" + re.escape(end_tag) - matches = re.findall(pattern, text, re.DOTALL) - - if matches: - answer = matches[-1] # Get the last match - answer = re.sub(r"[%$,]", "", answer).strip() - return answer - return "" - - def find_number(search_string): - """Find the last number in a string""" - numbers = re.compile( - r"-?[\d,]*\.?\d+", - re.MULTILINE | re.DOTALL | re.IGNORECASE, - ).findall(search_string) - - if numbers: - return numbers[-1].replace(",", "").strip() - return "" - - def remove_symbols(x: str) -> str: - """Remove commas, percent and dollar symbols""" - if not x: - return "" - return x.replace(",", "").replace("%", "").replace("$", "").strip() - - def get_num_tokens(text, tokenizer_instance): - """Count tokens in text""" - if not text: - return 0 - encoding = tokenizer_instance(text, return_tensors="pt") - return len(encoding["input_ids"][0]) - - def check_format_compliance(text, format_type="unsloth"): - """Check if response follows expected format""" - if format_type == "unsloth": - reasoning_start = "" - reasoning_end = "" - solution_start = "" - solution_end = "" - - pattern = ( - rf"^[\s]*{re.escape(reasoning_start)}.+?{re.escape(reasoning_end)}.*?" - rf"{re.escape(solution_start)}.+?{re.escape(solution_end)}[\s]*$" - ) - else: - return False - - return bool(re.match(pattern, text.strip(), re.DOTALL)) - - def normalize_answer(answer): - """Normalize answer for comparison""" - if not answer: - return "" - - normalized = remove_symbols(str(answer)) - - try: - float_val = float(normalized) - if float_val.is_integer(): - return str(int(float_val)) - else: - return str(float_val) - except (ValueError, TypeError): - return normalized - - def evaluate_answer_correctness(extracted_answer, ground_truth): - """Evaluate answer correctness with multiple criteria""" - if not extracted_answer or not ground_truth: - return False, False, 0.0 - - norm_extracted = normalize_answer(extracted_answer) - norm_ground_truth = normalize_answer(ground_truth) - - if norm_extracted == norm_ground_truth: - return True, True, 1.0 - - try: - extracted_num = float(norm_extracted) - ground_truth_num = float(norm_ground_truth) - - if ground_truth_num != 0: - relative_error = abs(extracted_num - ground_truth_num) / abs(ground_truth_num) - - if relative_error < 0.01: - return True, True, 0.9 - elif relative_error < 0.05: - return False, True, 0.7 - elif relative_error < 0.10: - return False, True, 0.5 - else: - if extracted_num == 0: - return True, True, 1.0 - elif abs(extracted_num) < 0.01: - return False, True, 0.7 - - except (ValueError, TypeError): - if norm_extracted.lower() == norm_ground_truth.lower(): - return True, True, 1.0 - - return False, False, 0.0 - - """#### Reward Functions for GRPO""" - - def match_format_exactly(completions, **kwargs): - """Reward function for exact format matching""" - reasoning_start = "" - reasoning_end = "" - solution_start = "" - solution_end = "" - - pattern = ( - rf"^[\s]*{re.escape(reasoning_start)}.+?{re.escape(reasoning_end)}.*?" - rf"{re.escape(solution_start)}.+?{re.escape(solution_end)}[\s]*$" - ) - - responses = [completion[0]["content"] for completion in completions] - rewards = [3.0 if re.match(pattern, response, re.DOTALL) else 0.0 for response in responses] - return rewards - - def match_format_approximately(completions, **kwargs): - """Reward function for approximate format matching""" - reasoning_start = "" - reasoning_end = "" - solution_start = "" - solution_end = "" - - scores = [] - for completion in completions: - score = 0 - response = completion[0]["content"] - score += 0.5 if response.count(reasoning_start) == 1 else -1.0 - score += 0.5 if response.count(reasoning_end) == 1 else -1.0 - score += 0.5 if response.count(solution_start) == 1 else -1.0 - score += 0.5 if response.count(solution_end) == 1 else -1.0 - scores.append(score) - return scores - - def check_answer_correctness(prompts, completions, answer, **kwargs): - """Reward function for answer correctness""" - def extract_solution_answer(text): - pattern = r"(.*?)" - match = re.search(pattern, text, re.DOTALL) - if match: - return re.sub(r"[%$,]", "", match.group(1)).strip() - return "" - - responses = [completion[0]["content"] for completion in completions] - extracted_responses = [extract_solution_answer(r) for r in responses] - - scores = [] - for guess, true_answer in zip(extracted_responses, answer): - score = 0 - if not guess: - scores.append(0) - continue - - if guess == true_answer: - score += 3.0 - elif guess.strip() == true_answer.strip(): - score += 1.5 - else: - try: - ratio = float(guess) / float(true_answer) - if 0.9 <= ratio <= 1.1: - score += 1.0 - elif 0.8 <= ratio <= 1.2: - score += 0.5 - else: - score -= 1.5 - except: - score -= 1.5 - scores.append(score) - return scores - - print("โœ… Reward functions defined!") - - """#### Main Evaluation Function""" - - import gc - - - - """#### Comparison and Memory Management""" - - def compare_model_results(all_results): - """Generate comprehensive comparison of multiple model results""" - print(f"\n{'='*80}") - print("COMPREHENSIVE MODEL COMPARISON") - print(f"{'='*80}") - - # Main table - print(f"{'Model':<15} {'Format %':<10} {'Exact %':<10} {'Plausible %':<12} {'Confidence':<12}") - print("-" * 80) - - for result in all_results: - print(f"{result['model_type']:<15} " - f"{result['correct_format_pct']:<10.1f} " - f"{result['exact_match_pct']:<10.1f} " - f"{result['plausible_match_pct']:<12.1f} " - f"{result['avg_confidence']:<12.3f}") - - # Improvement analysis - if len(all_results) > 1: - print(f"\n{'='*50}") - print("IMPROVEMENT ANALYSIS") - print(f"{'='*50}") - - base_result = all_results[0] - for result in all_results[1:]: - print(f"\n{result['model_type']} vs {base_result['model_type']}:") - format_improvement = result['correct_format_pct'] - base_result['correct_format_pct'] - exact_improvement = result['exact_match_pct'] - base_result['exact_match_pct'] - plausible_improvement = result['plausible_match_pct'] - base_result['plausible_match_pct'] - - print(f" Format compliance: {format_improvement:+.1f}%") - print(f" Exact matches: {exact_improvement:+.1f}%") - print(f" Plausible matches: {plausible_improvement:+.1f}%") - - # Save comparison - comparison_data = { - "summary": all_results, - "best_model": max(all_results, key=lambda x: x['exact_match_pct']), - } - - with open("model_comparison_comprehensive.json", "w") as f: - json.dump(comparison_data, f, indent=4) - - print(f"\nBest performing model: {comparison_data['best_model']['model_type']} " - f"({comparison_data['best_model']['exact_match_pct']:.1f}% exact matches)") - - def cleanup_memory(): - """Comprehensive memory cleanup""" - print("๐Ÿงน Cleaning up GPU memory...") - for _ in range(10): - torch.cuda.empty_cache() - gc.collect() - - if torch.cuda.is_available(): - allocated = torch.cuda.memory_allocated() / 1024**3 - reserved = torch.cuda.memory_reserved() / 1024**3 - print(f"GPU memory - Allocated: {allocated:.2f} GB, Reserved: {reserved:.2f} GB") - - """#### Data Loading and Preparation""" - - from datasets import load_dataset - - -# Load GSM8K - gsm8k_dataset = load_dataset("openai/gsm8k", "main", split="train") - -# Load LIMO (adjust this based on your access method) - limo_train = load_dataset("GAIR/LIMO", split="train") - -# Prepare datasets - gsm8k_train = prepare_gsm8k_dataset(gsm8k_dataset) - limo_train = prepare_limo_dataset(limo_train) - - - print(f" GSM8K train: {len(gsm8k_train)}") - print(f" LIMO train: {len(limo_train) if limo_train else 0}") - -# Store results - all_results = [] - -# Single temperature evaluation on combined dataset - # results = evaluate_model_aime( - # model=model, - # tokenizer=tokenizer, - # model_type="base", - # temperature=0.3, - # n_sampling=8, - # max_tokens=32768, - # top_p=0.95, - # seed=0 - # ) - # - from unsloth.chat_templates import get_chat_template - - tokenizer = get_chat_template( - tokenizer, - chat_template = "gemma-3", - ) - - def formatting_prompts_func(examples): - convos = examples["prompt"] - texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False).removeprefix('') for convo in convos] - return { "text" : texts, } - - limo_train = limo_train.map(formatting_prompts_func, batched = True,) - - from trl import SFTTrainer - from transformers import DataCollatorForSeq2Seq, TrainingArguments - from unsloth import is_bfloat16_supported - - - print(f"\n{'*'*60}") - print("๐ŸŽฏ STAGE 1: Qlora Fine-Tuning on LIMO") - print(f"{'*'*60}") - - model = FastLanguageModel.get_peft_model( - model, - r = lora_rank, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128 - target_modules = [ - "q_proj", "k_proj", "v_proj", "o_proj", - "gate_proj", "up_proj", "down_proj", - ], # Remove QKVO if out of memory - lora_alpha = lora_rank, - use_gradient_checkpointing = "unsloth", # Enable long context finetuning - random_state = 3407, - ) - - - if limo_train is not None: - trainer = SFTTrainer( - model = model, - tokenizer = tokenizer, - train_dataset = limo_train, - dataset_text_field = "text", - max_seq_length = max_seq_length, - data_collator = DataCollatorForSeq2Seq(tokenizer = tokenizer), - dataset_num_proc = 2, - packing = False, # Can make training 5x faster for short sequences. - args = TrainingArguments( - per_device_train_batch_size = 2, - gradient_accumulation_steps = 4, - warmup_steps = 5, - num_train_epochs = 1, # Set this for 1 full training run. - #max_steps = 60, - learning_rate = 2e-4, - fp16 = not is_bfloat16_supported(), - bf16 = is_bfloat16_supported(), - logging_steps = 1, - optim = "adamw_8bit", - weight_decay = 0.01, - lr_scheduler_type = "linear", - seed = 3407, - output_dir = "outputs", - report_to = "none", # Use this for WandB etc - ), - ) - - - from unsloth.chat_templates import train_on_responses_only - trainer = train_on_responses_only( - trainer, - instruction_part = "user\n", - response_part = "model\n", - ) - - # Train - #print(f"๐Ÿš‚ Starting SFT training on {len(limo_train)} examples...") - #trainer.train() - - # Save checkpoint - #model.save_pretrained("qlora_checkpoint") - #tokenizer.save_pretrained("qlora_checkpoint") - #print("๐Ÿ’พ Qlora checkpoint saved!") - - # Cleanup - del trainer - cleanup_memory() - - #print("โœ… Qlora training completed!") - else: - print("โš ๏ธ Skipping Qlora training - no LIMO dataset available") - -# Cleanup - cleanup_memory() - - global PRINTED_TIMES - PRINTED_TIMES = 0 - global PRINT_EVERY_STEPS - PRINT_EVERY_STEPS = 5 - - match_numbers = re.compile( - solution_start + r".*?([\d\.\,]{1,})", - flags = re.MULTILINE | re.DOTALL - ) - - def check_numbers(prompts, completions, answer, **kwargs): - question = prompts[0][-1]["content"] - responses = [completion[0]["content"] for completion in completions] - - extracted_responses = [ - guess.group(1) - if (guess := match_numbers.search(r)) is not None else None \ - for r in responses - ] - - scores = [] - # Print only every few steps - global PRINTED_TIMES - global PRINT_EVERY_STEPS - if PRINTED_TIMES % PRINT_EVERY_STEPS == 0: - print('*'*20, f"Question:\n{question}", f"\nAnswer:\n{answer[0]}", f"\nResponse:\n{responses[0]}", f"\nExtracted:\n{extracted_responses[0]}") - PRINTED_TIMES += 1 - - for guess, true_answer in zip(extracted_responses, answer): - if guess is None: - scores.append(0) - continue - # Convert to numbers - try: - true_answer = float(true_answer.strip()) - # Remove commas like in 123,456 - guess = float(guess.strip().replace(",", "")) - scores.append(1.5 if guess == true_answer else -0.5) - except: - scores.append(0) - continue - return scores - - print(f"\n{'*'*60}") - print("๐ŸŽฏ STAGE 2: GRPO Fine-Tuning on GSM8K") - print(f"{'*'*60}") - -# Get max prompt length - max_prompt_length, _ = get_max_prompt_length(gsm8k_train, tokenizer) - max_prompt_length = min(max_prompt_length + 10, 512) # Add buffer, cap at 512 - - print(f"Using max_prompt_length: {max_prompt_length}") - - from trl import GRPOConfig, GRPOTrainer - training_args = GRPOConfig( - learning_rate = 5e-6, - weight_decay = 0.1, - warmup_ratio = 0.1, - lr_scheduler_type = "cosine", - optim = "adamw_torch_fused", - logging_steps = 1, - per_device_train_batch_size = 1, - gradient_accumulation_steps = 4, # Increase to 4 for smoother training - num_generations = 8, # Decrease if out of memory - max_prompt_length = max_prompt_length, - max_completion_length = max_seq_length - max_prompt_length, - # num_train_epochs = 1, # Set to 1 for a full training run - #max_steps = 250, - max_steps = 1000, - save_steps = 250, - max_grad_norm = 0.1, - report_to = "none", # Can use Weights & Biases - output_dir = "outputs", - ) - - trainer = GRPOTrainer( - model = model, - processing_class = tokenizer, - reward_funcs = [ - match_format_exactly, - match_format_approximately, - check_answer_correctness, - check_numbers, - ], - args = training_args, - train_dataset = gsm8k_train, - ) - - -# Train - print(f"๐Ÿš‚ Starting GRPO training on {len(gsm8k_train)} examples...") - trainer.train() - -# Save checkpoint - model.save_pretrained("grpo_checkpoint") - tokenizer.save_pretrained("grpo_checkpoint") - print("๐Ÿ’พ GRPO checkpoint saved!") - -# Cleanup - del trainer - del training_args - cleanup_memory() - - print("โœ… GRPO training completed!") - - print(f"\n{'='*60}") - print("๐Ÿ” EVALUATION 3: Final GRPO Model") - print(f"{'='*60}") - - grpo_results = evaluate_model_aime( - model=model, - tokenizer=tokenizer, - model_type="grpo", - temperature=0.3, - n_sampling=8, - max_tokens=32768, - top_p=0.95, - seed=0 - ) - - all_results.append(grpo_results) - print("โœ… Final model evaluation complete!") - - print(f"\n{'='*60}") - print("๐Ÿ’พ SAVING FINAL MODEL") - print(f"{'='*60}") - - # Save as merged model - try: - model.save_pretrained_merged("final_merged_model", tokenizer, save_method="merged_16bit") - print("โœ… Merged model saved to: final_merged_model/") - except Exception as e: - print(f"โš ๏ธ Could not save merged model: {e}") - print("Final model saved as LoRA adapter only") - - print("๐Ÿ’พ Model saving complete!") - - - safe_remove_directory("./unsloth_compiled_cache") - - result_queue.put(results) - - # Clean up - del model - del tokenizer - torch.cuda.empty_cache() - gc.collect() - - - # # Merged model load 16 bits model AIME eval - # result_queue = mp.Queue() - # p = mp.Process(target=evaluate_merged_model, args=(result_queue, False, False)) - # p.start() - # p.join() - # - # merged_16bits = result_queue.get() - # all_results.append(merged_16bits) - # - # # Clean up - # del merged_model - # del merged_tokenizer - # del dataset_ppl - # torch.cuda.empty_cache() - # gc.collect() - # - # safe_remove_directory("./unsloth_compiled_cache") - # - # # Merged model load 8 bits model AIME eval - # - # result_queue = mp.Queue() - # p = mp.Process(target=evaluate_merged_model, args=(result_queue, False, True)) - # p.start() - # p.join() - # - # merged_16bits = result_queue.get() - # all_results.append(merged_16bits) - - - # Merged model load 4 bits AIME eval - # result_queue = mp.Queue() - # p = mp.Process(target=evaluate_merged_model, args=(result_queue, True, False)) - # p.start() - # p.join() - # - # merged_16bits = result_queue.get() - # all_results.append(merged_16bits) - -if __name__ == "__main__": - mp.set_start_method('spawn', force=True) - result_queue = mp.Queue() - all_results = [] - - - # run main finetuning and grpo loop - p = mp.Process(target=training_run, args=(result_queue,)) - p.start() - p.join() - - results = result_queue.get() - all_results = results - - # evaluate merged model loaded 16bits - p = mp.Process(target=evaluate_merged_model, args=(result_queue, False, False)) - p.start() - p.join() - - merged_load_16bits = result_queue.get() - all_results.append(merged_load_16bits) - safe_remove_directory("./unsloth_compiled_cache") - - # Merged model load 8 bits model AIME eval - p = mp.Process(target=evaluate_merged_model, args=(result_queue, False, True)) - p.start() - p.join() - - merged_load_8bits = result_queue.get() - all_results.append(merged_load_8bits) - - safe_remove_directory("./unsloth_compiled_cache") - - # Merged model load 4 bits model AIME eval - p = mp.Process(target=evaluate_merged_model, args=(result_queue, True, False)) - p.start() - p.join() - - merged_load_4bits = result_queue.get() - all_results.append(merged_load_4bits) - - safe_remove_directory("./unsloth_compiled_cache") - - -# AIME-specific comparison function - - print(f"\n{'='*80}") - print("๐Ÿ† FINAL TRAINING PIPELINE RESULTS") - print(f"{'='*80}") - -# Use the AIME-specific comparison - compare_aime_results(all_results) diff --git a/unsloth/models/rl_replacements.py b/unsloth/models/rl_replacements.py index 30dc0d220d..1fe63bb44c 100644 --- a/unsloth/models/rl_replacements.py +++ b/unsloth/models/rl_replacements.py @@ -184,8 +184,9 @@ def grpo_trainer__prepare_inputs(function_name, function): rest = re.sub(r"^[ \t]*free, total = torch.cuda.mem_get_info\(\)\s*\n", "", rest) rest = re.sub(r"^[ \t]*print\(f?\".*cuda.*\"\)\s*\n", "", rest) insert = ( - " if getattr(self.llm.llm_engine.vllm_config.model_config, 'enable_sleep_mode', False):\n" - " self.llm.wake_up()\n" + " if hasattr(self, 'llm'):\n" + " if getattr(self.llm.llm_engine.vllm_config.model_config, 'enable_sleep_mode', False):\n" + " self.llm.wake_up()\n" ) function = function[:sig_end] + insert + rest else: @@ -199,8 +200,9 @@ def grpo_trainer__prepare_inputs(function_name, function): rest = re.sub(r"^[ \t]*free, total = torch.cuda.mem_get_info\(\)\s*\n", "", rest) rest = re.sub(r"^[ \t]*print\(f?\".*cuda.*\"\)\s*\n", "", rest) insert = ( - " if getattr(self.llm.llm_engine.vllm_config.model_config, 'enable_sleep_mode', False):\n" - " self.llm.wake_up()\n" + " if (hasattr(self, 'llm'):\n" + " if getattr(self.llm.llm_engine.vllm_config.model_config, 'enable_sleep_mode', False):\n" + " self.llm.wake_up()\n" ) function = header_and_comments + insert + rest @@ -218,8 +220,9 @@ def grpo_trainer__prepare_inputs(function_name, function): "self.accelerator.unwrap_model(self.model, keep_fp32_wrapper = False)", ) sleep_and_cache = ( - "if getattr(self.llm.llm_engine.vllm_config.model_config, 'enable_sleep_mode', False):\n" - " self.llm.sleep(os.environ.get('VLLM_SLEEP_MODE', 1))\n" + "if hasattr(self, 'llm'):\n" + " if getattr(self.llm.llm_engine.vllm_config.model_config, 'enable_sleep_mode', False):\n" + " self.llm.sleep(os.environ.get('VLLM_SLEEP_MODE', 1))\n" " " ) if re.search(r"\n\s*return ", function): @@ -310,7 +313,7 @@ def grpo_trainer_compute_loss(function_name, function): logits_to_keep = completion_ids.size(1) # we only need to compute the logits for the completion tokens _input_ids = input_ids _logits_to_keep = logits_to_keep - + per_token_logps = self._get_per_token_logps(model, input_ids, attention_mask, logits_to_keep) # Compute the KL divergence between the model and the reference model @@ -330,12 +333,12 @@ def grpo_trainer_compute_loss(function_name, function): # loss = ((per_token_loss * completion_mask).sum(dim=1) / completion_mask.sum(dim=1)).mean() if "old_per_token_logps" in inputs.keys(): old_hidden_states = inputs["old_per_token_logps"] - else: + else: old_hidden_states = None input_ids = input_ids[:, -logits_to_keep:] if per_token_logps is not None: loss, completion_length, mean_kl = grpo_compute_loss_slow( - ref_per_token_logps, per_token_logps, old_hidden_states, input_ids, completion_mask, self.beta, advantages, + ref_per_token_logps, per_token_logps, old_hidden_states, input_ids, completion_mask, self.beta, advantages, loss_type = self.args.loss_type, epsilon_low = self.epsilon_low, epsilon_high = self.epsilon_high, max_completion_length = self.args.max_completion_length, @@ -356,7 +359,7 @@ def grpo_trainer_compute_loss(function_name, function): loss, completion_length, mean_kl = grpo_accumulated_loss( self, _input_ids, logits_to_keep, completion_mask, advantages, old_hidden_states, n_chunks = self.args.unsloth_num_chunks, - ) + ) # Log the metrics # completion_length = self.accelerator.gather_for_metrics(completion_mask.sum(1)).float().mean().item() From dab00ef9a6c329fb29d1b836c06b7a950179d66b Mon Sep 17 00:00:00 2001 From: amrothemich Date: Sat, 21 Jun 2025 05:44:24 -0400 Subject: [PATCH 17/22] Update pyproject.toml (#2778) Switched pyproject license to dictionary type --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 42b5e4cc49..0670f3003a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ dynamic = ["version"] description = "2-5X faster LLM finetuning" readme = "README.md" requires-python = ">=3.9,<3.13" -license = "Apache-2.0" +license = {text = "Apache-2.0"} keywords = ["ai", "llm",] authors = [ {email = "info@unsloth.ai"}, From a9b70d94e490179df12e2bede822f6ac35385aed Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Sat, 21 Jun 2025 06:44:14 -0700 Subject: [PATCH 18/22] Mistral Small 3.2 --- pyproject.toml | 4 ++-- unsloth/models/_utils.py | 2 +- unsloth/models/mapper.py | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0670f3003a..c504530d91 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ triton = [ ] huggingface = [ - "unsloth_zoo>=2025.6.2", + "unsloth_zoo>=2025.6.3", "packaging", "tyro", "transformers>=4.51.3,!=4.47.0,!=4.52.0,!=4.52.1,!=4.52.2", @@ -381,7 +381,7 @@ colab-ampere-torch220 = [ "flash-attn>=2.6.3", ] colab-new = [ - "unsloth_zoo>=2025.6.2", + "unsloth_zoo>=2025.6.3", "packaging", "tyro", "transformers>=4.51.3,!=4.47.0,!=4.52.0,!=4.52.1,!=4.52.2", diff --git a/unsloth/models/_utils.py b/unsloth/models/_utils.py index a6596d4a66..fca6a9c293 100644 --- a/unsloth/models/_utils.py +++ b/unsloth/models/_utils.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "2025.6.3" +__version__ = "2025.6.4" __all__ = [ "SUPPORTS_BFLOAT16", diff --git a/unsloth/models/mapper.py b/unsloth/models/mapper.py index 11ec650f5f..fdf95691a9 100644 --- a/unsloth/models/mapper.py +++ b/unsloth/models/mapper.py @@ -874,6 +874,11 @@ __INT_TO_FLOAT_MAPPER = \ "mistralai/Magistral-Small-2506", "unsloth/Magistral-Small-2506-bnb-4bit", ), + "unsloth/Mistral-Small-3.2-24B-Instruct-2506-unsloth-bnb-4bit" : ( + "unsloth/Mistral-Small-3.2-24B-Instruct-2506", + "mistralai/Mistral-Small-3.2-24B-Instruct-2506", + "unsloth/Mistral-Small-3.2-24B-Instruct-2506-bnb-4bit", + ), } INT_TO_FLOAT_MAPPER = {} From 3e75f210869904878d5e1e58f4d8f473ee3804cb Mon Sep 17 00:00:00 2001 From: simpissa <91391384+simpissa@users.noreply.github.com> Date: Sat, 21 Jun 2025 23:58:06 -0500 Subject: [PATCH 19/22] Fix for grpo_compute_loss_slow (#2702) * slice last logit * move slicing --- unsloth/models/rl_replacements.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/unsloth/models/rl_replacements.py b/unsloth/models/rl_replacements.py index 1fe63bb44c..96e256b653 100644 --- a/unsloth/models/rl_replacements.py +++ b/unsloth/models/rl_replacements.py @@ -337,6 +337,8 @@ def grpo_trainer_compute_loss(function_name, function): old_hidden_states = None input_ids = input_ids[:, -logits_to_keep:] if per_token_logps is not None: + ref_per_token_logps = ref_per_token_logps[:, :-1, :] + per_token_logps = per_token_logps[:, :-1, :] loss, completion_length, mean_kl = grpo_compute_loss_slow( ref_per_token_logps, per_token_logps, old_hidden_states, input_ids, completion_mask, self.beta, advantages, loss_type = self.args.loss_type, From 8aa0a2dc374596c3c7fc1f7534d6609185ff434b Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Sat, 21 Jun 2025 22:14:21 -0700 Subject: [PATCH 20/22] Fix DAPO, TRL 0.19.0 --- unsloth/models/rl.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/unsloth/models/rl.py b/unsloth/models/rl.py index 69785be206..8ebb5c824b 100644 --- a/unsloth/models/rl.py +++ b/unsloth/models/rl.py @@ -471,6 +471,7 @@ def _patch_trl_rl_trainers(trainer_file = "grpo_trainer"): "num_generations" : 8, "top_k" : None, "vllm_mode" : "colocate", + "generation_kwargs" : {}, } for k, v in replacements.items(): x = f"{k}( = [^,\n]{{1,}})?,\n" @@ -510,6 +511,8 @@ def _patch_trl_rl_trainers(trainer_file = "grpo_trainer"): # Check for loss_type = dr_grpo and scale_rewards for GRPO if "loss_type" in call_args and "scale_rewards" in call_args: + # See https://github.com/huggingface/trl/issues/3130#issuecomment-2746947835 + # DAPO uses per token loss so BNPO loss used check_dr_grpo = \ "if loss_type.lower() == 'dr_grpo':\n"\ " loss_type = 'dr_grpo'\n"\ @@ -519,13 +522,16 @@ def _patch_trl_rl_trainers(trainer_file = "grpo_trainer"): " if scale_rewards == None:\n"\ " scale_rewards = True\n"\ " elif scale_rewards == True:\n"\ - " print('The Dr GRPO paper recommends setting `scale_rewards` to False! Will override. Set it to `None` to force False.')\n"\ + " print('Unsloth: The Dr GRPO paper recommends setting `scale_rewards` to False! Will override. Set it to `None` to force False.')\n"\ " scale_rewards = False\n"\ "elif loss_type.lower() == 'dapo':\n"\ - " print('The DAPO paper recommends `mask_truncated_completions = True`')\n"\ - " print('The DAPO paper recommends `epsilon_high = 0.28`')\n"\ + " print('Unsloth: The DAPO paper recommends `mask_truncated_completions = True`')\n"\ + " print('Unsloth: The DAPO paper recommends `epsilon_high = 0.28`')\n"\ + " print('Unsloth: The DAPO paper recommends setting `beta = 0.0` to remove the KL term')\n"\ " mask_truncated_completions = True\n"\ " epsilon_high = 0.28\n"\ + " beta = 0.0\n"\ + " loss_type = 'bnpo'" "\n" extra_args += check_dr_grpo pass From d00ebe5fe67c73f68f94fba5931909941bcc5eb8 Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Sat, 21 Jun 2025 22:20:32 -0700 Subject: [PATCH 21/22] Update rl_replacements.py --- unsloth/models/rl_replacements.py | 36 ++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/unsloth/models/rl_replacements.py b/unsloth/models/rl_replacements.py index 96e256b653..df95f73fc5 100644 --- a/unsloth/models/rl_replacements.py +++ b/unsloth/models/rl_replacements.py @@ -251,7 +251,7 @@ def grpo_trainer__get_per_token_logps(function_name, function): if function_name != "_get_per_token_logps": return function def _get_per_token_logps(self, model, input_ids, attention_mask, logits_to_keep, calc_logprob_flag = None): - if os.environ.get('UNSLOTH_USE_NEW_MODEL', '0') == '0' and not calc_logprob_flag: + if os.environ.get('UNSLOTH_USE_NEW_MODEL', '0') == '0' and not calc_logprob_flag: return None # Unsloth efficient GRPO # Otherwise, calculate normally: if not hasattr(self, '_autocast_dtype'): @@ -337,29 +337,49 @@ def grpo_trainer_compute_loss(function_name, function): old_hidden_states = None input_ids = input_ids[:, -logits_to_keep:] if per_token_logps is not None: - ref_per_token_logps = ref_per_token_logps[:, :-1, :] - per_token_logps = per_token_logps[:, :-1, :] + + ref_per_token_logps = ref_per_token_logps[:, :-1, :] # (B, L-1, V), exclude the last logit: it corresponds to the next token pred + per_token_logps = per_token_logps[:, :-1, :] # (B, L-1, V), exclude the last logit: it corresponds to the next token pred + loss, completion_length, mean_kl = grpo_compute_loss_slow( - ref_per_token_logps, per_token_logps, old_hidden_states, input_ids, completion_mask, self.beta, advantages, + ref_per_token_logps, + per_token_logps, + old_hidden_states, + input_ids, + completion_mask, + self.beta, + advantages, loss_type = self.args.loss_type, - epsilon_low = self.epsilon_low, epsilon_high = self.epsilon_high, + epsilon_low = self.epsilon_low, + epsilon_high = self.epsilon_high, max_completion_length = self.args.max_completion_length, delta = self.args.delta, ) else: if hasattr(self.args, "loss_type"): loss, completion_length, mean_kl = grpo_accumulated_loss( - self, _input_ids, logits_to_keep, completion_mask, advantages, old_hidden_states, + self, + _input_ids, + logits_to_keep, + completion_mask, + advantages, + old_hidden_states, n_chunks = self.args.unsloth_num_chunks, loss_type = self.args.loss_type, - epsilon_low = self.epsilon_low, epsilon_high = self.epsilon_high, + epsilon_low = self.epsilon_low, + epsilon_high = self.epsilon_high, max_completion_length = self.args.max_completion_length, delta = self.args.delta, ) else: # to ensure backwards compatibility with trl 0.15.2 and maybe even 0.17 loss, completion_length, mean_kl = grpo_accumulated_loss( - self, _input_ids, logits_to_keep, completion_mask, advantages, old_hidden_states, + self, + _input_ids, + logits_to_keep, + completion_mask, + advantages, + old_hidden_states, n_chunks = self.args.unsloth_num_chunks, ) From 016b4bff348a9d7c6ba6321ee8d68a682ed6ff2c Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Sat, 21 Jun 2025 22:20:46 -0700 Subject: [PATCH 22/22] Update _utils.py --- unsloth/models/_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unsloth/models/_utils.py b/unsloth/models/_utils.py index fca6a9c293..c6156fa468 100644 --- a/unsloth/models/_utils.py +++ b/unsloth/models/_utils.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "2025.6.4" +__version__ = "2025.6.5" __all__ = [ "SUPPORTS_BFLOAT16",