From ea81b75851c02f3c9e6f39ca48f2f9f8d504ce16 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Fri, 14 Aug 2026 03:17: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-1.7b-mtcsd-balanced-8430-stance-conversations-qlora Source: Original Platform --- .gitattributes | 36 +++ README.md | 21 ++ ...68938_2026-08-04T135950Z_carbontracker.log | 10 + ...8_2026-08-04T135950Z_carbontracker_err.log | 2 + ...026-08-04T135950Z_carbontracker_output.log | 17 ++ chat_template.jinja | 97 ++++++++ config.json | 64 +++++ generation_config.json | 13 + loss_curve.png | Bin 0 -> 23570 bytes model.safetensors | 3 + tokenizer.json | 3 + tokenizer_config.json | 226 ++++++++++++++++++ training_summary.json | 48 ++++ 13 files changed, 540 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker.log create mode 100644 carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker_err.log create mode 100644 carbontracker/2869759.368938_2026-08-04T135950Z_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.safetensors 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..7eceb26 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +--- +base_model: unsloth/Qwen3-1.7B-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-1.7B-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/2869759.368938_2026-08-04T135950Z_carbontracker.log b/carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker.log new file mode 100644 index 0000000..470a8b1 --- /dev/null +++ b/carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker.log @@ -0,0 +1,10 @@ +2026-08-04 13:59:50 - carbontracker version 2.4.5 +2026-08-04 13:59:50 - 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 13:59:50 - The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-04 13:59:50 - Monitoring thread started. +2026-08-04 14:17:12 - Epoch 1: +2026-08-04 14:17:12 - Duration: 0:14:46.23 +2026-08-04 14:17:12 - Average power usage (W) for gpu: 274.90146440677967 +2026-08-04 14:17:12 - Carbon intensities (gCO2eq/kWh) fetched every 900 s at detected location: Breda, North Brabant, NL: [253.31] +2026-08-04 14:17:12 - Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-04 14:17:12 - Monitoring thread ended. diff --git a/carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker_err.log b/carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker_err.log new file mode 100644 index 0000000..feb0ae8 --- /dev/null +++ b/carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker_err.log @@ -0,0 +1,2 @@ +2026-08-04 13:59:50,467 - MainThread - WARNING - No API keys provided. Skipping intensity provider initialization. +2026-08-04 13:59:50,719 - MainThread - WARNING - No carbon intensity provider specified. Using average carbon intensity for NL: 253.31 gCO2eq/kWh. diff --git a/carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker_output.log b/carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker_output.log new file mode 100644 index 0000000..843593b --- /dev/null +++ b/carbontracker/2869759.368938_2026-08-04T135950Z_carbontracker_output.log @@ -0,0 +1,17 @@ +2026-08-04 13:59:50 - CarbonTracker: The following components were found: GPU with device(s) NVIDIA A100-SXM4-40GB. +2026-08-04 14:17:12 - CarbonTracker: +Predicted consumption for 1 epoch(s): + Time: 0:14:46 + Energy: 0.106924991532 kWh + CO2eq: 27.085332131056 g + This is equivalent to: + 0.253607978755 km travelled by car +2026-08-04 14:17:12 - CarbonTracker: Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-04 14:17:12 - CarbonTracker: +Actual consumption for 1 epoch(s): + Time: 0:14:46 + Energy: 0.106924991532 kWh + CO2eq: 27.085332131056 g + This is equivalent to: + 0.253607978755 km travelled by car +2026-08-04 14:17:12 - 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..90c7581 --- /dev/null +++ b/config.json @@ -0,0 +1,64 @@ +{ + "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": 2048, + "initializer_range": 0.02, + "intermediate_size": 6144, + "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" + ], + "max_position_embeddings": 40960, + "max_window_layers": 28, + "model_type": "qwen3", + "num_attention_heads": 16, + "num_hidden_layers": 28, + "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..91820128a75f4206cd3b19de41b0bd17fb5de129 GIT binary patch literal 23570 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�tG-lqo0;rr*;6wndHQwO-iGaUhu=-0&@ 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 literal 0 HcmV?d00001 diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..7711602 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b76cd5e8a1183789e682373a42e3d0b45f139161a04448c6a03517cdd0bf927 +size 3441185608 diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..10c92fa --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:476870a1f2fb6f6a2759a6ede2383bf9d5d738f17844563b65c91965b722ae09 +size 11422924 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..6d3380f --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,226 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "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..8d84bf8 --- /dev/null +++ b/training_summary.json @@ -0,0 +1,48 @@ +{ + "experiment_metadata": { + "timestamp": "2026-08-04T12:17:13.350047+00:00", + "pretrained_model_name_or_path": "unsloth/Qwen3-1.7B-unsloth-bnb-4bit", + "data_dir": "nityaak/mtcsd-balanced-8430-stance-conversations", + "push_to_hub_id": "nityaak/qwen3-1.7b-mtcsd-balanced-8430-stance-conversations-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": 886.2428, + "train_samples_per_second": 5.163, + "train_steps_per_second": 0.323, + "total_flos": 1.7806644944234496e+16, + "train_loss": 0.2831281659069595, + "epoch": 1.0 + }, + "gpu_stats": { + "gpu_id": 0, + "gpu_name": "NVIDIA A100-SXM4-40GB", + "memory_used_mb": 6858.0, + "memory_total_mb": 40626.8, + "memory_utilization_percent": 16.88, + "runtime_seconds": 886.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