commit a0ce9f2c952aaaead75e2506d01614c0b3e9905d Author: ModelHub XC Date: Tue Jun 16 06:59:17 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: pymlex/qwen3-4b-gsm8k Source: Original Platform diff --git a/.eval_results/gsm8k.yaml b/.eval_results/gsm8k.yaml new file mode 100644 index 0000000..e90cfd6 --- /dev/null +++ b/.eval_results/gsm8k.yaml @@ -0,0 +1,8 @@ +- dataset: + id: openai/gsm8k + task_id: gsm8k + config: main + split: test + value: 0.095527 + date: "2026-05-09" + notes: "greedy, no-tools, local eval" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..52373fe --- /dev/null +++ b/.gitattributes @@ -0,0 +1,36 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..4edf4a3 --- /dev/null +++ b/README.md @@ -0,0 +1,177 @@ +--- +library_name: transformers +license: gpl-3.0 +datasets: +- openai/gsm8k +language: +- en +metrics: +- exact_match +base_model: +- MegaScience/Qwen3-4B-MegaScience +pipeline_tag: text-generation +--- + +# Qwen3-4B-MegaScience GSM8K fine-tune + +## Overview + +`MegaScience/Qwen3-4B-MegaScience` is a 4B Qwen3 checkpoint. We fine-tuned it on GSM8K, a grade-school math dataset with calculation annotations. The model learns to keep the reasoning trace in `` and the final result in ``. A sample training target looks like this: + +```text + +She sells 16 - 3 - 4 = 9 eggs each day. +She makes 9 * 2 = 18. + + +18 + +```` + +## Dataset + +The training data comes from the official `openai/gsm8k` `main` split. Each example contains a question and a worked solution. The final answer is taken from the `####` line and moved into the `` block during formatting. The split is `95/5` from the official train split: + +* Train: `7,099` samples +* Validation: `374` samples +* Test: `1,319` samples + +The maximum sequence length is `768`. The token-length distribution: + +![output_10_0](https://cdn-uploads.huggingface.co/production/uploads/6957bafe54c6b170be4df9cb/8Npjy6HLV7DdqV15X7PJ8.png) + + +## Training + +Fine-tuning was performed with LoRA and supervised fine-tuning on a single RTX 5090. + +Training settings: + +* GPU: NVIDIA GeForce RTX 5090 +* VRAM: 31.36 GB +* CPU: Ryzen 9 9950X +* RAM: 62 GB + +Training configuration: + +* max sequence length: `768` +* batch size: `4` +* gradient accumulation: `8` +* epochs: `1` +* learning rate: `2e-4` +* warmup steps: `20` +* scheduler: cosine +* optimiser: `adamw_torch` +* LoRA rank: `16` +* LoRA alpha: `32` +* LoRA dropout: `0.05` + +## Loss and validation curves + +Training loss and validation loss move down during the run and then settle near a stable plateau: + +![download](https://cdn-uploads.huggingface.co/production/uploads/6957bafe54c6b170be4df9cb/IJ4BnJrXsDT-BAarODB8S.png) + +A logarithmic view: + +![download](https://cdn-uploads.huggingface.co/production/uploads/6957bafe54c6b170be4df9cb/w3n_k-CcHPvsfTqD1SeZR.png) + +Training doesn’t show any improvement in the accuracy metric, which demonstrates the inefficiency of training on task-solution pairs while trying to give the model common sense. + +![image](https://cdn-uploads.huggingface.co/production/uploads/6957bafe54c6b170be4df9cb/XNDNiO7rxygvJg8KqA5UM.png) + +## Evaluation + +The final test evaluation is run with greedy decoding on the full GSM8K test split. Results: + +| | Loss | Perplexity | +|---|---|---| +| Validation | 0.3690 | 1.4463 | +| Test | 0.3441 | 1.4107 | + +Metrics: + +* Validation exact match on 100 examples: `0.2100` +* Test exact match: `0.0955` + +## Inference + +Use these two cells for inference. + +```python +import re +import torch +from transformers import AutoTokenizer, AutoModelForCausalLM +from peft import PeftModel + +base_model_id = "MegaScience/Qwen3-4B-MegaScience" +adapter_id = "pymlex/qwen3-4b-gsm8k" + +tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True) +if tokenizer.pad_token is None: + tokenizer.pad_token = tokenizer.eos_token +tokenizer.padding_side = "left" + +base_model = AutoModelForCausalLM.from_pretrained( + base_model_id, + device_map="auto", + torch_dtype=torch.bfloat16 if torch.cuda.is_available() and torch.cuda.is_bf16_supported() else torch.float16, + trust_remote_code=True, +) + +model = PeftModel.from_pretrained(base_model, adapter_id) +model.eval() +``` + +```python +SYSTEM_PROMPT = ( + "You solve grade-school math problems. " + "Put the reasoning in .... " + "Put only the final result as a single number in ...." +) + +def build_prompt(question): + messages = [ + {"role": "system", "content": SYSTEM_PROMPT}, + {"role": "user", "content": question.strip()}, + ] + return tokenizer.apply_chat_template( + messages, + tokenize=False, + add_generation_prompt=True, + ) + +def solve_question(model, tokenizer, question, max_new_tokens=512): + prompt = build_prompt(question) + inputs = tokenizer(prompt, return_tensors="pt").to(model.device) + prompt_len = inputs["input_ids"].shape[-1] + + end_answer_id = tokenizer.convert_tokens_to_ids("") + eos_id = tokenizer.eos_token_id + + with torch.inference_mode(): + output = model.generate( + **inputs, + max_new_tokens=max_new_tokens, + do_sample=False, + eos_token_id=[eos_id, end_answer_id], + pad_token_id=tokenizer.pad_token_id, + ) + + new_tokens = output[0][prompt_len:] + text = tokenizer.decode(new_tokens, skip_special_tokens=False) + + if "" in text: + text = text.split("")[0] + "" + + return text.strip() + +sample_question = ( + "Janet’s ducks lay 16 eggs per day. She eats three for breakfast every morning and " + "bakes muffins for her friends every day with four. She sells the remainder at the " + "farmers' market daily for $2 per fresh duck egg. How much in dollars does she make " + "every day at the farmers' market?" +) + +print(solve_question(model, tokenizer, sample_question)) +``` \ No newline at end of file diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..699ff8d --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,85 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0].role == 'system' %} + {{- messages[0].content + '\n\n' }} + {%- endif %} + {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within XML tags:\n" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\n\n\nFor each function call, return a json object with function name and arguments within XML tags:\n\n{\"name\": , \"arguments\": }\n<|im_end|>\n" }} +{%- else %} + {%- if messages[0].role == 'system' %} + {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %} +{%- for message in messages[::-1] %} + {%- set index = (messages|length - 1) - loop.index0 %} + {%- if ns.multi_step_tool and message.role == "user" and not(message.content.startswith('') and message.content.endswith('')) %} + {%- set ns.multi_step_tool = false %} + {%- set ns.last_query_index = index %} + {%- endif %} +{%- endfor %} +{%- for message in messages %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) %} + {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {%- set content = message.content %} + {%- set reasoning_content = '' %} + {%- if message.reasoning_content is defined and message.reasoning_content is not none %} + {%- set reasoning_content = message.reasoning_content %} + {%- else %} + {%- if '' in message.content %} + {%- set content = message.content.split('')[-1].lstrip('\n') %} + {%- set reasoning_content = message.content.split('')[0].rstrip('\n').split('')[-1].lstrip('\n') %} + {%- endif %} + {%- endif %} + {%- if loop.index0 > ns.last_query_index %} + {%- if loop.last or (not loop.last and reasoning_content) %} + {{- '<|im_start|>' + message.role + '\n\n' + reasoning_content.strip('\n') + '\n\n\n' + content.lstrip('\n') }} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + content }} + {%- endif %} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + content }} + {%- endif %} + {%- if message.tool_calls %} + {%- for tool_call in message.tool_calls %} + {%- if (loop.first and content) or (not loop.first) %} + {{- '\n' }} + {%- endif %} + {%- if tool_call.function %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {%- if tool_call.arguments is string %} + {{- tool_call.arguments }} + {%- else %} + {{- tool_call.arguments | tojson }} + {%- endif %} + {{- '}\n' }} + {%- endfor %} + {%- endif %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- message.content }} + {{- '\n' }} + {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} + {%- if enable_thinking is defined and enable_thinking is false %} + {{- '\n\n\n\n' }} + {%- endif %} +{%- endif %} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..f185afe --- /dev/null +++ b/config.json @@ -0,0 +1,71 @@ +{ + "architectures": [ + "Qwen3ForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": null, + "dtype": "bfloat16", + "eos_token_id": 151645, + "head_dim": 128, + "hidden_act": "silu", + "hidden_size": 2560, + "initializer_range": 0.02, + "intermediate_size": 9728, + "layer_types": [ + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention" + ], + "max_position_embeddings": 32768, + "max_window_layers": 36, + "model_type": "qwen3", + "num_attention_heads": 32, + "num_hidden_layers": 36, + "num_key_value_heads": 8, + "pad_token_id": 151643, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": true, + "transformers_version": "5.8.0", + "use_cache": false, + "use_sliding_window": false, + "vocab_size": 151671 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..38d7cc8 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,9 @@ +{ + "eos_token_id": [ + 151645, + 151643 + ], + "max_new_tokens": 2048, + "pad_token_id": 151643, + "transformers_version": "5.8.0" +} diff --git a/model-00001-of-00005.safetensors b/model-00001-of-00005.safetensors new file mode 100644 index 0000000..5d3bca5 --- /dev/null +++ b/model-00001-of-00005.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c27e0a3c9fee45b87c11ad99c640277e273c85f7de7f4c2df73f80f47e744618 +size 1987738224 diff --git a/model-00002-of-00005.safetensors b/model-00002-of-00005.safetensors new file mode 100644 index 0000000..f6fbe3b --- /dev/null +++ b/model-00002-of-00005.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51df807f934cefde3ee2a5852a3be70358a4c18004a2a91901364e3f79e322ef +size 1992409040 diff --git a/model-00003-of-00005.safetensors b/model-00003-of-00005.safetensors new file mode 100644 index 0000000..a792db1 --- /dev/null +++ b/model-00003-of-00005.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a315f5675a32cc6bb6859e96622fc4d11e70821d25d0477b61752b039082901 +size 1997656952 diff --git a/model-00004-of-00005.safetensors b/model-00004-of-00005.safetensors new file mode 100644 index 0000000..38d798b --- /dev/null +++ b/model-00004-of-00005.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:697ec1b8507c0a2158d441a288c3a6790307164faf78c2902e219183fb819ca0 +size 1963572880 diff --git a/model-00005-of-00005.safetensors b/model-00005-of-00005.safetensors new file mode 100644 index 0000000..21fe7b1 --- /dev/null +++ b/model-00005-of-00005.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cec71dc047f985bdfeeeb274858af979c3ce44a4e2987fe161ad9bc631d3974f +size 102247936 diff --git a/model.safetensors.index.json b/model.safetensors.index.json new file mode 100644 index 0000000..33ecea0 --- /dev/null +++ b/model.safetensors.index.json @@ -0,0 +1,406 @@ +{ + "metadata": { + "total_parameters": 4021789696, + "total_size": 8043579392 + }, + "weight_map": { + "model.embed_tokens.weight": "model-00001-of-00005.safetensors", + "model.layers.0.input_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.0.mlp.down_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.0.mlp.gate_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.0.mlp.up_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.0.post_attention_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.0.self_attn.k_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.0.self_attn.k_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.0.self_attn.o_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.0.self_attn.q_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.0.self_attn.q_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.0.self_attn.v_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.1.input_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.1.mlp.down_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.1.mlp.gate_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.1.mlp.up_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.1.post_attention_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.1.self_attn.k_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.1.self_attn.k_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.1.self_attn.o_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.1.self_attn.q_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.1.self_attn.q_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.1.self_attn.v_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.10.input_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.10.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.10.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.10.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.10.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.10.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.10.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.10.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.10.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.10.self_attn.q_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.10.self_attn.v_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.11.input_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.11.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.11.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.11.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.11.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.11.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.11.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.11.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.11.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.11.self_attn.q_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.11.self_attn.v_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.12.input_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.12.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.12.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.12.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.12.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.12.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.12.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.12.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.12.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.12.self_attn.q_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.12.self_attn.v_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.13.input_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.13.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.13.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.13.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.13.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.13.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.13.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.13.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.13.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.13.self_attn.q_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.13.self_attn.v_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.14.input_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.14.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.14.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.14.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.14.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.14.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.14.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.14.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.14.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.14.self_attn.q_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.14.self_attn.v_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.15.input_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.15.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.15.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.15.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.15.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.15.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.15.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.15.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.15.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.15.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.15.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.16.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.16.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.16.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.16.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.16.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.16.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.16.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.16.self_attn.o_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.16.self_attn.q_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.16.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.16.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.17.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.17.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.17.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.17.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.17.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.17.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.17.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.17.self_attn.o_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.17.self_attn.q_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.17.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.17.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.18.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.18.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.18.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.18.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.18.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.18.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.18.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.18.self_attn.o_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.18.self_attn.q_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.18.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.18.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.19.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.19.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.19.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.19.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.19.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.19.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.19.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.19.self_attn.o_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.19.self_attn.q_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.19.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.19.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.2.input_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.2.mlp.down_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.2.mlp.gate_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.2.mlp.up_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.2.post_attention_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.2.self_attn.k_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.2.self_attn.k_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.2.self_attn.o_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.2.self_attn.q_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.2.self_attn.q_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.2.self_attn.v_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.20.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.20.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.20.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.20.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.20.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.20.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.20.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.20.self_attn.o_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.20.self_attn.q_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.20.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.20.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.21.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.21.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.21.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.21.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.21.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.21.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.21.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.21.self_attn.o_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.21.self_attn.q_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.21.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.21.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.22.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.22.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.22.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.22.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.22.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.22.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.22.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.22.self_attn.o_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.22.self_attn.q_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.22.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.22.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.23.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.23.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.23.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.23.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.23.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.23.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.23.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.23.self_attn.o_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.23.self_attn.q_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.23.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.23.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.24.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.24.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.24.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.24.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.24.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.24.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.24.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.24.self_attn.o_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.24.self_attn.q_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.24.self_attn.q_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.24.self_attn.v_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.25.input_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.25.mlp.down_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.25.mlp.gate_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.25.mlp.up_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.25.post_attention_layernorm.weight": "model-00003-of-00005.safetensors", + "model.layers.25.self_attn.k_norm.weight": "model-00003-of-00005.safetensors", + "model.layers.25.self_attn.k_proj.weight": "model-00003-of-00005.safetensors", + "model.layers.25.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.25.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.25.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.25.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.26.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.26.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.26.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.26.mlp.up_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.26.post_attention_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.26.self_attn.k_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.26.self_attn.k_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.26.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.26.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.26.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.26.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.27.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.27.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.27.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.27.mlp.up_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.27.post_attention_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.27.self_attn.k_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.27.self_attn.k_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.27.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.27.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.27.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.27.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.28.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.28.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.28.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.28.mlp.up_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.28.post_attention_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.28.self_attn.k_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.28.self_attn.k_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.28.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.28.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.28.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.28.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.29.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.29.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.29.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.29.mlp.up_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.29.post_attention_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.29.self_attn.k_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.29.self_attn.k_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.29.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.29.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.29.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.29.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.3.input_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.3.mlp.down_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.3.mlp.gate_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.3.mlp.up_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.3.post_attention_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.3.self_attn.k_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.3.self_attn.k_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.3.self_attn.o_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.3.self_attn.q_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.3.self_attn.q_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.3.self_attn.v_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.30.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.30.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.30.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.30.mlp.up_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.30.post_attention_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.30.self_attn.k_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.30.self_attn.k_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.30.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.30.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.30.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.30.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.31.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.31.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.31.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.31.mlp.up_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.31.post_attention_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.31.self_attn.k_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.31.self_attn.k_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.31.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.31.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.31.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.31.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.32.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.32.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.32.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.32.mlp.up_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.32.post_attention_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.32.self_attn.k_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.32.self_attn.k_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.32.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.32.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.32.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.32.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.33.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.33.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.33.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.33.mlp.up_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.33.post_attention_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.33.self_attn.k_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.33.self_attn.k_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.33.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.33.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.33.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.33.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.34.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.34.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.34.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.34.mlp.up_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.34.post_attention_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.34.self_attn.k_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.34.self_attn.k_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.34.self_attn.o_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.34.self_attn.q_norm.weight": "model-00004-of-00005.safetensors", + "model.layers.34.self_attn.q_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.34.self_attn.v_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.35.input_layernorm.weight": "model-00004-of-00005.safetensors", + "model.layers.35.mlp.down_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.35.mlp.gate_proj.weight": "model-00004-of-00005.safetensors", + "model.layers.35.mlp.up_proj.weight": "model-00005-of-00005.safetensors", + "model.layers.35.post_attention_layernorm.weight": "model-00005-of-00005.safetensors", + "model.layers.35.self_attn.k_norm.weight": "model-00005-of-00005.safetensors", + "model.layers.35.self_attn.k_proj.weight": "model-00005-of-00005.safetensors", + "model.layers.35.self_attn.o_proj.weight": "model-00005-of-00005.safetensors", + "model.layers.35.self_attn.q_norm.weight": "model-00005-of-00005.safetensors", + "model.layers.35.self_attn.q_proj.weight": "model-00005-of-00005.safetensors", + "model.layers.35.self_attn.v_proj.weight": "model-00005-of-00005.safetensors", + "model.layers.4.input_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.4.mlp.down_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.4.mlp.gate_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.4.mlp.up_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.4.post_attention_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.4.self_attn.k_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.4.self_attn.k_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.4.self_attn.o_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.4.self_attn.q_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.4.self_attn.q_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.4.self_attn.v_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.5.input_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.5.mlp.down_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.5.mlp.gate_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.5.mlp.up_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.5.post_attention_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.5.self_attn.k_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.5.self_attn.k_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.5.self_attn.o_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.5.self_attn.q_norm.weight": "model-00001-of-00005.safetensors", + "model.layers.5.self_attn.q_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.5.self_attn.v_proj.weight": "model-00001-of-00005.safetensors", + "model.layers.6.input_layernorm.weight": "model-00001-of-00005.safetensors", + "model.layers.6.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.6.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.6.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.6.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.6.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.6.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.6.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.6.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.6.self_attn.q_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.6.self_attn.v_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.7.input_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.7.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.7.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.7.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.7.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.7.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.7.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.7.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.7.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.7.self_attn.q_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.7.self_attn.v_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.8.input_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.8.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.8.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.8.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.8.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.8.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.8.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.8.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.8.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.8.self_attn.q_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.8.self_attn.v_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.9.input_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.9.mlp.down_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.9.mlp.gate_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.9.mlp.up_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.9.post_attention_layernorm.weight": "model-00002-of-00005.safetensors", + "model.layers.9.self_attn.k_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.9.self_attn.k_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.9.self_attn.o_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.9.self_attn.q_norm.weight": "model-00002-of-00005.safetensors", + "model.layers.9.self_attn.q_proj.weight": "model-00002-of-00005.safetensors", + "model.layers.9.self_attn.v_proj.weight": "model-00002-of-00005.safetensors", + "model.norm.weight": "model-00005-of-00005.safetensors" + } +} diff --git a/qwen3_4b_gsm8k_thinking.ipynb b/qwen3_4b_gsm8k_thinking.ipynb new file mode 100644 index 0000000..4e2b441 --- /dev/null +++ b/qwen3_4b_gsm8k_thinking.ipynb @@ -0,0 +1,1591 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "dd248598", + "metadata": {}, + "source": [ + "# Qwen3-4B-MegaScience fine tuning on GSM8K\n", + "\n", + "Qwen3-4B-MegaScience is a scientific SLM. We fine tune it on GSM8K with LoRA. The answer format is rewritten into `` and ``." + ] + }, + { + "cell_type": "markdown", + "id": "45250c6a", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "The stack below covers training, Hub upload, plotting, and GPU telemetry." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72cedce5", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install -U \"transformers>=4.52.0\" accelerate peft trl datasets huggingface_hub pandas matplotlib nvidia-ml-py tensorboard sentencepiece protobuf safetensors" + ] + }, + { + "cell_type": "markdown", + "id": "17dc2e46", + "metadata": {}, + "source": [ + "## Imports and configuration\n", + "\n", + "Our setup includes RTX 5090 with cuda 13.0, Ryzen 9 9950X, 62 GB RAM." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "cc66c06f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GPU: NVIDIA GeForce RTX 5090\n", + "VRAM: 31.36 GB\n", + "bf16: True\n", + "fp16: False\n" + ] + } + ], + "source": [ + "import os\n", + "import re\n", + "import json\n", + "import time\n", + "from pathlib import Path\n", + "from datetime import date\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import torch\n", + "import pynvml\n", + "from tqdm import tqdm\n", + "\n", + "from datasets import load_dataset\n", + "from huggingface_hub import HfApi, login, upload_folder\n", + "from peft import LoraConfig\n", + "from transformers import AutoModelForCausalLM, AutoTokenizer, TrainerCallback\n", + "from trl import SFTConfig, SFTTrainer\n", + "\n", + "os.environ[\"TOKENIZERS_PARALLELISM\"] = \"false\"\n", + "\n", + "seed = 3407\n", + "base_model_id = \"MegaScience/Qwen3-4B-MegaScience\"\n", + "hub_model_id = \"pymlex/qwen3-4b-gsm8k\"\n", + "run_dir = Path(\"./qwen3_gsm8k_run\")\n", + "adapter_dir = run_dir / \"adapter\"\n", + "publish_dir = run_dir / \"publish\"\n", + "run_dir.mkdir(parents=True, exist_ok=True)\n", + "adapter_dir.mkdir(parents=True, exist_ok=True)\n", + "publish_dir.mkdir(parents=True, exist_ok=True)\n", + "\n", + "torch.manual_seed(seed)\n", + "if torch.cuda.is_available():\n", + " torch.cuda.manual_seed_all(seed)\n", + "\n", + "torch.backends.cuda.matmul.allow_tf32 = True\n", + "torch.set_float32_matmul_precision(\"high\")\n", + "\n", + "bf16 = torch.cuda.is_available() and torch.cuda.is_bf16_supported()\n", + "fp16 = torch.cuda.is_available() and not bf16\n", + "\n", + "pynvml.nvmlInit()\n", + "\n", + "device_name = torch.cuda.get_device_name(0) if torch.cuda.is_available() else \"cpu\"\n", + "device_props = torch.cuda.get_device_properties(0) if torch.cuda.is_available() else None\n", + "vram_gb = device_props.total_memory / (1024 ** 3) if device_props is not None else 0.0\n", + "\n", + "print(f\"GPU: {device_name}\")\n", + "print(f\"VRAM: {vram_gb:.2f} GB\")\n", + "print(f\"bf16: {bf16}\")\n", + "print(f\"fp16: {fp16}\")" + ] + }, + { + "cell_type": "markdown", + "id": "b2ca0468", + "metadata": {}, + "source": [ + "## Dataset\n", + "\n", + "GSM8K already ships with calculation annotations inside `answer`. The final scalar answer sits after `####`, and that piece is moved into the `` block during formatting. The official train split is used for training and validation." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "dfc0a6fe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dataset({\n", + " features: ['question', 'answer'],\n", + " num_rows: 7099\n", + "})\n", + "Dataset({\n", + " features: ['question', 'answer'],\n", + " num_rows: 374\n", + "})\n", + "Dataset({\n", + " features: ['question', 'answer'],\n", + " num_rows: 1319\n", + "})\n", + "Emma is 7 years old. If her sister is 9 years older than her, how old will Emma be when her sister is 56?\n", + "Emma’s sister is 7 + 9 = <<7+9=16>>16 years old.\n", + "In this many years, Emma’s sister will be 56 years old: 56 - 16 = <<56-16=40>>40 years.\n", + "When her sister is 56 years old, Emma will be 7 + 40 = <<7+40=47>>47 years.\n", + "#### 47\n" + ] + } + ], + "source": [ + "raw = load_dataset(\"openai/gsm8k\", \"main\")\n", + "\n", + "train_full = raw[\"train\"].shuffle(seed=seed)\n", + "test_ds = raw[\"test\"]\n", + "\n", + "split = train_full.train_test_split(test_size=0.05, seed=seed)\n", + "train_base = split[\"train\"]\n", + "val_base = split[\"test\"]\n", + "\n", + "print(train_base)\n", + "print(val_base)\n", + "print(test_ds)\n", + "print(train_base[0][\"question\"])\n", + "print(train_base[0][\"answer\"][:400])" + ] + }, + { + "cell_type": "markdown", + "id": "f0d7f3db", + "metadata": {}, + "source": [ + "## Chat format\n", + "\n", + "The target answer keeps the calculation trace in `` and places the final value in ``." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "232541b6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[transformers] `torch_dtype` is deprecated! Use `dtype` instead!\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "57660d54b8b54068b66ab5906dcc7d65", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Loading weights: 0%| | 0/398 [00:00system\n", + "You solve grade-school math problems. Put the reasoning in .... Put only the final result as a single number in ....<|im_end|>\n", + "<|im_start|>user\n", + "Emma is 7 years old. If her sister is 9 years older than her, how old will Emma be when her sister is 56?<|im_end|>\n", + "<|im_start|>assistant\n", + "\n", + "Emma’s sister is 7 + 9 = <<7+9=16>>16 years old.\n", + "In this many years, Emma’s sister will be 56 years old: 56 - 16 = <<56-16=40>>40 years.\n", + "When her sister is 56 years old, Emma will be 7 + 40 = <<7+40=47>>47 years.\n", + "\n", + "\n", + "\n", + "47\n", + "<|im_end|>\n", + "<|im_end|>\n", + "7099 374 1319\n" + ] + } + ], + "source": [ + "tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True)\n", + "tokenizer.padding_side = \"left\"\n", + "\n", + "if tokenizer.pad_token is None:\n", + " tokenizer.pad_token = tokenizer.eos_token\n", + "\n", + "model = AutoModelForCausalLM.from_pretrained(\n", + " base_model_id,\n", + " device_map=\"auto\",\n", + " torch_dtype=torch.bfloat16 if bf16 else torch.float16,\n", + " trust_remote_code=True,\n", + " low_cpu_mem_usage=True,\n", + " attn_implementation=\"sdpa\",\n", + ")\n", + "\n", + "special_tokens = {\n", + " \"additional_special_tokens\": [\"\", \"\", \"\", \"\"]\n", + "}\n", + "added = tokenizer.add_special_tokens(special_tokens)\n", + "if added > 0:\n", + " model.resize_token_embeddings(len(tokenizer))\n", + "\n", + "model.config.use_cache = False\n", + "model.generation_config.pad_token_id = tokenizer.pad_token_id\n", + "\n", + "SYSTEM_PROMPT = (\n", + " \"You solve grade-school math problems. \"\n", + " \"Put the reasoning in .... \"\n", + " \"Put only the final result as a single number in ....\"\n", + ")\n", + "\n", + "answer_re = re.compile(r\"####\\s*(.*)$\", re.S)\n", + "\n", + "def canonicalize_answer(text):\n", + " s = str(text).strip().replace(\",\", \"\").replace(\"$\", \"\")\n", + " s = s.replace(\" \", \"\")\n", + " if s.endswith(\".0\"):\n", + " s = s[:-2]\n", + " if s.endswith(\".\"):\n", + " s = s[:-1]\n", + " return s\n", + "\n", + "def split_reasoning_and_answer(answer_text):\n", + " match = answer_re.search(answer_text)\n", + " if match is None:\n", + " return answer_text.strip(), \"\"\n", + " reasoning = answer_text[:match.start()].strip()\n", + " final_answer = canonicalize_answer(match.group(1))\n", + " return reasoning, final_answer\n", + "\n", + "def build_text(example):\n", + " reasoning, final_answer = split_reasoning_and_answer(example[\"answer\"])\n", + " messages = [\n", + " {\"role\": \"system\", \"content\": SYSTEM_PROMPT},\n", + " {\"role\": \"user\", \"content\": example[\"question\"].strip()},\n", + " {\n", + " \"role\": \"assistant\",\n", + " \"content\": f\"\\n{reasoning}\\n\\n\\n{final_answer}\\n\"\n", + " },\n", + " ]\n", + " text = tokenizer.apply_chat_template(\n", + " messages,\n", + " tokenize=False,\n", + " add_generation_prompt=False,\n", + " )\n", + " if not text.endswith(tokenizer.eos_token):\n", + " text += tokenizer.eos_token\n", + " token_count = len(tokenizer(text, add_special_tokens=False)[\"input_ids\"])\n", + " return {\n", + " \"text\": text,\n", + " \"n_tokens\": token_count,\n", + " \"final_answer\": final_answer,\n", + " }\n", + "\n", + "train_ds = train_base.map(build_text, remove_columns=train_base.column_names)\n", + "val_ds = val_base.map(build_text, remove_columns=val_base.column_names)\n", + "test_formatted = test_ds.map(build_text, remove_columns=test_ds.column_names)\n", + "\n", + "eval_subset = val_base.select(range(min(100, len(val_base))))\n", + "\n", + "print(train_ds[0][\"text\"][:1200])\n", + "print(len(train_ds), len(val_ds), len(test_formatted))" + ] + }, + { + "cell_type": "markdown", + "id": "d3e58438", + "metadata": {}, + "source": [ + "## Token lengths\n", + "\n", + "We will set the maximum sequence lenght to 768 to make the model process texts in all the expected scenarios." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "438916c0", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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GhqqyZMn65tvvtEbb7yhoKAgvfDCC9aYfv366b333lOfPn3Utm1brV+/XjExMS776dGjh77//nu98847mjZtmqpXr2793It89dVX+uc//6nHH39clStX1owZMxQbG6u0tDRVq1btvHP6+eef1bFjR6WlpWnIkCGqVauW3nrrLa1bt+6CP4+kpCT17t1bHTt2tOb03XffacOGDRo6dKjuuOMODRkyRDNmzND//d//qUmTJpJk/V/pl8vIe/furYEDB+rRRx/VjTfe+LvHTExMVGBgoCZMmKDU1FTNmTNHBw8etB78drEuprZf+/nnn3XXXXdp3759SkxMVGhoqJYuXap+/fopKytLQ4cOdRlfmucdAFzTDAAAxpjs7GwjyXTv3r1Y308//WSOHTtmbadPn7b63nzzTSPJeHt7m7vvvtuMHTvWfPnll6agoKDYfiSZhIQEc+LECePt7W3eeustY4wxH3/8sXE4HObAgQNm/PjxRpI5duyY9b1Tp06Znj17GofDYSQZScbPz898+OGHLvvfv3+/kWTq1atnJJmRI0de0s/g2LFjRpIZP358sb6WLVuaoKAgc/z4cavt22+/NR4eHqZv375W26/r/+6770ytWrVM69atzYkTJ6wxzz77rKlUqZL5/vvvXY4xatQoU6FCBZOWluYyn2rVqrl8/6OPPjKSzPLly393Pp999pmRZD777DNjjDGFhYWmUaNGJioqyhQWFlrjTp8+bUJDQ80999xTbB6PPPKIyz7/9Kc/mWrVqlmfU1JSjCQzbNgwl3H9+vUr9rN88cUXjSSzf//+YrUWnUP79u2z2r799lsjycycOfN35zl9+nQjybz33ntWW25urmnYsKHL/I0xJj4+3tSrV8/6PHToUON0Os25c+fOu/+lS5cW20+RonNt1apVJfbFx8dbn+fPn28kmfDwcJOfn2+1T5061UgyH330kdV2vvPwt/v8vdruvPNOc+edd1qfi35OixYtstry8/NNRESE8ff3Nzk5OcaYP37eAQBccXk5AEDSL5dwS5K/v3+xvrvuuks1atSwtlmzZll9jzzyiFatWqW77rpLX331lZ599lm1b99ejRo10saNG0s8VpUqVdS5c2e98847kn5ZUbvttttUr169Esf7+Pjohhtu0P3336933nlHixYtUqtWrfTQQw9p06ZNxcYXXcJ9ww03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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "all_tokens = list(train_ds[\"n_tokens\"]) + list(val_ds[\"n_tokens\"]) + list(test_formatted[\"n_tokens\"])\n", + "\n", + "plt.figure(figsize=(10, 4))\n", + "plt.hist(all_tokens, bins=40)\n", + "plt.title(\"GSM8K token length distribution\")\n", + "plt.xlabel(\"Tokens\")\n", + "plt.ylabel(\"Count\")\n", + "plt.tight_layout()\n", + "plt.savefig(run_dir / \"token_lengths.png\", dpi=160)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "283b48b9", + "metadata": {}, + "source": [ + "## Evaluation helpers\n", + "\n", + "Exact match is computed from the final value inside ``. If the tag is missing, the code falls back to the last number in the completion." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "2c643680", + "metadata": {}, + "outputs": [], + "source": [ + "number_re = re.compile(r\"-?\\d+(?:,\\d{3})*(?:\\.\\d+)?\")\n", + "answer_block_re = re.compile(r\"\\s*(.*?)\\s*\", re.S)\n", + "\n", + "def extract_gold_answer(text):\n", + " match = answer_re.search(text)\n", + " if match is not None:\n", + " return canonicalize_answer(match.group(1))\n", + " nums = number_re.findall(text.replace(\",\", \"\"))\n", + " if nums:\n", + " return canonicalize_answer(nums[-1])\n", + " return canonicalize_answer(text)\n", + "\n", + "def extract_pred_answer(text):\n", + " match = answer_block_re.search(text)\n", + " if match is not None:\n", + " return canonicalize_answer(match.group(1))\n", + " match = answer_re.search(text)\n", + " if match is not None:\n", + " return canonicalize_answer(match.group(1))\n", + " nums = number_re.findall(text.replace(\",\", \"\"))\n", + " if nums:\n", + " return canonicalize_answer(nums[-1])\n", + " return canonicalize_answer(text)\n", + "\n", + "def build_prompt(question):\n", + " messages = [\n", + " {\"role\": \"system\", \"content\": SYSTEM_PROMPT},\n", + " {\"role\": \"user\", \"content\": question.strip()},\n", + " ]\n", + " return tokenizer.apply_chat_template(\n", + " messages,\n", + " tokenize=False,\n", + " add_generation_prompt=True,\n", + " )\n", + "\n", + "def generate_batch(model, tokenizer, prompts, max_new_tokens=256):\n", + " device = next(model.parameters()).device\n", + " inputs = tokenizer(\n", + " prompts,\n", + " return_tensors=\"pt\",\n", + " padding=True,\n", + " truncation=True,\n", + " ).to(device)\n", + "\n", + " with torch.inference_mode():\n", + " outputs = model.generate(\n", + " **inputs,\n", + " max_new_tokens=max_new_tokens,\n", + " do_sample=False,\n", + " eos_token_id=tokenizer.eos_token_id,\n", + " pad_token_id=tokenizer.pad_token_id,\n", + " )\n", + "\n", + " decoded = tokenizer.batch_decode(outputs, skip_special_tokens=False)\n", + " return decoded\n", + "\n", + "def evaluate_exact_match(model, tokenizer, dataset, n_examples=None, batch_size=4, max_new_tokens=512):\n", + " limit = len(dataset) if n_examples is None else min(len(dataset), n_examples)\n", + " subset = dataset.select(range(limit))\n", + " rows = []\n", + " correct = 0\n", + "\n", + " for start in tqdm(range(0, limit, batch_size)):\n", + " batch = subset[start:start + batch_size]\n", + " prompts = [build_prompt(q) for q in batch[\"question\"]]\n", + " decoded = generate_batch(model, tokenizer, prompts, max_new_tokens=max_new_tokens)\n", + "\n", + " for question, gold_text, prompt, full_text in zip(batch[\"question\"], batch[\"answer\"], prompts, decoded):\n", + " pred_text = full_text[len(prompt):] if full_text.startswith(prompt) else full_text\n", + " pred = extract_pred_answer(pred_text)\n", + " gold = extract_gold_answer(gold_text)\n", + " is_correct = int(pred == gold)\n", + " correct += is_correct\n", + " rows.append(\n", + " {\n", + " \"question\": question,\n", + " \"gold_answer\": gold,\n", + " \"pred_answer\": pred,\n", + " \"correct\": is_correct,\n", + " \"pred_text\": pred_text,\n", + " }\n", + " )\n", + "\n", + " df = pd.DataFrame(rows)\n", + " return df, correct / limit\n", + "\n", + " df = pd.DataFrame(rows)\n", + " return df, correct / limit" + ] + }, + { + "cell_type": "markdown", + "id": "234295e3", + "metadata": {}, + "source": [ + "## GPU logging" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "5a9f1472", + "metadata": {}, + "outputs": [], + "source": [ + "gpu_history = []\n", + "\n", + "class TrainStatusCallback(TrainerCallback):\n", + " def __init__(self, eval_subset):\n", + " self.eval_subset = eval_subset\n", + " self.trainer = None\n", + "\n", + " def on_log(self, args, state, control, logs=None, **kwargs):\n", + " if not logs:\n", + " return\n", + " row = {\n", + " \"step\": int(state.global_step),\n", + " \"epoch\": float(state.epoch) if state.epoch is not None else np.nan,\n", + " \"time\": time.time(),\n", + " }\n", + " for key in [\"loss\", \"eval_loss\", \"learning_rate\", \"grad_norm\"]:\n", + " if key in logs:\n", + " row[key] = float(logs[key])\n", + " if torch.cuda.is_available():\n", + " handle = pynvml.nvmlDeviceGetHandleByIndex(torch.cuda.current_device())\n", + " util = pynvml.nvmlDeviceGetUtilizationRates(handle)\n", + " mem = pynvml.nvmlDeviceGetMemoryInfo(handle)\n", + " row[\"gpu_util\"] = float(util.gpu)\n", + " row[\"mem_used_mb\"] = float(mem.used / (1024 ** 2))\n", + " row[\"mem_total_mb\"] = float(mem.total / (1024 ** 2))\n", + " msg = f\"[step {state.global_step}] \"\n", + " if \"loss\" in logs:\n", + " msg += f\"loss={logs['loss']:.4f} \"\n", + " if \"eval_loss\" in logs:\n", + " msg += f\"eval_loss={logs['eval_loss']:.4f} \"\n", + " msg += f\"GPU={util.gpu}% VRAM={mem.used/1024**2:.0f}/{mem.total/1024**2:.0f} MB\"\n", + " print(msg)\n", + " gpu_history.append(row)\n", + "\n", + " def on_evaluate(self, args, state, control, **kwargs):\n", + " if self.trainer is None or self.eval_subset is None:\n", + " return\n", + " metrics_df, acc = evaluate_exact_match(\n", + " self.trainer.model,\n", + " self.trainer.processing_class,\n", + " self.eval_subset,\n", + " n_examples=100,\n", + " batch_size=4,\n", + " max_new_tokens=256,\n", + " )\n", + " metrics = {\n", + " \"eval_exact_match_100\": acc,\n", + " \"eval_correct_100\": int(metrics_df[\"correct\"].sum()),\n", + " \"eval_total_100\": int(len(metrics_df)),\n", + " }\n", + " self.trainer.log(metrics)\n", + " payload = dict(metrics)\n", + " payload[\"step\"] = int(state.global_step)\n", + " payload[\"epoch\"] = float(state.epoch) if state.epoch is not None else np.nan\n", + " payload[\"time\"] = time.time()\n", + " gpu_history.append(payload)\n", + " print(f\"[step {state.global_step}] eval_exact_match_100={acc:.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "85406888", + "metadata": {}, + "source": [ + "## Trainer" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "36f32f0c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "trainer ready\n" + ] + } + ], + "source": [ + "eval_subset = val_base.select(range(min(100, len(val_base))))\n", + "\n", + "lora_config = LoraConfig(\n", + " r=16,\n", + " lora_alpha=32,\n", + " lora_dropout=0.05,\n", + " bias=\"none\",\n", + " task_type=\"CAUSAL_LM\",\n", + " target_modules=[\"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\", \"gate_proj\", \"up_proj\", \"down_proj\"],\n", + ")\n", + "\n", + "training_args = SFTConfig(\n", + " output_dir=str(adapter_dir),\n", + " per_device_train_batch_size=4,\n", + " per_device_eval_batch_size=4,\n", + " gradient_accumulation_steps=8,\n", + " num_train_epochs=1,\n", + " learning_rate=2e-4,\n", + " warmup_steps=20,\n", + " lr_scheduler_type=\"cosine\",\n", + " weight_decay=0.0,\n", + " optim=\"adamw_torch\",\n", + " logging_strategy=\"steps\",\n", + " logging_steps=1,\n", + " eval_strategy=\"steps\",\n", + " eval_steps=25,\n", + " eval_on_start=True,\n", + " save_strategy=\"steps\",\n", + " save_steps=50,\n", + " load_best_model_at_end=True,\n", + " metric_for_best_model=\"eval_loss\",\n", + " greater_is_better=False,\n", + " bf16=bf16,\n", + " fp16=fp16,\n", + " gradient_checkpointing=True,\n", + " report_to=\"tensorboard\",\n", + " seed=seed,\n", + " packing=False,\n", + " dataset_text_field=\"text\",\n", + " max_length=768,\n", + " logging_first_step=True,\n", + ")\n", + "\n", + "trainer = SFTTrainer(\n", + " model=model,\n", + " args=training_args,\n", + " train_dataset=train_ds,\n", + " eval_dataset=val_ds,\n", + " peft_config=lora_config,\n", + " processing_class=tokenizer,\n", + ")\n", + "\n", + "status_cb = TrainStatusCallback(eval_subset)\n", + "status_cb.trainer = trainer\n", + "trainer.add_callback(status_cb)\n", + "\n", + "print(\"trainer ready\")" + ] + }, + { + "cell_type": "markdown", + "id": "26a350cf", + "metadata": {}, + "source": [ + "## Training" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "cc3596a6", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[transformers] The tokenizer has new PAD/BOS/EOS tokens that differ from the model config and generation config. The model config and generation config were aligned accordingly, being updated with the tokenizer's values. Updated tokens: {'eos_token_id': 151645, 'bos_token_id': None, 'pad_token_id': 151643}.\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " \n", + " [222/222 24:28, Epoch 1/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", + " \n", + " \n", + " \n", + "
StepTraining LossValidation Loss
0No log2.089016
250.4083350.418331
500.3680560.366697
750.3439770.356384
1000.3662820.350802
1250.3393580.348205
1500.3904310.346121
1750.3461240.344797
2000.3523970.344206
2220.3690090.344098

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[step 0] eval_loss=2.0890 GPU=95% VRAM=16318/32607 MB\n", + "[step 0] GPU=78% VRAM=16332/32607 MB\n", + "[step 0] eval_exact_match_100=0.2200\n", + "[step 1] loss=2.1023 GPU=88% VRAM=16778/32607 MB\n", + "[step 2] loss=2.2198 GPU=87% VRAM=17670/32607 MB\n", + "[step 3] loss=2.1929 GPU=91% VRAM=17670/32607 MB\n", + "[step 4] loss=2.1926 GPU=71% VRAM=18656/32607 MB\n", + "[step 5] loss=2.0107 GPU=97% VRAM=18656/32607 MB\n", + "[step 6] loss=1.8966 GPU=96% VRAM=18656/32607 MB\n", + "[step 7] loss=1.8916 GPU=95% VRAM=18656/32607 MB\n", + "[step 8] loss=1.7318 GPU=90% VRAM=18656/32607 MB\n", + "[step 9] loss=1.5379 GPU=88% VRAM=18656/32607 MB\n", + "[step 10] loss=1.2925 GPU=97% VRAM=19818/32607 MB\n", + "[step 11] loss=1.2532 GPU=94% VRAM=19818/32607 MB\n", + "[step 12] loss=1.0723 GPU=90% VRAM=19818/32607 MB\n", + "[step 13] loss=0.9937 GPU=95% VRAM=19818/32607 MB\n", + "[step 14] loss=0.8682 GPU=95% VRAM=19818/32607 MB\n", + "[step 15] loss=0.7871 GPU=89% VRAM=19818/32607 MB\n", + "[step 16] loss=0.6485 GPU=97% VRAM=19818/32607 MB\n", + "[step 17] loss=0.5811 GPU=96% VRAM=19818/32607 MB\n", + "[step 18] loss=0.5456 GPU=94% VRAM=19818/32607 MB\n", + "[step 19] loss=0.5182 GPU=95% VRAM=19818/32607 MB\n", + "[step 20] loss=0.4801 GPU=96% VRAM=19818/32607 MB\n", + "[step 21] loss=0.4693 GPU=89% VRAM=19818/32607 MB\n", + "[step 22] loss=0.4335 GPU=97% VRAM=19818/32607 MB\n", + "[step 23] loss=0.4865 GPU=95% VRAM=19818/32607 MB\n", + "[step 24] loss=0.4407 GPU=87% VRAM=19818/32607 MB\n", + "[step 25] loss=0.4083 GPU=27% VRAM=19818/32607 MB\n", + "[step 25] eval_loss=0.4183 GPU=95% VRAM=19818/32607 MB\n", + "[step 25] GPU=73% VRAM=19818/32607 MB\n", + "[step 25] eval_exact_match_100=0.2100\n", + "[step 26] loss=0.4382 GPU=94% VRAM=19818/32607 MB\n", + "[step 27] loss=0.4439 GPU=96% VRAM=19818/32607 MB\n", + "[step 28] loss=0.4533 GPU=95% VRAM=19818/32607 MB\n", + "[step 29] loss=0.4072 GPU=95% VRAM=21048/32607 MB\n", + "[step 30] loss=0.4260 GPU=89% VRAM=21048/32607 MB\n", + "[step 31] loss=0.3852 GPU=96% VRAM=21048/32607 MB\n", + "[step 32] loss=0.3975 GPU=88% VRAM=21048/32607 MB\n", + "[step 33] loss=0.3895 GPU=95% VRAM=21048/32607 MB\n", + "[step 34] loss=0.3756 GPU=89% VRAM=21048/32607 MB\n", + "[step 35] loss=0.3903 GPU=96% VRAM=21048/32607 MB\n", + "[step 36] loss=0.3878 GPU=96% VRAM=21048/32607 MB\n", + "[step 37] loss=0.3829 GPU=96% VRAM=21048/32607 MB\n", + "[step 38] loss=0.4120 GPU=95% VRAM=21048/32607 MB\n", + "[step 39] loss=0.3770 GPU=81% VRAM=21048/32607 MB\n", + "[step 40] loss=0.3588 GPU=96% VRAM=21048/32607 MB\n", + "[step 41] loss=0.4047 GPU=94% VRAM=21048/32607 MB\n", + "[step 42] loss=0.3753 GPU=95% VRAM=21048/32607 MB\n", + "[step 43] loss=0.3822 GPU=88% VRAM=21048/32607 MB\n", + "[step 44] loss=0.3920 GPU=96% VRAM=21048/32607 MB\n", + "[step 45] loss=0.3913 GPU=18% VRAM=21048/32607 MB\n", + "[step 46] loss=0.3862 GPU=90% VRAM=21048/32607 MB\n", + "[step 47] loss=0.3796 GPU=88% VRAM=21048/32607 MB\n", + "[step 48] loss=0.3716 GPU=90% VRAM=21048/32607 MB\n", + "[step 49] loss=0.3870 GPU=95% VRAM=21048/32607 MB\n", + "[step 50] loss=0.3681 GPU=89% VRAM=21048/32607 MB\n", + "[step 50] eval_loss=0.3667 GPU=95% VRAM=21048/32607 MB\n", + "[step 50] GPU=77% VRAM=21048/32607 MB\n", + "[step 50] eval_exact_match_100=0.2200\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/dist-packages/peft/utils/save_and_load.py:386: UserWarning: Setting `save_embedding_layers` to `True` as the embedding layer has been resized during finetuning.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[step 51] loss=0.3877 GPU=94% VRAM=21048/32607 MB\n", + "[step 52] loss=0.3838 GPU=95% VRAM=21048/32607 MB\n", + "[step 53] loss=0.3443 GPU=96% VRAM=21048/32607 MB\n", + "[step 54] loss=0.3773 GPU=95% VRAM=21048/32607 MB\n", + "[step 55] loss=0.3573 GPU=96% VRAM=21048/32607 MB\n", + "[step 56] loss=0.3939 GPU=89% VRAM=21048/32607 MB\n", + "[step 57] loss=0.3672 GPU=95% VRAM=21048/32607 MB\n", + "[step 58] loss=0.3673 GPU=88% VRAM=21048/32607 MB\n", + "[step 59] loss=0.3506 GPU=96% VRAM=21048/32607 MB\n", + "[step 60] loss=0.4168 GPU=95% VRAM=21048/32607 MB\n", + "[step 61] loss=0.3795 GPU=95% VRAM=21048/32607 MB\n", + "[step 62] loss=0.3852 GPU=95% VRAM=21048/32607 MB\n", + "[step 63] loss=0.3734 GPU=96% VRAM=21048/32607 MB\n", + "[step 64] loss=0.3649 GPU=90% VRAM=21048/32607 MB\n", + "[step 65] loss=0.3797 GPU=96% VRAM=21048/32607 MB\n", + "[step 66] loss=0.3820 GPU=88% VRAM=21048/32607 MB\n", + "[step 67] loss=0.3699 GPU=96% VRAM=21048/32607 MB\n", + "[step 68] loss=0.3923 GPU=29% VRAM=21048/32607 MB\n", + "[step 69] loss=0.3930 GPU=95% VRAM=21048/32607 MB\n", + "[step 70] loss=0.3757 GPU=97% VRAM=21048/32607 MB\n", + "[step 71] loss=0.3685 GPU=95% VRAM=21048/32607 MB\n", + "[step 72] loss=0.3598 GPU=97% VRAM=21048/32607 MB\n", + "[step 73] loss=0.3823 GPU=87% VRAM=21048/32607 MB\n", + "[step 74] loss=0.3447 GPU=88% VRAM=21048/32607 MB\n", + "[step 75] loss=0.3440 GPU=89% VRAM=21048/32607 MB\n", + "[step 75] eval_loss=0.3564 GPU=95% VRAM=21048/32607 MB\n", + "[step 75] GPU=77% VRAM=21048/32607 MB\n", + "[step 75] eval_exact_match_100=0.2200\n", + "[step 76] loss=0.3561 GPU=96% VRAM=21048/32607 MB\n", + "[step 77] loss=0.3843 GPU=89% VRAM=21048/32607 MB\n", + "[step 78] loss=0.3969 GPU=95% VRAM=21048/32607 MB\n", + "[step 79] loss=0.3518 GPU=87% VRAM=21048/32607 MB\n", + "[step 80] loss=0.3564 GPU=88% VRAM=21048/32607 MB\n", + "[step 81] loss=0.3557 GPU=95% VRAM=21048/32607 MB\n", + "[step 82] loss=0.3462 GPU=89% VRAM=21048/32607 MB\n", + "[step 83] loss=0.3421 GPU=92% VRAM=21048/32607 MB\n", + "[step 84] loss=0.3248 GPU=97% VRAM=21048/32607 MB\n", + "[step 85] loss=0.3470 GPU=97% VRAM=21048/32607 MB\n", + "[step 86] loss=0.3568 GPU=95% VRAM=21048/32607 MB\n", + "[step 87] loss=0.3598 GPU=88% VRAM=21048/32607 MB\n", + "[step 88] loss=0.3614 GPU=81% VRAM=21048/32607 MB\n", + "[step 89] loss=0.3725 GPU=86% VRAM=21048/32607 MB\n", + "[step 90] loss=0.3347 GPU=94% VRAM=21048/32607 MB\n", + "[step 91] loss=0.3387 GPU=88% VRAM=21048/32607 MB\n", + "[step 92] loss=0.3457 GPU=96% VRAM=21048/32607 MB\n", + "[step 93] loss=0.3184 GPU=95% VRAM=21048/32607 MB\n", + "[step 94] loss=0.3375 GPU=96% VRAM=21048/32607 MB\n", + "[step 95] loss=0.3204 GPU=96% VRAM=21048/32607 MB\n", + "[step 96] loss=0.3575 GPU=87% VRAM=21048/32607 MB\n", + "[step 97] loss=0.3163 GPU=87% VRAM=27864/32607 MB\n", + "[step 98] loss=0.3355 GPU=96% VRAM=27864/32607 MB\n", + "[step 99] loss=0.3385 GPU=89% VRAM=27864/32607 MB\n", + "[step 100] loss=0.3663 GPU=96% VRAM=27864/32607 MB\n", + "[step 100] eval_loss=0.3508 GPU=97% VRAM=27864/32607 MB\n", + "[step 100] GPU=78% VRAM=27864/32607 MB\n", + "[step 100] eval_exact_match_100=0.2100\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/dist-packages/peft/utils/save_and_load.py:386: UserWarning: Setting `save_embedding_layers` to `True` as the embedding layer has been resized during finetuning.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[step 101] loss=0.3436 GPU=95% VRAM=27864/32607 MB\n", + "[step 102] loss=0.3894 GPU=95% VRAM=27864/32607 MB\n", + "[step 103] loss=0.3668 GPU=87% VRAM=27864/32607 MB\n", + "[step 104] loss=0.3580 GPU=95% VRAM=27864/32607 MB\n", + "[step 105] loss=0.3599 GPU=95% VRAM=27864/32607 MB\n", + "[step 106] loss=0.3737 GPU=96% VRAM=27864/32607 MB\n", + "[step 107] loss=0.3622 GPU=87% VRAM=27864/32607 MB\n", + "[step 108] loss=0.3490 GPU=96% VRAM=27864/32607 MB\n", + "[step 109] loss=0.3608 GPU=88% VRAM=27864/32607 MB\n", + "[step 110] loss=0.3584 GPU=95% VRAM=27864/32607 MB\n", + "[step 111] loss=0.3820 GPU=88% VRAM=27864/32607 MB\n", + "[step 112] loss=0.3490 GPU=87% VRAM=27864/32607 MB\n", + "[step 113] loss=0.3541 GPU=97% VRAM=27864/32607 MB\n", + "[step 114] loss=0.3481 GPU=96% VRAM=27864/32607 MB\n", + "[step 115] loss=0.3321 GPU=94% VRAM=27864/32607 MB\n", + "[step 116] loss=0.3445 GPU=96% VRAM=27864/32607 MB\n", + "[step 117] loss=0.3203 GPU=90% VRAM=27864/32607 MB\n", + "[step 118] loss=0.3341 GPU=88% VRAM=27864/32607 MB\n", + "[step 119] loss=0.3575 GPU=96% VRAM=27864/32607 MB\n", + "[step 120] loss=0.3498 GPU=96% VRAM=27864/32607 MB\n", + "[step 121] loss=0.3389 GPU=96% VRAM=27864/32607 MB\n", + "[step 122] loss=0.3646 GPU=94% VRAM=27864/32607 MB\n", + "[step 123] loss=0.3489 GPU=96% VRAM=27864/32607 MB\n", + "[step 124] loss=0.3209 GPU=89% VRAM=27864/32607 MB\n", + "[step 125] loss=0.3394 GPU=97% VRAM=27864/32607 MB\n", + "[step 125] eval_loss=0.3482 GPU=95% VRAM=27864/32607 MB\n", + "[step 125] GPU=77% VRAM=27864/32607 MB\n", + "[step 125] eval_exact_match_100=0.2400\n", + "[step 126] loss=0.3233 GPU=80% VRAM=27864/32607 MB\n", + "[step 127] loss=0.3708 GPU=88% VRAM=27864/32607 MB\n", + "[step 128] loss=0.3399 GPU=96% VRAM=27864/32607 MB\n", + "[step 129] loss=0.3445 GPU=95% VRAM=27864/32607 MB\n", + "[step 130] loss=0.3676 GPU=96% VRAM=27864/32607 MB\n", + "[step 131] loss=0.3420 GPU=97% VRAM=27864/32607 MB\n", + "[step 132] loss=0.3942 GPU=94% VRAM=27864/32607 MB\n", + "[step 133] loss=0.3539 GPU=95% VRAM=27864/32607 MB\n", + "[step 134] loss=0.3653 GPU=89% VRAM=27864/32607 MB\n", + "[step 135] loss=0.3522 GPU=95% VRAM=27864/32607 MB\n", + "[step 136] loss=0.3555 GPU=19% VRAM=27864/32607 MB\n", + "[step 137] loss=0.3490 GPU=94% VRAM=27864/32607 MB\n", + "[step 138] loss=0.3494 GPU=96% VRAM=27864/32607 MB\n", + "[step 139] loss=0.3327 GPU=95% VRAM=27864/32607 MB\n", + "[step 140] loss=0.3559 GPU=97% VRAM=27864/32607 MB\n", + "[step 141] loss=0.3564 GPU=96% VRAM=27864/32607 MB\n", + "[step 142] loss=0.3700 GPU=96% VRAM=27864/32607 MB\n", + "[step 143] loss=0.3610 GPU=96% VRAM=27864/32607 MB\n", + "[step 144] loss=0.3599 GPU=91% VRAM=27864/32607 MB\n", + "[step 145] loss=0.3541 GPU=87% VRAM=27864/32607 MB\n", + "[step 146] loss=0.3151 GPU=96% VRAM=27864/32607 MB\n", + "[step 147] loss=0.3659 GPU=96% VRAM=27864/32607 MB\n", + "[step 148] loss=0.3822 GPU=96% VRAM=27864/32607 MB\n", + "[step 149] loss=0.3070 GPU=97% VRAM=27864/32607 MB\n", + "[step 150] loss=0.3904 GPU=87% VRAM=27864/32607 MB\n", + "[step 150] eval_loss=0.3461 GPU=97% VRAM=27864/32607 MB\n", + "[step 150] GPU=78% VRAM=27864/32607 MB\n", + "[step 150] eval_exact_match_100=0.2200\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/dist-packages/peft/utils/save_and_load.py:386: UserWarning: Setting `save_embedding_layers` to `True` as the embedding layer has been resized during finetuning.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[step 151] loss=0.3328 GPU=91% VRAM=27864/32607 MB\n", + "[step 152] loss=0.3426 GPU=96% VRAM=27864/32607 MB\n", + "[step 153] loss=0.3485 GPU=96% VRAM=27864/32607 MB\n", + "[step 154] loss=0.3344 GPU=87% VRAM=27864/32607 MB\n", + "[step 155] loss=0.3581 GPU=95% VRAM=27864/32607 MB\n", + "[step 156] loss=0.3511 GPU=96% VRAM=27864/32607 MB\n", + "[step 157] loss=0.3593 GPU=94% VRAM=27864/32607 MB\n", + "[step 158] loss=0.3500 GPU=89% VRAM=27864/32607 MB\n", + "[step 159] loss=0.3475 GPU=96% VRAM=27864/32607 MB\n", + "[step 160] loss=0.3545 GPU=95% VRAM=27864/32607 MB\n", + "[step 161] loss=0.3571 GPU=96% VRAM=27864/32607 MB\n", + "[step 162] loss=0.3605 GPU=94% VRAM=27864/32607 MB\n", + "[step 163] loss=0.3626 GPU=96% VRAM=27864/32607 MB\n", + "[step 164] loss=0.3316 GPU=96% VRAM=27864/32607 MB\n", + "[step 165] loss=0.3422 GPU=90% VRAM=27864/32607 MB\n", + "[step 166] loss=0.3302 GPU=96% VRAM=27864/32607 MB\n", + "[step 167] loss=0.3241 GPU=86% VRAM=27864/32607 MB\n", + "[step 168] loss=0.3446 GPU=95% VRAM=27864/32607 MB\n", + "[step 169] loss=0.3398 GPU=89% VRAM=27864/32607 MB\n", + "[step 170] loss=0.3516 GPU=89% VRAM=27864/32607 MB\n", + "[step 171] loss=0.3280 GPU=96% VRAM=27864/32607 MB\n", + "[step 172] loss=0.3572 GPU=89% VRAM=27864/32607 MB\n", + "[step 173] loss=0.3705 GPU=96% VRAM=27864/32607 MB\n", + "[step 174] loss=0.3475 GPU=89% VRAM=27864/32607 MB\n", + "[step 175] loss=0.3461 GPU=96% VRAM=27864/32607 MB\n", + "[step 175] eval_loss=0.3448 GPU=95% VRAM=27864/32607 MB\n", + "[step 175] GPU=78% VRAM=27864/32607 MB\n", + "[step 175] eval_exact_match_100=0.2300\n", + "[step 176] loss=0.3703 GPU=96% VRAM=27864/32607 MB\n", + "[step 177] loss=0.3453 GPU=94% VRAM=27864/32607 MB\n", + "[step 178] loss=0.3461 GPU=90% VRAM=27864/32607 MB\n", + "[step 179] loss=0.3642 GPU=95% VRAM=27864/32607 MB\n", + "[step 180] loss=0.3259 GPU=96% VRAM=27864/32607 MB\n", + "[step 181] loss=0.3705 GPU=96% VRAM=27864/32607 MB\n", + "[step 182] loss=0.3460 GPU=96% VRAM=27864/32607 MB\n", + "[step 183] loss=0.3643 GPU=94% VRAM=27864/32607 MB\n", + "[step 184] loss=0.3348 GPU=95% VRAM=27864/32607 MB\n", + "[step 185] loss=0.3759 GPU=94% VRAM=27864/32607 MB\n", + "[step 186] loss=0.3468 GPU=95% VRAM=27864/32607 MB\n", + "[step 187] loss=0.3610 GPU=88% VRAM=27864/32607 MB\n", + "[step 188] loss=0.3439 GPU=89% VRAM=27864/32607 MB\n", + "[step 189] loss=0.3299 GPU=97% VRAM=27864/32607 MB\n", + "[step 190] loss=0.3248 GPU=89% VRAM=27864/32607 MB\n", + "[step 191] loss=0.3324 GPU=96% VRAM=27864/32607 MB\n", + "[step 192] loss=0.3690 GPU=87% VRAM=27864/32607 MB\n", + "[step 193] loss=0.3164 GPU=96% VRAM=27864/32607 MB\n", + "[step 194] loss=0.3486 GPU=89% VRAM=27864/32607 MB\n", + "[step 195] loss=0.3437 GPU=91% VRAM=27864/32607 MB\n", + "[step 196] loss=0.3566 GPU=91% VRAM=27864/32607 MB\n", + "[step 197] loss=0.3529 GPU=96% VRAM=27864/32607 MB\n", + "[step 198] loss=0.3703 GPU=94% VRAM=27864/32607 MB\n", + "[step 199] loss=0.3299 GPU=97% VRAM=27864/32607 MB\n", + "[step 200] loss=0.3524 GPU=96% VRAM=27864/32607 MB\n", + "[step 200] eval_loss=0.3442 GPU=95% VRAM=27864/32607 MB\n", + "[step 200] GPU=78% VRAM=27864/32607 MB\n", + "[step 200] eval_exact_match_100=0.2100\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/dist-packages/peft/utils/other.py:1419: UserWarning: Unable to fetch remote file due to the following error [Errno 97] Address family not supported by protocol - silently ignoring the lookup for the file config.json in MegaScience/Qwen3-4B-MegaScience.\n", + " warnings.warn(\n", + "/usr/local/lib/python3.12/dist-packages/peft/utils/save_and_load.py:372: UserWarning: Could not find a config file in MegaScience/Qwen3-4B-MegaScience - will assume that the vocabulary was not modified.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[step 201] loss=0.3513 GPU=97% VRAM=27864/32607 MB\n", + "[step 202] loss=0.3486 GPU=95% VRAM=27864/32607 MB\n", + "[step 203] loss=0.3507 GPU=95% VRAM=27864/32607 MB\n", + "[step 204] loss=0.3456 GPU=97% VRAM=27864/32607 MB\n", + "[step 205] loss=0.3612 GPU=96% VRAM=27864/32607 MB\n", + "[step 206] loss=0.3479 GPU=97% VRAM=27864/32607 MB\n", + "[step 207] loss=0.3522 GPU=95% VRAM=27864/32607 MB\n", + "[step 208] loss=0.3537 GPU=86% VRAM=27864/32607 MB\n", + "[step 209] loss=0.3729 GPU=95% VRAM=27864/32607 MB\n", + "[step 210] loss=0.3466 GPU=96% VRAM=27864/32607 MB\n", + "[step 211] loss=0.3283 GPU=96% VRAM=27864/32607 MB\n", + "[step 212] loss=0.3392 GPU=89% VRAM=27864/32607 MB\n", + "[step 213] loss=0.3619 GPU=97% VRAM=27864/32607 MB\n", + "[step 214] loss=0.3700 GPU=87% VRAM=27864/32607 MB\n", + "[step 215] loss=0.3551 GPU=95% VRAM=27864/32607 MB\n", + "[step 216] loss=0.3346 GPU=94% VRAM=27864/32607 MB\n", + "[step 217] loss=0.3286 GPU=95% VRAM=27864/32607 MB\n", + "[step 218] loss=0.3198 GPU=96% VRAM=27864/32607 MB\n", + "[step 219] loss=0.3513 GPU=89% VRAM=27864/32607 MB\n", + "[step 220] loss=0.3585 GPU=95% VRAM=27864/32607 MB\n", + "[step 221] loss=0.3472 GPU=96% VRAM=27864/32607 MB\n", + "[step 222] loss=0.3690 GPU=94% VRAM=27864/32607 MB\n", + "[step 222] eval_loss=0.3441 GPU=95% VRAM=27864/32607 MB\n", + "[step 222] GPU=78% VRAM=27864/32607 MB\n", + "[step 222] eval_exact_match_100=0.2100\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/dist-packages/peft/utils/save_and_load.py:386: UserWarning: Setting `save_embedding_layers` to `True` as the embedding layer has been resized during finetuning.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[step 222] GPU=14% VRAM=27864/32607 MB\n", + "TrainOutput(global_step=222, training_loss=0.4492494880079149, metrics={'train_runtime': 1580.5321, 'train_samples_per_second': 4.492, 'train_steps_per_second': 0.14, 'total_flos': 4.806038094014976e+16, 'train_loss': 0.4492494880079149})\n" + ] + } + ], + "source": [ + "train_result = trainer.train()\n", + "print(train_result)" + ] + }, + { + "cell_type": "markdown", + "id": "042d7bba", + "metadata": {}, + "source": [ + "## Logs and plots\n", + "\n", + "Loss converges within one epoch. Training doesn’t show any improvement in the accuracy metric, which demonstrates the inefficiency of training on task-solution pairs while trying to give the model common sense." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "807b37a4", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAGGCAYAAABmGOKbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAhehJREFUeJzs3Xd8FHX+x/HX7CbZ9EoKgUDonVAEBEVRUOCwoKciogin5/089FRO7+Tu7Hqop5717AioKFbsKKKgKEV6rwIJpCekl0125/fHJitLSyHJJvB+Ph7zyOzMd77zmc0S9jPf73y/hmmaJiIiIiIiIiLS4CzeDkBERERERETkVKWkW0RERERERKSRKOkWERERERERaSRKukVEREREREQaiZJuERERERERkUaipFtERERERESkkSjpFhEREREREWkkSrpFREREREREGomSbhEREREREZFGoqRbREROe1OmTCExMdHbYdTLiBEjGDFiRJOfNzExkSlTprhfL1myBMMwWLJkSY3HNkbM999/P4ZhNGidtWUYBvfff79Xzi0iIs2fkm4REWm2DMOo1VKbRE9avpKSEu6//379vkVEpEXx8XYAIiIix/Pmm296vJ47dy6LFi06anuPHj1O6jyvvvoqTqfzpOo43Z1zzjmUlpbi5+fXaOcoKSnhgQceADiqpfxf//oXd999d6OdW0REpL6UdIuISLN17bXXerxesWIFixYtOmr7kUpKSggMDKz1eXx9fesVn/zGYrHg7+/vtfP7+Pjg46OvNSIi0vyoe7mIiLRoI0aMoHfv3qxZs4ZzzjmHwMBA/vGPfwDwySefMG7cOOLj47HZbHTq1ImHHnoIh8PhUceRz3Tv27cPwzB44okneOWVV+jUqRM2m41Bgwbxyy+/1BhTbm4ud955J3369CE4OJjQ0FDGjh3Lhg0bPMpVPwf93nvv8cgjj9C2bVv8/f0ZOXIku3fvPqre6lgCAgIYPHgwP/74Y63eo969e3Peeecdtd3pdNKmTRuuuOIK97YnnniCYcOGERUVRUBAAAMHDuSDDz6o8RzHe6a7NjHb7XbuvfdeBg4cSFhYGEFBQQwfPpzvv//eXWbfvn1ER0cD8MADD7gfLah+lvpYz3RXVlby0EMPuX9/iYmJ/OMf/6C8vNyjXGJiIhdddBHLli1j8ODB+Pv707FjR+bOnVvjdR/PunXrGDt2LKGhoQQHBzNy5EhWrFjhUaaiooIHHniALl264O/vT1RUFGeffTaLFi1yl0lPT2fq1Km0bdsWm81G69atufTSS9m3b1+9YxMRkaalW8IiItLi5eTkMHbsWK6++mquvfZaYmNjAZg9ezbBwcFMnz6d4OBgvvvuO+69914KCgr4z3/+U2O98+bNo7CwkD/96U8YhsHjjz/O5Zdfzq+//nrC1vFff/2VBQsWcOWVV9KhQwcyMjJ4+eWXOffcc9m6dSvx8fEe5R999FEsFgt33nkn+fn5PP7440yaNImVK1e6y7z++uv86U9/YtiwYdx+++38+uuvXHLJJURGRpKQkHDC65gwYQL3338/6enpxMXFubcvW7aM1NRUrr76ave2Z555hksuuYRJkyZht9t59913ufLKK/n8888ZN25cje/Z4Wobc0FBAa+99hoTJ07kj3/8I4WFhbz++uuMHj2aVatW0a9fP6Kjo3nxxRe5+eabueyyy7j88ssB6Nu373HPf+ONNzJnzhyuuOIK/vrXv7Jy5UpmzpzJtm3b+Pjjjz3K7t69myuuuIIbbriB66+/nlmzZjFlyhQGDhxIr1696nTdW7ZsYfjw4YSGhvK3v/0NX19fXn75ZUaMGMHSpUsZMmQI4LpRMHPmTG688UYGDx5MQUEBq1evZu3atVxwwQUA/P73v2fLli3ceuutJCYmkpmZyaJFi0hOTm6xg/+JiJx2TBERkRZi2rRp5pH/dZ177rkmYL700ktHlS8pKTlq25/+9CczMDDQLCsrc2+7/vrrzfbt27tf79271wTMqKgoMzc31739k08+MQHzs88+O2GcZWVlpsPh8Ni2d+9e02azmQ8++KB72/fff28CZo8ePczy8nL39meeecYEzE2bNpmmaZp2u92MiYkx+/Xr51HulVdeMQHz3HPPPWE8O3bsMAHzueee89j+5z//2QwODvZ4n458z+x2u9m7d2/z/PPP99jevn178/rrrz/qWr7//vs6x1xZWelRxjRN89ChQ2ZsbKz5hz/8wb0tKyvLBMz77rvvqGu87777PD4b69evNwHzxhtv9Ch35513moD53XffeVwLYP7www/ubZmZmabNZjP/+te/HnWuIx0Z0/jx400/Pz9zz5497m2pqalmSEiIec4557i3JSUlmePGjTtuvYcOHTIB8z//+U+NMYiISPOl7uUiItLi2Ww2pk6detT2gIAA93phYSHZ2dkMHz6ckpIStm/fXmO9EyZMICIiwv16+PDhgKslu6Z4LBbXf7EOh4OcnByCg4Pp1q0ba9euPar81KlTPQYgO/I8q1evJjMzk//7v//zKDdlyhTCwsJqvI6uXbvSr18/5s+f797mcDj44IMPuPjiiz3ep8PXDx06RH5+PsOHDz9m3CdSl5itVqu7jNPpJDc3l8rKSs4444w6n7fal19+CcD06dM9tv/1r38F4IsvvvDY3rNnT/f7DhAdHU23bt1q/F0fyeFw8M033zB+/Hg6duzo3t66dWuuueYali1bRkFBAQDh4eFs2bKFXbt2HbOugIAA/Pz8WLJkCYcOHapTHCIi0nwo6RYRkRavTZs2xxw1e8uWLVx22WWEhYURGhpKdHS0exC2/Pz8Gutt166dx+vqBLymBMjpdPLf//6XLl26YLPZaNWqFdHR0WzcuPGY563pPPv37wegS5cuHuV8fX09ErsTmTBhAj/99BMHDx4EXM9gZ2ZmMmHCBI9yn3/+OWeeeSb+/v5ERka6u3XX5v06XF1jnjNnDn379nU/2xwdHc0XX3xR5/Mefn6LxULnzp09tsfFxREeHu6Or9qRvwNw/R7qmuxmZWVRUlJCt27djtrXo0cPnE4nKSkpADz44IPk5eXRtWtX+vTpw1133cXGjRvd5W02G4899hhfffUVsbGxnHPOOTz++OOkp6fXKSYREfEuJd0iItLiHd46Wy0vL49zzz2XDRs28OCDD/LZZ5+xaNEiHnvsMYBaTRFmtVqPud00zRMe9+9//5vp06dzzjnn8NZbb/H111+zaNEievXqdczz1vc8dTFhwgRM0+T9998H4L333iMsLIwxY8a4y/z4449ccskl+Pv787///Y8vv/ySRYsWcc011zRoLEd66623mDJlCp06deL1119n4cKFLFq0iPPPP/+kp3I7cnC142mK38GRzjnnHPbs2cOsWbPo3bs3r732GgMGDOC1115zl7n99tvZuXMnM2fOxN/fn3vuuYcePXqwbt26RotLREQalpJuERE5JS1ZsoScnBxmz57NbbfdxkUXXcSoUaM8uos3lg8++IDzzjuP119/nauvvpoLL7yQUaNGkZeXV6/62rdvD3BUN+SKigr27t1bqzo6dOjA4MGDmT9/PpWVlXz00UeMHz8em83mLvPhhx/i7+/P119/zR/+8AfGjh3LqFGjGj3mDz74gI4dO/LRRx9x3XXXMXr0aEaNGkVZWZlHudom0NXndzqdR50/IyODvLw8d3wNLTo6msDAQHbs2HHUvu3bt2OxWDwGkYuMjGTq1Km88847pKSk0LdvX/eI7NU6derEX//6V7755hs2b96M3W7nySefbJT4RUSk4SnpFhGRU1J1y+XhLZV2u53//e9/TXLuI1tI33//fXfX7ro644wziI6O5qWXXsJut7u3z549u06J/IQJE1ixYgWzZs0iOzv7qK7lVqsVwzA8plTbt28fCxYsaNSYj/W7WrlyJcuXL/coVz33em2u+Xe/+x0ATz/9tMf2p556CqDOI7HXltVq5cILL+STTz7xmNYrIyODefPmcfbZZxMaGgq4Rt0/XHBwMJ07d3ZPaVZSUnLUjYdOnToREhJy1LRnIiLSfGnKMBEROSUNGzaMiIgIrr/+ev7yl79gGAZvvvlmo3YXrnbRRRfx4IMPMnXqVIYNG8amTZt4++23a/389ZF8fX15+OGH+dOf/sT555/PhAkT2Lt3L2+88Uad6rzqqqu48847ufPOO4mMjDyqFXvcuHE89dRTjBkzhmuuuYbMzExeeOEFOnfu7PGscUPHfNFFF/HRRx9x2WWXMW7cOPbu3ctLL71Ez549KSoqcpcLCAigZ8+ezJ8/n65duxIZGUnv3r3p3bv3UedPSkri+uuv55VXXnE/arBq1SrmzJnD+PHjjzlveUN5+OGHWbRoEWeffTZ//vOf8fHx4eWXX6a8vJzHH3/cXa5nz56MGDGCgQMHEhkZyerVq/nggw+45ZZbANi5cycjR47kqquuomfPnvj4+PDxxx+TkZHhMc2biIg0b0q6RUTklBQVFcXnn3/OX//6V/71r38RERHBtddey8iRIxk9enSjnvsf//gHxcXFzJs3j/nz5zNgwAC++OIL7r777nrXedNNN+FwOPjPf/7DXXfdRZ8+ffj000+55557al1H27ZtGTZsGD/99BM33njjUXONn3/++bz++us8+uij3H777XTo0IHHHnuMffv21TnprkvMU6ZMIT09nZdffpmvv/6anj178tZbb/H++++zZMkSj7KvvfYat956K3fccQd2u5377rvvmEl3ddmOHTsye/ZsPv74Y+Li4pgxYwb33Xdfna+lLnr16sWPP/7IjBkzmDlzJk6nkyFDhvDWW2+55+gG+Mtf/sKnn37KN998Q3l5Oe3bt+fhhx/mrrvuAiAhIYGJEyeyePFi3nzzTXx8fOjevTvvvfcev//97xv1GkREpOEYZlPc8hcRERERERE5DemZbhEREREREZFGoqRbREREREREpJEo6RYRERERERFpJEq6RURERERERBqJkm4RERERERGRRqKkW0RERERERKSRaJ7uY3A6naSmphISEoJhGN4OR0RERERERJoZ0zQpLCwkPj4ei+X47dlKuo8hNTWVhIQEb4chIiIiIiIizVxKSgpt27Y97n4l3ccQEhICuN680NBQL0cjIiIiIiIizU1BQQEJCQnu/PF4lHQfQ3WX8tDQUCXdIiIiIiIiclw1PZKsgdREREREREREGomSbhEREREREZFG4tWke+bMmQwaNIiQkBBiYmIYP348O3bsOOExr776KsOHDyciIoKIiAhGjRrFqlWrPMpMmTIFwzA8ljFjxjTmpYiIiIiIiIgcxavPdC9dupRp06YxaNAgKisr+cc//sGFF17I1q1bCQoKOuYxS5YsYeLEiQwbNgx/f38ee+wxLrzwQrZs2UKbNm3c5caMGcMbb7zhfm2z2Rr9ekRERERERJoTp9OJ3W73dhgtkq+vL1ar9aTrMUzTNBsgngaRlZVFTEwMS5cu5ZxzzqnVMQ6Hg4iICJ5//nkmT54MuFq68/LyWLBgQb3iKCgoICwsjPz8fA2kJiIiIiIiLZLdbmfv3r04nU5vh9JihYeHExcXd8zB0mqbNzar0cvz8/MBiIyMrPUxJSUlVFRUHHXMkiVLiImJISIigvPPP5+HH36YqKioBo1XRERERESkOTJNk7S0NKxWKwkJCVgsGs6rLkzTpKSkhMzMTABat25d77qaTdLtdDq5/fbbOeuss+jdu3etj/v73/9OfHw8o0aNcm8bM2YMl19+OR06dGDPnj384x//YOzYsSxfvvyY3QPKy8spLy93vy4oKDi5ixEREREREfGiyspKSkpKiI+PJzAw0NvhtEgBAQEAZGZmEhMTU++u5s0m6Z42bRqbN29m2bJltT7m0Ucf5d1332XJkiX4+/u7t1999dXu9T59+tC3b186derEkiVLGDly5FH1zJw5kwceeODkLkBERERERKSZcDgcAPj5+Xk5kpat+oZF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kUahpLslq27tXvsm1GPar9+e6S7WtGEiIiIiIiKNQEl3S9bnCrDaIHMLpK6t8+FtIwKwGFBsd5BVpGnDRERERETE+5xOJzNnzqRDhw4EBASQlJTEBx98gNPppG3btrz44ose5detW4fFYmH//v0APPXUU/Tp04egoCASEhL485//TFFRkTcuBVDS3bIFREDPS1zr696q8+E2HyvxVdOGaQRzEREREZFTmGmCvdg7Sx171c6cOZO5c+fy0ksvsWXLFu644w6uvfZafvzxRyZOnMi8efM8yr/99tucddZZtG/fHgCLxcKzzz7Lli1bmDNnDt999x1/+9vfGuytrCsfr51ZGkb/a2HT+7DpA7jwEfALrNPhiVFBHDhUyr7sYgYlRjZSkCIiIiIi4lUVJfDveO+c+x+p4BdUq6Ll5eX8+9//5ttvv2Xo0KEAdOzYkWXLlvHyyy/zt7/9jSeffJLk5GTatWuH0+nk3Xff5V//+pe7jttvv929npiYyMMPP8z//d//8b///a9BL6u21NLd0iWeA+HtobwAtn1a98NbuZJ0tXSLiIiIiIi37d69m5KSEi644AKCg4Pdy9y5c9mzZw/9+vWjR48e7tbupUuXkpmZyZVXXumu49tvv2XkyJG0adOGkJAQrrvuOnJycigp8U7O49WW7pkzZ/LRRx+xfft2AgICGDZsGI899hjdunU74XHvv/8+99xzD/v27aNLly489thj/O53v3PvN02T++67j1dffZW8vDzOOussXnzxRbp06dLYl9T0LBZXa/f3j7i6mCddXafDE6umDdNc3SIiIiIipzDfQFeLs7fOXUvVz15/8cUXtGnTxmOfzWYDYNKkScybN4+7776befPmMWbMGKKiogDYt28fF110ETfffDOPPPIIkZGRLFu2jBtuuAG73U5gYN16BjcEr7Z0L126lGnTprFixQoWLVpERUUFF154IcXFx08Af/75ZyZOnMgNN9zAunXrGD9+POPHj2fz5s3uMo8//jjPPvssL730EitXriQoKIjRo0dTVlbWFJfV9JImAgbs+xFyf63ToZqrW0RERETkNGAYri7e3lgMo9Zh9uzZE5vNRnJyMp07d/ZYEhISALjmmmvYvHkza9as4YMPPmDSpEnu49esWYPT6eTJJ5/kzDPPpGvXrqSmeulmQxWvtnQvXLjQ4/Xs2bOJiYlhzZo1nHPOOcc85plnnmHMmDHcddddADz00EMsWrSI559/npdeegnTNHn66af517/+xaWXXgrA3LlziY2NZcGCBVx9dd1agluE8ATodD7sWexq7R55b60PrZ6re392CaZpYtThH4SIiIiIiEhDCgkJ4c477+SOO+7A6XRy9tlnk5+fz08//URoaCjXX389iYmJDBs2jBtuuAGHw8Ell1ziPr5z585UVFTw3HPPcfHFF/PTTz/x0ksvefGKmtkz3fn5+QBERh5/QK/ly5czatQoj22jR49m+fLlAOzdu5f09HSPMmFhYQwZMsRd5pQ0oGrO7vXzwOmo9WEJkYFYDCgsryS94BTtCSAiIiIiIi3GQw89xD333MPMmTPp0aMHY8aM4YsvvqBDhw7uMpMmTWLDhg1cdtllBAQEuLcnJSXx1FNP8dhjj9G7d2/efvttZs6c6Y3LcGs2SbfT6eT222/nrLPOonfv3sctl56eTmxsrMe22NhY0tPT3furtx2vzJHKy8spKCjwWFqcbr+DgEgoTIPdi2t9mL+vlR6tQwFYuz+vkYITERERERGpHcMwuO2229i+fTt2u53MzEwWLlzo0Rv65ptvxjRN5syZc9Txd9xxB6mpqZSUlLBw4UKuu+46TNMkPDwcgClTppCXl9dEV9OMku5p06axefNm3n333SY/98yZMwkLC3Mv1c8KtCg+Nug7wbW+bm6dDh3YPgKANfsPNXRUIiIiIiIip7VmkXTfcsstfP7553z//fe0bdv2hGXj4uLIyMjw2JaRkUFcXJx7f/W245U50owZM8jPz3cvKSkp9b0U76ruYr7jKyjOrvVh1Un32mQl3SIiIiIiIg3Jq0m3aZrccsstfPzxx3z33XceffSPZ+jQoSxe7Nl9etGiRe6J0zt06EBcXJxHmYKCAlauXOkucySbzUZoaKjH0iLF9oL4/uCshA217zEwoJ0r6d6Smk9ZRe2fBxcREREREZET82rSPW3aNN566y3mzZtHSEgI6enppKenU1pa6i4zefJkZsyY4X592223sXDhQp588km2b9/O/fffz+rVq7nlllsAV///22+/nYcffphPP/2UTZs2MXnyZOLj4xk/fnxTX2LT61/V2r3uTTDNWh3SNiKA6BAbFQ6TTQfzGzE4ERERERGR04tXk+4XX3yR/Px8RowYQevWrd3L/Pnz3WWS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EyeSlJQEwKeffurudi6nn9gj5+qu1vv34BMA2TvgwGovRCYiIiIiIuIdPvU5aMSIEWRnZ1NQUEBERIR7+0033URgYGCDBSctyzG7lwP4h0Gv8bDhHVg3FxIGNX1wIiIiIiIiXlCvlu7S0lLKy8vdCff+/ft5+umn2bFjBzExMQ0aoLQcHaODAfhmawaZhcfpYr75IygvauLIREREREREvKNeSfell17K3LlzAcjLy2PIkCE8+eSTjB8/nhdffLFBA5SW48JesfRuE0p+aQX3LtjiubP9WRDZEexFsPUT7wQoIiIiIiLSxOqVdK9du5bhw4cD8MEHHxAbG8v+/fuZO3cuzz77bK3r+eGHH7j44ouJj4/HMAwWLFhwwvIfffQRF1xwAdHR0YSGhjJ06FC+/vprjzL3338/hmF4LN27d6/zNUrd+VotPP77JHwsBgu3pPPlpsNGsjeM31q7NWe3iIiIiIicJuqVdJeUlBASEgLAN998w+WXX47FYuHMM89k//79ta6nuLiYpKQkXnjhhVqV/+GHH7jgggv48ssvWbNmDeeddx4XX3wx69at8yjXq1cv0tLS3MuyZctqf3FyUnrGh/LnEZ0AuPeTzRwqtv+2M2kiGBZIXg7Zu7wUoYiIiIiISNOp10BqnTt3ZsGCBVx22WV8/fXX3HHHHQBkZmYSGhpa63rGjh3L2LFja13+6aef9nj973//m08++YTPPvuM/v37u7f7+PgQFxdX63qlYU07vzNfbU5nV2YRD32+lacm9HPtCI2HzhfArq9h3VtwwQNejVNERERERKSx1aul+9577+XOO+8kMTGRwYMHM3ToUMDV6n148tvYnE4nhYWFREZGemzftWsX8fHxdOzYkUmTJpGcnHzCesrLyykoKPBYpP5sPlYev6IvFgM+WneQFb/m/LZzwHWunxveAUeldwIUERERERFpIvVKuq+44gqSk5NZvXq1xzPVI0eO5L///W+DBVeTJ554gqKiIq666ir3tiFDhjB79mwWLlzIiy++yN69exk+fDiFhYXHrWfmzJmEhYW5l4SEhKYI/5TWv10ElyTFA7B8z2FJd5fRENgKijJg1zdeik5ERERERKRp1CvpBoiLi6N///6kpqZy4MABAAYPHtxkg5bNmzePBx54gPfee89jmrKxY8dy5ZVX0rdvX0aPHs2XX35JXl4e77333nHrmjFjBvn5+e4lJSWlKS7hlNe9tetRg/05xb9t9PGDpKtd6+ve8kJUIiIiIiIiTadeSbfT6eTBBx8kLCyM9u3b0759e8LDw3nooYdwOp0NHeNR3n33XW688Ubee+89Ro0adcKy4eHhdO3ald27dx+3jM1mIzQ01GORk5cYFQjA3pwSzx39q7qY71wIhRlNHJWIiIiIiEjTqVfS/c9//pPnn3+eRx99lHXr1rFu3Tr+/e9/89xzz3HPPfc0dIwe3nnnHaZOnco777zDuHHjaixfVFTEnj17aN26daPGJUdLbBUEHNHSDRDTHdoOAtPherZbRERERETkFFWv0cvnzJnDa6+9xiWXXOLe1rdvX9q0acOf//xnHnnkkVrVU1RU5NECvXfvXtavX09kZCTt2rVjxowZHDx4kLlz5wKuLuXXX389zzzzDEOGDCE9PR2AgIAAwsLCALjzzju5+OKLad++Pampqdx3331YrVYmTpxYn0uVk9A+0pV055VUkFdiJzzQ77ed/a+DA7+4upifdZtrHm8REREREZFTTL1aunNzc4/57Hb37t3Jzc2tdT2rV6+mf//+7hHPp0+fTv/+/bn33nsBSEtL8xh5/JVXXqGyspJp06bRunVr93Lbbbe5yxw4cICJEyfSrVs3rrrqKqKiolixYgXR0dH1uVQ5CQF+VuJC/QHYd2QX896Xg28g5OyClJVeiE5ERERERKTx1aulOykpieeff55nn33WY/vzzz9P3759a13PiBEjME3zuPtnz57t8XrJkiU11vnuu+/W+vzS+NpHBZJeUMa+7GL6JYT/tsMWAr0ug/Vvw9o3od2ZXotRRERERESksdQr6X788ccZN24c3377rXuO7uXLl5OSksKXX37ZoAFKy5YYFcTKvbnsO/K5bnB1MV//Nmz5GMY+6krERURERERETiH16l5+7rnnsnPnTi677DLy8vLIy8vj8ssvZ8uWLbz55psNHaO0YNWDqe3LPkbS3e5MiOoMFcWuxFtEREREROQUU6+WboD4+PijBkzbsGEDr7/+Oq+88spJByanhuppw456phtcg6f1vxa+vd/VxXzA5KYNTkREREREpJHVq6VbpLbcLd3H6l4OkHQNGFY4sAqydjRhZCIiIiIiIo1PSbc0qvZVLd3V04YdJSQWuo52ra/TowkiIiIiInJqUdItjSrQz4fYUBtwnC7m4OpiDrDhXXBUNFFkIiIiIiIija9Oz3RffvnlJ9yfl5d3MrHIKap9VBAZBeXszzli2rBqXS6EoBgozoSdX0OPi5o8RhERERERkcZQp5busLCwEy7t27dn8mQNhiWe3IOpZR+npdvqC/0mutbVxVxERERERE4hdWrpfuONNxorDjmF1TiYGrjm7P7pGdj1DRSkQWjrJopORERERESk8eiZbml0iVG1SLpbdYGEM8F0woZ3migyERERERGRxqWkWxqdO+nOPkHSDTDgOtfPdW+BaTZyVCIiIiIiIo1PSbc0uuppww6VVJBfcoLRyXuOB79gyN0D+39umuBEREREREQakZJuaXRBNh9iQqqnDTtBa7ctGHpd5lpf91YTRCYiIiIiItK4lHRLk6jVc90AA6pGv9+6AMoKGjcoERERERGRRqakW5pEYqsapg2r1nYQtOoGFSWw+cMmiExERERERKTxKOmWJtG+qqV7f00t3YYB/a91rauLuYiIiIiItHBKuqVJVHcv31tT0g2QNBEsPnBwNWRua+TIREREREREGo+SbmkS1d3L9+fU0L0cIDgauo5xra99sxGjEhERERERaVxKuqVJVHcvzy22k196gmnDqvWvmrN747tQaW/EyERERERERBqPkm5pEsE2H9pGBACwam9uzQd0HgXBcVCSAzu/auToREREREREGoeSbmkyF/aMA+CrTWk1F7b6QL9rXOvqYi4iIiIiIi2Ukm5pMr/r40q6F23LoLzSUfMB1aOY71kM+QcbMTIREREREZHGoaRbmsyAdhHEhNgoLKvk5905NR8Q1QnanwWmEzbMa/wARUREREREGpiSbmkyFovB2N6u1u4va9PFHH4bUG3dW+B0NlJkIiIiIiIijUNJtzSpsX1aA/DN1gwqHLVIonteAn4hcGgf7F/WuMGJiIiIiIg0MK8m3T/88AMXX3wx8fHxGIbBggULajxmyZIlDBgwAJvNRufOnZk9e/ZRZV544QUSExPx9/dnyJAhrFq1quGDl3oZlBhJq2A/8ksrWL6nFl3M/YKgz+9d6+veatzgREREREREGphXk+7i4mKSkpJ44YUXalV+7969jBs3jvPOO4/169dz++23c+ONN/L111+7y8yfP5/p06dz3333sXbtWpKSkhg9ejSZmZmNdRlSB1aLweheVaOYb65tF/PJrp9bP4HSvMYJTEREREREpBEYpmma3g4CwDAMPv74Y8aPH3/cMn//+9/54osv2Lx5s3vb1VdfTV5eHgsXLgRgyJAhDBo0iOeffx4Ap9NJQkICt956K3fffXetYikoKCAsLIz8/HxCQ0Prf1FyTD/tzmbSayuJDPJj1T9G4mOt4d6PacL/hkLWNhj3JAy6sWkCFREREREROY7a5o0t6pnu5cuXM2rUKI9to0ePZvny5QDY7XbWrFnjUcZisTBq1Ch3GfG+IR0iiQj0JbfYzqq9uTUfYBgw4LAB1URERERERFqIFpV0p6enExsb67EtNjaWgoICSktLyc7OxuFwHLNMenr6cestLy+noKDAY5HG42O1cGHPqlHMa9vFvO8EsPhC6jpI31xzeRERERERkWagRSXdjWXmzJmEhYW5l4SEBG+HdMob08eVdH+3rZbP2ge1gm5jXevr3mykqERERERERBpWi0q64+LiyMjI8NiWkZFBaGgoAQEBtGrVCqvVeswycXFxx613xowZ5Ofnu5eUlJRGiV9+MygxEsOA1PwysgrLa3fQgKoB1TbOh8paHiMiIiIiIuJFLSrpHjp0KIsXL/bYtmjRIoYOHQqAn58fAwcO9CjjdDpZvHixu8yx2Gw2QkNDPRZpXME2HzpHBwOw8UBe7Q7qdD6ExEPpIdj+ReMFJyIiIiIi0kC8mnQXFRWxfv161q9fD7imBFu/fj3JycmAqwV68uTJ7vL/93//x6+//srf/vY3tm/fzv/+9z/ee+897rjjDneZ6dOn8+qrrzJnzhy2bdvGzTffTHFxMVOnTm3Sa5Oa9WkbBsDGA/m1O8BihX7XuNbVxVxERERERFoArybdq1evpn///vTv3x9wJcz9+/fn3nvvBSAtLc2dgAN06NCBL774gkWLFpGUlMSTTz7Ja6+9xujRo91lJkyYwBNPPMG9995Lv379WL9+PQsXLjxqcDXxvqS24UAdWroB+l/r+rnne8jTYwAiIiIiItK8NZt5upsTzdPdNNYlH+Ky//1Mq2A/fvnnKAzDqN2Bsy+CfT/CiH/AiL83bpAiIiIiIiLHcErO0y2nlh6tQ/GxGGQX2UnNL6v9gdUDqq1/C5zOxglORERERESkASjpFq/x97XSLS4EgE116WLe42KwhUFeMuz7oXGCExERERERaQBKusWr+lYNprahtoOpAfgGQJ8rXOtrNaCaiIiIiIg0X0q6xav6Vg2mtqkuSTfAgOtcP7d95ppCTEREREREpBlS0i1e1adN9bRhedRpTL/W/SC2NzjKYdMHjROciIiIiIjISVLSLV7VLS4Em4+FgrJK9uWU1P5Aw4D+Va3da+c2TnAiIiIiIiInSUm3eJWv1ULPeNfw+nWarxug71Vg9YP0jZC2oeGDExEREREROUlKusXr+rq7mNfxue7ASOg+zrW+7q0GjkpEREREROTkKekWr6v3YGrwWxfzje9BRR3m+hYREREREWkCSrrF66qnDducmo/DWYfB1AA6joCwBCjLg+2fN3hsIiIiIiIiJ0NJt3hdx+hggvyslNgd7MkqqtvBFiv0u8a1vk5zdouIiIiISPOipFu8zmox6FX1XPeGlLy6V9BvEmDAr0vg0P6GDE1EREREROSkKOmWZiGpqov52uRDdT84oj10PNe1vv7tBoxKRERERETk5CjplmbhrM6tAFi8LRNnXZ/rht8GVFv3NjgdDRiZiIiIiIhI/SnplmZhWKdWhNh8yCwsZ119uph3vwj8w6HggKubuYiIiIiISDOgpFuaBT8fC+f3iAHgmy3pda/A1x/6XuVa14BqIiIiIiLSTCjplmZjdK84ABZuScc069PF/FrXz+1fQEluA0YmIiIiIiJSP0q6pdk4t2s0fj4W9ueUsCOjsO4VtE6CuL7gsMPG9xo+QBERERERkTpS0i3NRpDNh3O6RAPw9eaM+lUyYLLr57o3oT6t5SIiIiIiIg1ISbc0K6N7xQKuLub10ucKsNogYzOkrW+4wEREREREROpBSbc0K6N6xGK1GGxLKyAlt6TuFQREQI+LXetrNaCaiIiIiIh4l5JuaVYigvwYnBgJwNf1be0eUDVn96YPoKK0gSITERERERGpOyXd0uyM6V01ivnmeibdiedAeDsoz4dtnzVgZCIiIiIiInWjpFuanQurnutek3yIrMLyuldgsUC/qunD1s5twMhERERERETqRkm3NDutwwLo2zYM04SfdmfXr5J+1wAG7PsRcn9t0PhERERERERqq1kk3S+88AKJiYn4+/szZMgQVq1addyyI0aMwDCMo5Zx48a5y0yZMuWo/WPGjGmKS5EG0i8hHICtaQX1qyA8ATqd51pfP69hghIREREREakjryfd8+fPZ/r06dx3332sXbuWpKQkRo8e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99+zfPlyEhISuPDCCzl48KBHuTFjxpCWluZe3nnnnaa4HBERERERERE3r49ePmTIEAYNGsTzzz8PgNPpJCEhgVtvvZW77767xuMdDgcRERE8//zzTJ48GXC1dOfl5bFgwYJ6xaTRy0VEREREROREaps3erWl2263s2bNGkaNGuXeZrFYGDVqFMuXL69VHSUlJVRUVBAZGemxfcmSJcTExNCtWzduvvlmcnJyjltHeXk5BQUFHouIiIiIiIjIyfJq0p2dnY3D4SA2NtZje2xsLOnp6bWq4+9//zvx8fEeifuYMWOYO3cuixcv5rHHHmPp0qWMHTsWh8NxzDpmzpxJWFiYe0lISKj/RYmIiIiIiIhUadHzdD/66KO8++67LFmyBH9/f/f2q6++2r3ep08f+vbtS6dOnViyZAkjR448qp4ZM2Ywffp09+uCggIl3iIiIiIiInLSvNrS3apVK6xWKxkZGR7bMzIyiIuLO+GxTzzxBI8++ijffPMNffv2PWHZjh070qpVK3bv3n3M/TabjdDQUI9FRERERERE5GR5Nen28/Nj4MCBLF682L3N6XSyePFihg4detzjHn/8cR566CEWLlzIGWecUeN5Dhw4QE5ODq1bt26QuEVERERERERqw+tThk2fPp1XX32VOXPmsG3bNm6++WaKi4uZOnUqAJMnT2bGjBnu8o899hj33HMPs2bNIjExkfT0dNLT0ykqKgKgqKiIu+66ixUrVrBv3z4WL17MpZdeSufOnRk9erRXrlFEREREREROT15/pnvChAlkZWVx7733kp6eTr9+/Vi4cKF7cLXk5GQslt/uDbz44ovY7XauuOIKj3ruu+8+7r//fqxWKxs3bmTOnDnk5eURHx/PhRdeyEMPPYTNZqtVTNWzqGkUcxERERERETmW6nyxplm4vT5Pd3N04MABDaQmIiIiIiIiNUpJSaFt27bH3a+k+xicTiepqamEhIRgGIa3wzmm6hHWU1JSNPCbnNL0WZfTgT7ncjrQ51xOF/qsnz5M06SwsJD4+HiP3tlH8nr38ubIYrGc8E5Fc6LR1uV0oc+6nA70OZfTgT7ncrrQZ/30EBYWVmMZrw+kJiIiIiIiInKqUtItIiIiIiIi0kiUdLdQNpuN++67r9Yjsou0VPqsy+lAn3M5HehzLqcLfdblSBpITURERERERKSRqKVbRERE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", + "text/plain": [ + "

" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAGGCAYAAABmGOKbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAqzhJREFUeJzs3Xd8VFX6x/HPzKT3BEIgtNAhlIQuIB1FVBArdkBXXcV1FV1/rrtrQVfXujZWbBTbCrqIioh0kCKQkNBbICEhIQnpJCFt5v7+mGQgJIEQQgp836/XvDK5c+69z0ySyTz3nPMck2EYBiIiIiIiIiJS68z1HYCIiIiIiIjIpUpJt4iIiIiIiMhFoqRbRERERERE5CJR0i0iIiIiIiJykSjpFhEREREREblIlHSLiIiIiIiIXCRKukVEREREREQuEiXdIiIiIiIiIheJkm4RERERERGRi0RJt4iI1KkpU6YQEhJS32HUyIgRIxgxYkSdnzckJIQpU6Y4vl+zZg0mk4k1a9acc9+LEfMLL7yAyWSq1WNWl8lk4oUXXqiXc1eltl+PuLg4TCYTc+fOrbVjNlSN+f1ARKS6lHSLiAhgT2aqc6tOoieNX35+Pi+88IJ+3iIiIhfIqb4DEBGRhuGLL74o9/3nn3/O8uXLK2zv1q3bBZ3nk08+wWazXdAxLnfDhg3j5MmTuLi4XLRz5Ofn8+KLLwJU6Cn/+9//zjPPPHPRzt3Y6PUQEZGzUdItIiIA3H333eW+//3331m+fHmF7WfKz8/Hw8Oj2udxdnauUXxyitlsxs3Nrd7O7+TkhJOTPkKU0eshIiJno+HlIiJSbSNGjKBHjx5ERkYybNgwPDw8ePbZZwH44YcfuO666wgODsbV1ZUOHTrw0ksvYbVayx3jzDmcZfNX33zzTT7++GM6dOiAq6sr/fv3Z+vWreeMKSMjg6eeeoqePXvi5eWFj48P48aNY/v27eXalc2DXrBgAf/85z9p1aoVbm5ujB49mpiYmArHLYvF3d2dAQMG8Ntvv1XrNerRowcjR46ssN1ms9GyZUtuueUWx7Y333yTwYMH06RJE9zd3enbty/ffffdOc9R1Zzu6sRcVFTEc889R9++ffH19cXT05OhQ4eyevVqR5u4uDgCAwMBePHFFx1TC8rmUlc2h7mkpISXXnrJ8fMLCQnh2WefpbCwsFy7kJAQrr/+etavX8+AAQNwc3Ojffv2fP755+d83lWJiopi3Lhx+Pj44OXlxejRo/n999/LtSkuLubFF1+kU6dOuLm50aRJE6688kqWL1/uaJOcnMzUqVNp1aoVrq6utGjRghtuuIG4uLiznr+y18NkMvHoo4+yaNEievTogaurK927d2fp0qU1fp6rVq1i6NCheHp64ufnxw033MDevXsrtFuzZg39+vXDzc2NDh068NFHH1V73vnBgwe5+eabad68OW5ubrRq1Yrbb7+d7Ozscu2+/PJLBgwYgIeHB/7+/gwbNoxly5Y5Hq/u+0FlbDYb77zzDt27d8fNzY2goCAeeughMjMzq/EqiYg0PLosKyIi5yU9PZ1x48Zx++23c/fddxMUFATA3Llz8fLyYvr06Xh5ebFq1Sqee+45cnJyeOONN8553K+//poTJ07w0EMPYTKZeP3117nppps4fPjwWXvHDx8+zKJFi7j11ltp164dKSkpfPTRRwwfPpw9e/YQHBxcrv2//vUvzGYzTz31FNnZ2bz++uvcddddbN682dHms88+46GHHmLw4ME8/vjjHD58mAkTJhAQEEDr1q3P+jwmTZrECy+8QHJyMs2bN3dsX79+PUlJSdx+++2Obe+++y4TJkzgrrvuoqioiG+++YZbb72VxYsXc911153zNTtddWPOycnh008/5Y477uCBBx7gxIkTfPbZZ4wdO5YtW7YQHh5OYGAgH374IQ8//DA33ngjN910EwC9evWq8vx/+MMfmDdvHrfccgtPPvkkmzdv5tVXX2Xv3r18//335drGxMRwyy23cP/99zN58mRmz57NlClT6Nu3L927dz+v5717926GDh2Kj48PTz/9NM7Oznz00UeMGDGCtWvXMnDgQMCeGL/66qv84Q9/YMCAAeTk5BAREcG2bdu46qqrALj55pvZvXs3f/rTnwgJCSE1NZXly5cTHx9fo2Jf69evZ+HChTzyyCN4e3vz3nvvcfPNNxMfH0+TJk3O61grVqxg3LhxtG/fnhdeeIGTJ0/y/vvvM2TIELZt2+aILyoqimuuuYYWLVrw4osvYrVamTFjhuMiytkUFRUxduxYCgsL+dOf/kTz5s1JTExk8eLFZGVl4evrC9gvxLzwwgsMHjyYGTNm4OLiwubNm1m1ahVXX301cGHvBw899BBz585l6tSpPPbY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dHvv3r2r3GfEiBHVOs+jjz7Ko48+el7xXJL6TbUn3du/hjHPg/P5JcqTBrTmw7WHyMgrYu2B447t+5NP8OHdfWs7WhERERERkXrVoIeXSwPUYRT4toGCbNi96Lx393Fz5tfHhzHvvgG8fksvHhrWHoC1B45TWKJ53iIiIiIilzubzcarr75Ku3btcHd3JywsjO+++w6bzUarVq0qLAkdFRWF2WzmyBF7wea3336bnj174unpSevWrXnkkUfIzc2tj6cCKOmW82W2QN8LK6gW6O3K8M6B3NavNc+M60ozb1fyi6xsic2oxUBFRERERMTBMKAor35u5zmC+dVXX+Xzzz9n1qxZ7N69myeeeIK7776b3377jTvuuIOvv/66XPuvvvqKIUOG0LZtW8A+9fi9995j9+7dzJs3j1WrVvH000/X2kt5vhr08HJpoHrfA2v+BQmbIWUPBIXW+FAmk4mRXZoxPyKBVftSGdqp8rn3IiIiIiJyAYrz4ZXg+jn3s0ng4lmtpoWFhbzyyiusWLHCsVpU+/btWb9+PR999BFPP/00b731FvHx8bRp0wabzcY333zD3//+d8cxHn/8ccf9kJAQXn75Zf74xz/yn//8p1afVnWpp1vOn3dz6DLOfr+Gvd2nG9m1GQCr96Ve8LFERERERKTxiomJIT8/n6uuugovLy/H7fPPP+fQoUOEh4fTrVs3R2/32rVrSU1N5dZbb3UcY8WKFYwePZqWLVvi7e3NPffcQ3p6Ovn5+fXynNTTLTXTdyrs/Qm2z4cxL4KLR40PdWWnpjhbTMSl53P4eC7tA71qMVAREREREcHZw97jXF/nrqayudc///wzLVu2LPeYq6srAHfddRdff/01zzzzDF9//TXXXHMNTZo0ASAuLo7rr7+ehx9+mH/+858EBASwfv167r//foqKivDwqHneUlNKuqVm2o8E/xDIjIPdC6H33TU+lJerEwPbNWF9TBqr9qUq6RYRERERqW0mU7WHeNen0NBQXF1diY+PZ/jw4ZW2ufPOO/n73/9OZGQk3333HbNmzXI8FhkZic1m46233sJstg/sXrBgQZ3EXhUNL5eaMZuhz2T7/YhaHGK+X0PMRUREREQuV97e3jz11FM88cQTzJs3j0OHDrFt2zbef/995s2bB9jnaQ8ePJj7778fq9XKhAkTHPt37NiR4uJi3n//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UqOk+4YbbuDzzz8HICsri4EDB/LWW28xceJEPvzww1oNUOSCtR6AtWk33E1F9ExfSuqJgvqOSERERERELhM1Srq3bdvG0KFDAfjuu+8ICgriyJEjfP7557z33nu1GqDIBTOZsPS/D4A7LSvZFJNWzwGJiIiIiMjlokZJd35+Pt7e3gAsW7aMm266CbPZzBVXXMGRIxq+Kw1Qr9soNrvSxXyUozvW1Hc0IiIiIiJymahR0t2xY0cWLVpEQkICv/76K1dffTUAqamp+Pj41GqAIrXC3Y/0kPEAtD+yAMMw6jkgERERERG5HNQo6X7uued46qmnCAkJYcCAAQwaNAiw93r37t27VgMUqS1+Qx8EYJR1I/GJifUcjYiIiIiIXA5qlHTfcsstxMfHExERwa+//urYPnr0aP7973/XWnAitcktZABxTu1xNRWTun5ufYcjIiIiIiKXgRol3QDNmzend+/eJCUlcfToUQAGDBhA165day04kVplMhHb9jYAWh2aDxpiLiIiIiIiF1mNkm6bzcaMGTPw9fWlbdu2tG3bFj8/P1566SVsNlttxyhSa/wH3UWe4UqL4niscRvqOxwREREREbnE1Sjp/tvf/sYHH3zAv/71L6KiooiKiuKVV17h/fff5x//+Edtx3jJmTlzJqGhofTv37++Q7ns9GjXil8YAkDO+o/rORoREREREbnUmYwalHEODg5m1qxZTJgwodz2H374gUceeYREFamqlpycHHx9fcnOzlbV9zr00sdf8Y+kR7CanLE8tR88m9R3SCIiIiIi0shUN5+rUU93RkZGpXO3u3btSkZGRk0OKVJngrpewU5bCBajGLZ/Xd/hiIiIiIjIJaxGSXdYWBgffPBBhe0ffPABvXr1uuCgRC6mkCaefG0dbf8mcq4KqomIiIiIyEXjVJOdXn/9da677jpWrFjhWKN706ZNJCQksGTJkloNUKS2tW3iyY/Wwfzd+Ss802Mg7jdoN6y+wxIRERERkUtQjXq6hw8fzoEDB7jxxhvJysoiKyuLm266id27d/PFF1/Udowitap1gDt5uLOoxF5QjYg59RuQiIiIiIhcsmpUSK0q27dvp0+fPlit1to65CVNhdTqT7+XVxCUt5+fXZ8FszNM3wtegfUdloiIiIiINBIXtZCaSGPXJsCd3UYIWf49wVYM0V/Vd0giIiIiInIJUtItl6U2AR4ARDe70b4hci7YbPUXkIiIiIiIXJKUdMtlqSzpXu08FFx9IDMW4tbVc1QiIiIiInKpOa/q5TfddNNZH8/KyrqQWETqTJsmngAcyjKg122w9VN7QbX2I+o3MBERERERuaScV9Lt6+t7zsfvvffeCwpIpC6U9XTHZ+TD9VPsSfe+xZCbCl7N6jc4ERERERG5ZJxX0j1njpZWkktDWdKdmHWSksDuOLXsB4kREPUlDJ1ez9GJiIiIiMilQnO65bLUzNsVFyczVpvBsewC6DfV/sC2eSqoJiIiIiIitUZJt1yWzGYTrf3dgdIh5t1vAldfyIyDw6vrNzgREREREblkKOmWy1bb0mJqR9LzwcUDwibZH4jUNAoREREREakdSrrlslWumBpA39Ih5vuWwInkeopKREREREQuJUq65bLVujTpTihLuoNCofVAMKwQ9UU9RiYiIiIiIpcKJd1y2arQ0w2nersjPwebtR6iEhERERGRS4mS7nowc+ZMQkND6d+/f32HclmrNOnuPhHc/CA7Hg6tqpe4RERERETk0qGkux5MmzaNPXv2sHXr1voO5bLWOsBevTz7ZDHZ+cX2jc7uEHaH/X6ECqqJiIiIiMiFUdItly0PFycCvV2BM3q7y9bsPrAUcpLqITIREREREblUKOmWy1qlQ8wDu0CbwfaCattUUE1ERERERGpOSbdc1ipNuuFUb/c2FVQTEREREZGaU9Itl7XWVSXd3SaAewDkHIWDy+shMhERERERuRQo6ZbL2qme7rzyDzi7Qfid9vuRKqgmIiIiIiI1o6RbLmttm1TR0w3Qd4r968FlkH207oISEREREZFLhpJuuayV9XQnZRVQbLWVf7BpJwgZCobNPrdbRERERETkPCnplstaoJcrrk5mrDaDY1kFFRuU9XZv+xysJXUam4iIiIiINH5KuuWyZjabaNfUE4C9yTkVG3QbDx5N4MQxOPhrHUcnIiIiIiKNnZJuuez1buMPQOSRzIoPOrlC+F32+xEqqCYiIiIiIudHSbdc9ga0syfdW2IzKm9QNsQ8ZgVkHqmboERERERE5JKgpFsue/3aBgCwKzGbk0XWig2adIB2wwFDBdVEREREROS8KOmWy14rf3ea+7hRYjOITsiqvFG/qfavUV+AtbjOYhMRERERkcZNSXctuvHGG/H39+eWW26p71Dk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szOcnZ2xdu1aVFZW1tq+Z88eAMAnn3yCrKws+edt27bhoYcewpw5c3Ds2DF89NFHWL58OV5//XWr4+fNm4cJEybg0KFDmDJlCiZNmoTjx483/4URERG1AI50ExER0XV9++23mDlzJsrLyxETE4PBgwdj0qRJiIqKAmAasV6zZg3Gjh0rH5OYmIiEhAS8+OKL8mtffPEF5s6di8zMTPm4xx57DMuWLZP36devH2JiYvDBBx+0zMURERE1I450ExER0XVNmDABmZmZ+OGHH5CUlIS0tDTExMRg+fLl9R5z6NAhvPrqq/JIubOzM2bOnImsrCyUlZXJ+8XHx1sdFx8fz5FuIiJqN5hIjYiIiBrF3t4ew4YNw7BhwzBv3jzMmDEDCxYswLRp0+rcv6SkBAsXLsT48ePrfC8iIqLbAUe6iYiI6KZERESgtLQUAKBSqWAwGKy2x8TE4OTJkwgNDa31JYrXbkF27txpddzOnTvRrVu35r8AIiKiFsCRbiIiImpQfn4+7r33XjzyyCOIioqCi4sL9u7di8WLF2PMmDEATBnMU1NTMWDAANjZ2cHd3R3z58/H3XffjaCgINxzzz0QRRGHDh3CkSNH8Nprr8nvv3r1avTp0wcDBw7El19+id27d+Pjjz+21eUSERE1KSZSIyIiogZVVlbilVdewfr163HmzBlUVVUhMDAQ9957L1566SU4ODjgxx9/REpKCjIyMuDv7y+XDFu3bh1effVVHDhwACqVCl27dsWMGTMwc+ZMAKZEakuXLsXatWuxdetW+Pn54a233sJ9991nwysmIiJqOgy6iYiIyGbqynpORETUnnBNNxEREREREVEzYdBNRERERERE1EyYSI2IiIhshqvciIioveNINxEREREREVEzYdBNRERERERE1EwYdBMRERERERE1EwbdRERERERERM2EQTcRERERERFRM2HQTURERERERNRMGHQTERERERERNRMG3URERERERETNhEE3ERERERERUTP5/+rRS4Owq90YAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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OR7b0qFDB9OsWTMza9YsM3v2bBMREWGuuOIKk5+ff9Z9m5uba9q2bWvq1Kljxo8fbxYuXGgGDx5sbDabefjhh131fvjhBxMcHGz69OnjKhs7dqyx2Wzmk08+qdC+MMaYnJwc07p1a+Pr62uGDx9uFixYYJ544gnTqVMn8+WXX5r09HQzbdo0I8mMGDHCtb92795d5rYUvYbt27c3AwcONPPnzzc9evQwksyzzz5rWrRoYe6//34zf/58c+211xpJbm0/dOiQqVu3rklJSTELFiwws2fPNi1atDD+/v7myy+/NMYYc+zYMbNgwQIjyfTp08fVrq1btxpjjNm6dasJDQ01derUMePGjTOLFi0yjz32mGnTpo1HOzt06GDuuOMOM3/+fHPfffcZSeaxxx476+tljDFLliwxkkynTp3Mc889Z8aOHWuCgoJMo0aNzK+//uqqN2TIEBMYGGh+85vfmHvvvdcsWLDA9O3b10gy8+fPP+d6ihs5cqTH+6PIk08+aSSZjIwMt/K8vDzj4+NjUlJSjDHGOBwOY7fbzf333++xjAkTJhhJJjs7+6ztePLJJ43NZjP9+/c38+fPN1OnTjUREREe296zZ08TFhZm9u7da4wx5quvvjIBAQFm2LBhbsu74oorzAMPPGDmzp1rnn32WdO5c2cjybz77rtu9SSZtm3bmvr165uZM2eamTNnmrCwMNOgQQMzd+5c06pVK/PMM8+YCRMmmICAAHPjjTe6zd+tWzcTGxtroqKizKhRo8zzzz9vrrvuOiPJLF682FWvtM+m7du3m7CwMNOqVSsza9YsM3fuXHP99dcbm81m3nrrLVe98ePHG5vNZoYPH25eeukl88wzz5iBAweamTNnnnWfAsClhNANAF5SWFho6tataxISEtzKFy5caCSZDz74wBhjzMmTJ43D4XCr8+OPPxq73W6mTZvmVnau0L1lyxYjyTzwwANuy7v77rs9Qvfx48c92pyWlmYkmVdffdVVtmLFCiPJfPzxxx71S4buOXPmGEnm9ddfd5Xl5+ebhIQEExwc7AonRdtSp04dc+TIEVfd1atXG0nmX//6l8e6inviiSdMzZo1zXfffedWPnbsWOPr6+sKLcYYs2jRIlebPvvsM+Pr62tGjx7tNl9598WkSZOMJLfQUMTpdBpjTv2IUvJ1Opui13DEiBGussLCQnPFFVcYm83mFj5+/fVXExQUZIYMGeJWNy8vz22Zv/76q4mOjjb33nuvq+zQoUMex0CR66+/3oSEhJiffvqp1G0q3s7iyzTGmD59+pg6deqcdRvz8/NNVFSUad26tTlx4oSr/N133zWSzKRJk1xlQ4YMMZLcjn1jjOnQoYOJi4s763pKOlvoHjlypPH19S11WmRkpBkwYIAx5sx+K9keY4yZN2+ekWR27NhRZhv27NljfH19zVNPPeVWvm3bNuPn5+dWfuDAARMeHm66d+9u8vLyTIcOHUyDBg1MVlaW27wlj9f8/HzTunVrc9NNN7mVSzJ2u938+OOPrrKi90NMTIzbjwXjxo0zktzqduvWzUgyzzzzjKssLy/PtG/f3kRFRbl+HCvts+nmm282bdq0MSdPnnSVOZ1O06VLF9O8eXNXWbt27UyPHj3K2n0AUCUwvBwAvMTX11cDBgxQWlqa27DNZcuWKTo6WjfffLMkyW63y8fn1Me1w+FQZmamgoOD1aJFC23evLlC6ywagvrQQw+5lY8ePdqjbvEhuAUFBcrMzFSzZs1Uq1atCq+3+PpjYmI0cOBAV5m/v78eeughHTt2TJ988olb/f79+6t27dqu5127dpWkc14VesWKFeratatq166tw4cPux6JiYlyOBxav369q+6IESOUlJSkBx98UPfcc4+aNm2q6dOnuy2vvPvin//8p9q1a6c+ffp4tKm8t24ry3333ef6t6+vrzp27ChjjIYNG+Yqr1Wrllq0aOG2f3x9fV3n1TudTh05ckSFhYXq2LFjuV7HQ4cOaf369br33nvVoEGDc27TH//4R7fnXbt2VWZmprKzs8tcx8aNG3Xw4EE98MADbtcg6NGjh1q2bOk2lPts66nMq4WfOHGizOsRBAYGui5QWPTXbreXWq94ndK89dZbcjqduuuuu9yO1ZiYGDVv3tztNICYmBjNmzdPa9euVdeuXbVlyxa9/PLLCg0NdVtm8eP1119/VVZWlrp27Vrq633zzTerUaNGrufx8fGSpL59+yokJMSjvOQ+9vPz0x/+8AfX84CAAP3hD3/QwYMHtWnTplK3+ciRI/roo4901113KScnx7XNmZmZSkpK0q5du1ynFdSqVUtff/21du3aVeY+BIBLHaEbALyo6EJpRRdU+/nnn/Xf//5XAwYMkK+vr6RTQem5555T8+bNZbfbFRERocjISH311VfKysqq0Pp++ukn+fj4qGnTpm7lLVq08Kh74sQJTZo0yXVOdNF6jx49WuH1Fl9/8+bNXT8iFLnqqqtc04srGfKKAnjxi1iVZteuXVqzZo0iIyPdHomJiZLkcR794sWLdfz4ce3atUtLly71OOe3vPti9+7dat269bl2w3kpuS/CwsIUGBioiIgIj/KS++eVV15R27ZtXefERkZG6r333ivX61gUssq7XefzmhW97qUdhy1btvQ4LgIDA13noBdfz7mOi4oICgpSfn5+qdNOnjzpOkaK/ubl5ZVar3id0uzatUvGGDVv3tzjeP322289jtUBAwaoR48e2rBhg4YPH+76ca64d999V9dcc40CAwMVHh6uyMhILViwoNTXu7TjSpLq169fannJfRwbG6uaNWu6lV155ZWSVOZtBL///nsZYzRx4kSPbZ48ebKkM+/RadOm6ejRo7ryyivVpk0bPfroo/rqq69KXS4AXKr8vN0AALicxcXFqWXLlnrjjTc0fvx4vfHGGzLGuF21fPr06Zo4caLuvfdePfHEEwoPD5ePj49Gjx7tuiiYFR588EEtWbJEo0ePVkJCgsLCwmSz2TRgwABL11tc0Q8PJRljzjqf0+lU9+7d9dhjj5U6vSgUFFm3bp0rNG3btk0JCQlu0y/VfVGe/fP6669r6NCh6t27tx599FFFRUXJ19dXM2bM0O7duy9KO0u2yap1VKa6devK4XDo4MGDioqKcpXn5+crMzNTsbGxkqTw8HDZ7XYdOHDAYxlFZUV1S+N0OmWz2fTvf/+71O0KDg52e56ZmamNGzdKOnW7PqfT6fYj1n//+1/dfvvtuv766zV//nzVrVtX/v7+WrJkSal3SyhrX1r5Oha9Zx555BElJSWVWqdZs2aSpOuvv167d+/W6tWr9eGHH+pvf/ubnnvuOS1cuNBt9AcAXMoI3QDgZYMGDdLEiRP11VdfadmyZWrevLnbVZBXrlypG2+8UYsXL3ab7+jRox69nOfSsGFDOZ1O7d69261XcefOnR51V65cqSFDhrhdDfvkyZM6evSoW72KDJtu2LChvvrqK4+gsGPHDtf0ytC0aVMdO3bM1bN9NgcOHNCDDz6oW265RQEBAa4gULwt5d0XTZs21fbt28+6vgsdZl5RK1euVJMmTfTWW2+5rbuoR/Fc7Sq6l/W5tutCFO3rnTt36qabbnKbtnPnzko7Liqiffv2kk4Nff/tb3/rKt+4caOcTqdruo+Pj9q0aeMKwsV9/vnnatKkidsw7ZKaNm0qY4waN27s8WNQaUaOHKmcnBzNmDFD48aN05w5c5SSkuKa/s9//lOBgYH64IMP3Ia8L1my5JzLPh/79+9Xbm6uW2/3d999J0luw9aLKzqm/P39y/UeDQ8PV3JyspKTk3Xs2DFdf/31mjJlCqEbQJXB8HIA8LKiXu1JkyZpy5YtHvfm9vX19ehdWrFihcetlMrjtttukyQ9//zzbuVz5szxqFvael944QWP2zIVfdkuGUBL89vf/lbp6elavny5q6ywsFAvvPCCgoOD1a1bt/JsxjndddddSktL0wcffOAx7ejRoyosLHQ9Hz58uJxOpxYvXqwXX3xRfn5+GjZsmNu2l3df9O3bV1u3btWqVas81ls0f0X2V2Uo6rEs3v7PP/9caWlpbvVq1KhRarsiIyN1/fXX6+WXX9bevXvdplVW73XHjh0VFRWlhQsXug3T/ve//61vv/1WPXr0qJT1VMRNN92k8PBwLViwwK18wYIFqlGjhlub7rzzTn3xxRduwXvnzp366KOPXLfUK8sdd9whX19fTZ061WN/GmOUmZnper5y5UotX75cM2fO1NixYzVgwABNmDDBFXKlU6+3zWZzOzb37Nmjt99+u0LbX16FhYVatGiR63l+fr4WLVqkyMhIxcXFlTpPVFSUbrjhBi1atKjUEQKHDh1y/bv49kunev6bNWtW6nB+ALhU0dMNAF7WuHFjdenSRatXr5Ykj9Dds2dPTZs2TcnJyerSpYu2bdumv//9767eoopo3769Bg4cqPnz5ysrK0tdunRRamqqvv/+e4+6PXv21GuvvaawsDC1atVKaWlp+s9//qM6dep4LNPX11ezZs1SVlaW7Ha7brrpJrchuUVGjBihRYsWaejQodq0aZMaNWqklStX6v/+7/80Z86cs/YIVsSjjz6qd955Rz179tTQoUMVFxen3Nxcbdu2TStXrtSePXsUERGhJUuW6L333tPSpUt1xRVXSDoVpn//+99rwYIFrns0l3dfPProo1q5cqX69eune++9V3FxcTpy5IjeeecdLVy4UO3atVPTpk1Vq1YtLVy4UCEhIapZs6bi4+PVuHHjStn2knr27Km33npLffr0UY8ePfTjjz9q4cKFatWqlY4dO+aqFxQUpFatWmn58uW68sorFR4ertatW6t169Z6/vnndd111+nqq6/WiBEj1LhxY+3Zs0fvvfeetmzZcsFt9Pf316xZs5ScnKxu3bpp4MCBysjI0F//+lc1atRIY8aMueB1FPnpp5/02muvSZIrJD/55JOSTvW433PPPZJO7Y8nnnhCI0eOVL9+/ZSUlKT//ve/ev311/XUU08pPDzctcwHHnhAL730knr06KFHHnlE/v7+evbZZxUdHa0//elPZ21P06ZN9eSTT2rcuHHas2ePevfurZCQEP34449atWqVRowYoUceeUQHDx7U/fffrxtvvFGjRo2SJM2dO1cff/yxhg4dqk8//VQ+Pj7q0aOHnn32Wd166626++67dfDgQc2bN0/NmjWz5Fzo2NhYzZo1S3v27NGVV16p5cuXa8uWLXrxxRfl7+9f5nzz5s3TddddpzZt2mj48OFq0qSJMjIylJaWpp9//llbt26VJLVq1Uo33HCD4uLiFB4ero0bN2rlypWufQAAVcLFvlw6AMBT0a2FOnfu7DHt5MmT5k9/+pOpW7euCQoKMtdee61JS0vzuB1Xee/TfeLECfPQQw+ZOnXqmJo1a5pevXqZffv2edwu6tdffzXJyckmIiLCBAcHm6SkJLNjxw7TsGFDt1tSGWPMSy+9ZJo0aWJ8fX3dbh9Wso3GGJORkeFabkBAgGnTpo3H7bOKtuUvf/mLx/4o2c6y5OTkmHHjxplmzZqZgIAAExERYbp06WKefvppk5+fb/bt22fCwsJMr169PObt06ePqVmzpvnhhx8qvC8yMzPNqFGjTL169UxAQIC54oorzJAhQ8zhw4dddVavXm1atWpl/Pz8znn7sKLX8NChQ27lQ4YMMTVr1vSo361bN/Ob3/zG9dzpdJrp06ebhg0bGrvdbjp06GDeffddM2TIENOwYUO3ef/3v/+ZuLg4ExAQ4LGft2/fbvr06WNq1aplAgMDTYsWLczEiRPP2c6i+28Xv9VUWZYvX246dOhg7Ha7CQ8PN4MGDTI///xzuba7tGO9NB9//LGRVOqj5LFqjDEvvviiadGihQkICDBNmzY1zz33nNut0ors27fP3HnnnSY0NNQEBwebnj17ml27dp2zPUX++c9/muuuu87UrFnT1KxZ07Rs2dKMHDnS7Ny50xhjzB133GFCQkLMnj173OYruo3erFmzXGWLFy82zZs3N3a73bRs2dIsWbKk1P0jyYwcOdKtrKz3XtF+W7Fihaus6FjbuHGjSUhIMIGBgaZhw4Zm7ty5pS6z5HG+e/duM3jwYBMTE2P8/f1NvXr1TM+ePc3KlStddZ588knTuXNnU6tWLRMUFGRatmxpnnrqKdftyACgKrAZU4lXNgEAAMBl4YYbbtDhw4ctPd8fAKoDzukGAAAAAMAihG4AAAAAACxC6AYAAAAAwCJeDd3r169Xr169FBsbK5vNVq7bWaxbt05XX3217Ha7mjVrpqVLl1reTgAAALhbt24d53MDQDl4NXTn5uaqXbt2mjdvXrnq//jjj+rRo4duvPFGbdmyRaNHj9Z9991X6n1YAQAAAADwtkvm6uU2m02rVq1S7969y6zz5z//We+9957br6oDBgzQ0aNHtWbNmovQSgAAAAAAys/P2w2oiLS0NCUmJrqVJSUlafTo0WXOk5eXp7y8PNdzp9OpI0eOqE6dOrLZbFY1FQAAAABQjRljlJOTo9jYWPn4lD2IvEqF7vT0dEVHR7uVRUdHKzs7WydOnFBQUJDHPDNmzNDUqVMvVhMBAAAAAJeRffv26YorrihzepUK3edj3LhxSklJcT3PyspSgwYNtG/fPoWGhnqxZQAAAACAqio7O1v169dXSEjIWetVqdAdExOjjIwMt7KMjAyFhoaW2sstSXa7XXa73aM8NDSU0A0AAAAAuCDnOm25St2nOyEhQampqW5la9euVUJCgpdaBAAAAABA2bwauo8dO6YtW7Zoy5Ytkk7dEmzLli3au3evpFNDwwcPHuyq/8c//lE//PCDHnvsMe3YsUPz58/XP/7xD40ZM8YbzQcAAAAA4Ky8Gro3btyoDh06qEOHDpKklJQUdejQQZMmTZIkHThwwBXAJalx48Z67733tHbtWrVr107PPPOM/va3vykpKckr7QcAAAAA4Gwumft0XyzZ2dkKCwtTVlYW53QDAAAAAM5LebNllTqnGwAAAACAqoTQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARbweuufNm6dGjRopMDBQ8fHx2rBhw1nrz5kzRy1atFBQUJDq16+vMWPG6OTJkxeptQAAAAAAlJ9XQ/fy5cuVkpKiyZMna/PmzWrXrp2SkpJ08ODBUusvW7ZMY8eO1eTJk/Xtt99q8eLFWr58ucaPH3+RWw4AAAAAwLl5NXQ/++yzGj58uJKTk9WqVSstXLhQNWrU0Msvv1xq/f/973+69tprdffdd6tRo0a65ZZbNHDgwHP2jgMAAAAA4A1eC935+fnatGmTEhMTzzTGx0eJiYlKS0srdZ4uXbpo06ZNrpD9ww8/6P3339dvf/vbMteTl5en7OxstwcAAAAAABeDn7dWfPjwYTkcDkVHR7uVR0dHa8eOHaXOc/fdd+vw4cO67rrrZIxRYWGh/vjHP551ePmMGTM0derUSm07AAAAAADl4fULqVXEunXrNH36dM2fP1+bN2/WW2+9pffee09PPPFEmfOMGzdOWVlZrse+ffsuYosBAAAAAJczr/V0R0REyNfXVxkZGW7lGRkZiomJKXWeiRMn6p577tF9990nSWrTpo1yc3M1YsQIPf744/Lx8fwNwW63y263V/4GAAAAAABwDl7r6Q4ICFBcXJxSU1NdZU6nU6mpqUpISCh1nuPHj3sEa19fX0mSMca6xgIAAAAAcB681tMtSSkpKRoyZIg6duyozp07a86cOcrNzVVycrIkafDgwapXr55mzJghSerVq5eeffZZdejQQfHx8fr+++81ceJE9erVyxW+AQAAAAC4VHg1dPfv31+HDh3SpEmTlJ6ervbt22vNmjWui6vt3bvXrWd7woQJstlsmjBhgn755RdFRkaqV69eeuqpp7y1CQAAAAAAlMlmLrNx2dnZ2QoLC1NWVpZCQ0O93RwAAAAAQBVU3mxZpa5eDgAAAABAVULoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBgAAAADAIl4P3fPmzVOjRo0UGBio+Ph4bdiw4az1jx49qpEjR6pu3bqy2+268sor9f7771+k1gIAAAAAUH5+3lz58uXLlZKSooULFyo+Pl5z5sxRUlKSdu7cqaioKI/6+fn56t69u6KiorRy5UrVq1dPP/30k2rVqnXxGw8AAAAAwDnYjDHGWyuPj49Xp06dNHfuXEmS0+lU/fr19eCDD2rs2LEe9RcuXKi//OUv2rFjh/z9/c9rndnZ2QoLC1NWVpZCQ0MvqP0AAAAAgMtTebOl14aX5+fna9OmTUpMTDzTGB8fJSYmKi0trdR53nnnHSUkJGjkyJGKjo5W69atNX36dDkcjjLXk5eXp+zsbLcHAAAAAAAXg9dC9+HDh+VwOBQdHe1WHh0drfT09FLn+eGHH7Ry5Uo5HA69//77mjhxop555hk9+eSTZa5nxowZCgsLcz3q169fqdsBAAAAAEBZKhy6GzVqpGnTpmnv3r1WtOesnE6noqKi9OKLLyouLk79+/fX448/roULF5Y5z7hx45SVleV67Nu37yK2GAAAAABwOatw6B49erTeeustNWnSRN27d9ebb76pvLy8Cq84IiJCvr6+ysjIcCvPyMhQTExMqfPUrVtXV155pXx9fV1lV111ldLT05Wfn1/qPHa7XaGhoW4PAAAAAAAuhvMK3Vu2bNGGDRt01VVX6cEHH1TdunU1atQobd68udzLCQgIUFxcnFJTU11lTqdTqampSkhIKHWea6+9Vt9//72cTqer7LvvvlPdunUVEBBQ0U0BAAAAAMBS531O99VXX63nn39e+/fv1+TJk/W3v/1NnTp1Uvv27fXyyy+rPBdFT0lJ0UsvvaRXXnlF3377re6//37l5uYqOTlZkjR48GCNGzfOVf/+++/XkSNH9PDDD+u7777Te++9p+nTp2vkyJHnuxkAAAAAAFjmvO/TXVBQoFWrVmnJkiVau3atrrnmGg0bNkw///yzxo8fr//85z9atmzZWZfRv39/HTp0SJMmTVJ6errat2+vNWvWuC6utnfvXvn4nPldoH79+vrggw80ZswYtW3bVvXq1dPDDz+sP//5z+e7GQAAAAAAWKbC9+nevHmzlixZojfeeEM+Pj4aPHiw7rvvPrVs2dJVZ/v27erUqZNOnDhR6Q2+UNynGwAAAABwocqbLSvc092pUyd1795dCxYsUO/eveXv7+9Rp3HjxhowYEBFFw0AAAAAQLVS4dD9ww8/qGHDhmetU7NmTS1ZsuS8GwUAAAAAQHVQ4QupHTx4UJ9//rlH+eeff66NGzdWSqMAAAAAAKgOKhy6R44cqX379nmU//LLL1xFHAAAAACAYiocur/55htdffXVHuUdOnTQN998UymNAgAAAACgOqhw6Lbb7crIyPAoP3DggPz8zvsOZAAAAAAAVDsVDt233HKLxo0bp6ysLFfZ0aNHNX78eHXv3r1SGwcAAAAAQFVW4a7pp59+Wtdff70aNmyoDh06SJK2bNmi6Ohovfbaa5XeQAAAAAAAqqoKh+569erpq6++0t///ndt3bpVQUFBSk5O1sCBA0u9ZzcAAAAAAJer8zoJu2bNmhoxYkRltwUAAAAAgGrlvK989s0332jv3r3Kz893K7/99tsvuFEAAAAAAFQHFQ7dP/zwg/r06aNt27bJZrPJGCNJstlskiSHw1G5LQQAAAAAoIqq8NXLH374YTVu3FgHDx5UjRo19PXXX2v9+vXq2LGj1q1bZ0ETAQAAAAComirc052WlqaPPvpIERER8vHxkY+Pj6677jrNmDFDDz30kL788ksr2gkAAAAAQJVT4Z5uh8OhkJAQSVJERIT2798vSWrYsKF27txZua0DAAAAAKAKq3BPd+vWrbV161Y1btxY8fHxmj17tgICAvTiiy+qSZMmVrQRAAAAAIAqqcKhe8KECcrNzZUkTZs2TT179lTXrl1Vp04dLV++vNIbCAAAAABAVWUzRZcfvwBHjhxR7dq1XVcwv5RlZ2crLCxMWVlZCg0N9XZzAAAAAABVUHmzZYXO6S4oKJCfn5+2b9/uVh4eHl4lAjcAAAAAABdThUK3v7+/GjRowL24AQAAAAAohwpfvfzxxx/X+PHjdeTIESvaAwAAAABAtVHhC6nNnTtX33//vWJjY9WwYUPVrFnTbfrmzZsrrXEAAAAAAFRlFQ7dvXv3tqAZAAAAAABUP5Vy9fKqhKuXAwAAAAAulCVXLwcAAAAAAOVX4eHlPj4+Z709GFc2BwAAAADglAqH7lWrVrk9Lygo0JdffqlXXnlFU6dOrbSGAQAAAABQ1VXaOd3Lli3T8uXLtXr16spYnGU4pxsAAAAAcKEu+jnd11xzjVJTUytrcQAAAAAAVHmVErpPnDih559/XvXq1auMxQEAAAAAUC1U+Jzu2rVru11IzRijnJwc1ahRQ6+//nqlNg4AAAAAgKqswqH7ueeecwvdPj4+ioyMVHx8vGrXrl2pjQMAAAAAoCqrcOgeOnSoBc0AAAAAAKD6qfA53UuWLNGKFSs8ylesWKFXXnmlUhoFAAAAAEB1UOHQPWPGDEVERHiUR0VFafr06ZXSKAAAAAAAqoMKh+69e/eqcePGHuUNGzbU3r17K6VRAAAAAABUBxUO3VFRUfrqq688yrdu3ao6depUSqMAAAAAAKgOKhy6Bw4cqIceekgff/yxHA6HHA6HPvroIz388MMaMGCAFW0EAAAAAKBKqvDVy5944gnt2bNHN998s/z8Ts3udDo1ePBgzukGAAAAAKAYmzHGnM+Mu3bt0pYtWxQUFKQ2bdqoYcOGld02S2RnZyssLExZWVkKDQ31dnMAAAAAAFVQebNlhXu6izRv3lzNmzc/39kBAAAAAKj2KnxOd9++fTVr1iyP8tmzZ6tfv36V0igAAAAAAKqDCofu9evX67e//a1H+W233ab169dXSqMAAAAAAKgOKhy6jx07poCAAI9yf39/ZWdnV0qjAAAAAACoDiocutu0aaPly5d7lL/55ptq1apVpTQKAAAAAIDqoMIXUps4caLuuOMO7d69WzfddJMkKTU1VcuWLdPKlSsrvYEAAAAAAFRVFQ7dvXr10ttvv63p06dr5cqVCgoKUrt27fTRRx8pPDzcijYCAAAAAFAlnfd9uotkZ2frjTfe0OLFi7Vp0yY5HI7KapsluE83AAAAAOBClTdbVvic7iLr16/XkCFDFBsbq2eeeUY33XSTPvvss/NdHAAAAAAA1U6FQnd6erpmzpyp5s2bq1+/fgoNDVVeXp7efvttzZw5U506dTqvRsybN0+NGjVSYGCg4uPjtWHDhnLN9+abb8pms6l3797ntV4AAAAAAKxU7tDdq1cvtWjRQl999ZXmzJmj/fv364UXXrjgBixfvlwpKSmaPHmyNm/erHbt2ikpKUkHDx4863x79uzRI488oq5du15wGwAAAAAAsEK5Q/e///1vDRs2TFOnTlWPHj3k6+tbKQ149tlnNXz4cCUnJ6tVq1ZauHChatSooZdffrnMeRwOhwYNGqSpU6eqSZMmldIOAAAAAAAqW7lD96effqqcnBzFxcUpPj5ec+fO1eHDhy9o5fn5+dq0aZMSExPPNMjHR4mJiUpLSytzvmnTpikqKkrDhg27oPUDAAAAAGClcofua665Ri+99JIOHDigP/zhD3rzzTcVGxsrp9OptWvXKicnp8IrP3z4sBwOh6Kjo93Ko6OjlZ6eXuo8n376qRYvXqyXXnqpXOvIy8tTdna22wMAAAAAgIuhwlcvr1mzpu699159+umn2rZtm/70pz9p5syZioqK0u23325FG11ycnJ0zz336KWXXlJERES55pkxY4bCwsJcj/r161vaRgAAAAAAipz3LcMkqUWLFpo9e7Z+/vlnvfHGGxWePyIiQr6+vsrIyHArz8jIUExMjEf93bt3a8+ePerVq5f8/Pzk5+enV199Ve+88478/Py0e/duj3nGjRunrKws12Pfvn0VbicAAAAAAOfDrzIW4uvrq969e1f41l0BAQGKi4tTamqqa16n06nU1FSNGjXKo37Lli21bds2t7IJEyYoJydHf/3rX0vtxbbb7bLb7RVqFwAAAAAAlaFSQveFSElJ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pqYqMzPT200DAKDasxljjLcbAQAArHH06FHVrl1b69atU7du3TymN2rUSD/99JPrecOGDbVnzx5J0urVqzV16lR98803io2N1ZAhQ/T444/Lz+/Ub/Y2m03z58/XO++8o3Xr1qlu3bqaPXu27rzzzouybQAAVAUMLwcAoBoLDg5WcHCw3n77beXl5XlM/+KLLyRJS5Ys0YEDB1zP//vf/2rw4MF6+OGH9c0332jRokVaunSpnnrqKbf5J06cqL59+2rr1q0aNGiQBgwYoG+//db6DQMAoIqgpxsAgGrun//8p4YPH64TJ07o6quvVrdu3TRgwAC1bdtW0qke61WrVql3796ueRITE3XzzTdr3LhxrrLXX39djz32mPbv3++a749//KMWLFjgqnPNNdfo6quv1vz58y/OxgEAcImjpxsAgGqub9++2r9/v9555x3deuutWrduna6++motXbq0zHm2bt2qadOmuXrKg4ODNXz4cB04cEDHjx931UtISHCbLyEhgZ5uAACK4UJqAABcBgIDA9W9e3d1795dEydO1H333afJkydr6NChpdY/duyYpk6dqjvuuKPUZQEAgPKhpxsAgMtQq1atlJubK0ny9/eXw+Fwm3711Vdr586datasmcfDx+fM14fPPvvMbb7PPvtMV111lfUbAABAFUFPNwAA1VhmZqb69eune++9V23btlVISIg2btyo2bNn63e/+52kU1cwT01N1bXXXiu73a7atWtr0qRJ6tmzpxo0aKA777xTPj4+2rp1q7Zv364nn3zStfwVK1aoY8eOuu666/T3v/9dGzZs0OLFi721uQAAXHK4kBoAANVYXl6epkyZog8//FC7d+9WQUGB6tevr379+mn8+PEKCgrSv/71L6WkpGjPnj2qV6+e65ZhH3zwgaZNm6Yvv/xS/v7+atmype677z4NHz5c0qkLqc2bN09vv/221q9fr7p162rWrFm66667vLjFAABcWgjdAADgvJR21XMAAOCOc7oBAAAAALAIoRsAAAAAAItwITUAAHBeOEMNAIBzo6cbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIv8P3BXmesv2M3LAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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s/e3VnZ2NgDXGnM1bbQXiEzU/D//+Q+ee+45PPPMM5g8ebLP8++99x5OOeUUvP7667jssstw+umnY+rUqT7HG8yxFRcXo6ysDPX19V6Pb9myRXmeiIgoGjjoJiIiCtI999yDlJQUXHPNNaisrPR5PpRo6ZQpU5CQkICXX37ZJ+r7t7/9DXa7HWeddVbA18jIyEBubi6+++47r8fV66qF1NRUAL4D9I7asGEDrrvuOlxxxRW49dZbdb/HbDb7nKN3330XBw4c6PCxnX322XA4HHjxxRe9Hn/22WchSVK754yIiChSmF5OREQUpAEDBmD+/Pm4/PLLMWjQIMyYMQMjR46ELMvYvXs35s+fD5PJ5JNWbUSPHj3w4IMP4oEHHsBJJ52E888/HykpKVi6dCnefvttnH766TjvvPPafZ3rrrsOf/rTn3Dddddh7Nix+O6777Bt2zaf7xszZgwA11Zfl112GaxWK8477zxlwBusq6++GoArjf7f//6313OTJk1C3759ce655+LRRx/F1VdfjUmTJmH9+vV466230LdvX6/v79evH7KysvDKK68gPT0dqampGD9+PEpKSnx+73nnnYdTTjkF999/P0pLSzFy5Eh89dVX+Pjjj3Hbbbd1aO08ERFROHDQTURE1AEXXHAB1q9fjz//+c/46quv8I9//AOSJKG4uBjnnHMObrrpJowcObJDr33//fejT58+ePHFF/Hoo4/CbrejpKQEjzzyCH7/+997bbXlz4MPPohDhw7hvffewzvvvIOzzjoLX3zxhbJXtjBu3Dj88Y9/xCuvvIIFCxbA6XRi9+7dHR50Hzp0CI2Njbjhhht8nnvjjTfQt29f/OEPf0BjYyPmz5+P//73vxg9ejQ+++wz3HvvvV7fb7Va8eabb+K+++7DTTfdBLvdjjfeeEN30G0ymfDJJ5/gwQcfxH//+1+88cYb6NOnD55++mnceeedHXovRERE4SDJrBhCREREREREFBFc001EREREREQUIRx0ExEREREREUUIB91EREREREREEcJBNxEREREREVGEcNBNREREREREFCEcdBMRERERERFFCPfpBuB0OlFWVob09HRIkhTtwyEiIiIiIqJOTpZl1NfXo7CwECZTgHi2HEVLliyRzz33XLmgoEAGIH/44YdezzudTnn27Nlyfn6+nJSUJE+ZMkXetm2b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VFSEffv2ISMjI9qHQxQxvNapK+H1Tl0Fr3XqKnitdy2yLKO+vh6FhYUwmfyv3GakG4DJZEKvXr2ifRiGZGRk8AamLoHXOnUlvN6pq+C1Tl0Fr/WuI1CEW2AhNSIiIiIiIqII4aCbiIiIiIiIKEI46I4RiYmJeOihh5CYmBjtQyGKKF7r1JXweqeugtc6dRW81kkPC6kRERERERERRQgj3UREREREREQRwkE3ERERERERUYRw0E1EREREREQUIRx0x4iXXnoJffr0QVJSEsaPH4+VK1dG+5CIQvLwww9DkiSvr8GDByvPt7S0YObMmejWrRvS0tIwbdo0VFZWRvGIiYz57rvvcN5556GwsBCSJOGjjz7yel6WZTz44IMoKChAcnIypk6diu3bt3t9T3V1NWbMmIGMjAxkZWXh2muvRUNDw1F8F0Tta+9av+qqq3za+TPPPNPre3itUyyYM2cOxo0bh/T0dPTo0QMXXnghtm7d6vU9Rvote/fuxTnnnIOUlBT06NEDd999N+x2+9F8KxQlHHTHgP/+97+444478NBDD2HNmjUYOXIkzjjjDBw8eDDah0YUkmOOOQbl5eXK1w8//KA8d/vtt+N///sf3n33XSxZsgRlZWW46KKLoni0RMY0NjZi5MiReOmll3Sff+qpp/D888/jlVdewYoVK5CamoozzjgDLS0tyvfMmDEDGzduxNdff41PP/0U3333HW644Yaj9RaIDGnvWgeAM88806udf/vtt72e57VOsWDJkiWYOXMmli9fjq+//ho2mw2nn346Ghsble9pr9/icDhwzjnnoK2tDUuXLsWbb76JefPm4cEHH4zGW6KjTaZO77jjjpNnzpyp/NvhcMiFhYXynDlzonhURKF56KGH5JEjR+o+V1NTI1utVvndd99VHtu8ebMMQF62bNlROkKi0AGQP/zwQ+XfTqdTzs/Pl59++mnlsZqaGjkxMVF+++23ZVmW5U2bNskA5J9++kn5ni+++EKWJEk+cODAUTt2omBor3VZluUrr7xSvuCCC/z+DK91ilUHDx6UAchLliyRZdlYv+Xzzz+XTSaTXFFRoXzPyy+/LGdkZMitra1H9w3QUcdIdyfX1taG1atXY+rUqcpjJpMJU6dOxbJly6J4ZESh2759OwoLC9G3b1/MmDEDe/fuBQCsXr0aNpvN67ofPHgwevfuzeueYtru3btRUVHhdW1nZmZi/PjxyrW9bNkyZGVlYezYscr3TJ06FSaTCStWrDjqx0wUim+//RY9evTAoEGDcPPNN6Oqqkp5jtc6xara2loAQE5ODgBj/ZZly5Zh+PDhyMvLU77njDPOQF1dHTZu3HgUj56igYPuTu7w4cNwOBxeNygA5OXloaKiIkpHRRS68ePHY968eViwYAFefvll7N69GyeeeCLq6+tRUVGBhIQEZGVlef0Mr3uKdeL6DdSmV1RUoEePHl7PWywW5OTk8PqnmHLmmWfin//8JxYuXIgnn3wSS5YswVlnnQWHwwGA1zrFJqfTidtuuw3HH388hg0bBgCG+i0VFRW6bb94juKbJdoHQERd01lnnaX8/4gRIzB+/HgUFxfjnXfeQXJychSPjIiIwuGyyy5T/n/48OEYMWIE+vXrh2+//RZTpkyJ4pERddzMmTOxYcMGrzo0RO1hpLuTy83Nhdls9ql+WFlZifz8/CgdFVH4ZWVlYeDAgdixYwfy8/PR1taGmpoar+/hdU+xTly/gdr0/Px8n0KZdrsd1dXVvP4ppvXt2xe5ubnYsWMHAF7rFHtmzZqFTz/9FIsXL0avXr2Ux430W/Lz83XbfvEcxTcOuju5hIQEjBkzBgsXLlQeczqdWLhwISZOnBjFIyMKr4aGBuzcuRMFBQUYM2YMrFar13W/detW7N27l9c9xbSSkhLk5+d7Xdt1dXVYsWKFcm1PnDgRNTU1WL16tfI9ixYtgtPpxPjx44/6MROFy/79+1FVVYWCggIAvNYpdsiyjFmzZuHDDz/EokWLUFJS4vW8kX7LxIkTsX79eq+Jpq+//hoZGRkYOnTo0XkjFDVML48Bd9xxB6688kqMHTsWxx13HJ577jk0Njbi6quvjvahEXXYXXfdhfPOOw/FxcUoKyvDQw89BLPZjMsvvxyZmZm49tprcccddyAnJwcZGRn47W9/i4kTJ2LChAnRPnSigBoaGpRIHuAqnvbLL78gJycHvXv3xm233YbHHnsMAwYMQElJCWbPno3CwkJceOGFAIAhQ4bgzDPPxPXXX49XXnkFNpsNs2bNwmWXXYbCwsIovSsiX4Gu9ZycHDzyyCOYNm0a8vPzsXPnTtxzzz3o378/zjjjDAC81il2zJw5E/Pnz8fHH3+M9PR0ZQ12ZmYmkpOTDfVbTj/9dAwdOhT/93//h6eeegoVFRV44IEHMHPmTCQmJkbz7dHREO3y6WTMCy+8IPfu3VtOSEiQjzvuOHn58uXRPiSikFx66aVyQUGBnJCQIPfs2VO+9NJL5R07dijPNzc3y7fccoucnZ0tp6SkyL/61a/k8vLyKB4xkTGLFy+WAfh8XXnllbIsu7YNmz17tpyXlycnJibKU6ZMkbdu3er1GlVVVfLll18up6WlyRkZGfLVV18t19fXR+HdEPkX6FpvamqSTz/9dLl79+6y1WqVi4uL5euvv95ruyRZ5rVOsUHvOgcgv/HGG8r3GOm3lJaWymeddZacnJws5+bmynfeeadss9mO8ruhaJBkWZaP/lCfiIiIiIiIKP5xTTcRERERERFRhHDQTURERERERBQhHHQTERERERERRQgH3UREREREREQRwkE3ERERERERUYRw0E1EREREREQUIRx0ExEREREREUUIB91EREREREREEcJBNxEREREREVGEcNBNRETURRw6dAg333wzevfujcTEROTn5+OMM87Ajz/+CACQJAkfffRRdA+SiIgozliifQBERER0dEybNg1tbW1488030bdvX1RWVmLhwoWoqqqK9qERERHFLUmWZTnaB0FERESRVVNTg+zsbHz77beYPHmyz/N9+vTBnj17lH8XFxejtLQUAPDxxx/jkUcewaZNm1BYWIgrr7wS999/PywW19y9JEmYO3cuPvnkE3z77bcoKCjAU089henTpx+V90ZERNSZMb2ciIioC0hLS0NaWho++ugjtLa2+jz/008/AQDeeOMNlJeXK//+/vvv8Zvf/Aa33norNm3ahFdffRXz5s3D448/7vXzs2fPxrRp07B27VrMmDEDl112GTZv3hz5N0ZERNTJMdJNRETURbz//vu4/vrr0dzcjNGjR2Py5Mm47LLLMGLECACuiPWHH36ICy+8UPmZqVOnYsqUKbjvvvuUx/7973/jnnvuQVlZmfJzN910E15++WXleyZMmIDRo0dj7ty5R+fNERERdVKMdBMREXUR06ZNQ1lZGT755BOceeaZ+PbbbzF69GjMmzfP78+sXbsWjz76qBIpT0tLw/XXX4/y8nI0NTUp3zdx4kSvn5s4cSIj3URERGAhNSIioi4lKSkJp512Gk477TTMnj0b1113HR566CFcddVVut/f0NCARx55BBdddJHuaxEREVFgjHQTERF1YUOHDkVjYyMAwGq1wuFweD0/evRobN26Ff379/f5Mpk83Yjly5d7/dzy5csxZMiQyL8BIiKiTo6RbiIioi6gqqoKF198Ma655hqMGDEC6enpWLVqFZ566ilccMEFAFwVzBcuXIjjjz8eiYmJyM7OxoMPPohzzz0XvXv3xvTp02EymbB27Vps2LABjz32mPL67777LsaOHYsTTjgBb731FlauXInXX389Wm+XiIio02AhNSIioi6gtbUVDz/8ML766ivs3LkTtv9v7w5tLISCAIqOQVACIXgaggqgASQSRwH0QYLC0gAt0Mc3K36yalf9THbFOR08eTOZea9XNE0TXdfFPM9RlmUcxxHTNMXzPFHX9feXYed5xrIscd93FEURbdvGMAwxjmNEvA+pbdsW+77HdV1RVVWs6xp93//hiwHgfxDdAMBHfrp6DgC82ekGAACAJKIbAAAAkjikBgB8xKYaAPzOpBsAAACSiG4AAABIIroBAAAgiegGAACAJKIbAAAAkohuAAAASCK6AQAAIInoBgAAgCSiGwAAAJJ8ASoXsTP6E1fWAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAGGCAYAAABmGOKbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAATY5JREFUeJzt3XtcVHX+x/H3cEdlUFRAApW0VUnTNFNyU0sCC9vcqNRc81pp4K7Sprl5qfZiWW03TWvbVX9bdnF3NZPSWBCsxCzLUktKo7DFEVJhBJXbnN8fNicnyDszyLyejwePbc75zJnPmcdZv3z43iyGYRgCAAAAAADnnY+nEwAAAAAAoKmi6AYAAAAAoIFQdAMAAAAA0EAougEAAAAAaCAU3QAAAAAANBCKbgAAAAAAGghFNwAAAAAADYSiGwAAAACABkLRDQAAAABAA6HoBgAAcJNx48apY8eOnk4DAOBGFN0AAPyMgoICpaWl6Re/+IWaNWumZs2aKS4uTqmpqfrss89cYh988EFZLBbzxxk7e/Zs2e32OnHff/99vZ/ZvXt3DR48uCFvCwAAuJGfpxMAAKAxWrt2rUaMGCE/Pz+NHj1aPXv2lI+Pj3bt2qX//Oc/Wrx4sQoKCtShQweX9y1evFgtWrRQeXm53nnnHf35z39Wdna23n//fVksFg/dDQAA8BSKbgAAfmLPnj0aOXKkOnTooKysLLVr187l/KOPPqrnnntOPj51B4zdcsstatOmjSRp8uTJSklJ0X/+8x9t3rxZ8fHxbsm/qaipqZHD4VBAQICnUwEA4KwxvBwAgJ9YsGCBKioqtHTp0joFtyT5+fnpt7/9rWJiYk55rWuvvVbS8aHq55PFYlFaWppWrlypuLg4BQcHKz4+Xtu3b5ckPf/88+rcubOCgoI0ePBgffPNN3Wu8cEHH2jo0KEKDQ1Vs2bNNGjQIL3//vsuMc7h8F9++aV+85vfKDQ0VG3bttWcOXNkGIb27t2rm266SVarVZGRkXriiSfqfE5xcbEmTpyoiIgIBQUFqWfPnlq+fLlLzDfffCOLxaLHH39cTz31lDp16qTAwEBt2bJFzZs31+9+97s61/3uu+/k6+ur+fPn/+z3lJOTI4vFopycnHo/b9myZeYxm82m8ePHKzo6WoGBgWrXrp1uuummOt/d22+/rauvvlrNmzdXSEiIkpOTtXPnzjqfvXr1anXv3l1BQUHq3r27Vq1a9bN5AgCaLnq6AQD4ibVr16pz587q16/fOV9rz549kqTWrVuf87V+6t1339WaNWuUmpoqSZo/f76GDRumGTNm6LnnntM999yjQ4cOacGCBZowYYKys7PN92ZnZ+v6669Xnz59NG/ePPn4+Gjp0qW69tpr9e677+rKK690+awRI0aoW7dueuSRR5SRkaE//elPCgsL0/PPP69rr71Wjz76qF5++WX9/ve/V9++fTVw4EBJ0tGjRzV48GDt3r1baWlpio2N1cqVKzVu3DiVlpbWKaaXLl2qY8eO6a677lJgYKDat2+vX//613rttdf017/+Vb6+vmbsK6+8IsMwNHr06PPyfaakpGjnzp2aOnWqOnbsqOLiYmVmZqqwsNBc/Oyf//ynxo4dq6SkJD366KM6cuSIFi9erF/+8pf65JNPzLh33nlHKSkpiouL0/z583XgwAGzoAcAeBkDAACYysrKDEnG8OHD65w7dOiQUVJSYv4cOXLEPDdv3jxDkpGfn2+UlJQYBQUFxvPPP28EBgYaERERRkVFhUtcSUlJvZ9/6aWXGoMGDTplnpKMwMBAo6CgwDz2/PPPG5KMyMhIw263m8dnzZplSDJjHQ6HcckllxhJSUmGw+Ew444cOWLExsYa1113XZ37uuuuu8xjNTU1RnR0tGGxWIxHHnnE5fsJDg42xo4dax576qmnDEnGSy+9ZB6rqqoy4uPjjRYtWph5FhQUGJIMq9VqFBcXu9zr+vXrDUnG22+/7XL8sssuO+V3tWHDBkOSsWHDBpfjzs9bunSpmbsk47HHHvvZax0+fNho2bKlceedd7oct9lsRmhoqMvxXr16Ge3atTNKS0vNY++8844hyejQocNJcwYANC0MLwcA4ATOlcZbtGhR59zgwYPVtm1b82fRokV1Yrp06aK2bdsqNjZWd999tzp37qyMjAw1a9bsvOc6ZMgQl+2nnD3zKSkpCgkJqXP866+/liRt27ZNX331lW6//XYdOHBA33//vb7//ntVVFRoyJAh2rhxoxwOh8tnTZo0yfxvX19fXXHFFTIMQxMnTjSPt2zZUl26dDE/R5LeeustRUZGatSoUeYxf39//fa3v1V5eblyc3NdPiclJUVt27Z1OZaQkKCoqCi9/PLL5rEdO3bos88+029+85vT+7JO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2980cOBASZLNZlNAQIBatmzp8r6IiAjZbDYz5sSC23neee5kMXa7XUePHlVwcN35zJWVlaqsrDRf2+32c7vZRujr753Dy1lEDQAAAADORqPu6X722We1efNmrVmzRlu3btUTTzyh1NRU/fe///V0apo/f75CQ0PNn5iYGE+ndN7tKaGnGwAAAADORaMtuo8ePao//OEP+utf/6obb7xRl112mdLS0jRixAg9/vjjkqTIyEhVVVWptLTU5b379+9XZGSkGfPT1cydr08VY7Va6+3llqRZs2aprKzM/Nm7d+8533NjcrCiSgcrqiTR0w0AAAAAZ6vRFt3V1dWqrq6Wj49rir6+vnI4HJKOL6rm7++vrKws83x+fr4KCwsVHx8vSYqPj9f27dtVXFxsxmRmZspqtSouLs6MOfEazhjnNeoTGBgoq9Xq8tOUfP3DyuUXtQxWs4BGPQsBAAAAABotj1ZT5eXl2r17t/m6oKBA27ZtU1hYmNq3b69BgwbpvvvuU3BwsDp06KDc3Fz93//9n/76179KkkJDQzVx4kSlp6crLCxMVqtVU6dOVXx8vPr37y9JSkxMVFxcnMaMGaMFCxbIZrNp9uzZSk1NVWBgoCRp8uTJWrhwoWbMmKEJEyYoOztbr7/+ujIyMtz/pTQSP24XRi83AAAAAJwtjxbdH330ka655hrzdXp6uiRp7NixWrZsmV599VXNmjVLo0eP1sGDB9WhQwf9+c9/1uTJk833PPnkk/Lx8VFKSooqKyuVlJSk5557zjzv6+urtWvXasqUKYqPj1fz5s01duxYPfzww2ZMbGysMjIyNH36dD399NOKjo7Wiy++qKSkJDd8C43T18znBgAAAIBz1mj26b7QNbV9uict/1D//aJYf7zpUo2J7+jpdAAAAACgUTndGpDJupAkfXugQiu2FKq65vjfYD4uLJVETzcAAAAAnAuKbkiSFqzPV8Zn+1yO+VikzhEU3QAAAABwtii6IUn6vMguSbq590WKtAZJki6LDlV4SJAn0wIAAACACxpFN3SsulbfHDi+cNr913el0AYAAACA86TR7tMN99ldXC7DkFo181fbFoGeTgcAAAAAmgyKbijfdliS9IuIEFksFg9nAwAAAABNB0U39OX+40V3l8gQD2cCAAAAAE0LRTeUv//Hnm4AAAAAwPlD0Q19aaOnGwAAAAAa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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "log_history = pd.DataFrame(trainer.state.log_history)\n", + "gpu_df = pd.DataFrame(gpu_history)\n", + "\n", + "log_history.to_csv(run_dir / \"trainer_log_history.csv\", index=False)\n", + "gpu_df.to_csv(run_dir / \"gpu_history.csv\", index=False)\n", + "\n", + "train_logs = log_history[log_history[\"loss\"].notna()].copy()\n", + "eval_logs = log_history[log_history[\"eval_loss\"].notna()].copy()\n", + "\n", + "plt.figure(figsize=(10, 4))\n", + "if not train_logs.empty:\n", + " plt.plot(train_logs[\"step\"], train_logs[\"loss\"])\n", + "if not eval_logs.empty:\n", + " plt.plot(eval_logs[\"step\"], eval_logs[\"eval_loss\"])\n", + "plt.title(\"Train and validation loss\")\n", + "plt.xlabel(\"Step\")\n", + "plt.ylabel(\"Loss\")\n", + "plt.legend([\"train\", \"eval\"])\n", + "plt.tight_layout()\n", + "plt.savefig(run_dir / \"loss_curve.png\", dpi=160)\n", + "plt.show()\n", + "\n", + "plt.figure(figsize=(10, 4))\n", + "if not train_logs.empty:\n", + " plt.semilogy(train_logs[\"step\"], train_logs[\"loss\"])\n", + "if not eval_logs.empty:\n", + " plt.semilogy(eval_logs[\"step\"], eval_logs[\"eval_loss\"])\n", + "plt.title(\"Train and validation loss in log scale\")\n", + "plt.xlabel(\"Step\")\n", + "plt.ylabel(\"Loss\")\n", + "plt.legend([\"train\", \"eval\"])\n", + "plt.tight_layout()\n", + "plt.savefig(run_dir / \"loss_curve.png\", dpi=160)\n", + "plt.show()\n", + "\n", + "acc_logs = log_history[log_history.get(\"eval_exact_match_100\", pd.Series(dtype=float)).notna()].copy()\n", + "if not acc_logs.empty:\n", + " plt.figure(figsize=(10, 4))\n", + " plt.plot(acc_logs[\"step\"], acc_logs[\"eval_exact_match_100\"])\n", + " plt.title(\"Validation exact match on 100 examples\")\n", + " plt.xlabel(\"Step\")\n", + " plt.ylabel(\"Accuracy\")\n", + " plt.ylim(0.0, 1.0)\n", + " plt.tight_layout()\n", + " plt.savefig(run_dir / \"val_exact_match.png\", dpi=160)\n", + " plt.show()\n", + "\n", + "if not gpu_df.empty and \"gpu_util\" in gpu_df.columns:\n", + " plt.figure(figsize=(10, 4))\n", + " plt.plot(gpu_df[\"step\"], gpu_df[\"gpu_util\"])\n", + " plt.title(\"GPU utilization\")\n", + " plt.xlabel(\"Step\")\n", + " plt.ylabel(\"GPU %\")\n", + " plt.tight_layout()\n", + " plt.savefig(run_dir / \"gpu_utilization.png\", dpi=160)\n", + " plt.show()\n", + "\n", + "if not gpu_df.empty and \"mem_used_mb\" in gpu_df.columns:\n", + " plt.figure(figsize=(10, 4))\n", + " plt.plot(gpu_df[\"step\"], gpu_df[\"mem_used_mb\"])\n", + " plt.title(\"GPU memory used\")\n", + " plt.xlabel(\"Step\")\n", + " plt.ylabel(\"MB\")\n", + " plt.tight_layout()\n", + " plt.savefig(run_dir / \"gpu_memory_used.png\", dpi=160)\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "78f101f6", + "metadata": {}, + "source": [ + "## Full test generation" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "d17ef25d", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 165/165 [10:16<00:00, 3.73s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "test exact match: 0.0955\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAGGCAYAAABmGOKbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQB9JREFUeJzt3Xt8j/X/x/HnZ2YH47M5bTPNmRjSN6dGRJbRUr7pK1ksCbGpSA4/MSop9U2pRWd9Q0lKjqs1iTJnCiFETt8NzTYjO16/P7rt+vZpI5td++zwuN9un9vN3u/X9ble74/rpp67rs912QzDMAQAAAAAAIqdi7MbAAAAAACgvCJ0AwAAAABgEUI3AAAAAAAWIXQDAAAAAGARQjcAAAAAABYhdAMAAAAAYBFCNwAAAAAAFiF0AwAAAABgEUI3AAAAAAAWIXQDAACUATabTVFRUc5uAwBQSIRuAECZcOTIEUVFRalZs2aqUqWKqlSpoqCgIEVGRurHH3/MV//dd9+pd+/eqlu3rjw8PFSvXj316dNHixYtcqiz2Wyy2Wx6+OGHC9zv5MmTzZqzZ886zH399dfq3r27atWqJR8fH3Xo0EEffvihQ83Ro0dls9n00ksvOYwbhqERI0bIZrNp2rRpl133xYsXNW3aNK1bt+4Kn861W7169RX7KEsWLVqkV155xdlt5FOePmMAwNUjdAMASr2VK1eqVatW+vDDDxUSEqLZs2fr1VdfVe/evbV69WrdeOON+vXXX836JUuWqGvXrkpKStJjjz2m1157TQ888IDOnTunt99+O9/7e3h4aOnSpcrMzMw399FHH8nDwyPf+PLly9WzZ09lZmZq2rRpmjFjhjw9PTV48GDNnj37iusxDEOjRo3SW2+9pSlTpvxt6J4+fXqJhO7p06dbuo+SUppDd3n5jAEAV8/V2Q0AAHAlhw8f1oABA1S/fn3Fx8erTp06DvMvvPCC3njjDbm4/O/3yNOmTVNQUJA2bdokNzc3h/rTp0/n20evXr20fPlyrVmzRnfffbc5vnHjRh05ckT9+vXT0qVLHbZ5/fXXVadOHa1du1bu7u6SpBEjRqh58+aaP3++xowZc9k1jR49WvPmzdPkyZP19NNPX/2HAQAAyhzOdAMASrVZs2bpwoULev/99/MFbklydXXVo48+qsDAQHPs8OHDat++fb7ALUm+vr75xurWrauuXbvmu/R84cKFat26tVq1apVvm7S0NFWvXt0M3Hm91KpVS56enpddz2OPPaaYmBhNmjRJzz777GXrpD8uTa9du7Ykafr06eZl7n8+M75//37de++9qlGjhjw8PNSuXTstX77c4X2ysrI0ffp0NW3aVB4eHqpZs6ZuueUWxcXFSZIefPBBxcTESPrf5fY2m+2KvUnSmjVr1KVLF3l5ealatWoKCwvT3r17zfm1a9fKxcVFU6dOddhu0aJFstlsmjt3rjn2/vvv67bbbpOvr6/c3d0VFBTkMP/X/d56662qVq2a7Ha72rdvb/7ddevWTatWrdKvv/5qrqNBgwZXXEfed6WXLFmioKAgeXp6Kjg4WLt375Ykvfnmm2rSpIk8PDzUrVs3HT161GH7DRs26F//+pfq1asnd3d3BQYGasyYMfr999/Nmr/7jHNzc/Xqq6+qdevW8vDwUO3atdWrVy9t27YtX7/Lli1Tq1at5O7urpYtWyo2NvaK6wMAOBdnugEApdrKlSvVpEkTdezY8aq3yTsrfuLECV133XVXtc3AgQP12GOPKT09XVWrVlV2draWLFmisWPH6tKlS/nqu3XrphdeeEFTpkxRRESEbDabFi1apG3btumTTz4pcB9jxozRnDlzNGHCBD333HN/21Pt2rU1d+5cjRw5Uv/85z91zz33SJJuuOEGSdLevXvVuXNn1a1bVxMnTpSXl5c++eQT9e3bV0uXLtU///lPSX+c+Z85c6YefvhhdejQQWlpadq2bZt27Nih22+/XSNGjNCpU6cUFxeX7zvpl/Phhx8qIiJCoaGheuGFF3Tx4kXNnTtXt9xyi3bu3KkGDRrotttu06hRozRz5kz17dtXN910k/773/9q9OjRCgkJ0SOPPGK+39y5c9WyZUvdddddcnV11YoVKzRq1Cjl5uYqMjLSrJs/f74eeughtWzZUpMmTZKPj4927typ2NhYDRw4UJMnT1ZqaqpOnDhhXuZftWrVv13Phg0btHz5cnNfM2fO1J133qnx48frjTfe0KhRo3Tu3DnNmjVLDz30kNauXWtuu2TJEl28eFEjR45UzZo1tWXLFr322ms6ceKElixZIkl/+xkPHTpU8+fPV+/evfXwww8rOztbGzZs0KZNm9SuXTuz7rvvvtNnn32mUaNGqVq1apozZ4769eunY8eO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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "merged_model = trainer.model.merge_and_unload()\n", + "merged_model.eval()\n", + "\n", + "test_eval_df, test_exact_match = evaluate_exact_match(\n", + " merged_model,\n", + " tokenizer,\n", + " raw[\"test\"],\n", + " n_examples=None,\n", + " batch_size=8,\n", + " max_new_tokens=512,\n", + ")\n", + "\n", + "print(f\"test exact match: {test_exact_match:.4f}\")\n", + "test_eval_df.to_csv(run_dir / \"gsm8k_test_predictions.csv\", index=False)\n", + "\n", + "plt.figure(figsize=(10, 4))\n", + "plt.hist(test_eval_df[\"correct\"].astype(int), bins=2)\n", + "plt.title(\"GSM8K test exact match\")\n", + "plt.xlabel(\"Correct\")\n", + "plt.ylabel(\"Count\")\n", + "plt.tight_layout()\n", + "plt.savefig(run_dir / \"test_exact_match_hist.png\", dpi=160)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "4a5c83b4", + "metadata": {}, + "source": [ + "## Publish files" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "ed612f1b", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "883914a08e4d4d16b677473e251b5df9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Writing model shards: 0%| | 0/5 [00:00 and tokens so the model formats the answer more correctly.\n", + "\n", + "## Training setup\n", + "\n", + "Base model: `MegaScience/Qwen3-4B-MegaScience`. \n", + "Fine-tuning style: SFT with LoRA. \n", + "Precision: bf16. \n", + "Max length: 768. \n", + "Epochs: 1. \n", + "Train / validation split: 95 / 5 from the official train split.\n", + "\n", + "## Results\n", + "\n", + "Validation loss: **0.3690**\n", + "Validation perplexity: **\n", + "- dataset:\n", + " id: openai/gsm8k\n", + " task_id: gsm8k\n", + " config: main\n", + " split: test\n", + " value: 0.095527\n", + " date: \"2026-05-09\"\n", + " notes: \"greedy, no-tools, local eval\"\n", + "\n" + ] + } + ], + "source": [ + "merged_model.save_pretrained(publish_dir, safe_serialization=True, max_shard_size=\"2GB\")\n", + "tokenizer.save_pretrained(publish_dir)\n", + "\n", + "val_acc_100 = np.nan\n", + "if \"eval_exact_match_100\" in log_history.columns:\n", + " values = log_history[\"eval_exact_match_100\"].dropna()\n", + " if not values.empty:\n", + " val_acc_100 = float(values.iloc[-1])\n", + "\n", + "readme_text = f'''---\n", + "library_name: transformers\n", + "base_model: {base_model_id}\n", + "datasets:\n", + " - openai/gsm8k\n", + "tags:\n", + " - qwen3\n", + " - gsm8k\n", + " - lora\n", + " - reasoning\n", + " - math\n", + " - benchmark\n", + "license: apache-2.0\n", + "---\n", + "\n", + "# Qwen3-4B-MegaScience GSM8K fine-tune\n", + "\n", + "## Overview\n", + "\n", + "`MegaScience/Qwen3-4B-MegaScience` is a 4B Qwen3 modification trained on the MegaScience dataset. We fine-tuned it on GSM8K, which contains common-sense tasks for school students.\n", + "\n", + "## Dataset\n", + "\n", + "The official GSM8K train split is used for training and validation. We modify it by adding and tokens so the model formats the answer more correctly.\n", + "\n", + "## Training setup\n", + "\n", + "Base model: `{base_model_id}`. \n", + "Fine-tuning style: SFT with LoRA. \n", + "Precision: {\"bf16\" if bf16 else \"fp16\"}. \n", + "Max length: 768. \n", + "Epochs: 1. \n", + "Train / validation split: 95 / 5 from the official train split.\n", + "\n", + "## Results\n", + "\n", + "Validation loss: **0.3690**\n", + "Validation perplexity: **1.4463**\n", + "Test loss: **0.3441**\n", + "Test perplexity: **1.4107**\n", + "Test exact match: **0.0955**\n", + "\n", + "## Inference\n", + "\n", + "Use the same chat format as training. The answer goes inside ``.\n", + "'''\n", + "(publish_dir / \"README.md\").write_text(readme_text, encoding=\"utf-8\")\n", + "\n", + "eval_dir = publish_dir / \".eval_results\"\n", + "eval_dir.mkdir(parents=True, exist_ok=True)\n", + "eval_yaml = f'''- dataset:\n", + " id: openai/gsm8k\n", + " task_id: gsm8k\n", + " config: main\n", + " split: test\n", + " value: {test_exact_match:.6f}\n", + " date: \"{date.today().isoformat()}\"\n", + " notes: \"greedy, no-tools, local eval\"\n", + "'''\n", + "(eval_dir / \"gsm8k.yaml\").write_text(eval_yaml, encoding=\"utf-8\")\n", + "\n", + "training_meta = {\n", + " \"base_model_id\": base_model_id,\n", + " \"hub_model_id\": hub_model_id,\n", + " \"seed\": seed,\n", + " \"bf16\": bf16,\n", + " \"fp16\": fp16,\n", + "}\n", + "(publish_dir / \"training_meta.json\").write_text(json.dumps(training_meta, indent=2, ensure_ascii=False), encoding=\"utf-8\")\n", + "\n", + "print(readme_text[:900])\n", + "print(eval_yaml)" + ] + }, + { + "cell_type": "markdown", + "id": "15b2569e", + "metadata": {}, + "source": [ + "## Hub upload\n", + "\n", + "The token must already be available as `HF_TOKEN`. The folder upload keeps the merged model and the benchmark metadata together." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "6920a3f9", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1e19e9620bdf490b901a93fa213dbb9c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Processing Files (0 / 0): | | 0.00B / 0.00B " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dfc5d43431c44e7eb9d3ef10283bfc8f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "New Data Upload: | | 0.00B / 0.00B " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pymlex/qwen3-4b-gsm8k-think-answer\n" + ] + } + ], + "source": [ + "hf_token = \"YOUR_TOKEN\"\n", + "if hf_token is None or hf_token == \"\":\n", + " login()\n", + "else:\n", + " login(token=hf_token)\n", + "\n", + "api = HfApi()\n", + "api.create_repo(hub_model_id, repo_type=\"model\", exist_ok=True)\n", + "\n", + "upload_folder(\n", + " repo_id=hub_model_id,\n", + " folder_path=str(publish_dir),\n", + " repo_type=\"model\",\n", + " commit_message=\"Qwen3-4B-MegaScience fine-tuned on GSM8K\",\n", + ")\n", + "\n", + "print(hub_model_id)" + ] + }, + { + "cell_type": "markdown", + "id": "5ac569bb", + "metadata": {}, + "source": [ + "## Inference" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "ee55fbd7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Janet’s ducks lay 16 eggs per day. She eats three for breakfast every morning and bakes muffins for her friends every day with four. She sells the remainder at the farmers' market daily for $2 per fresh duck egg. How much in dollars does she make every day at the farmers' market?\n", + "\n", + "She sells 16 - 3 - 4 = <<16-3-4=9>>9 eggs each day at the farmers' market.\n", + "She makes 9 * 2 = $<<9*2=18>>18 every day at the farmers' market.\n", + "\n", + "\n", + "\n", + "18\n", + "<|im_end|>\n" + ] + } + ], + "source": [ + "def solve_question(model, tokenizer, question, max_new_tokens=512):\n", + " prompt = build_prompt(question)\n", + " inputs = tokenizer(prompt, return_tensors=\"pt\").to(model.device)\n", + " prompt_len = inputs[\"input_ids\"].shape[-1]\n", + "\n", + " end_answer_id = tokenizer.convert_tokens_to_ids(\"\")\n", + " eos_id = tokenizer.eos_token_id\n", + "\n", + " with torch.inference_mode():\n", + " output = model.generate(\n", + " **inputs,\n", + " max_new_tokens=max_new_tokens,\n", + " do_sample=False,\n", + " eos_token_id=[eos_id, end_answer_id],\n", + " pad_token_id=tokenizer.pad_token_id,\n", + " )\n", + "\n", + " new_tokens = output[0][prompt_len:]\n", + " text = tokenizer.decode(new_tokens, skip_special_tokens=False)\n", + "\n", + " if \"\" in text:\n", + " text = text.split(\"\")[0] + \"\"\n", + "\n", + " return text.strip()\n", + "\n", + "sample_question = raw[\"test\"][0][\"question\"]\n", + "sample_output = solve_question(merged_model, tokenizer, sample_question)\n", + "print(sample_question)\n", + "print(sample_output)" + ] + } + ], + "metadata": { + "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.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..ac42f1c --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9bcb70ed91fc9347ba9e675ebb337626fb7811cc866c5ddbf7031cd33ec26e7 +size 11423287 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..dc945c5 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,22 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "extra_special_tokens": [ + "", + "", + "", + "" + ], + "is_local": false, + "local_files_only": false, + "model_max_length": 131072, + "pad_token": "<|endoftext|>", + "padding_side": "left", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +} diff --git a/training_meta.json b/training_meta.json new file mode 100644 index 0000000..d4a585a --- /dev/null +++ b/training_meta.json @@ -0,0 +1,7 @@ +{ + "base_model_id": "MegaScience/Qwen3-4B-MegaScience", + "hub_model_id": "pymlex/qwen3-4b-gsm8k-think-answer", + "seed": 3407, + "bf16": true, + "fp16": false +} \ No newline at end of file