From b83e614f1f6140dc766979178189b632d7b23049 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Sun, 6 Sep 2026 21:50:19 +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-mtcsd-ezstance-qlora Source: Original Platform --- .gitattributes | 36 ++ README.md | 21 + ...68938_2026-08-03T142719Z_carbontracker.log | 10 + ...8_2026-08-03T142719Z_carbontracker_err.log | 2 + ...026-08-03T142719Z_carbontracker_output.log | 17 + ...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-04T163503Z_carbontracker.log | 10 + ...8_2026-08-04T163503Z_carbontracker_err.log | 2 + ...026-08-04T163503Z_carbontracker_output.log | 17 + chat_template.jinja | 97 +++++ config.json | 72 ++++ generation_config.json | 13 + loss_curve.png | Bin 0 -> 19889 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/1709627.368938_2026-08-03T142719Z_carbontracker.log create mode 100644 carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker_err.log create mode 100644 carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker_output.log create mode 100644 carbontracker/3557756.368938_2026-08-10T122755Z_carbontracker.log create mode 100644 carbontracker/3557756.368938_2026-08-10T122755Z_carbontracker_err.log create mode 100644 carbontracker/3557756.368938_2026-08-10T122755Z_carbontracker_output.log create mode 100644 carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker.log create mode 100644 carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker_err.log create mode 100644 carbontracker/4176897.368938_2026-08-04T163503Z_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/1709627.368938_2026-08-03T142719Z_carbontracker.log b/carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker.log new file mode 100644 index 0000000..fd6d68b --- /dev/null +++ b/carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker.log @@ -0,0 +1,10 @@ +2026-08-03 14:27:19 - carbontracker version 2.4.5 +2026-08-03 14:27:19 - 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:19 - The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-03 14:27:19 - Monitoring thread started. +2026-08-03 14:40:22 - Epoch 1: +2026-08-03 14:40:22 - Duration: 0:10:30.56 +2026-08-03 14:40:22 - Average power usage (W) for gpu: 266.11330634920637 +2026-08-03 14:40:22 - Carbon intensities (gCO2eq/kWh) fetched every 900 s at detected location: Breda, North Brabant, NL: [253.31] +2026-08-03 14:40:22 - Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-03 14:40:22 - Monitoring thread ended. diff --git a/carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker_err.log b/carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker_err.log new file mode 100644 index 0000000..92c1af0 --- /dev/null +++ b/carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker_err.log @@ -0,0 +1,2 @@ +2026-08-03 14:27:19,336 - MainThread - WARNING - No API keys provided. Skipping intensity provider initialization. +2026-08-03 14:27:19,473 - MainThread - WARNING - No carbon intensity provider specified. Using average carbon intensity for NL: 253.31 gCO2eq/kWh. diff --git a/carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker_output.log b/carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker_output.log new file mode 100644 index 0000000..a93adf4 --- /dev/null +++ b/carbontracker/1709627.368938_2026-08-03T142719Z_carbontracker_output.log @@ -0,0 +1,17 @@ +2026-08-03 14:27:19 - CarbonTracker: The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-03 14:40:22 - CarbonTracker: +Predicted consumption for 1 epoch(s): + Time: 0:10:31 + Energy: 0.073645651623 kWh + CO2eq: 18.655291954129 g + This is equivalent to: + 0.174675018297 km travelled by car +2026-08-03 14:40:22 - CarbonTracker: Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-03 14:40:22 - CarbonTracker: +Actual consumption for 1 epoch(s): + Time: 0:10:31 + Energy: 0.073645651623 kWh + CO2eq: 18.655291954129 g + This is equivalent to: + 0.174675018297 km travelled by car +2026-08-03 14:40:22 - CarbonTracker: Finished monitoring. diff --git a/carbontracker/3557756.368938_2026-08-10T122755Z_carbontracker.log b/carbontracker/3557756.368938_2026-08-10T122755Z_carbontracker.log new file mode 100644 index 0000000..0f2c628 --- /dev/null +++ b/carbontracker/3557756.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:55:21 - Epoch 1: +2026-08-10 12:55:21 - Duration: 0:24:51.82 +2026-08-10 12:55:21 - Average power usage (W) for gpu: 284.91679919408995 +2026-08-10 12:55:21 - Carbon intensities (gCO2eq/kWh) fetched every 900 s at detected location: Breda, North Brabant, NL: [253.31] +2026-08-10 12:55:21 - Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-10 12:55:21 - Monitoring thread ended. diff --git a/carbontracker/3557756.368938_2026-08-10T122755Z_carbontracker_err.log b/carbontracker/3557756.368938_2026-08-10T122755Z_carbontracker_err.log new file mode 100644 index 0000000..ca12568 --- /dev/null +++ b/carbontracker/3557756.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,742 - MainThread - WARNING - No carbon intensity provider specified. Using average carbon intensity for NL: 253.31 gCO2eq/kWh. diff --git a/carbontracker/3557756.368938_2026-08-10T122755Z_carbontracker_output.log b/carbontracker/3557756.368938_2026-08-10T122755Z_carbontracker_output.log new file mode 100644 index 0000000..54cd402 --- /dev/null +++ b/carbontracker/3557756.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:55:21 - CarbonTracker: +Predicted consumption for 1 epoch(s): + Time: 0:24:52 + Energy: 0.186547207570 kWh + CO2eq: 47.254556701187 g + This is equivalent to: + 0.442458396079 km travelled by car +2026-08-10 12:55:21 - CarbonTracker: Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-10 12:55:21 - CarbonTracker: +Actual consumption for 1 epoch(s): + Time: 0:24:52 + Energy: 0.186547207570 kWh + CO2eq: 47.254556701187 g + This is equivalent to: + 0.442458396079 km travelled by car +2026-08-10 12:55:21 - CarbonTracker: Finished monitoring. diff --git a/carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker.log b/carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker.log new file mode 100644 index 0000000..70ff18b --- /dev/null +++ b/carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker.log @@ -0,0 +1,10 @@ +2026-08-04 16:35:03 - carbontracker version 2.4.5 +2026-08-04 16:35:03 - 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:03 - The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-04 16:35:03 - Monitoring thread started. +2026-08-04 17:02:32 - Epoch 1: +2026-08-04 17:02:32 - Duration: 0:24:53.19 +2026-08-04 17:02:32 - Average power usage (W) for gpu: 286.44832953020136 +2026-08-04 17:02:32 - Carbon intensities (gCO2eq/kWh) fetched every 900 s at detected location: Breda, North Brabant, NL: [253.31] +2026-08-04 17:02:32 - Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-04 17:02:32 - Monitoring thread ended. diff --git a/carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker_err.log b/carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker_err.log new file mode 100644 index 0000000..e41fe1f --- /dev/null +++ b/carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker_err.log @@ -0,0 +1,2 @@ +2026-08-04 16:35:03,122 - MainThread - WARNING - No API keys provided. Skipping intensity provider initialization. +2026-08-04 16:35:03,257 - MainThread - WARNING - No carbon intensity provider specified. Using average carbon intensity for NL: 253.31 gCO2eq/kWh. diff --git a/carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker_output.log b/carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker_output.log new file mode 100644 index 0000000..338d8a9 --- /dev/null +++ b/carbontracker/4176897.368938_2026-08-04T163503Z_carbontracker_output.log @@ -0,0 +1,17 @@ +2026-08-04 16:35:03 - CarbonTracker: The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-04 17:02:32 - CarbonTracker: +Predicted consumption for 1 epoch(s): + Time: 0:24:53 + Energy: 0.187722261106 kWh + CO2eq: 47.552211298533 g + This is equivalent to: + 0.445245424144 km travelled by car +2026-08-04 17:02:32 - CarbonTracker: Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-04 17:02:32 - CarbonTracker: +Actual consumption for 1 epoch(s): + Time: 0:24:53 + Energy: 0.187722261106 kWh + CO2eq: 47.552211298533 g + This is equivalent to: + 0.445245424144 km travelled by car +2026-08-04 17:02:32 - 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..5289a7ef6ffba3112205d06aa8d22b89bfe579f2 GIT binary patch literal 19889 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 yB8x0&*%s_+RH}mPo", + "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..fc0314e --- /dev/null +++ b/training_summary.json @@ -0,0 +1,48 @@ +{ + "experiment_metadata": { + "timestamp": "2026-08-04T15:02:33.496432+00:00", + "pretrained_model_name_or_path": "unsloth/Qwen3-4B-unsloth-bnb-4bit", + "data_dir": "nityaak/stance-matrix-mtcsd-ezstance", + "push_to_hub_id": "nityaak/qwen3-4b-stance-matrix-mtcsd-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": 1493.2053, + "train_samples_per_second": 2.08, + "train_steps_per_second": 0.131, + "total_flos": 3.194777643575808e+16, + "train_loss": 0.32319403871511804, + "epoch": 1.0 + }, + "gpu_stats": { + "gpu_id": 0, + "gpu_name": "NVIDIA A100-SXM4-40GB", + "memory_used_mb": 14822.0, + "memory_total_mb": 40626.8, + "memory_utilization_percent": 36.48, + "runtime_seconds": 1493.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