This model is a fine-tuned version of
microsoft/Phi-4-mini-instruct optimized for Schema.org type selection from entity descriptions, trained as part of the WIM (Wikipedia to Knowledge Graph) pipeline.
1{
2 "r": 512, # Rank (same as N1 for consistency)
3 "lora_alpha": 1024, # Alpha (2:1 ratio)
4 "lora_dropout": 0.05, # Dropout for regularization
5 "bias": "none",
6 "task_type": "CAUSAL_LM",
7 "target_modules": [
8 "q_proj", "k_proj", "v_proj", "o_proj" # Attention layers only
9 ]
10}
1{
2 "model": "phi4-mini",
3 "max_seq_length": 8192,
4 "batch_size": 32,
5 "gradient_accumulation_steps": 1,
6 "effective_batch_size": 32,
7 "learning_rate": 2e-5,
8 "warmup_steps": 100,
9 "max_grad_norm": 1.0,
10 "lr_scheduler": "cosine",
11 "optimizer": "paged_adamw_8bit",
12 "bf16": True,
13 "seed": 42
14}
1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3import json
4
5# Load the merged model (ready to use)
6model = AutoModelForCausalLM.from_pretrained(
7 "UWV/wim-n2-phi4-mini-merged",
8 torch_dtype=torch.bfloat16,
9 device_map="auto",
10 trust_remote_code=True
11)
12tokenizer = AutoTokenizer.from_pretrained("UWV/wim-n2-phi4-mini-merged")
13
14# Prepare input (example from Dutch Wikipedia)
15entities = [
16 {
17 "name": "Pedro Nunesplein",
18 "description": "Een plein in Amsterdam genoemd naar Pedro Nunes"
19 },
20 {
21 "name": "Amsterdam",
22 "description": "Hoofdstad van Nederland"
23 }
24]
25
26messages = [
27 {
28 "role": "system",
29 "content": "Je bent een expert in schema.org vocabulaire en semantische mapping."
30 },
31 {
32 "role": "user",
33 "content": f"""Selecteer voor elke entiteit het meest passende Schema.org type:
34
35{json.dumps(entities, ensure_ascii=False, indent=2)}
36
37Geef een JSON array met elke entiteit en het Schema.org type."""
38 }
39]
40
41# Apply chat template and generate
42prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
43inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=8192)
44inputs = {k: v.to(model.device) for k, v in inputs.items()}
45
46with torch.no_grad():
47 outputs = model.generate(
48 **inputs,
49 max_new_tokens=500,
50 temperature=0.1, # Low temperature for consistent classification
51 do_sample=True,
52 top_p=0.95,
53 pad_token_id=tokenizer.pad_token_id,
54 eos_token_id=tokenizer.eos_token_id,
55 )
56
57# Decode response
58response = tokenizer.decode(outputs[0], skip_special_tokens=True)
59if "assistant:" in response:
60 response = response.split("assistant:")[-1].strip()
61
62print(response)
1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3import torch
4
5# Load base model
6base_model = AutoModelForCausalLM.from_pretrained(
7 "microsoft/Phi-4-mini-instruct",
8 torch_dtype=torch.bfloat16,
9 device_map="auto",
10 trust_remote_code=True
11)
12
13# Load adapter
14model = PeftModel.from_pretrained(
15 base_model,
16 "UWV/wim-n2-phi4-mini-adapter"
17)
18tokenizer = AutoTokenizer.from_pretrained("UWV/wim-n2-phi4-mini-adapter")
19
20# Use same inference code as above...
1[
2 {
3 "name": "Pedro Nunesplein",
4 "schema_type": "Place",
5 "schema_url": "https://schema.org/Place"
6 },
7 {
8 "name": "Amsterdam",
9 "schema_type": "City",
10 "schema_url": "https://schema.org/City"
11 }
12]
The model was trained on the
UWV/wim-instruct-wiki-to-jsonld-agent-steps dataset, which contains:
-
Merged Model: UWV/wim-n2-phi4-mini-merged (7.17 GB)
- Ready to use without adapter loading
- Recommended for production inference
- Successfully merged (no Phi-4 issues)
-
LoRA Adapter: UWV/wim-n2-phi4-mini-adapter (~1.14 GB)
- Requires base Phi-4-mini-instruct model
- Useful for further fine-tuning or experiments
- Large adapter due to r=512 (same as N1)
N2 processes the largest number of examples (104K) but with the shortest sequences, making it highly efficient for batch processing. Despite using a larger LoRA configuration (r=512) than typically needed for this simpler task, the model trained efficiently and merged successfully.
1@misc{wim-n2-phi4-mini,
2 author = {UWV InnovatieHub},
3 title = {Phi-4-mini N2 Schema.org Retrieval Model},
4 year = {2025},
5 publisher = {HuggingFace},
6 url = {https://huggingface.co/UWV/wim-n2-phi4-mini-merged}
7}