From deb4471c7f774aacd3ed397aed82c084d3416529 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Sun, 6 Sep 2026 22:49:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: nityaak/qwen3-4b-stance-matrix-semeval-ezstance-qlora Source: Original Platform --- .gitattributes | 36 ++ README.md | 21 + ...68938_2026-08-10T122755Z_carbontracker.log | 10 + ...8_2026-08-10T122755Z_carbontracker_err.log | 2 + ...026-08-10T122755Z_carbontracker_output.log | 17 + ...68938_2026-08-03T142720Z_carbontracker.log | 10 + ...8_2026-08-03T142720Z_carbontracker_err.log | 2 + ...026-08-03T142720Z_carbontracker_output.log | 17 + ...68938_2026-08-04T163517Z_carbontracker.log | 10 + ...8_2026-08-04T163517Z_carbontracker_err.log | 2 + ...026-08-04T163517Z_carbontracker_output.log | 17 + chat_template.jinja | 97 +++++ config.json | 72 ++++ generation_config.json | 13 + loss_curve.png | Bin 0 -> 23224 bytes model-00001-of-00002.safetensors | 3 + model-00002-of-00002.safetensors | 3 + model.safetensors.index.json | 405 ++++++++++++++++++ tokenizer.json | 3 + tokenizer_config.json | 226 ++++++++++ training_summary.json | 48 +++ 21 files changed, 1014 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker.log create mode 100644 carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker_err.log create mode 100644 carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker_output.log create mode 100644 carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker.log create mode 100644 carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker_err.log create mode 100644 carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker_output.log create mode 100644 carbontracker/823641.368938_2026-08-04T163517Z_carbontracker.log create mode 100644 carbontracker/823641.368938_2026-08-04T163517Z_carbontracker_err.log create mode 100644 carbontracker/823641.368938_2026-08-04T163517Z_carbontracker_output.log create mode 100644 chat_template.jinja create mode 100644 config.json create mode 100644 generation_config.json create mode 100644 loss_curve.png create mode 100644 model-00001-of-00002.safetensors create mode 100644 model-00002-of-00002.safetensors create mode 100644 model.safetensors.index.json create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json create mode 100644 training_summary.json 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..e9618eb --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +--- +base_model: unsloth/Qwen3-4B-unsloth-bnb-4bit +tags: +- text-generation-inference +- transformers +- unsloth +- qwen3 +license: apache-2.0 +language: +- en +--- + +# Uploaded finetuned model + +- **Developed by:** nityaak +- **License:** apache-2.0 +- **Finetuned from model :** unsloth/Qwen3-4B-unsloth-bnb-4bit + +This qwen3 model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library. + +[](https://github.com/unslothai/unsloth) diff --git a/carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker.log b/carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker.log new file mode 100644 index 0000000..3cd411a --- /dev/null +++ b/carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker.log @@ -0,0 +1,10 @@ +2026-08-10 12:27:55 - carbontracker version 2.4.5 +2026-08-10 12:27:55 - Only predicted and actual consumptions are multiplied by a PUE coefficient of 1.58 (Daniel Bizo, 2023, Uptime Institute Global Data Center Survey). +2026-08-10 12:27:55 - The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-10 12:27:55 - Monitoring thread started. +2026-08-10 12:54:41 - Epoch 1: +2026-08-10 12:54:41 - Duration: 0:24:13.04 +2026-08-10 12:54:41 - Average power usage (W) for gpu: 281.84832965517245 +2026-08-10 12:54:41 - Carbon intensities (gCO2eq/kWh) fetched every 900 s at detected location: Breda, North Brabant, NL: [253.31] +2026-08-10 12:54:41 - Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-10 12:54:41 - Monitoring thread ended. diff --git a/carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker_err.log b/carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker_err.log new file mode 100644 index 0000000..3dbbd15 --- /dev/null +++ b/carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker_err.log @@ -0,0 +1,2 @@ +2026-08-10 12:27:55,614 - MainThread - WARNING - No API keys provided. Skipping intensity provider initialization. +2026-08-10 12:27:55,748 - MainThread - WARNING - No carbon intensity provider specified. Using average carbon intensity for NL: 253.31 gCO2eq/kWh. diff --git a/carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker_output.log b/carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker_output.log new file mode 100644 index 0000000..deb8c9e --- /dev/null +++ b/carbontracker/3557751.368938_2026-08-10T122755Z_carbontracker_output.log @@ -0,0 +1,17 @@ +2026-08-10 12:27:55 - CarbonTracker: The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-10 12:54:41 - CarbonTracker: +Predicted consumption for 1 epoch(s): + Time: 0:24:13 + Energy: 0.179741288079 kWh + CO2eq: 45.530538890080 g + This is equivalent to: + 0.426315907210 km travelled by car +2026-08-10 12:54:41 - CarbonTracker: Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-10 12:54:41 - CarbonTracker: +Actual consumption for 1 epoch(s): + Time: 0:24:13 + Energy: 0.179741288079 kWh + CO2eq: 45.530538890080 g + This is equivalent to: + 0.426315907210 km travelled by car +2026-08-10 12:54:41 - CarbonTracker: Finished monitoring. diff --git a/carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker.log b/carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker.log new file mode 100644 index 0000000..1b0b836 --- /dev/null +++ b/carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker.log @@ -0,0 +1,10 @@ +2026-08-03 14:27:20 - carbontracker version 2.4.5 +2026-08-03 14:27:20 - Only predicted and actual consumptions are multiplied by a PUE coefficient of 1.58 (Daniel Bizo, 2023, Uptime Institute Global Data Center Survey). +2026-08-03 14:27:20 - The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-03 14:27:20 - Monitoring thread started. +2026-08-03 14:40:07 - Epoch 1: +2026-08-03 14:40:07 - Duration: 0:10:13.73 +2026-08-03 14:40:07 - Average power usage (W) for gpu: 270.8863572593801 +2026-08-03 14:40:07 - Carbon intensities (gCO2eq/kWh) fetched every 900 s at detected location: Breda, North Brabant, NL: [253.31] +2026-08-03 14:40:07 - Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-03 14:40:07 - Monitoring thread ended. diff --git a/carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker_err.log b/carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker_err.log new file mode 100644 index 0000000..ba50c2c --- /dev/null +++ b/carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker_err.log @@ -0,0 +1,2 @@ +2026-08-03 14:27:20,152 - MainThread - WARNING - No API keys provided. Skipping intensity provider initialization. +2026-08-03 14:27:20,278 - MainThread - WARNING - No carbon intensity provider specified. Using average carbon intensity for NL: 253.31 gCO2eq/kWh. diff --git a/carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker_output.log b/carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker_output.log new file mode 100644 index 0000000..1862e61 --- /dev/null +++ b/carbontracker/4141992.368938_2026-08-03T142720Z_carbontracker_output.log @@ -0,0 +1,17 @@ +2026-08-03 14:27:20 - CarbonTracker: The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-03 14:40:07 - CarbonTracker: +Predicted consumption for 1 epoch(s): + Time: 0:10:14 + Energy: 0.072966240612 kWh + CO2eq: 18.483189318022 g + This is equivalent to: + 0.173063570393 km travelled by car +2026-08-03 14:40:07 - CarbonTracker: Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-03 14:40:07 - CarbonTracker: +Actual consumption for 1 epoch(s): + Time: 0:10:14 + Energy: 0.072966240612 kWh + CO2eq: 18.483189318022 g + This is equivalent to: + 0.173063570393 km travelled by car +2026-08-03 14:40:07 - CarbonTracker: Finished monitoring. diff --git a/carbontracker/823641.368938_2026-08-04T163517Z_carbontracker.log b/carbontracker/823641.368938_2026-08-04T163517Z_carbontracker.log new file mode 100644 index 0000000..4959047 --- /dev/null +++ b/carbontracker/823641.368938_2026-08-04T163517Z_carbontracker.log @@ -0,0 +1,10 @@ +2026-08-04 16:35:17 - carbontracker version 2.4.5 +2026-08-04 16:35:17 - Only predicted and actual consumptions are multiplied by a PUE coefficient of 1.58 (Daniel Bizo, 2023, Uptime Institute Global Data Center Survey). +2026-08-04 16:35:17 - The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-04 16:35:17 - Monitoring thread started. +2026-08-04 17:02:06 - Epoch 1: +2026-08-04 17:02:06 - Duration: 0:24:15.20 +2026-08-04 17:02:06 - Average power usage (W) for gpu: 274.1503450413223 +2026-08-04 17:02:06 - Carbon intensities (gCO2eq/kWh) fetched every 900 s at detected location: Breda, North Brabant, NL: [253.31] +2026-08-04 17:02:06 - Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-04 17:02:06 - Monitoring thread ended. diff --git a/carbontracker/823641.368938_2026-08-04T163517Z_carbontracker_err.log b/carbontracker/823641.368938_2026-08-04T163517Z_carbontracker_err.log new file mode 100644 index 0000000..a5da7ca --- /dev/null +++ b/carbontracker/823641.368938_2026-08-04T163517Z_carbontracker_err.log @@ -0,0 +1,2 @@ +2026-08-04 16:35:17,079 - MainThread - WARNING - No API keys provided. Skipping intensity provider initialization. +2026-08-04 16:35:17,209 - MainThread - WARNING - No carbon intensity provider specified. Using average carbon intensity for NL: 253.31 gCO2eq/kWh. diff --git a/carbontracker/823641.368938_2026-08-04T163517Z_carbontracker_output.log b/carbontracker/823641.368938_2026-08-04T163517Z_carbontracker_output.log new file mode 100644 index 0000000..2769312 --- /dev/null +++ b/carbontracker/823641.368938_2026-08-04T163517Z_carbontracker_output.log @@ -0,0 +1,17 @@ +2026-08-04 16:35:17 - CarbonTracker: The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-04 17:02:06 - CarbonTracker: +Predicted consumption for 1 epoch(s): + Time: 0:24:15 + Energy: 0.175091899719 kWh + CO2eq: 44.352795257434 g + This is equivalent to: + 0.415288345107 km travelled by car +2026-08-04 17:02:06 - CarbonTracker: Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-04 17:02:06 - CarbonTracker: +Actual consumption for 1 epoch(s): + Time: 0:24:15 + Energy: 0.175091899719 kWh + CO2eq: 44.352795257434 g + This is equivalent to: + 0.415288345107 km travelled by car +2026-08-04 17:02:06 - CarbonTracker: Finished monitoring. diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..ba89998 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,97 @@ +{%- 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 forward_message in messages %} + {%- set index = (messages|length - 1) - loop.index0 %} + {%- set message = messages[index] %} + {%- set tool_start = '' %} + {%- set tool_start_length = tool_start|length %} + {%- set start_of_message = message.content[:tool_start_length] %} + {%- set tool_end = '' %} + {%- set tool_end_length = tool_end|length %} + {%- set start_pos = (message.content|length) - tool_end_length %} + {%- if start_pos < 0 %} + {%- set start_pos = 0 %} + {%- endif %} + {%- set end_of_message = message.content[start_pos:] %} + {%- if ns.multi_step_tool and message.role == "user" and not(start_of_message == tool_start and end_of_message == tool_end) %} + {%- 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('')|last).lstrip('\n') %} + {%- set reasoning_content = (message.content.split('')|first).rstrip('\n') %} + {%- set reasoning_content = (reasoning_content.split('')|last).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..15512da --- /dev/null +++ b/config.json @@ -0,0 +1,72 @@ +{ + "architectures": [ + "Qwen3ForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": null, + "torch_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": 40960, + "max_window_layers": 36, + "model_type": "qwen3", + "num_attention_heads": 32, + "num_hidden_layers": 36, + "num_key_value_heads": 8, + "pad_token_id": 151654, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": true, + "unsloth_fixed": true, + "unsloth_version": "2026.7.5", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 151936 +} \ No newline at end of file diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..bf14878 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,13 @@ +{ + "do_sample": false, + "eos_token_id": [ + 151645, + 151643 + ], + "max_length": 40960, + "pad_token_id": 151654, + "temperature": 1.0, + "top_k": 50, + "top_p": 1.0, + "transformers_version": "5.5.0" +} diff --git a/loss_curve.png b/loss_curve.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6c64cec90533cd1b99ca86ac9bdd09ebe06692 GIT binary patch literal 23224 zcmdqJWmr{f*ET!>K_yi{lvW7=0VSoeK)ORxly0PZS)d}Ki;_m^?pjDFBGS^*AR-;o z%{L}{@8^BK_s{qLyN_ev!eXttu6e~6=Qz)E%$KUlvSh@x#0Y|r$=$uJjv)9L1i>3S zK?JV|b`1T7e?(pG=(=b)n7g=}JTgO+Ok5mo9b9a!9x%I^J#w~ku;=Hwc8%xS6=q8p z7e{ANUS7NZc?XZfBMaU~0|Z-em6MKl?>Qp~g$eo}Ub}jB7 z_N(FVk{QiouJXs2jB*A046D?r=;q{}>7POoDI)xWf=XF>5&fD6vAt1ON(y^qiV9mY zx)qB)vvwIg8l|S9K3$H<-i#k*`rbpweA!@e!?VU{ighz~Dt48A%&SJc-823nA8Fkw z7>Z9oLKYYNiy63s97B-hYsaMFH>O+v|NBMtl9A^m^{~%sE6-pJ&cN3XNms(l%|(zY zS}DIz8EE?W0?EGzDGA#9Xt=QQ^RAWwHFp+e^_OXv1J(|y> z;W0>$;+iR!(0|b+K3BfnYwP=qg&nvSVWRt`F zdd1b9XIw)orc&v)V1ScC5@%0fkhS@ucI(4~eXpge&9yeMCCmOovsWP@eOY>lhc&BeKobd-(y zW!2V72h$45`)}1T(a)+5@3UG>wZ(Z&1Pi-N|F}?MKdeU~vG!Iw*C2yJYVSw&QoX3# z{Co5E_?*@l;bv3544b~(oo3^Mk21lu{mro=&N53iht<8=_mbx4ZA)zX)!j!t({7R2 zXf^n92S=&SolB22_UkvP=}Z_dG;97n zH8r&?vA@tRdf~#2AR6A@FV9J|%IpmTC$8uf-_5Hzz>Rp#ahF(j+{A{(#pP^{c&o_C z$u+gMYR&cLtVh=D-LV@eu9#lBh8bvJK7|b6T(i)xmO9*S7xh?9w6ESa_r5>fl@`LL z9Gm`+^W^X?9j~F9!~G>um+7~Q@{(7&S_g4e1>yv02~W9BsBPFzv@6#6s%M`G-LNP=XjM+NIzFNM!8$GaQJ;hcU!F0mPTspbg zkD^}DUw4#-nW-@Hnqf8coD9e9E>=>XJ)4S0Ky;alO95N#x9?>)R9?_hy}Pl{1^a+E zrd9io_s(E~D{Qx7+kU=4#AtRh(pXzw{*}ZYgQ&~hI8oQm*XQ}WYyAC#8N{@$tgL1` zQ-Z1w4|anNBncex2rw$1>pePTa^IT5xfbSR-q2eeBO;mL%d7nndwwT+zrGVW)_jTt#uYKd{A6%mqwzplI@9(-wTKBWUIqgE@ z)~_I5`i+u)TN!O_?eJ#J-?LeHLbO7*ma&q)117%q_PP6dd7oC~C!%d~If|A-RV1zM zKH7>mn6?{TeYE=Bp1piV{V>$t6wci=Dbpjkl?GJ zAYKn8#31CXG=gQx>dADP_||WnFlxBdDm*$p;=R4)uOT|hA&Lc z;pTEH>3a>GTLlM-EJ9#%Y)lWUyf>|3G0;CzopM}ki^_=v zl9J8x*VmWutMfE|?%hx}rKTZoof<#i^8p_;(v*9?AIQF;f5&3z)^BFE;Q*&TW$LoZ z%r%8diT231Z}0O`($Qu08F?$g>D6{|DTW(NZD90Pj1hJyjm(pW`+<#(?S_{XZ~?D0 z*NPbV&0oX7*A^?6^zHG!MAdAa|@r{)~69ot$*Njd9|!&UkR=n;X3c=j0z2}(KYmh zdL*}Q-ei$`N<`NA9nt}F>Nh8WJFe1J)q)nmPa2hU%0PEt_x!TcvdVo-%$xv^ek-l}e7G{VZX%Im)!boPpFB1Gwd>Vu+o$*zxg zg4V{KQgB|su3NLW5+u1bMi40Nv$JM3`TO@}9v)?Ere>uh%irHc3m-kLpihwANA z->O#gE`5h8Gl%n^{(hqikB-jVUY#0j{XHr_WF6we>|9<=uc7-e ztG~a0pr}$5-yJ5utq&uN-zFMWdCfq$ z%z&7#7<*l+?xH zSvpystA9}N@W|PDy@kJh8X$v{>pD`Ka|*%p2#58wX^)p6K5;@7=FE3Q6sZ;Y2O-x< zU;rpf1|TO8WbC2GSx3R2wn7YIZi?gM;~OHSfT+FsNpJP{_gi-+zie+altZ!uU}-rd zB}aOC;FFQeA|l&QLLRP}AFH)KK|v9zxk92j5{d^O+%3?(0uZpw|IO}2{QH7oZo4wK zZ^Lkq<*U^`yAcj{b;??ACZ|6hQH(6H9tw6Rok zSZtFfaG71Mp=iZ*X~?+PR6jGw8hyh_ydO%sb^)n8BNvil?Na8@AF^^joq=1`l0{r7 z=P2TNx>npJZ>d{rSNAfB8+wPsz>Qua(`?G-I`juTDf9>;edh$m{-c`5-QWng#q<+! z%{5ELlylB6IHTw5ld&DO64A0f<|T0BG#3%vNq?!(R8j|CxybpjdKo z!SlxGS2ox<27co#r1f$m`0wApC=5ZfB%D^|yy~6VJK;|3?_8g* zt)#bMlPl)lOjk0n8|Ytv0Tw6*n0O4;nH?vmPluFjJ@UzO(%v5sqM%t5RZ2<<2gG%( zfai*76<||1vF{QRjKiBWzdb1UZY#tEAocX=(}M1gX_oi;#MU+r$vHFa-$sc4lnuW4 z{v0iW2^xRZ?%+PL!Ht=0Y-!Qd)zy7I7>dQZ^l0hyKaFD{J9kw&BO^o9aZEbAxjaes zc$wPn`x9|(+})QF?BBKiaoUCnE`Q%ZSPR(Qx+_%)#a*0NLLpy3T_Tdr9*Oul(@wnxFH zH(L!w)x&_(dlGLDKmgXPXmJ3rz;*HB7ZWGy(8lDMOJbQfbn`c2zjqw^RyLctLfnY2 zUmzHRoIgMAFx#Cm8F8=1uL`ydT1vFzZCZ-SNT@U2d+~Z6>ss{%LT09er zvw?(jDQXO?a!Yw4$>EjCxN;fTc9i9??IeA1g+)bzzB?`ukbg$nhg`LL?^#haBLTE)+}uooJYQ$sP~rHk>a$(Ktp1SLx0#*ZDBPPEF74u?-iH z3`6mQ?F71-nk-o*^ZRywetyKn#8^!}%Otqy=g*({q7=y|ZH4qxoOiTR6g`K`7(eV? z%(C}-SmMUe-dkcvJ3Cy7i`HHwrI7wD9r_MUM`(+SUp;_un=VWjv`yA5p9p$`W%r}-(TCRa+k8K zEcC8U;r(b9Af@OHvPcVv3UyJHT9nH&rGSgsz{S%22fyKp`pmG&vXa9e*XUCNU<6aA zkg9IV8k@9;;4fhjhKVN=4)w-YgJG*JT|m4t-b(xL@AmQ#uWWX$#Idg>tjii4g%&or zUbb)O2?@#MV3rxC!{HCU?9K*9<0gkc+1oDtneEDayb@%KMkHz~enC zrv|(vCF|aJc($t0HsomF2CtE60$SN;mOJ0E87Ah39@1HxagUsWVSc$zBfeh~$vbfS zO{v)AKpNZLjCuT=;e^~fF(K9q2QK&QUY{XCYITm4>Psd$|7qQAd6^QYx_MPB$Layw+-3MWkCxFyKYhZL<*58L#M6Eut%_U`C;65la}Ao zavz8DPYGB2H;pJ#+X`ox3OI)RQ7gH}jUcMcCoqy)|rO_&MrE4Vi+ntlUgrCi{Q9cA?J<}ygxB;oD9;8>q3%i7oFVBdiovz znZcVOWL65zOaKj@oRwypT(VGqkbMtJML(^wMS#=>o|2(q05*C)LeZoI6R1U?`k+&({9>^}u(fksXE7 zE#^fBYiUwixOON2vH)X?Tmhy@-M}EWswGt^hU)zJjAow7mJdVlORT4e{nXIi`zSK0 z{sN&1P-=&0Lc)+;SG>8un=netQiGIn-qc@ z?}=eojE-;MrGNb0|^Zy;P+$UI3xWv_O~stO^Z{Rwtp)6@C?=nDKwsWNaO8 zIVnUEn~;zIFn=Lm66i1r$*n|~=(Mr1`)I|E7VAd-`|HFZf_4J}QLW~?XPB6l=4ZtW zCzkIMZbfOD3c6q`P^5R#hzXg3u|tmUPxG&MTWU8r3&@$;K0&|=TUb~)uK+wGS#P%> z{@y;79r?Sj(y-V*&vlMT1If|SqIfSyI}qxeygv9~6T_ZbJQ=%kfc zb;Qo}+=~=Wa9I9}(S-=h5Y1F)$b{^eCA zAMMV;p5YJ@(jF{xh-4u=b_|6Q%wt27P@>p0Vp+X@zmsi}_yZLbkVgVlP#~h@AJl2< zz+G6?V({9k&I!BNvs^W-1<;EhYI2Tr|I_WWL3hlH?!o^UhZ*)}0!$?~`nA`sdZd|x zxx}={5oF}6zGO{S9oHh>?e#E8vfr0C(eq1r0&`vX#It{9`taOXXddrz9sNu&d`A6s#T!L7j+*bOYeP4W zPVe>8c&D(*iHMXSImNrLz8JWM7(Vm-Kl@)AdB&je8IlRz2~572@R|2ecVL7sAzv1U z3@}Gu(u)4UpA#bGSQY#jl;fUD^8V=VjE+hF6cnLD+Nt!yol?Komq6-iyNNtAyqj1< z`~0}V0~Xi^Bd?JY$Hgh(<4dy0v!~9N9$VqTEa;y`#xd{yy&w8mx|51D=$l``o1MhT zAnoO$@9y+QLilKy0nZ1)A5si!`w8m{e^XbM3qdeGe*)vE%KqJ$?8_4txyGU6FmRoV z$j8?|JMHhw;KTHUpTJzcl*>qP10c0IQ1Z3)Kg%2vW_xq8-oJlO64Bh=-uK~FU{f~G zQBeSB=zC#vrz9uC-pPU@TToZOow}h*8a`|dNZ>uhH~;-PW9z=$IH(QR0rfz*f>Qtm zsMxS$9T{#WHD8|OIVsw{;1B_>5 zXP>KmOaRdR!_NAgyV`E9ag7mx@Iqc-5egl|fJjEEXNirU4@F&P!^r8cC!)ZvGg(g1 zhcKQ!;%E`9?U@jumF*nxKIxu6e;xoehr47Y#0P2EyC@;g!U55VLVOv6@*6<$YgLZK z&kwC)X3z*l2PHuE8=!zP6e4-}Vp_cxE2d0~`sWAz4z?}Ur#o)>`At<5>KM9)UpX7J zu{b>UY8DsVS%GkG!#eD`okK6-X@-yjzq7Z!iq_J_#R9%NGihE2+f(a#{`<{FY(N#E zG|atrZsQv?q=oZ|1hZmST3h7Exr9TDNQMct*GDD_}9cloC{&DdoJD4<}Lf%gy_aY zqL}^u?$Smd)GqQ$O0Jik_qLqmST_kGEMWecnwkoE8yg$jvhsuC=uWmA9SXX<6BrOg zP`1IBIC6!^X>V&H#CjN4vhP~sw_j}DN*icD1T>W%1SeIp0APsDPN>3G4)_Rsc69*ZHS42G)-^$FNdc!h55;jzTK?`}ezO z#e#>27cJ(V8^L3k3B^^DUyIn%Ck@`JHLQKb5xROoJvI z7x=ytm`k#6G@YCZSU9-3m4K2B{g{-r4wt@*1+bnZWH*qm9Ebg}0<4!cFcV%I{TAUd zFl)x+BteDz#{5_BvAA5`oj4g*(bivq%n-r$$vTCoeSoMCg{EVNo5=0wM+m_kPV&u- zceTgh{Cy(EJ4OAG@DzlQ+wk`Xmnx3K&kpF%^X&xYR4@}p&yg3z;UfedoN20_&$Vg# z;9}iW_{^N9xs>V4W7sr8#@1vyxC@6H$XCMfk>l@M(8TtM2=5fl*Q2Rq!e{1rk#QeR zyW}xx16BH?py+x6Q_h_F1P`g*J%u>kC|H+Y#7ibYW7*MVN|97En#(mWjt(Lb`mw4X z(miA=kt_^J=$GY5!_}DR&07k%Gew1kRA7CEx=jZP!cqj`+ z^w+4g=agUn3LLF}S8bxaeA*KeG*!j7TXAEkl?eDfmhT$^n%bE&KJ-#c!UVl~RqQk& z1A?BGXALF0@?}9mEzmS0`)%ERMudhY9sQgJDhDwIMc$(-AHsG5*x26X`vO;ir`ws5 zI?O;7*Qlr{93T%t_r)QS#Z@3-RYIf=%0VDb2gPThzev`7)VJ(lf62djw8oS;)UeVm zLnT3Sw!bLNH;$!hy;t8F-C?v^US6J)64_iBOv7N166+p$*Ezl_xjVGoWZJ5j z1mYk&(fIJZt#nl#9iaUTE+)JuN(GJ<5|b8ere<5ZYY(2;S1t&l0>P61VI}BiT;j_A zB?7L!J;hgIV$_O!!?kcSiuK}%WUv9G=YO?mM9hI$9$EjOgMdQ(zA+6H0+Y>=Hh|c$ z$pAyqA2N+={GM~afq>lAouOfq(zbY6sPGMWY?B$fri^Vf!jH_%%>kQh>E+*l+?%7H z_T|e>i-gY4An(DXI?SxLOX>LdeDd{$36j{8Qx9R35CDy=H9@N8%R`hW2L!mmDk9RK z;p#5jLI^O!-O-w4Ec;%OfYYzrz{qd_0S?Cwn63&G$pT|G8kH8oQnl8p5H0GOd6rvG zGi6l}_#6-pavZ%OX*_xQ)TZziV~PupG+M^Qx5CB)3cdF!g=9L)ut6f{7L?0JOeoU%!5( z&5A7Ju)`CNZbS)X55BY#ga^cMG`^#p^)3z$5x|+lPT=U)AYV*x)*SkVzbWxrw+6`$ zkUso>axx3BLs{ONi&*(oPhb;6dUFl4KpeH+nD0k1_1apO3Ku9#py^ni) zqYOavfZs0*3+up1(*(V-7-~B?*3Y@_OCz9ezGYzmWfL^hUbvGyFbRzK#ljY~gaKib zQC%DrYEV6CXvm<%ZcrQLG|eIn-7+HQ*X1iQ8bvEwwj~^xqlkT%t?nwR1^pK2{2^>g z(aGUlI+=HZ&Tg#3mhFOEsySYKCI0Jwyks+@WEE6a>8%>0ncuA~*S{WYoCRbl{xZ+k zFR}p^5CtyiH={WhHoov4=qwAVGjxtr$hKxTvD>QAdT|8)JS{$ zPM*!rt^Rkrwo3% zRAvWq4vyjX@86@vS%ws?NX80U#P8V!?CmS^jDyg z;5wWwy;9pKy)t`lxq(8npxp9b#1>iv%BRMb(xzWPRUdkUqb9C%BX5|bjGUaDtUEqF z&#m}FyAKu&oih93?lK4CVE7Y|A6?OcHfs%12Wlrzo@~n`ihXv3cnp;32qxFe#|y4y?7vu0Xn()9Yi9 zLmrAqAW#G8fb0hx5cwPw#myeMIG^ys#-8|A7FM+ zX9^rN_C3!J=bRa$6xDAOD5X6jHZ%mb-|;k{BdGPWfaejJTXrl+#5g$hm!{LzW3*zM|smBIRH`by4aT zH8kQg*26r2irdlA(IzTBgoHc=5|6*f5)p?z3PcGt2)&;^i9_Pj))is{^GQ(!n@Wh@ zS(?V9g7mf^EyAu6pDp72XL_M*v=`WU0XWXY%|`PQ7)V!o6^~Lt>+XR#$+_SR+sJO@ z(>);nXJPACbaiN^kTzK?;kTLcppp1x<5kk6RPqQY-XLfK%0WqZC|{@}a%L}&fdnLR zur;v*07Pp9I(cwT7zj3cd>q+v!Zu;$c}j6^w>OqKLtT?iuYI18k2nKLlqYI&P=dW@n5WxV8b{Intne8QhIphaMUVdKaA4?QPxGb z4=^P)6_q83xwC+@!<+WB0o6d|H=oCSHb`T3N$$a=TkFm56p5YyfpP;d>2>c7TM(8| zsSZE`*dRjMSJ!7wTmulnUO0DQOuQ(8jS{R4wzBjmmwi}{ja|m2w}@A2IB2G zQv`nIq3TJ^3<%kjt6tsQ0^uE8zeX3A;+g@ zd5r+{m|KBo0B8m$UF%1Q^#BUi`z;b?08C+%flZl(BJz>t2YrBAIJbpN@Z;!IkaFsX z(%hGqX*9q<8rT=fA#{XZ)L zqa-6c+I0(L6vd+}YPsXBx~oa=k2YX$#yEa~A|U~SX>im-t^ofmE#1gG z0fR>2GZq-GV)rE@)KYgZEr2Af6zN2n{oSl^wc4^_w;1hg-4B2!w?yDGn!YA%IyPd7slFEv?K#f5t|I>_8kznzIIO0hf8(H9vXK{4ZN@qP} zsMsnLbPm)#B!`7;o&gX~Y|h28p!_oU(2y~X*j~cDe@(h*J^)m8|4-D#Nh+!%s&nin zWH9{_>lC}eQZ$3{k6(Dq*LO1Ph@2ma>%w8c0%g8F(}+L`K>7#7LV$2;%*O;F<6^0s2&08$v`>Z`7lHxwVAiZ07x_PX8(iL zglI`YgBD3@MK*A^Amv504tPG}&uO}gEL2cCofjZft}8T@lp0-W0YUY>4^fs_{4tCN zY|GRP3=7$Hb!2hg^#714ZPsQNEw_l`i2&+ZILecZq09uJ2a<@2i8o^1mF^A}v5Y)t z=#IjK2Y%YIT1eO&?Ceud%mT<6W?yU6J(p)X9vQEn&i}lgnC#I21CTt4w6QBECBRK^ z1R|~r485;VPW*BUKP=8T`(c!)b^j5k<0v~s@Pbxr=k{Au91!Y``p2ZZ(}5;lBmh>% zx5tBKndxv#7D}}8R0}ni*ycT@hrKuDrDZZeQt6U0)QA_%D1V77Uk=wzX zRma~>p*(!`2~4_LN)o24kR;65)YZujSQ1Zh^VAVw25i963pSOJI}pwxD1~kb-+MbqQ7p3feSu&M#f9zu2O3g)%TH142t;uP6xLqLpO1rY z`s1U`^CFLuQE#t*TvSvBiaQ+qclDzR5BH{|v{33rYm~iSrnh5}vY+%A@MTIsEbqa6 zbyxd(qkdOxGPuY0!79;-`T)W4{X9_Tpu7MW5M9WEs0pLVb{9xWKz1mhjxra5hQ0|$ z++4YE8Pl;saD{f|Po$nu7;i4n#k9-O*$@ z%7vi{4P)Q+a0nS`5C%}{CHlJ4gXazZD=F7(k*weqtb5Rd!)UQ(f#5#S_Mq%72H!q(k)Q5SD#iUODT|4!Asf7E@5P>~1jxaN31 zcuUMuT|^wmFicC&+&b)8K5^bxI#GM%`hE^JkM`F4Oy3bm&c%76%;Sj zCg?mgIwA$mnsgPZeN8B;ODJ={l-=$jQ@@*-Kzd8QwdJ3J&Y|3wWGvsL&IMWkte3|= zqoEIKZlN6Af}7w+FOC!e{~NjiA)dFIBsM_u5&#ed>m4q#_=J#T4WR2R#Ct7iX^iCl znnoP-1OVx+o?{Rx%oRuC2ozw7>F%0U(iQbQM#rN&_*~AZ$Pfk_8I$w z)qi+?5JJv+U(JCQKMW`RK0v9wHwqlmIL=`AE`sM|)QsU0KD$>mR%WGo!Y41d#g%h74sZziDb_ClcOFKR)1I|DGsxR0FvA z_<7$YVHQ_0U^$|2!P?`ikO4+_Y#TgWqwt0;I{1mP;}g#;ZEqQ9bLT2g^3S7ScM zq_5wp%fC;!9b?L$Twz0D^N;627$2!+DBl;yEGsIMF-5N1j>PPYGGLRTOawbx-i4Rf zc(NgNCla0#wExF57s%nvw(3fpB3RUV*!}C>7#QiYI)AjRaN{W`ke7MNe;35BMln5Z3eLl7Y(p961p=-G5QO zbvBSQEm7C_F#4Yx(}3N05)552?cRJa)N~2ZKc%&}4RM+f22?dQ!yuMtfa6U|cLOvB zFJSSTvk%ekobvK=1xX(3UMAePnMpJ6;=hgo8}Z+@v%Zbz=7Q-`^7ADRQ61b0NG&n4F^(_sEC#mIz*BqeV${j3A?-dLqaIJwKiNoByNXP7n97sdgna(@twKX3t{X|<7fZgEa=U;uY z+ZHXTaJcDzm-l#x!PqVe$S_O{C$=anAfuo?3|$1#*`apLs~$QWaxAJ#<@LjtjynpT9U>L zA-L$5#l}%CXK^=#X{gR0y()pe3O?$LJ5O<<8kRkM`XLoZqb7r~L^PTfmf^QqC`*G1 zOp15P-tKnab#NvX&)iLQV`_Ih8XSbk@{)k@&){k;V6i%ACndr|64_26;~VxOV(eoy zF>g3)zRwzC(fOmZ6d#D32wAOc zen`c5Ch>Qdr=BigI# zTjJ)A%XT?QfT(65Iyy)>)yo3&df6Vel^OB|Y697fYuKrQ0c}ikkb;5)?V1VeUji#HNh4mJHTW*fX@C0>I?*x#uAV?s*3ml<3qd|1r!^+1RYdY9B{m zdlg*_)3poKqhYaB9$mgPk9eCt`XY&saDR@v%j0%$`zM#8^T3*+ctZSeJ&jI7U@Tl~$LHazp-&&^5RBd=q%mIJ zycS>2l)TlICS`&ZePAzXLE+7XzDg)IN2;q~4pDg}-go1k()+77fK<~#m6Gq5LNqN9nwY8=2iBq%hKY;k>RN#8YpHr>0!&(XZDUkyLODL8K zK5K*^EEMI(m!V$N0I#9s;hys@4vqV$p9Z)_kj?stH(Q}m2`#swNCdIC*;dGS+2C-i zK}rA&G(g&B4=q4N$a(p4eog67L(Jxk_X&emYyM&Yp`cdjBrTs>w`64Xufe+2Ud&Qj z+FMFISl?%yr0J*ny_Dv?%Q`*ccar$zn!8gg9+LY-0>gNfOcC06z?$$Y-yS$wVp38~ zVC%Ssc)=GBHYRXCs)c_^(Cqx^@j;xPo<18b)^r$^VWu-36J^KxYlX8PzK+)`R+5@m z?y9LC&B`mK?^+dRoz09Ov#uzGRB^m)3BMW$C%8c#;Is{}(D{(wUu0ne-Fnb;8Op){ z4U%XtB5?7{a!rkm9neCE6830^=a5=;b0n`0+WWc=?$b4B>PFiG+G;L$XM$#5<*wsi z<>ajcaKHDnMg?v^E@ABldyFdp$`w!>$IOPRNp!LCemhoGD@|Oq*BujqJ_dp0A{2UG z{3u2MX`rT#|9nm5P7`QbruFad@5sk_fn9}WP%H~71cU5_nl91oOwFa84vH@7dV-ZHLNX zPSs{dYie%ZY#ZK701^w(+zd2KYr=^v@!5U^z02t>*MK-qhT`}0fha$}2Anc2m;_XT z1I^e#Gj5A;#ULh>fBh?T>Rc)@WpOWSzPSG7MRO1C8s%dGOxeWh;8XlWv0pUbiva9+ z`L|xES{Y`H<0$5=ZBPE|t3U0qub-iO>gjDTH2&RILbA{LJ^oY&dZ@%|j~n-(8lRen zk0yhJ_rs65c3pQnpUct`AmS7WqtKc)PV>F;%AlV?yHAN>L!o^91s~srbL)2f(s{l$ zIvMw-;<@M_l6Sy46lA&fO-qXq(IoiqbGyIKQqA=&ZA@1Q2AYMH_=Qu5 z_$ip8t7N3AG2pGUT*=?q`Bj}oHErxC>|k{z7Uv=R`~pa{?lQ=+rg!@HwceHdae}R~Lz!_3pIP-yX#aLN4ekY$e&v+t?=s^T!fDhSC;mXl6!7uFo1E?tmxn~6CDh+M zkzn5;Ys1BO6=*%NiwOSY@+Q9()PPt`wqp_1)!BaOkBD=;tUKI-V=H9D+9kCB;JC{o z$2hODT$ACKb=NBHFA%#vK>zVxQl)kMrTw+}UA_(>b2BX39EqZ;@*xLqf zJd^HsUT`44%YMya8cpP)y5DKoA4qP!1g57};#m4Cpe3VMdfa@=CZ4fmSZSumANqdW zDYmxc)##U|gvxt-H3re;-oqb%aAnxfK;x`kpOZo(^Sc;P;f~)X3nk+}tdtBt-GVK` z$VKzNwnz^ll2<<^jF+#sMfjz@iQ{r_bF$v>F=<2WovYCB77qLM0mbx&jm zYs)x@$l8s06PA|?sog)Il@kQ00k0=9*J9@b3GW~Slew-!ZVEJ+Qv8@PN z`4;1LgZy@7@*0o6b;dLHeC(Ey6M5VCj`M#@rOFT_#MJY2RoHmVZ~QafD`FD$ecX*q zrn5d9qs-tYo8NNKecN*3@$6zc`1K*6({h)CGC0< zaK>gO=UIbH(tnzNHy1lJj-5B*nNJ?Xfa#9&N@=){p=nWG zSsqtuyrF{zG&%Z-VAW<^1=8t~YZ0k_(py5e_+DcZf?D6&23(k!uhAZ?$Wv(6)~XVH zOiXez-#_6AL7QKDTQ$%2!03VNvgaWFo>FwE%kmSc&F?>?CHyr$?(Hj7m$9Mu)2O+^ zzs@hm7Pr4SZzENMeZ&?j2k@(%$xhSDzFsOsX8g0>@{|$rvef3ThL3+&;mdd8TU{Z#_r) z4%k8qSA&X+h(l}L?etXCT%T%12Ps<2>8_N_4E0$&EvkB(ycUa}Bj$+fbat^k^8t4Q zkF&5Jx>}+4lCv~^f52R$pu{w;WNmJ>Nu+N3^N=a$_N`RTsc7NqH0a~Z>#f+{i@-N9 z#H-cW-i;D4^YBKyS)*72q3x$^0YdnK|4g(ZTh!dKCIfa=ZrXzlOEWOc06BHjf5-A+ zirG>X+YRU!gQgzQviFKBo4nh?W42kbbu||H8l_CFokXb_~PrsFJ* zDE>ixuRWKylmntzKVf*8sSqjej2i{{vW6q3<_ST2X(C~~uWxC|mFqu7M+&uZ+^iF? zM-E0m%eVg>QhGT{Z@ly=BGj4Nw8l1vyV_pGW7i*6C8z;0s&i)OqkQ}6Y2!!x zDZBTwwshM2yR_uwBslXFT=yQabY(O|YNlwf4VWHQ=xnpA{W5ji=6+Uw{g`y^^8l7_ zmVc&m&Fnqi$H(JbxM=0?!eV*G|uFls0XJGQ?`V` zjL2e*(2a$d_taw+>X;fiJU>73L!zDSMxYg>{X>CIqHnU3#D4gzwN>|Ev7B*sL_9Nj zq^3$@TsSYds83_ZYvM!Kjz0BbkUbTny4872=piZp3Fz9ePjY}mgVDg2D~UHD35Z)x z!ZgO#B%W=0pFHa+dNvI?$BdRS@(wN02JT^Ai7OPdr*a7Cuv`)iUq38lx>Af4GO%+> zG~DVl++p(C&)N#SllP1$(&x?e8zq5-K||&JsxKnqBpN&Y6&?O7)x|1{Kv=W=*v#u&@rs$cZ6b>UOBBBb~kMD`b-v;Pff z)VGvs_)Ei;WFhup{UyVA)GYTbSOm$)S%$DmH6A z%OK^qhuy3Qn*i;_gP@E81CJqqQY5wxx3%T5TdFWTrT#x8Aq>oe7T)sw`EyjM)z#U- z<>xOSeOft2NC_UqQXNJlgAV@}^r=BpiYTia~*#GJY4yphq4=DqdF(1Z@ zTE*&cAV6}lu-pczqx!cm&ty5sMNo-5>cShvgP~LeKhPXJEMf)d z9~K45RsqG@z{F)0t7tVF+yyNKZCCsK+fQM+ zsg62^ft|*=%v=ne8REwS+jcm#Mgu)MFn&-)vfzBpj1$}#Ur_hHxF!_CQRi>?Ja0HA z?GB>8%lyx4@Jt+IO~*CO6#r}64}#M2j4Jbt%D$HD{wmp>bycW#UkEU{3{@HUdclo3 zI7&7}Wq-(W%KZ;KLMqf>WNQUEXI$lGTxI{#X0zUAvu7^CXKui^WUegC;Tu$+2opeO z0KxD$GtGOzh^8t=eH7Sux~Nz+%eb$V-GFy{{0Mkfqx%? z)SV-yF&&R62!+>Im5Wyb4d>7{@l1Q^vHWLL>HU1CxI@l+CKgO+|h(5`x8BoOq1@v#qq zjGf^9FZSJa1Md^+QO5m=w$W5oz0X?&iXqyOm#LE%U-xT9Wiz3VB^jG`Oc5SD12#7DNqhnV zLxbHQez+faqLME9WH2x=HF2+knJo*v_2}q9L+pmj^LV5fhoCR?7v@#clzPaNyCuU5#n|2G(dRV_0$9yL@hoLo;8ZwMJJao5^BY%@w2g>cRDO zxo96A2PSj(?u)-*YVYrp*k9|Cfs^zO97dCTi{?O^eFHX~tnTV-w3QaI0Lvv2kqX804n9j$fBw*d^EANZ+_(4F9=--&q$VyzxMoxBEH}o{aWY&- zbWf0pfguMNxyxXU|6l;hG)zn`_`%SIOTJI0LLVUb%tcwmceF(Dqa7%Lc7YU3y`X># zz(Z+vap*JgP|6PM3TlH|uF+uDRXiJ%qUipP#TQ%$Xr~fPr#Ohh-v~>x;$Z{^`6aVJ zmW9KETkOh)&5hmRp>T5`1?!bqYr(@FVxY+iyb8abn0;EW8bwta(BSpj21j*f@=81b45s1!k$;9(M^>Z)`j|Jw1) z%&-j`E~G@ktARWiU#%+^4}7S!Bpc5U9=23_Y?*4iFaZg*Het7fCTY++1kumn+wFaF z^Ugv02S3?4hyj74wL0@zP-5u5l3swu5{B)q_|k-czPyzwG8MmJ`Q=U`pc+?0< zDTr+yz6SQ7Lxu@v2NF<_5OX`*%G2V{(@Bh|7FDcV^VwuvCGL4xwp9fABRZpxkW;y!JkvQe9yBL|LPH7P!HlZHq5?OIg@#B?hxH)3V zBgzwdBRHjs;TQ;1;yR5cfj?z127Zlom;{n#!1snMQXw6iurwQYPD1CU{Q}etn1;)v z))d)+8#gq>n!McU#67FGG|(mJ{()SJ^|k1Q%6I~?&JIL9W_oT)qwx-eo|aXIqK;|> zpPKgwJkidY33OO`dU`Rp8VMDj9Ep>F=SL$U zct8A3I<~=<2!~rQy8~~CtF)}{Zn_Vh~6U^i>pT>lMwBC1 zzKUvNmrOH`?M*V~cDNf;qVM|SeAY1)d}y&`O(ygEQ++h}PUNASXMnw{30a!F+5W=$ zY<6_CXy7omybQ24O{iAtbH_6Q&T|sZu)}GyP+$f)!p6<7p5q+TKTkv$I=I_&Qwkw} z7K0=yEfGywFczeO{VY~a=q19eAzXF^@+4`_xX875?03hNz!ZW7Mk9Ii zwA}WQ_GtLy$+L%k?b~czFopg7yXhpskz2-7TM!g2gcBLu!*xi`z{Z15ykjO@*M8!m z!HE~%yR7w? zEQb|W2@azv9?zHW|3h`s%^Q=ZI;jI=5sDr|8HRq3Oq`fABQH|b>V+(DCGbo6$PYa>JJpj*XjXhu=#7e=Fu!cce$ z;h0H(DVf6v-U;IeOge8FI%vPgkZF!6+jfd#lvGVTl>O} z5$>I#$E(bx;&89CJvWOd^JbJzs)Lms(E5m&{tQyPzUBw}1tF6l)OX%%~pFpTECZ*T(%aSBa{ zY=#3psY49v0f4Z(PVd;nNGgYR#K-bPR3%DK2PmQe<*Xa6ZE4Wx9(?qmVu}#S8I)kq zaD9nsn=2YT)-D=aLv", + "errors": "replace", + "is_local": false, + "model_max_length": 40960, + "pad_token": "<|vision_pad|>", + "padding_side": "left", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null, + "added_tokens_decoder": { + "151643": { + "content": "<|endoftext|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151644": { + "content": "<|im_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151645": { + "content": "<|im_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151646": { + "content": "<|object_ref_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151647": { + "content": "<|object_ref_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151648": { + "content": "<|box_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151649": { + "content": "<|box_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151650": { + "content": "<|quad_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151651": { + "content": "<|quad_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151652": { + "content": "<|vision_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151653": { + "content": "<|vision_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151654": { + "content": "<|vision_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151655": { + "content": "<|image_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151656": { + "content": "<|video_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151657": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151658": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151659": { + "content": "<|fim_prefix|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151660": { + "content": "<|fim_middle|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151661": { + "content": "<|fim_suffix|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151662": { + "content": "<|fim_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151663": { + "content": "<|repo_name|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151664": { + "content": "<|file_sep|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151665": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151666": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151667": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151668": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + } + }, + "chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\\n\\n' }}\n {%- endif %}\n {{- \"# 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\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\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\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0].content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for forward_message in messages %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- set message = messages[index] %}\n {%- set tool_start = '' %}\n {%- set tool_start_length = tool_start|length %}\n {%- set start_of_message = message.content[:tool_start_length] %}\n {%- set tool_end = '' %}\n {%- set tool_end_length = tool_end|length %}\n {%- set start_pos = (message.content|length) - tool_end_length %}\n {%- if start_pos < 0 %}\n {%- set start_pos = 0 %}\n {%- endif %}\n {%- set end_of_message = message.content[start_pos:] %}\n {%- if ns.multi_step_tool and message.role == \"user\" and not(start_of_message == tool_start and end_of_message == tool_end) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set content = message.content %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is defined and message.reasoning_content is not none %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '' in message.content %}\n {%- set content = (message.content.split('')|last).lstrip('\\n') %}\n {%- set reasoning_content = (message.content.split('')|first).rstrip('\\n') %}\n {%- set reasoning_content = (reasoning_content.split('')|last).lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- if loop.index0 > ns.last_query_index %}\n {%- if loop.last or (not loop.last and reasoning_content) %}\n {{- '<|im_start|>' + message.role + '\\n\\n' + reasoning_content.strip('\\n') + '\\n\\n\\n' + content.lstrip('\\n') }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n\\n' }}\n {{- message.content }}\n {{- '\\n' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is false %}\n {{- '\\n\\n\\n\\n' }}\n {%- endif %}\n{%- endif %}" +} \ No newline at end of file diff --git a/training_summary.json b/training_summary.json new file mode 100644 index 0000000..4ee47c2 --- /dev/null +++ b/training_summary.json @@ -0,0 +1,48 @@ +{ + "experiment_metadata": { + "timestamp": "2026-08-04T15:02:09.008585+00:00", + "pretrained_model_name_or_path": "unsloth/Qwen3-4B-unsloth-bnb-4bit", + "data_dir": "nityaak/stance-matrix-semeval-ezstance", + "push_to_hub_id": "nityaak/qwen3-4b-stance-matrix-semeval-ezstance-qlora" + }, + "configuration": { + "load_in_4bit": true, + "from_foundation_model": false, + "learning_rate": 2e-05, + "num_train_epochs": 1.0, + "per_device_train_batch_size": 8, + "gradient_accumulation_steps": 2, + "effective_batch_size": 16, + "weight_decay": 0.01, + "warmup_ratio": 0.1, + "optim": "adamw_8bit", + "max_length": 512, + "packing": true, + "completion_only_loss": true + }, + "training_stats": { + "train_runtime": 1455.2141, + "train_samples_per_second": 2.138, + "train_steps_per_second": 0.134, + "total_flos": 3.150013564629504e+16, + "train_loss": 0.3140979198309091, + "epoch": 1.0 + }, + "gpu_stats": { + "gpu_id": 0, + "gpu_name": "NVIDIA A100-SXM4-40GB", + "memory_used_mb": 14682.0, + "memory_total_mb": 40626.8, + "memory_utilization_percent": 36.14, + "runtime_seconds": 1455.2 + }, + "weight_verification": { + "all_changed": true, + "unchanged_params": [] + }, + "carbon_tracking": { + "enabled": true, + "log_dir": "carbontracker", + "note": "See carbontracker/ in this repo for actual consumption (time, energy, CO2eq)." + } +} \ No newline at end of file