NTA2 commited on
Commit
76d2cf3
·
verified ·
1 Parent(s): abc7085

Upload T4-optimized QLoRA adapter (v5 dataset, r=128)

Browse files
Files changed (5) hide show
  1. README.md +12 -10
  2. adapter_config.json +6 -18
  3. adapter_model.safetensors +2 -2
  4. chat_template.jinja +86 -0
  5. merges.txt +0 -0
README.md CHANGED
@@ -1,7 +1,7 @@
1
  ---
2
  base_model: Qwen/Qwen3-4B-Instruct-2507
3
  datasets:
4
- - u-10bei/structured_data_with_cot_dataset_512_v2
5
  language:
6
  - en
7
  license: apache-2.0
@@ -13,7 +13,7 @@ tags:
13
  - structured-output
14
  ---
15
 
16
- qwen3-4b-structured-output-lora_default>
17
 
18
  This repository provides a **LoRA adapter** fine-tuned from
19
  **Qwen/Qwen3-4B-Instruct-2507** using **QLoRA (4-bit, Unsloth)**.
@@ -31,12 +31,14 @@ while intermediate reasoning (Chain-of-Thought) is masked.
31
 
32
  ## Training Configuration
33
 
34
- - Base model: Qwen/Qwen3-4B-Instruct-2507
35
- - Method: QLoRA (4-bit)
36
- - Max sequence length: 512
37
- - Epochs: 1
38
- - Learning rate: 1e-06
39
- - LoRA: r=64, alpha=128
 
 
40
 
41
  ## Usage
42
 
@@ -46,7 +48,7 @@ from peft import PeftModel
46
  import torch
47
 
48
  base = "Qwen/Qwen3-4B-Instruct-2507"
49
- adapter = "your_id/your-repo"
50
 
51
  tokenizer = AutoTokenizer.from_pretrained(base)
52
  model = AutoModelForCausalLM.from_pretrained(
@@ -59,7 +61,7 @@ model = PeftModel.from_pretrained(model, adapter)
59
 
60
  ## Sources & Terms (IMPORTANT)
61
 
62
- Training data: u-10bei/structured_data_with_cot_dataset_512_v2
63
 
64
  Dataset License: MIT License. This dataset is used and distributed under the terms of the MIT License.
65
  Compliance: Users must comply with the MIT license (including copyright notice) and the base model's original terms of use.
 
1
  ---
2
  base_model: Qwen/Qwen3-4B-Instruct-2507
3
  datasets:
4
+ - u-10bei/structured_data_with_cot_dataset_512_v5
5
  language:
6
  - en
7
  license: apache-2.0
 
13
  - structured-output
14
  ---
15
 
16
+ # qwen3-4b-structured-output-lora (T4 Optimized)
17
 
18
  This repository provides a **LoRA adapter** fine-tuned from
19
  **Qwen/Qwen3-4B-Instruct-2507** using **QLoRA (4-bit, Unsloth)**.
 
31
 
32
  ## Training Configuration
33
 
34
+ - **Base Model:** Qwen/Qwen3-4B-Instruct-2507
35
+ - **Dataset:** u-10bei/structured_data_with_cot_dataset_512_v5
36
+ - **Method:** QLoRA (4-bit)
37
+ - **Max Sequence Length:** 1024
38
+ - **Epochs:** 2
39
+ - **Learning Rate:** 2e-4
40
+ - **LoRA Config:** r=128, alpha=256
41
+ - **Hardware:** Optimized for T4 GPU (Batch Size=1, Grad Accum=16)
42
 
43
  ## Usage
44
 
 
48
  import torch
49
 
50
  base = "Qwen/Qwen3-4B-Instruct-2507"
51
+ adapter = "your_id/qwen3-4b-structured-lora"
52
 
53
  tokenizer = AutoTokenizer.from_pretrained(base)
54
  model = AutoModelForCausalLM.from_pretrained(
 
61
 
62
  ## Sources & Terms (IMPORTANT)
63
 
64
+ Training data: u-10bei/structured_data_with_cot_dataset_512_v5
65
 
66
  Dataset License: MIT License. This dataset is used and distributed under the terms of the MIT License.
67
  Compliance: Users must comply with the MIT license (including copyright notice) and the base model's original terms of use.
adapter_config.json CHANGED
@@ -1,7 +1,5 @@
1
  {
2
- "alora_invocation_tokens": null,
3
  "alpha_pattern": {},
4
- "arrow_config": null,
5
  "auto_mapping": {
6
  "base_model_class": "Qwen3ForCausalLM",
7
  "parent_library": "transformers.models.qwen3.modeling_qwen3",
@@ -9,10 +7,6 @@
9
  },
10
  "base_model_name_or_path": "unsloth/qwen3-4b-instruct-2507-unsloth-bnb-4bit",
11
  "bias": "none",
12
- "corda_config": null,
13
- "ensure_weight_tying": false,
14
- "eva_config": null,
15
- "exclude_modules": null,
16
  "fan_in_fan_out": false,
17
  "inference_mode": true,
18
  "init_lora_weights": true,
@@ -20,31 +14,25 @@
20
  "layers_pattern": null,
21
  "layers_to_transform": null,
22
  "loftq_config": {},
23
- "lora_alpha": 128,
24
- "lora_bias": false,
25
  "lora_dropout": 0.0,
26
  "megatron_config": null,
27
  "megatron_core": "megatron.core",
28
  "modules_to_save": null,
29
  "peft_type": "LORA",
30
- "peft_version": "0.18.1",
31
- "qalora_group_size": 16,
32
- "r": 64,
33
  "rank_pattern": {},
34
  "revision": null,
35
  "target_modules": [
 
36
  "down_proj",
37
- "gate_proj",
38
- "v_proj",
39
  "o_proj",
40
  "k_proj",
41
- "up_proj",
42
- "q_proj"
 
43
  ],
44
- "target_parameters": null,
45
  "task_type": "CAUSAL_LM",
46
- "trainable_token_indices": null,
47
  "use_dora": false,
48
- "use_qalora": false,
49
  "use_rslora": false
50
  }
 
1
  {
 
2
  "alpha_pattern": {},
 
3
  "auto_mapping": {
4
  "base_model_class": "Qwen3ForCausalLM",
5
  "parent_library": "transformers.models.qwen3.modeling_qwen3",
 
7
  },
8
  "base_model_name_or_path": "unsloth/qwen3-4b-instruct-2507-unsloth-bnb-4bit",
9
  "bias": "none",
 
 
 
 
10
  "fan_in_fan_out": false,
11
  "inference_mode": true,
12
  "init_lora_weights": true,
 
14
  "layers_pattern": null,
15
  "layers_to_transform": null,
16
  "loftq_config": {},
17
+ "lora_alpha": 256,
 
18
  "lora_dropout": 0.0,
19
  "megatron_config": null,
20
  "megatron_core": "megatron.core",
21
  "modules_to_save": null,
22
  "peft_type": "LORA",
23
+ "r": 128,
 
 
24
  "rank_pattern": {},
25
  "revision": null,
26
  "target_modules": [
27
+ "up_proj",
28
  "down_proj",
 
 
29
  "o_proj",
30
  "k_proj",
31
+ "gate_proj",
32
+ "q_proj",
33
+ "v_proj"
34
  ],
 
35
  "task_type": "CAUSAL_LM",
 
36
  "use_dora": false,
 
37
  "use_rslora": false
38
  }
adapter_model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:f76bca26ca1c854530b78e622b59f2c1bb2681e5507934552a085dadd89b28d1
3
- size 528550256
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:551c6a363c95464010196c8977fc5f63b309e8a3071c9a06a057f62d9f934b1a
3
+ size 1057033224
chat_template.jinja ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- if tools %}
2
+ {{- '<|im_start|>system\n' }}
3
+ {%- if messages[0].role == 'system' %}
4
+ {{- messages[0].content + '\n\n' }}
5
+ {%- endif %}
6
+ {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
7
+ {%- for tool in tools %}
8
+ {{- "\n" }}
9
+ {{- tool | tojson }}
10
+ {%- endfor %}
11
+ {{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
12
+ {%- else %}
13
+ {%- if messages[0].role == 'system' %}
14
+ {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }}
15
+ {%- endif %}
16
+ {%- endif %}
17
+ {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
18
+ {%- for message in messages[::-1] %}
19
+ {%- set index = (messages|length - 1) - loop.index0 %}
20
+ {%- if ns.multi_step_tool and message.role == "user" and message.content is string and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}
21
+ {%- set ns.multi_step_tool = false %}
22
+ {%- set ns.last_query_index = index %}
23
+ {%- endif %}
24
+ {%- endfor %}
25
+ {%- for message in messages %}
26
+ {%- if message.content is string %}
27
+ {%- set content = message.content %}
28
+ {%- else %}
29
+ {%- set content = '' %}
30
+ {%- endif %}
31
+ {%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
32
+ {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
33
+ {%- elif message.role == "assistant" %}
34
+ {%- set reasoning_content = '' %}
35
+ {%- if message.reasoning_content is string %}
36
+ {%- set reasoning_content = message.reasoning_content %}
37
+ {%- else %}
38
+ {%- if '</think>' in content %}
39
+ {%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
40
+ {%- set content = content.split('</think>')[-1].lstrip('\n') %}
41
+ {%- endif %}
42
+ {%- endif %}
43
+ {%- if loop.index0 > ns.last_query_index %}
44
+ {%- if loop.last or (not loop.last and reasoning_content) %}
45
+ {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\n\n' + content.lstrip('\n') }}
46
+ {%- else %}
47
+ {{- '<|im_start|>' + message.role + '\n' + content }}
48
+ {%- endif %}
49
+ {%- else %}
50
+ {{- '<|im_start|>' + message.role + '\n' + content }}
51
+ {%- endif %}
52
+ {%- if message.tool_calls %}
53
+ {%- for tool_call in message.tool_calls %}
54
+ {%- if (loop.first and content) or (not loop.first) %}
55
+ {{- '\n' }}
56
+ {%- endif %}
57
+ {%- if tool_call.function %}
58
+ {%- set tool_call = tool_call.function %}
59
+ {%- endif %}
60
+ {{- '<tool_call>\n{"name": "' }}
61
+ {{- tool_call.name }}
62
+ {{- '", "arguments": ' }}
63
+ {%- if tool_call.arguments is string %}
64
+ {{- tool_call.arguments }}
65
+ {%- else %}
66
+ {{- tool_call.arguments | tojson }}
67
+ {%- endif %}
68
+ {{- '}\n</tool_call>' }}
69
+ {%- endfor %}
70
+ {%- endif %}
71
+ {{- '<|im_end|>\n' }}
72
+ {%- elif message.role == "tool" %}
73
+ {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
74
+ {{- '<|im_start|>user' }}
75
+ {%- endif %}
76
+ {{- '\n<tool_response>\n' }}
77
+ {{- content }}
78
+ {{- '\n</tool_response>' }}
79
+ {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
80
+ {{- '<|im_end|>\n' }}
81
+ {%- endif %}
82
+ {%- endif %}
83
+ {%- endfor %}
84
+ {%- if add_generation_prompt %}
85
+ {{- '<|im_start|>assistant\n' }}
86
+ {%- endif %}
merges.txt ADDED
The diff for this file is too large to render. See raw diff