From 1a4b35a5f28d4b690efb4c2392347b445b14455e Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Sat, 22 Aug 2026 01:35: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-ezstance-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 -> 24576 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/2869758.368938_2026-08-04T135950Z_carbontracker.log create mode 100644 carbontracker/2869758.368938_2026-08-04T135950Z_carbontracker_err.log create mode 100644 carbontracker/2869758.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/2869758.368938_2026-08-04T135950Z_carbontracker.log b/carbontracker/2869758.368938_2026-08-04T135950Z_carbontracker.log new file mode 100644 index 0000000..9989dbf --- /dev/null +++ b/carbontracker/2869758.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:16:50 - Epoch 1: +2026-08-04 14:16:50 - Duration: 0:14:24.60 +2026-08-04 14:16:50 - Average power usage (W) for gpu: 266.5977786790267 +2026-08-04 14:16:50 - Carbon intensities (gCO2eq/kWh) fetched every 900 s at detected location: Breda, North Brabant, NL: [253.31] +2026-08-04 14:16:50 - Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-04 14:16:50 - Monitoring thread ended. diff --git a/carbontracker/2869758.368938_2026-08-04T135950Z_carbontracker_err.log b/carbontracker/2869758.368938_2026-08-04T135950Z_carbontracker_err.log new file mode 100644 index 0000000..feb0ae8 --- /dev/null +++ b/carbontracker/2869758.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/2869758.368938_2026-08-04T135950Z_carbontracker_output.log b/carbontracker/2869758.368938_2026-08-04T135950Z_carbontracker_output.log new file mode 100644 index 0000000..f4aebf3 --- /dev/null +++ b/carbontracker/2869758.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:16:50 - CarbonTracker: +Predicted consumption for 1 epoch(s): + Time: 0:14:25 + Energy: 0.101163994262 kWh + CO2eq: 25.626005155759 g + This is equivalent to: + 0.239943868500 km travelled by car +2026-08-04 14:16:50 - CarbonTracker: Average carbon intensity during training was 253.31 gCO2eq/kWh. +2026-08-04 14:16:50 - CarbonTracker: +Actual consumption for 1 epoch(s): + Time: 0:14:25 + Energy: 0.101163994262 kWh + CO2eq: 25.626005155759 g + This is equivalent to: + 0.239943868500 km travelled by car +2026-08-04 14:16:50 - 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..95b66144d7242546c54633678230503ea549288c GIT binary patch literal 24576 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%0DuVgx`K2)^>i@ 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", + "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..4b3d70f --- /dev/null +++ b/training_summary.json @@ -0,0 +1,48 @@ +{ + "experiment_metadata": { + "timestamp": "2026-08-04T12:16:51.348738+00:00", + "pretrained_model_name_or_path": "unsloth/Qwen3-1.7B-unsloth-bnb-4bit", + "data_dir": "nityaak/ezstance-balanced-8430-stance-conversations", + "push_to_hub_id": "nityaak/qwen3-1.7b-ezstance-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": 864.6162, + "train_samples_per_second": 6.935, + "train_steps_per_second": 0.434, + "total_flos": 1.959812290816819e+16, + "train_loss": 0.26007633431752525, + "epoch": 1.0 + }, + "gpu_stats": { + "gpu_id": 0, + "gpu_name": "NVIDIA A100-SXM4-40GB", + "memory_used_mb": 7158.0, + "memory_total_mb": 40626.8, + "memory_utilization_percent": 17.62, + "runtime_seconds": 864.6 + }, + "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