Instructions to use gmrrh/kiesel-v2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use gmrrh/kiesel-v2 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="gmrrh/kiesel-v2") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("gmrrh/kiesel-v2") model = AutoModelForCausalLM.from_pretrained("gmrrh/kiesel-v2", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use gmrrh/kiesel-v2 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "gmrrh/kiesel-v2" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "gmrrh/kiesel-v2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/gmrrh/kiesel-v2
- SGLang
How to use gmrrh/kiesel-v2 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "gmrrh/kiesel-v2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "gmrrh/kiesel-v2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "gmrrh/kiesel-v2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "gmrrh/kiesel-v2", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use gmrrh/kiesel-v2 with Docker Model Runner:
docker model run hf.co/gmrrh/kiesel-v2
Kiesel v2
Kiesel v2 is a German-first, tool-calling consumer-assistant model. It was created by LoRA fine-tuning ibm-granite/granite-4.2-8b and merging the adapter back into full bf16 weights.
- Maintainer: D. Gutz (gmrrh)
- Base model: ibm-granite/granite-4.2-8b
- Languages: German (primary), English (secondary)
- LoRA adapter: gmrrh/kiesel-v2-lora-peft
- License: Apache-2.0
Model summary
| Architecture | GraniteForCausalLM (inherited from base) |
| Parameters | ~8.8B, bf16 |
| Layers / hidden size | 40 / 4096 |
| Attention | 32 heads, 8 KV heads (GQA) |
| Context | 131,072 tokens (native) |
| Vocabulary | 100,352 (GPT-2-style BPE) |
| Fine-tune | LoRA r=64, α=128, dropout 0.05, all linear projections |
Kiesel is designed as a conversational assistant for everyday consumer tasks — appointments, reminders, lookups, small transactions — with native function calling and thinking-style reasoning, following the official Granite 4.2 chat template that ships with this repository (chat_template.jinja).
Intended use
- German-speaking end users interacting with a tool-equipped assistant (English works as a secondary language).
- Applications that supply their own tool/function registry at inference time via the chat template's
toolsargument.
Out of scope: This model is not a general-purpose knowledge model and is not intended for safety-critical decisions, medical/legal/financial advice, or use cases requiring guarantees of factual accuracy. It inherits the base model's limitations.
Training
Fine-tuned on 7,609 unique German tool-calling conversations spanning four bands: core assistant scenarios, edge cases, premise/logic questions, and a robustness band (refusals, prompt-injection resistance, overblocking guards, persona consistency, noise tolerance). A portion of the data is synthetic, produced and quality-filtered with LLM-based generation and judging.
Training configuration: 3 epochs, learning rate 1e-4 (cosine schedule), sequence length 6,144, LoRA r=64/α=128 on all linear projections, bf16, trained with Levanter on a TPU v6e-4 pod. The adapter was then merged into the base weights; the standalone adapter is published separately.
The production system prompt and the full production tool registry are not part of this release; the examples below use illustrative placeholders.
Usage
Transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "gmrrh/kiesel-v2"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype="bfloat16", device_map="auto")
messages = [
{
"role": "system",
"content": "Du bist ein freundlicher Assistent. (Beispiel-Prompt — nicht der Produktions-Prompt)",
},
{"role": "user", "content": "Wie viele Tage hat ein Schaltjahr?"},
]
text = tok.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
inputs = tok(text, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=1024, do_sample=False)
print(tok.decode(output[0][inputs.shape[1]:], skip_special_tokens=True))
Tool calling
Tools are passed in OpenAI function-schema style. The model answers with a
<tool_call><function=name><parameter=...>...</parameter></function></tool_call>
block that you parse and execute, then continue the conversation with a
role: "tool" message.
tools = [
{
"type": "function",
"function": {
"name": "create_appointment",
"description": "Legt einen Kalendereintrag an.",
"parameters": {
"type": "object",
"properties": {
"title": {"type": "string", "description": "Titel des Termins"},
"date": {"type": "string", "description": "Datum im Format YYYY-MM-DD"},
"time": {"type": "string", "description": "Uhrzeit im Format HH:MM"},
},
"required": ["title", "date"],
},
},
},
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Aktuelles Wetter für eine Stadt.",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
},
]
messages = [
{"role": "system", "content": "Du bist ein Assistent mit Kalenderzugriff. (Beispiel-Prompt)"},
{"role": "user", "content": "Bitte lege für nächsten Montag um 9 Uhr einen Zahnarzttermin an."},
]
text = tok.apply_chat_template(messages, tools=tools, add_generation_prompt=True, tokenize=False)
Thinking controls
The chat template supports thinking-style reasoning (<think>...</think> before the
final answer, enabled by default). You can control it via apply_chat_template
keyword arguments:
enable_thinking=False— skip reasoning entirely for faster answersreasoning_effort="low"— a shorter reasoning budgettruncate_history_thinking=False— keep<think>blocks from earlier turns instead of stripping them from the conversation history
vLLM
vllm serve gmrrh/kiesel-v2 \
--served-model-name kiesel-v2 \
--max-model-len 65536 \
--gpu-memory-utilization 0.90 \
--tool-call-parser qwen3_coder \
--reasoning-parser granite_thinking_parser
granite_thinking_parser is the reasoning parser shipped with the upstream
Granite 4.2 release and matches the <think> format this model was trained with.
Evaluation
Structured evaluation is in progress and will be published in this README as it completes. Planned categories: function/tool calling, instruction following, safety and refusals, math, long-context retrieval, German and English knowledge, and agentic tasks.
Limitations
- German-first; English capability is secondary and was trained on a much smaller share of the data.
- The example tools and system prompts in this card are illustrative — behavior with a different tool registry depends on the schemas you provide.
- Long-context behavior was exercised up to ~64k tokens during development; the architecture supports 131k natively.
- All limitations of the base model apply.
License & attribution
This model is released under the Apache License 2.0, consistent with its base model ibm-granite/granite-4.2-8b by IBM. Kiesel is an independent fine-tune and is not an IBM product.
Kiesel · gmrrh · D. Gutz
- Downloads last month
- 40