初始化项目,由ModelHub XC社区提供模型
Model: mohar07/qwen3-0.6b-kg-triplets Source: Original Platform
This commit is contained in:
37
.gitattributes
vendored
Normal file
37
.gitattributes
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
*.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
|
||||||
|
qwen3-0.6b.F16.gguf filter=lfs diff=lfs merge=lfs -text
|
||||||
59
Modelfile
Normal file
59
Modelfile
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
FROM qwen3-0.6b.F16.gguf
|
||||||
|
TEMPLATE """{{- if .Messages }}
|
||||||
|
{{- if or .System .Tools }}<|im_start|>system
|
||||||
|
{{- if .System }}
|
||||||
|
{{ .System }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Tools }}
|
||||||
|
|
||||||
|
# Tools
|
||||||
|
|
||||||
|
You may call one or more functions to assist with the user query.
|
||||||
|
|
||||||
|
You are provided with function signatures within <tools></tools> XML tags:
|
||||||
|
<tools>
|
||||||
|
{{- range .Tools }}
|
||||||
|
{"type": "function", "function": {{ .Function }}}
|
||||||
|
{{- end }}
|
||||||
|
</tools>
|
||||||
|
|
||||||
|
For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:
|
||||||
|
<tool_call>
|
||||||
|
{"name": <function-name>, "arguments": <args-json-object>}
|
||||||
|
</tool_call>
|
||||||
|
{{- end }}<|im_end|>
|
||||||
|
{{ end }}
|
||||||
|
{{- range $i, $_ := .Messages }}
|
||||||
|
{{- $last := eq (len (slice $.Messages $i)) 1 -}}
|
||||||
|
{{- if eq .Role "user" }}<|im_start|>user
|
||||||
|
{{ .Content }}<|im_end|>
|
||||||
|
{{ else if eq .Role "assistant" }}<|im_start|>assistant
|
||||||
|
{{ if .Content }}{{ .Content }}
|
||||||
|
{{- else if .ToolCalls }}<tool_call>
|
||||||
|
{{ range .ToolCalls }}{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}}
|
||||||
|
{{ end }}</tool_call>
|
||||||
|
{{- end }}{{ if not $last }}<|im_end|>
|
||||||
|
{{ end }}
|
||||||
|
{{- else if eq .Role "tool" }}<|im_start|>user
|
||||||
|
<tool_response>
|
||||||
|
{{ .Content }}
|
||||||
|
</tool_response><|im_end|>
|
||||||
|
{{ end }}
|
||||||
|
{{- if and (ne .Role "assistant") $last }}<|im_start|>assistant
|
||||||
|
{{ end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if .System }}<|im_start|>system
|
||||||
|
{{ .System }}<|im_end|>
|
||||||
|
{{ end }}{{ if .Prompt }}<|im_start|>user
|
||||||
|
{{ .Prompt }}<|im_end|>
|
||||||
|
{{ end }}<|im_start|>assistant
|
||||||
|
{{ end }}{{ .Response }}{{ if .Response }}<|im_end|>{{ end }}"""
|
||||||
|
PARAMETER stop "<|im_end|>"
|
||||||
|
PARAMETER stop "<|im_start|>"
|
||||||
|
PARAMETER temperature 0.6
|
||||||
|
PARAMETER min_p 0.0
|
||||||
|
PARAMETER top_k 20
|
||||||
|
PARAMETER top_p 0.95
|
||||||
|
PARAMETER repeat_penalty 1
|
||||||
383
README.md
Normal file
383
README.md
Normal file
@@ -0,0 +1,383 @@
|
|||||||
|
---
|
||||||
|
license: mit
|
||||||
|
language:
|
||||||
|
- en
|
||||||
|
base_model: unsloth/qwen3-0.6b
|
||||||
|
tags:
|
||||||
|
- qwen3
|
||||||
|
- lora
|
||||||
|
- knowledge-graph
|
||||||
|
- relation-extraction
|
||||||
|
- information-extraction
|
||||||
|
- graph-rag
|
||||||
|
- triplet-extraction
|
||||||
|
- structured-generation
|
||||||
|
pipeline_tag: text-generation
|
||||||
|
library_name: transformers
|
||||||
|
---
|
||||||
|
|
||||||
|
# Qwen3-0.6B-KG-Triplets
|
||||||
|
|
||||||
|
Qwen3-0.6B-KG-Triplets is a LoRA finetuned version of Qwen3-0.6B specialized for ontology-constrained knowledge graph extraction.
|
||||||
|
|
||||||
|
Given a passage of text, the model generates structured triplets in the form:
|
||||||
|
|
||||||
|
```
|
||||||
|
source -> relation -> target
|
||||||
|
```
|
||||||
|
|
||||||
|
where:
|
||||||
|
|
||||||
|
- `"source"` contains an entity title and type
|
||||||
|
- `"relation"` contains a relation type and confidence weight
|
||||||
|
- `"target"` contains an entity title and type
|
||||||
|
|
||||||
|
The output is designed for direct ingestion into graph databases and GraphRAG pipelines with minimal post-processing.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Motivation
|
||||||
|
|
||||||
|
Most instruction-tuned LLMs can extract entities and relations, but their outputs are difficult to ingest directly into graph databases because of:
|
||||||
|
|
||||||
|
- inconsistent entity naming
|
||||||
|
- out-of-schema relations
|
||||||
|
- poorly calibrated confidence scores
|
||||||
|
- inconsistent JSON formatting
|
||||||
|
|
||||||
|
This model was finetuned specifically to produce:
|
||||||
|
|
||||||
|
- ontology-constrained outputs
|
||||||
|
- normalized entity names
|
||||||
|
- calibrated relation confidence weights
|
||||||
|
- graph-ingestable JSON
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Model Details
|
||||||
|
|
||||||
|
| Property | Value |
|
||||||
|
|---|---|
|
||||||
|
| Base Model | unsloth/qwen3-0.6b |
|
||||||
|
| Finetuning | LoRA |
|
||||||
|
| Rank (r) | 32 |
|
||||||
|
| Alpha | 32 |
|
||||||
|
| Context Length | 2048 |
|
||||||
|
| Epochs | 5 |
|
||||||
|
| Optimizer | AdamW 8-bit |
|
||||||
|
| Framework | Unsloth + TRL |
|
||||||
|
| Training Type | Instruction Finetuning |
|
||||||
|
| License | MIT |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Training Configuration
|
||||||
|
|
||||||
|
```python
|
||||||
|
model = FastLanguageModel.get_peft_model(
|
||||||
|
model,
|
||||||
|
r=32,
|
||||||
|
target_modules=[
|
||||||
|
"q_proj",
|
||||||
|
"k_proj",
|
||||||
|
"v_proj",
|
||||||
|
"o_proj",
|
||||||
|
"gate_proj",
|
||||||
|
"up_proj",
|
||||||
|
"down_proj",
|
||||||
|
],
|
||||||
|
lora_alpha=32,
|
||||||
|
lora_dropout=0,
|
||||||
|
bias="none",
|
||||||
|
use_gradient_checkpointing="unsloth",
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Parameter | Value |
|
||||||
|
|---|---|
|
||||||
|
| Batch size | 2 |
|
||||||
|
| Gradient accumulation | 4 |
|
||||||
|
| Learning rate | 5e-5 |
|
||||||
|
| Epochs | 5 |
|
||||||
|
| Warmup steps | 50 |
|
||||||
|
| Max sequence length | 2048 |
|
||||||
|
| Optimizer | AdamW 8-bit |
|
||||||
|
| Seed | 42 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dataset
|
||||||
|
|
||||||
|
The model was trained on a custom instruction dataset for structured knowledge graph extraction.
|
||||||
|
|
||||||
|
### Corpus Sources
|
||||||
|
|
||||||
|
- Wikipedia
|
||||||
|
- arXiv papers
|
||||||
|
|
||||||
|
### Dataset Statistics
|
||||||
|
|
||||||
|
| Split | Examples |
|
||||||
|
|---|---|
|
||||||
|
| Train | 2575 |
|
||||||
|
| Validation | 75 |
|
||||||
|
| Test | 700 |
|
||||||
|
| **Total** | **3350** |
|
||||||
|
|
||||||
|
Additional properties:
|
||||||
|
|
||||||
|
- 20 ontology relations
|
||||||
|
- 15% hard negatives in training
|
||||||
|
- Entity-level train/test decontamination
|
||||||
|
- Curriculum ordering (easy → hard)
|
||||||
|
- Zero schema errors
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Relation Schema
|
||||||
|
|
||||||
|
The model predicts only the following ontology:
|
||||||
|
|
||||||
|
```
|
||||||
|
implements
|
||||||
|
trained_on
|
||||||
|
evaluates
|
||||||
|
part_of
|
||||||
|
introduces
|
||||||
|
extends
|
||||||
|
depends_on
|
||||||
|
contrasts_with
|
||||||
|
applied_to
|
||||||
|
measured_by
|
||||||
|
founded_by
|
||||||
|
developed_by
|
||||||
|
defined_as
|
||||||
|
consists_of
|
||||||
|
is_type_of
|
||||||
|
based_on
|
||||||
|
used_for
|
||||||
|
created_by
|
||||||
|
located_in
|
||||||
|
predecessor_of
|
||||||
|
```
|
||||||
|
|
||||||
|
Relations outside this ontology are intentionally not generated.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dataset Creation Pipeline
|
||||||
|
|
||||||
|
The training corpus was built using a multi-stage pipeline:
|
||||||
|
|
||||||
|
1. Corpus collection from Wikipedia and arXiv
|
||||||
|
2. Language and quality filtering
|
||||||
|
3. MinHash deduplication
|
||||||
|
4. LLM triplet generation using DeepSeek V4-Flash
|
||||||
|
5. Schema validation
|
||||||
|
6. Semantic validation
|
||||||
|
7. Hard negative generation
|
||||||
|
8. Curriculum ordering
|
||||||
|
9. Entity-level train/test decontamination
|
||||||
|
10. Train / Validation / Test split
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Training Example
|
||||||
|
|
||||||
|
Input:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "Extract knowledge graph triplets..."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"title": "September",
|
||||||
|
"type": "entity"
|
||||||
|
},
|
||||||
|
"relation": {
|
||||||
|
"type": "part_of",
|
||||||
|
"weight": 0.92
|
||||||
|
},
|
||||||
|
"target": {
|
||||||
|
"title": "Gregorian calendar",
|
||||||
|
"type": "entity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {
|
||||||
|
"title": "September",
|
||||||
|
"type": "entity"
|
||||||
|
},
|
||||||
|
"relation": {
|
||||||
|
"type": "defined_as",
|
||||||
|
"weight": 0.92
|
||||||
|
},
|
||||||
|
"target": {
|
||||||
|
"title": "ninth month",
|
||||||
|
"type": "concept"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Evaluation
|
||||||
|
|
||||||
|
Evaluation was performed using a custom triplet extraction benchmark with Hungarian bipartite matching alignment on 700 held-out entries.
|
||||||
|
|
||||||
|
### Metrics
|
||||||
|
|
||||||
|
| Metric | Score | Weight |
|
||||||
|
|---|---|---|
|
||||||
|
| Schema score | 1.000 | 0.30 |
|
||||||
|
| Entity F1 | 0.179 | 0.25 |
|
||||||
|
| Relation accuracy | 0.680 | 0.20 |
|
||||||
|
| Grounding | 0.969 | 0.15 |
|
||||||
|
| Weight score | 0.526 | 0.10 |
|
||||||
|
| Triplet F1 *(info only)* | 0.122 | — |
|
||||||
|
| Type agreement *(info only)* | 0.854 | — |
|
||||||
|
| Hallucination rate | 0.033 | — |
|
||||||
|
|
||||||
|
**Composite Score: 0.6583**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What Finetuning Fixed
|
||||||
|
|
||||||
|
Finetuning addressed three major failure modes of the base model.
|
||||||
|
|
||||||
|
### 1. Entity Normalization
|
||||||
|
|
||||||
|
Input passage:
|
||||||
|
|
||||||
|
> *Studies of the Cambrian period document the rapid diversification of animal life and the emergence of most major animal phyla, with some researchers proposing that a celestial body impact may have triggered the extinction events that preceded this radiation.*
|
||||||
|
|
||||||
|
Base entity title extracted:
|
||||||
|
|
||||||
|
```
|
||||||
|
After a thorough research on the circumstantial changes and the great evolution of life in the Cambrian period
|
||||||
|
```
|
||||||
|
|
||||||
|
Finetuned entity title extracted:
|
||||||
|
|
||||||
|
```
|
||||||
|
Celestial body impact hypothesis
|
||||||
|
```
|
||||||
|
|
||||||
|
The finetuned model learns reusable and atomic graph nodes rather than copying passage fragments.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Schema Adherence
|
||||||
|
|
||||||
|
Base relations generated:
|
||||||
|
|
||||||
|
```
|
||||||
|
released
|
||||||
|
benefited_from
|
||||||
|
```
|
||||||
|
|
||||||
|
Finetuned relations generated:
|
||||||
|
|
||||||
|
```
|
||||||
|
based_on
|
||||||
|
used_for
|
||||||
|
applied_to
|
||||||
|
introduces
|
||||||
|
```
|
||||||
|
|
||||||
|
All generated relations belong to the predefined ontology.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Confidence Calibration
|
||||||
|
|
||||||
|
Base weights:
|
||||||
|
|
||||||
|
```
|
||||||
|
0.8
|
||||||
|
0.8
|
||||||
|
0.8
|
||||||
|
0.8
|
||||||
|
```
|
||||||
|
|
||||||
|
Finetuned weights:
|
||||||
|
|
||||||
|
```
|
||||||
|
0.23
|
||||||
|
0.41
|
||||||
|
0.59
|
||||||
|
0.77
|
||||||
|
```
|
||||||
|
|
||||||
|
The model learns meaningful confidence distributions where stronger relations receive higher scores.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Intended Use
|
||||||
|
|
||||||
|
This model is intended for:
|
||||||
|
|
||||||
|
- Knowledge Graph Construction
|
||||||
|
- GraphRAG pipelines
|
||||||
|
- Structured Information Extraction
|
||||||
|
- Entity-Relation Extraction
|
||||||
|
- Automated KG population
|
||||||
|
- Document-to-Graph conversion
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
|
||||||
|
While the model demonstrates strong schema adherence and grounding, several limitations remain.
|
||||||
|
|
||||||
|
**Shallow Entity Abstraction**
|
||||||
|
|
||||||
|
The model favors concise and reusable entities but may miss deeper semantic abstractions or hierarchical entity relationships.
|
||||||
|
|
||||||
|
**Limited Recall**
|
||||||
|
|
||||||
|
The model prioritizes schema correctness and grounded extraction over exhaustive triplet recall. Entity F1 of 0.179 reflects strict Hungarian-matching alignment on a 20-relation ontology-constrained task; recall is intentionally traded for precision and schema adherence.
|
||||||
|
|
||||||
|
**English-Centric Training**
|
||||||
|
|
||||||
|
Training was primarily conducted on English Wikipedia and arXiv passages.
|
||||||
|
|
||||||
|
**Ontology Constrained**
|
||||||
|
|
||||||
|
Only the predefined 20 relation types are supported.
|
||||||
|
|
||||||
|
**Model Size Constraints**
|
||||||
|
|
||||||
|
Despite the relatively small size (0.6B parameters) and a modest training corpus (~3K examples), the model learns stable ontology-constrained extraction behavior. Larger models may achieve deeper entity understanding and broader relation coverage.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Repository
|
||||||
|
|
||||||
|
Evaluation Pipeline: https://github.com/mohar-xe/HGR-finetuned-model-evaluation-pipeline
|
||||||
|
|
||||||
|
Model: https://huggingface.co/mohar07/qwen3-0.6b-kg-triplets
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Citation
|
||||||
|
|
||||||
|
```bibtex
|
||||||
|
@misc{das2026qwenkgtriplets,
|
||||||
|
title={Qwen3-0.6B-KG-Triplets},
|
||||||
|
author={Mohar Das},
|
||||||
|
year={2026},
|
||||||
|
publisher={Hugging Face},
|
||||||
|
url={https://huggingface.co/mohar07/qwen3-0.6b-kg-triplets}
|
||||||
|
}
|
||||||
|
```
|
||||||
52
adapter_config.json
Normal file
52
adapter_config.json
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"alora_invocation_tokens": null,
|
||||||
|
"alpha_pattern": {},
|
||||||
|
"arrow_config": null,
|
||||||
|
"auto_mapping": {
|
||||||
|
"base_model_class": "Qwen3ForCausalLM",
|
||||||
|
"parent_library": "transformers.models.qwen3.modeling_qwen3",
|
||||||
|
"unsloth_fixed": true
|
||||||
|
},
|
||||||
|
"base_model_name_or_path": "unsloth/qwen3-0.6b-unsloth-bnb-4bit",
|
||||||
|
"bias": "none",
|
||||||
|
"corda_config": null,
|
||||||
|
"ensure_weight_tying": false,
|
||||||
|
"eva_config": null,
|
||||||
|
"exclude_modules": null,
|
||||||
|
"fan_in_fan_out": false,
|
||||||
|
"inference_mode": true,
|
||||||
|
"init_lora_weights": true,
|
||||||
|
"layer_replication": null,
|
||||||
|
"layers_pattern": null,
|
||||||
|
"layers_to_transform": null,
|
||||||
|
"loftq_config": {},
|
||||||
|
"lora_alpha": 32,
|
||||||
|
"lora_bias": false,
|
||||||
|
"lora_dropout": 0,
|
||||||
|
"lora_ga_config": null,
|
||||||
|
"megatron_config": null,
|
||||||
|
"megatron_core": "megatron.core",
|
||||||
|
"modules_to_save": null,
|
||||||
|
"peft_type": "LORA",
|
||||||
|
"peft_version": "0.19.1",
|
||||||
|
"qalora_group_size": 16,
|
||||||
|
"r": 32,
|
||||||
|
"rank_pattern": {},
|
||||||
|
"revision": null,
|
||||||
|
"target_modules": [
|
||||||
|
"v_proj",
|
||||||
|
"q_proj",
|
||||||
|
"k_proj",
|
||||||
|
"gate_proj",
|
||||||
|
"o_proj",
|
||||||
|
"up_proj",
|
||||||
|
"down_proj"
|
||||||
|
],
|
||||||
|
"target_parameters": null,
|
||||||
|
"task_type": "CAUSAL_LM",
|
||||||
|
"trainable_token_indices": null,
|
||||||
|
"use_bdlora": null,
|
||||||
|
"use_dora": false,
|
||||||
|
"use_qalora": false,
|
||||||
|
"use_rslora": false
|
||||||
|
}
|
||||||
3
adapter_model.safetensors
Normal file
3
adapter_model.safetensors
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:5d63d109bc039634570b29b4deff16253d9889bca49c27407084fd5f9b00fb32
|
||||||
|
size 80792456
|
||||||
99
chat_template.jinja
Normal file
99
chat_template.jinja
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
{%- 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 <tools></tools> XML tags:\n<tools>" }}
|
||||||
|
{%- for tool in tools %}
|
||||||
|
{{- "\n" }}
|
||||||
|
{{- tool | tojson }}
|
||||||
|
{%- endfor %}
|
||||||
|
{{- "\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" }}
|
||||||
|
{%- 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 current_content = message.content if message.content is defined and message.content is not none else '' %}
|
||||||
|
{%- set tool_start = '<tool_response>' %}
|
||||||
|
{%- set tool_start_length = tool_start|length %}
|
||||||
|
{%- set start_of_message = current_content[:tool_start_length] %}
|
||||||
|
{%- set tool_end = '</tool_response>' %}
|
||||||
|
{%- set tool_end_length = tool_end|length %}
|
||||||
|
{%- set start_pos = (current_content|length) - tool_end_length %}
|
||||||
|
{%- if start_pos < 0 %}
|
||||||
|
{%- set start_pos = 0 %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- set end_of_message = current_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 m_content = message.content if message.content is defined and message.content is not none else '' %}
|
||||||
|
{%- set content = m_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 '</think>' in m_content %}
|
||||||
|
{%- set content = (m_content.split('</think>')|last).lstrip('\n') %}
|
||||||
|
{%- set reasoning_content = (m_content.split('</think>')|first).rstrip('\n') %}
|
||||||
|
{%- set reasoning_content = (reasoning_content.split('<think>')|last).lstrip('\n') %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endif %}
|
||||||
|
{%- if loop.index0 > ns.last_query_index %}
|
||||||
|
{%- if loop.last or (not loop.last and (not reasoning_content.strip() == '')) %}
|
||||||
|
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\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 %}
|
||||||
|
{{- '<tool_call>\n{"name": "' }}
|
||||||
|
{{- tool_call.name }}
|
||||||
|
{{- '", "arguments": ' }}
|
||||||
|
{%- if tool_call.arguments is string %}
|
||||||
|
{{- tool_call.arguments }}
|
||||||
|
{%- else %}
|
||||||
|
{{- tool_call.arguments | tojson }}
|
||||||
|
{%- endif %}
|
||||||
|
{{- '}\n</tool_call>' }}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endif %}
|
||||||
|
{{- '<|im_end|>\n' }}
|
||||||
|
{%- elif message.role == "tool" %}
|
||||||
|
{%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
|
||||||
|
{{- '<|im_start|>user' }}
|
||||||
|
{%- endif %}
|
||||||
|
{{- '\n<tool_response>\n' }}
|
||||||
|
{{- message.content }}
|
||||||
|
{{- '\n</tool_response>' }}
|
||||||
|
{%- 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 %}
|
||||||
|
{{- '<think>\n\n</think>\n\n' }}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endif %}
|
||||||
64
config.json
Normal file
64
config.json
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"architectures": [
|
||||||
|
"Qwen3ForCausalLM"
|
||||||
|
],
|
||||||
|
"attention_bias": false,
|
||||||
|
"attention_dropout": 0.0,
|
||||||
|
"bos_token_id": null,
|
||||||
|
"torch_dtype": "float16",
|
||||||
|
"eos_token_id": 151645,
|
||||||
|
"head_dim": 128,
|
||||||
|
"hidden_act": "silu",
|
||||||
|
"hidden_size": 1024,
|
||||||
|
"initializer_range": 0.02,
|
||||||
|
"intermediate_size": 3072,
|
||||||
|
"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": 151669,
|
||||||
|
"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.5.10",
|
||||||
|
"use_cache": true,
|
||||||
|
"use_sliding_window": false,
|
||||||
|
"vocab_size": 151936
|
||||||
|
}
|
||||||
14
generation_config.json
Normal file
14
generation_config.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"bos_token_id": 151643,
|
||||||
|
"do_sample": true,
|
||||||
|
"eos_token_id": [
|
||||||
|
151645,
|
||||||
|
151643
|
||||||
|
],
|
||||||
|
"max_length": 40960,
|
||||||
|
"pad_token_id": 151669,
|
||||||
|
"temperature": 0.6,
|
||||||
|
"top_k": 20,
|
||||||
|
"top_p": 0.95,
|
||||||
|
"transformers_version": "5.5.0"
|
||||||
|
}
|
||||||
3
model.safetensors
Normal file
3
model.safetensors
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:d9f8ce2716b3e13ef963cc34daa5064282b1989b4d3d8f0726a4cb41851f8b32
|
||||||
|
size 1192135096
|
||||||
3
qwen3-0.6b.F16.gguf
Normal file
3
qwen3-0.6b.F16.gguf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:9e3a444995e614ad66c569346811d6315591b5529ae891022221e49b8de97a26
|
||||||
|
size 1198182976
|
||||||
3
tokenizer.json
Normal file
3
tokenizer.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:d7430e9138b76e93fb6f93462394d236b411111aef53cb421ba97d2691040cca
|
||||||
|
size 11423114
|
||||||
234
tokenizer_config.json
Normal file
234
tokenizer_config.json
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user