File size: 13,916 Bytes
9f93060
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f7eb195
 
9f93060
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f7eb195
9f93060
 
 
 
 
 
 
 
 
 
 
1d351ff
 
 
 
 
9f93060
1d351ff
9f93060
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1d351ff
 
 
9f93060
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
---

base_model: Finnish-NLP/Ahma-3B-Instruct
tags:
- transformers
- unsloth
- llama
- peft
- finnish
- medical
- dental
- healthcare
- research-only
license: apache-2.0
language:
- fi
library_name: peft
---


# Finnish-DentalQA-lora

**Note: Version 2 models are now available with enhanced training datasets (50,132 conversations) and improved clinical coverage including psychological, social, and ethical aspects. See [Finnish-DentalQA-v2-lora](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-lora) and [Finnish-DentalQA-v2-merged](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-merged).**

**Finnish-language conversational AI assistant specialized for dental medicine.** This is a fine-tuned large language model (LLM) that generates structured text responses to dental consultation queries, designed to simulate professional dentist-to-dentist consultations with clinical reasoning and recommendations.

**RESEARCH USE ONLY - NOT FOR MEDICAL DECISIONS**

- **Developed by:** [Heikki Saxén](https://fi.linkedin.com/in/heikkisaxen) / [Duckling Codehouse Oy](https://www.linkedin.com/company/duckling-codehouse-oy/) ([ducklingcodehouse](https://huggingface.co/ducklingcodehouse))
- **Supported by:** [Entteri Professional Software Oy](https://www.entteri.com/) (makers of AssisDent dental PMS)
- **License:** apache-2.0
- **Base Model:** Finnish-NLP/Ahma-3B-Instruct (by Aapo Tanskanen & Rasmus Toivanen)
- **Context Length:** 2048 tokens
- **Release Date:** August 20, 2025

LoRA adapter for Finnish dental medicine consultations between healthcare professionals. Trained on 30,908 synthetic dental conversations (80% expert clinical cases, 20% concept explanations) covering a broad range of different scenarios. Generated using pipeline with GPT-4.1.

**Research Focus:** This model demonstrates domain-specific fine-tuning with low computational resources. The goal is to explore how specialized models can be trained and deployed on consumer hardware (including personal GPUs) rather than requiring high-end infrastructure.

**System Prompt Recommendation:** This model was trained with a specific system prompt. For best results, we recommend using the same prompt format shown in the examples below.

**Response Format:** The model is trained to structure all clinical responses in three sections: "### Tausta" (Background), "### Arvio" (Assessment), "### Suositus" (Recommendation).

**Context Limit:** 2048 tokens total (input + output). Long conversations may need trimming to fit within this limit.

This llama model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's Transformers library.

[<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth)

## Model Comparison

**v1 LoRA Version**: Separate adapter files, requires base model

**v1 Merged Version**: [ducklingcodehouse/Finnish-DentalQA-merged](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-merged) - LoRA adapters merged into standalone model, no additional files needed

**v2 LoRA Version**: [ducklingcodehouse/Finnish-DentalQA-v2-lora](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-lora) - Enhanced training (50,132 samples vs 30,908), improved clinical coverage, separate adapter files, requires base model

**v2 Merged Version**: [ducklingcodehouse/Finnish-DentalQA-v2-merged](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-merged) - Enhanced training (50,132 samples vs 30,908), improved clinical coverage, LoRA adapters merged into standalone model

## Installation

```bash

pip install transformers torch peft accelerate

```

## Loading the Model

```python

from transformers import AutoTokenizer, AutoModelForCausalLM

from peft import PeftModel

import torch



# Load base + LoRA

base_model = AutoModelForCausalLM.from_pretrained(

    "Finnish-NLP/Ahma-3B-Instruct", 

    torch_dtype=torch.float16,  # Recommended: FP16 for base model 

    device_map="auto"

)

model = PeftModel.from_pretrained(base_model, "ducklingcodehouse/Finnish-DentalQA-lora")



model = model.merge_and_unload()



# Load tokenizer from adapter model

tokenizer = AutoTokenizer.from_pretrained("ducklingcodehouse/Finnish-DentalQA-lora")

```

## Generate Response

```python

# Use exact system prompt from training

system_prompt = """Olet kokenut suomalainen hammaslääkäri. Vastaat ammattimaisesti kollegojesi 

kysymyksiin käyttäen oikeaa hammaslääketieteellistä terminologiaa ja viittaat Käypä hoito 

-suosituksiin kun relevanttia."""



user_question = """87-vuotias nainen, jolla on vaikea muistisairaus, asuu palvelutalossa ja on 

kotihoidon piirissä. Potilaalla on hampaattomuus, yläleuan kokoproteesi ja alaleuassa 6 

luonnollista hammasta. Lääkityksenä on mm. rivaroksabaani eteisvärinään, donepetsiili, 

metoprololi, kalsium+D-vitamiini, sekä useita muita lääkkeitä (yhteensä 9). Suun limakalvot 

ovat kuivat, kielessä fissuroitumista, ja proteesin alla lievää punoitusta. HbA1c 46 mmol/mol, 

BMI 22. Kotihoito raportoi potilaan nielevän huonosti ja syljen erityksen olevan vähäistä. 

Karies- ja parodontiittiriski arvioidaan korkeaksi. Miten suosittelisit suun hoidon 

järjestämistä ja priorisointia tässä tilanteessa?"""



messages = [

    {"role": "system", "content": system_prompt},

    {"role": "user", "content": user_question}

]



inputs = tokenizer.apply_chat_template(

    messages, 

    tokenize=True, 

    add_generation_prompt=True, 

    return_tensors="pt"

).to(model.device)



# Recommended settings

with torch.no_grad():

    outputs = model.generate(

        inputs,

        max_new_tokens=600,

        temperature=0.1,

        do_sample=True,

        top_p=0.9,

        repetition_penalty=1.2,

        pad_token_id=tokenizer.pad_token_id

    )



response = tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)

print(response)



# Expected example response:

# ### Tausta

# Potilas on iäkäs, monisairas ja käyttää antikoagulanttihoitoa (rivaroksabaani), mikä

# lisää vuotoriskiä toimenpiteissä. Kuiva suu liittyy sekä lääkitykseen että ikääntymiseen.

# Hampaattomuus ja vähäinen syljeneritys altistavat limakalvovaurioille ja infektioille.

# Nielemisvaikeudet ja korkea karies- ja parodontiittiriski korostavat ehkäisevien

# toimenpiteiden merkitystä.

# 

# ### Arvio

# Kliinisesti potilaalla on merkittävä hyposalivaatio (stimuloitu sylki <0,7 ml/min),

# joka yhdessä polyfarmasian kanssa lisää riskiä limakalvosairauksille ja infektioille.

# Proteesin alla oleva punoitus voi viitata proteesi-stomatiittiin tai kandidaasiin.

# Rivaroksabaanin vuoksi invasiivisia toimenpiteitä tulee välttää ellei välttämätöntä.

# Kotihoidon resurssit ja potilaan toimintakyky rajoittavat laajojen hoitojen toteutusta.

# 

# ### Suositus

# Painopiste on limakalvojen kosteutuksessa (esim. keinotekoiset syljentuotteet) ja

# proteesin puhtauden ylläpidossa. Kotihoidolle annetaan selkeät ohjeet päivittäisestä

# proteesin puhdistuksesta ja limakalvojen tarkkailusta. Syljen eritystä voidaan tukea

# säännöllisellä nesteytyksellä ja tarvittaessa ksylitolituotteilla. Lääkärin kanssa

# arvioidaan mahdollisuudet vähentää kuivan suun aiheuttajia. Säännöllinen suun tarkastus

# (3–6 kk välein) on suositeltavaa. Käypä hoito -suositukset: "Lyhentyneen hammaskaaren

# hoito", "Karies (hallinta)" ja "Parodontiitti".

```

## Example

**User:** 27-vuotias mies, jolla on voimakas kipu ja turvotus alaleuan oikealla puolella. Viisaudenhammas 48 on puoliksi puhkeamassa, ympärillä runsasta ienturvotusta ja märkäkertymä. Potilaalla on kuumetta 38,3°C ja suun avausrajoitus 22 mm. Mitä ensihoitoa suosittelet terveyskeskuksessa?

**Assistant:**
### Tausta
Potilas esittäytyy tyypillisin akuutin perikoroniitin oirein: kuume, paikallinen turvotus sekä trismus (avausrajoitus 22 mm). Puoliksi puhjenneen viisaudenhampaan (48) ympärillä oleva runsas ienturvotus ja märkäkertymä viittaavat paikalliseen infektioon, joka voi levitä syvempiin kudoksiin. Suun avausrajoitus (trismus) lisää riskiä infektion leviämiselle esimerkiksi submandibulaaritilaan.

### Arvio
Kliininen kuva sopii akuuttiin perikoroniittiin komplisoituneena paikallisella absessilla tai flegmoonalla. Kuume ja yleisoireet täyttävät mikrobilääkehoidon aloituskriteerit Käypä hoito -suositusten mukaan. Trismus vaikeuttaa paikallista puhdistusta ja altistaa infektion leviämiselle. Märkäkertymän dreneeraus on ensisijaista, mutta myös antibioottihoito on tarpeen.

### Suositus
Aloita amoksisilliini 500 mg x 3 po ja metronidatsoli 500 mg x 2 po suun kautta 7 päivän ajan. Kipulääkitys parasetamolilla ja/tai tulehduskipulääkkeellä. Huuhtele suu klooriheksidiinillä 1–2 kertaa päivässä. Mikäli potilaan yleistila heikkenee tai ilmaantuu nielemisvaikeuksia/hengitystieoireita, päivystyslähete erikoissairaanhoitoon on aiheellinen. Seuraa tilannetta tiiviisti; mikäli avausrajoitus pahenee tai yleisvointi huononee, sairaalahoito voi olla tarpeen.

**Follow-up:** Potilas palaa seuraavana päivänä. Kuume on noussut 39,2 °C:een, suun avaus onnistuu enää 10 mm, alaleuan oikea puoli on selvästi turvonnut ja nieleminen on kivuliasta. Hengitys on hieman rohisevaa. Mitä toimenpiteitä suosittelet tässä vaiheessa?

**Assistant:**
### Tausta
Potilaan tila on selvästi pahentunut: kuume noussut 39,2 °C:een, suun avausrajoitus pahentunut (nyt vain 10 mm), oikean puolen turvotus lisääntynyt ja nieleminen vaikeutunut. Nämä löydökset viittaavat syvemmälle levinneeseen infektioprosessiin, mahdollisesti alkavaan flegmonaan tai abskessiin.

### Arvio
Kyseessä on vakava infektio, jossa on riski hengitysteiden kompromissille ja septiselle kehitykselle. Suun avauksen rajoittuminen alle 20 mm sekä nielemisvaikeus ovat merkkejä siitä, että infektio saattaa olla levinnyt syvempiin kaulan tiloihin. Märän dreenauksen onnistuminen on kriittistä, mutta trismuksen vuoksi tämä voi olla haastavaa.

### Suositus
Potilas tulee lähettää välittömästi päivystykseen sairaalatasolle suonensisäisen antibioottihoidon ja mahdollisen kirurgisen dreneerauksen arvioon. Hengitysteiden turvaaminen on ensisijainen prioriteetti – tarvittaessa anestesialääkärin arvio. Mikrobilääkehoitoa jatketaan sairaalassa suositusten mukaisesti. Seuranta tehostetussa valvonnassa on välttämätöntä komplikaatioiden varalta.

## Training Details
- **Method:** LoRA (r=64, alpha=128, dropout=0.05)
- **Learning Rate:** 0.0002
- **Epochs:** 3
- **Effective Batch Size:** 64
- **Precision:** Mixed precision - mostly FP32 with some BF16 tensors, auto-casts to base model's FP16 on load
- **Embedding Training:** Enabled for domain specialization
- **Target Modules:** q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj

- **Data:** 30,908 conversations covering a broad range of different scenarios

- **Context:** 2048 tokens (inherited from Ahma-3B-Instruct)

- **Hardware:** H100 GPU with Unsloth optimizations

- **Training Performance:** Loss curves showed steady convergence with final values well below 1.0, indicating successful learning without overfitting



## Limitations and Important Notes



**Critical Medical Disclaimers:**

- Research purposes only - never use for actual medical decisions

- Model may hallucinate medical facts, treatments, or drug interactions

- Outputs have not been clinically validated and may contain medical misinformation

- All outputs require independent professional verification before any clinical application

- No liability is assumed for any consequences of model use



**Technical Limitations:**

- Primarily trained for dentist-to-dentist consultations - concept explanations included but not the main focus

- May particularly hallucinate on out-of-scope topics (further training could address this)

- Further fine-tuning may be needed for specific use cases

- System prompt dependency - using the training prompt is highly recommended

- 2048 token context limit affects both training and inference

- No formal evaluation - quality assessment has been primarily subjective



**Bias and Fairness:**

- Training data consists of synthetic conversations which may contain inherent biases

- Model responses may reflect biases present in the GPT-4.1 generated training data

- Geographic and cultural biases toward Finnish dental practices and protocols

- Potential underrepresentation of certain patient demographics or clinical scenarios



## Related Models

- v1 Merged version: [ducklingcodehouse/Finnish-DentalQA-merged](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-merged)

- v2 LoRA version: [ducklingcodehouse/Finnish-DentalQA-v2-lora](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-lora)

- v2 Merged version: [ducklingcodehouse/Finnish-DentalQA-v2-merged](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-merged)

- Base model: [Finnish-NLP/Ahma-3B-Instruct](https://huggingface.co/Finnish-NLP/Ahma-3B-Instruct)



## Citation



If you use this model, please cite both this work and the base Ahma model:



```bibtex

@misc{finnish-dentalqa-lora,

  author = {Saxén, Heikki},

  title = {Finnish-DentalQA-lora: LoRA Adapter for Finnish Dental Medicine},

  year = {2025},

  month = {August},

  publisher = {Hugging Face},

  url = {https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-lora}

}



@misc{ahma-3b-instruct,

  author = {Tanskanen, Aapo and Toivanen, Rasmus},

  title = {Ahma-3B-Instruct},

  year = {2024},

  publisher = {Hugging Face},

  url = {https://huggingface.co/Finnish-NLP/Ahma-3B-Instruct}

}

```