koushikkb12/Qwen-2.5-14B-Function-Calling-Specialist
0
๐ ๏ธ Qwen-2.5-14B-Function-Calling-Specialist
A budget-optimized, high-performance function-calling and tool-use adapter for Qwen2.5-14B-Instruct.
This model is fine-tuned using Unsloth and QLoRA on the Glaive Function-Calling v2 dataset. It is specialized to reliably output structured JSON function arguments and coordinate complex multi-step tool calls without hallucinations.
  
๐ Key Features
- Zero-Hallucination JSON: Optimized specifically to match strict API specifications and parameters.
- Multi-Turn Tool Orchestration: Efficiently handles the
System (Tool Setup) -> User Query -> Tool Call -> Tool Output -> Final Answerloop. - Unsloth Accelerated: Built using memory-efficient kernels, maximizing training speed and throughput.
- Apache 2.0 Licensed: Fully permissive and suitable for commercial enterprise integration.
๐ Training Logs & Loss Curve
Below is the training log captured from our Blackwell GPU run.
Loss Curve Summary: The loss started at 1.24 and converged exceptionally smoothly down to a final step loss of 0.0691 (overall average training loss: 0.09403) in just 7 minutes and 12 seconds of compute. This reflects flawless learning of structured function-calling syntax with zero instability.
โ๏ธ Hyperparameters
๐ป How to Use
1. Fast Inference with Unsloth
To load and run this adapter 2x faster with Unsloth:
from unsloth import FastLanguageModel
import torch
max_seq_length = 2048
dtype = None # Auto detection
load_in_4bit = True
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "koushikkb12/Qwen-3.5-14B-Function-Calling-Specialist",
max_seq_length = max_seq_length,
dtype = dtype,
load_in_4bit = load_in_4bit,
)
# Enable fast inference
FastLanguageModel.for_inference(model)
# Define system prompt with available tools
messages = [
{"role": "system", "value": "You are a helpful assistant with access to weather tools.\nTools: get_weather(location: str)"},
{"role": "user", "value": "What's the weather in Seattle?"}
]
inputs = tokenizer.apply_chat_template(
messages,
tokenize = True,
add_generation_prompt = True,
return_tensors = "pt"
).to("cuda")
outputs = model.generate(input_ids = inputs, max_new_tokens = 128, use_cache = True)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))2. Standard Transformers Inference
If you are not using Unsloth for inference, you can load the model with HuggingFace PEFT:
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
base_model = AutoModelForCausalLM.from_pretrained(
"unsloth/Qwen2.5-14B-Instruct",
torch_dtype=torch.bfloat16,
device_map="auto"
)
model = PeftModel.from_pretrained(base_model, "koushikkb12/Qwen-3.5-14B-Function-Calling-Specialist")
tokenizer = AutoTokenizer.from_pretrained("unsloth/Qwen2.5-14B-Instruct")