Views
No views yet
1{
2 "r": 512, # Large rank for quality
3 "lora_alpha": 1024, # Alpha (2:1 ratio)
4 "lora_dropout": 0.1, # Higher dropout for small dataset
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": 4096,
4 "batch_size": 8,
5 "gradient_accumulation_steps": 1,
6 "effective_batch_size": 8,
7 "learning_rate": 2e-5,
8 "warmup_steps": 50,
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-n5-phi4-mini-merged",
8 torch_dtype=torch.bfloat16,
9 device_map="auto",
10 trust_remote_code=True
11)
12tokenizer = AutoTokenizer.from_pretrained("UWV/wim-n5-phi4-mini-merged")
13
14# Prepare input - complaint text for categorization
15complaint_text = """
16Burger: Nou, waar ik dus over wil klagen is het afval in de buurt.
17Het is echt niet normaal meer, met al die vuilniszakken die op straat worden gegooid.
18De containers zijn vaak vol en er komen ook ratten.
19Ik had al eens gebeld maar er wordt niks aan gedaan!
20"""
21
22messages = [
23 {
24 "role": "system",
25 "content": "Jij bent een expert in het toewijzen van labels aan een tekst."
26 },
27 {
28 "role": "user",
29 "content": f"""Analyseer de onderstaande tekst en bepaal welke labels van toepassing zijn.
30
31**Onderwerp labels** (selecteer wat van toepassing is):
32Vuil/ongedierte overlast, Bruikbaarheid/beschikbaarheid afvalcontainers,
33Parkeeroverlast, Vergunningen, etc.
34
35**Beleving labels** (selecteer wat van toepassing is):
36Communicatie, Op de hoogte houden, Statusinformatie, Snelheid van afhandeling, etc.
37
38**Tekst om te analyseren**:
39{complaint_text}"""
40 }
41]
42
43# Apply chat template and generate
44prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
45inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=4096)
46inputs = {k: v.to(model.device) for k, v in inputs.items()}
47
48with torch.no_grad():
49 outputs = model.generate(
50 **inputs,
51 max_new_tokens=1000,
52 temperature=0.1, # Low temperature for consistent labeling
53 do_sample=True,
54 top_p=0.95,
55 pad_token_id=tokenizer.pad_token_id,
56 eos_token_id=tokenizer.eos_token_id,
57 )
58
59# Decode response
60response = tokenizer.decode(outputs[0], skip_special_tokens=True)
61if "assistant:" in response:
62 response = response.split("assistant:")[-1].strip()
63
64print(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-n5-phi4-mini-adapter"
17)
18tokenizer = AutoTokenizer.from_pretrained("UWV/wim-n5-phi4-mini-adapter")
19
20# Use same inference code as above...1{
2 "reasoning": "Omdat de burger klaagt over afval dat op straat wordt gegooid, volle containers en rattenoverlast, zijn de onderwerpen 'Vuil/ongedierte overlast' en 'Bruikbaarheid/beschikbaarheid afvalcontainers' het meest van toepassing. De beleving is negatief: de burger ervaart frustratie over het uitblijven van actie en het gebrek aan terugkoppeling.",
3 "onderwerp_labels": [
4 "Vuil/ongedierte overlast",
5 "Bruikbaarheid/beschikbaarheid afvalcontainers"
6 ],
7 "beleving_labels": [
8 "Op de hoogte houden",
9 "Statusinformatie",
10 "Communicatie"
11 ]
12}UWV/wim-n5-phi4-mini-mergedUWV/wim-n5-phi4-mini-adapter (~2.29 GB)1@misc{wim-n5-phi4-mini,
2 author = {UWV InnovatieHub},
3 title = {Phi-4-mini N5 Complaint Categorization Model},
4 year = {2025},
5 publisher = {HuggingFace},
6 url = {https://huggingface.co/UWV/wim-n5-phi4-mini-merged}
7}