Mani124124 commited on
Commit
c8a5bb5
·
verified ·
1 Parent(s): b862633

Upload folder using huggingface_hub

Browse files
Files changed (3) hide show
  1. README.md +45 -14
  2. adapter_config.json +4 -4
  3. chat_template.jinja +26 -1
README.md CHANGED
@@ -1,37 +1,68 @@
1
- LoRA adapter Repo ID: Mani124124/structeval-lora
2
- Base model ID used for training: unsloth/Qwen3-4B-Instruct-2507
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
- This repository provides a LoRA adapter fine-tuned from unsloth/Qwen3-4B-Instruct-2507.
5
 
6
- This repository contains LoRA adapter weights only. The base model must be loaded separately.
 
 
 
 
7
 
8
  ## Training Objective
9
- This adapter is trained to improve structured output accuracy (JSON / YAML / XML / TOML / CSV).
 
 
 
 
 
10
 
11
  ## Training Configuration
12
- Base model: unsloth/Qwen3-4B-Instruct-2507
13
- Method: LoRA (PEFT)
14
- Max sequence length: 256
15
- Epochs: 1
16
- Learning rate: 5e-05
17
- LoRA: r=16, alpha=32
 
18
 
19
  ## Usage
 
 
20
  from transformers import AutoModelForCausalLM, AutoTokenizer
21
  from peft import PeftModel
22
  import torch
23
 
24
  base = "unsloth/Qwen3-4B-Instruct-2507"
25
- adapter = "Mani124124/structeval-lora"
26
 
27
- tokenizer = AutoTokenizer.from_pretrained(base, trust_remote_code=True)
28
  model = AutoModelForCausalLM.from_pretrained(
29
  base,
30
  torch_dtype=torch.float16,
31
  device_map="auto",
32
- trust_remote_code=True,
33
  )
34
  model = PeftModel.from_pretrained(model, adapter)
 
35
 
36
  ## Sources & Terms (IMPORTANT)
 
37
  Training data: u-10bei/structured_data_with_cot_dataset_512_v5
 
 
 
 
 
 
 
1
+ ---
2
+ base_model: unsloth/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
8
+ library_name: peft
9
+ pipeline_tag: text-generation
10
+ tags:
11
+ - base_model:adapter:unsloth/Qwen3-4B-Instruct-2507
12
+ - lora
13
+ - transformers
14
+ ---
15
 
16
+ <【課題】ここは自分で記入して下さい>
17
 
18
+ This repository provides a **LoRA adapter** fine-tuned from
19
+ **unsloth/Qwen3-4B-Instruct-2507** using **QLoRA (4-bit, Unsloth)**.
20
+
21
+ This repository contains **LoRA adapter weights only**.
22
+ The base model must be loaded separately.
23
 
24
  ## Training Objective
25
+
26
+ This adapter is trained to improve **structured output accuracy**
27
+ (JSON / YAML / XML / TOML / CSV).
28
+
29
+ Loss is applied only to the final assistant output,
30
+ while intermediate reasoning (Chain-of-Thought) is masked.
31
 
32
  ## Training Configuration
33
+
34
+ - Base model: unsloth/Qwen3-4B-Instruct-2507
35
+ - Method: QLoRA (4-bit)
36
+ - Max sequence length: 256
37
+ - Epochs: 1
38
+ - Learning rate: 5e-05
39
+ - LoRA: r=16, alpha=32
40
 
41
  ## Usage
42
+
43
+ ```python
44
  from transformers import AutoModelForCausalLM, AutoTokenizer
45
  from peft import PeftModel
46
  import torch
47
 
48
  base = "unsloth/Qwen3-4B-Instruct-2507"
49
+ adapter = "your_id/your-repo"
50
 
51
+ tokenizer = AutoTokenizer.from_pretrained(base)
52
  model = AutoModelForCausalLM.from_pretrained(
53
  base,
54
  torch_dtype=torch.float16,
55
  device_map="auto",
 
56
  )
57
  model = PeftModel.from_pretrained(model, adapter)
58
+ ```
59
 
60
  ## Sources & Terms (IMPORTANT)
61
+
62
  Training data: u-10bei/structured_data_with_cot_dataset_512_v5
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.
66
+ ### Framework versions
67
+
68
+ - PEFT 0.18.1
adapter_config.json CHANGED
@@ -29,13 +29,13 @@
29
  "rank_pattern": {},
30
  "revision": null,
31
  "target_modules": [
32
- "k_proj",
33
- "o_proj",
34
  "q_proj",
35
  "v_proj",
36
- "gate_proj",
37
  "up_proj",
38
- "down_proj"
 
 
 
39
  ],
40
  "target_parameters": null,
41
  "task_type": "CAUSAL_LM",
 
29
  "rank_pattern": {},
30
  "revision": null,
31
  "target_modules": [
 
 
32
  "q_proj",
33
  "v_proj",
 
34
  "up_proj",
35
+ "down_proj",
36
+ "gate_proj",
37
+ "o_proj",
38
+ "k_proj"
39
  ],
40
  "target_parameters": null,
41
  "task_type": "CAUSAL_LM",
chat_template.jinja CHANGED
@@ -14,6 +14,14 @@
14
  {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }}
15
  {%- endif %}
16
  {%- endif %}
 
 
 
 
 
 
 
 
17
  {%- for message in messages %}
18
  {%- if message.content is string %}
19
  {%- set content = message.content %}
@@ -23,7 +31,24 @@
23
  {%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
24
  {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
25
  {%- elif message.role == "assistant" %}
26
- {{- '<|im_start|>' + message.role + '\n' + content }}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  {%- if message.tool_calls %}
28
  {%- for tool_call in message.tool_calls %}
29
  {%- if (loop.first and content) or (not loop.first) %}
 
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 %}
 
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) %}