ducklingcodehouse commited on
Commit
be70af4
·
verified ·
1 Parent(s): 0992d08

Update model card

Browse files
Files changed (1) hide show
  1. README.md +248 -0
README.md ADDED
@@ -0,0 +1,248 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: transformers
3
+ tags:
4
+ - transformers
5
+ - unsloth
6
+ - gemma3_text
7
+ - gemma
8
+ - finnish
9
+ - medical
10
+ - dental
11
+ - healthcare
12
+ - research-only
13
+ license: apache-2.0
14
+ language:
15
+ - fi
16
+ base_model: Finnish-NLP/Ahma-2-4B-Instruct
17
+ ---
18
+
19
+ # Finnish-DentalQA-v3
20
+
21
+ **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.
22
+
23
+ **RESEARCH USE ONLY - NOT FOR MEDICAL DECISIONS**
24
+
25
+ - **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))
26
+ - **Supported by:** [Entteri Professional Software Oy](https://www.entteri.com/) (makers of AssisDent dental PMS)
27
+ - **License:** apache-2.0
28
+ - **Base Model:** [Finnish-NLP/Ahma-2-4B-Instruct](https://huggingface.co/Finnish-NLP/Ahma-2-4B-Instruct) - Special thanks to Aapo Tanskanen and Rasmus Toivanen for creating this excellent Finnish LLM
29
+ - **Context Length:** Up to 128K input tokens, 8K output tokens (inherited from Ahma-2 base model)
30
+ - **Release Date:** January 7, 2026
31
+
32
+ Full fine-tuned model for Finnish dental medicine consultations between healthcare professionals. Trained on 50,132 synthetic dental conversations (approximately 80% expert clinical cases, 20% concept explanations) covering a broad range of different scenarios. Generated using pipeline with GPT-4.1.
33
+
34
+ **Version 3 Improvements:** This v3 release upgrades to the new Ahma-2-4B-Instruct base model, a significantly more capable 4B parameter Finnish LLM. The new base model features improved Finnish language understanding and generation quality through continued pretraining, supervised fine-tuning, and direct preference optimization. Training method changed from LoRA to full fine-tuning for maximum quality. Same proven dataset as v2.
35
+
36
+ **⚠️ Precision Requirement:** This model must be loaded in BF16 (`torch.bfloat16`). Ahma-2 is based on Gemma architecture which requires BF16 precision.
37
+
38
+ **Research Focus:** This model demonstrates domain-specific fine-tuning with accessible 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.
39
+
40
+ **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.
41
+
42
+ **Response Format:** The model is trained to structure all clinical responses in three sections: "### Tausta" (Background), "### Arvio" (Assessment), "### Suositus" (Recommendation).
43
+
44
+ **Context Limit:** Supports up to 128K input tokens and 8K output tokens for inference (training used 2048 token sequences).
45
+
46
+ This model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's Transformers library.
47
+
48
+ [<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth)
49
+
50
+ ## Model Comparison
51
+
52
+ | Version | Base Model | Parameters | Training Method | Dataset | Notes |
53
+ |---------|-----------|------------|-----------------|---------|-------|
54
+ | **v3** | Ahma-2-4B-Instruct | 4B | Full fine-tuning | 50,132 | Latest, highest quality |
55
+ | v2 | Ahma-3B-Instruct | 3B | LoRA | 50,132 | Enhanced dataset, available as LoRA and merged |
56
+ | v1 | Ahma-3B-Instruct | 3B | LoRA | 30,908 | Original release, available as LoRA and merged |
57
+
58
+ **v3 (this model)**: Full fine-tuned on Ahma-2-4B-Instruct, highest quality
59
+
60
+ **v2 LoRA Version**: [ducklingcodehouse/Finnish-DentalQA-v2-lora](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-lora) - Enhanced training (50,132 samples), separate adapter files, requires base model
61
+
62
+ **v2 Merged Version**: [ducklingcodehouse/Finnish-DentalQA-v2-merged](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-merged) - Same as v2 LoRA but merged into standalone model
63
+
64
+ **v1 LoRA Version**: [ducklingcodehouse/Finnish-DentalQA-lora](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-lora) - Original training dataset (30,908 samples), separate adapter files
65
+
66
+ **v1 Merged Version**: [ducklingcodehouse/Finnish-DentalQA-merged](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-merged) - Original training dataset, merged into standalone model
67
+
68
+ ## Installation
69
+
70
+ ```bash
71
+ pip install transformers torch accelerate
72
+ ```
73
+
74
+ ## Loading the Model
75
+
76
+ ```python
77
+ from transformers import AutoTokenizer, AutoModelForCausalLM
78
+ import torch
79
+
80
+ model = AutoModelForCausalLM.from_pretrained(
81
+ "ducklingcodehouse/Finnish-DentalQA-v3",
82
+ torch_dtype=torch.bfloat16, # Required: BF16 for Ahma-2
83
+ device_map="auto"
84
+ )
85
+ tokenizer = AutoTokenizer.from_pretrained("ducklingcodehouse/Finnish-DentalQA-v3")
86
+ ```
87
+
88
+ ## Generate Response
89
+
90
+ ```python
91
+ # Use exact system prompt from training
92
+ system_prompt = """Olet kokenut suomalainen hammaslääkäri. Vastaat ammattimaisesti kollegojesi
93
+ kysymyksiin käyttäen oikeaa hammaslääketieteellistä terminologiaa ja viittaat Käypä hoito
94
+ -suosituksiin kun relevanttia."""
95
+
96
+ user_question = """87-vuotias nainen, jolla on vaikea muistisairaus, asuu palvelutalossa ja on
97
+ kotihoidon piirissä. Potilaalla on hampaattomuus, yläleuan kokoproteesi ja alaleuassa 6
98
+ luonnollista hammasta. Lääkityksenä on mm. rivaroksabaani eteisvärinään, donepetsiili,
99
+ metoprololi, kalsium+D-vitamiini, sekä useita muita lääkkeitä (yhteensä 9). Suun limakalvot
100
+ ovat kuivat, kielessä fissuroitumista, ja proteesin alla lievää punoitusta. HbA1c 46 mmol/mol,
101
+ BMI 22. Kotihoito raportoi potilaan nielevän huonosti ja syljen erityksen olevan vähäistä.
102
+ Karies- ja parodontiittiriski arvioidaan korkeaksi. Miten suosittelisit suun hoidon
103
+ järjestämistä ja priorisointia tässä tilanteessa?"""
104
+
105
+ messages = [
106
+ {"role": "system", "content": system_prompt},
107
+ {"role": "user", "content": user_question}
108
+ ]
109
+
110
+ inputs = tokenizer.apply_chat_template(
111
+ messages,
112
+ tokenize=True,
113
+ add_generation_prompt=True,
114
+ return_tensors="pt"
115
+ ).to(model.device)
116
+
117
+ # Recommended settings (model supports up to 128K input / 8K output context)
118
+ with torch.no_grad():
119
+ outputs = model.generate(
120
+ inputs,
121
+ max_new_tokens=800,
122
+ temperature=0.1,
123
+ do_sample=True,
124
+ top_p=0.9,
125
+ repetition_penalty=1.2
126
+ )
127
+
128
+ response = tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)
129
+ print(response)
130
+
131
+ # Expected example response:
132
+ # ### Tausta
133
+ # Potilas on iäkäs, monisairas ja polyfarmasian vuoksi haavoittuvassa asemassa. Hampaattomuus
134
+ # ja proteesin käyttö yhdistettynä kuivaan suuhun lisäävät riskejä kuten sieni-infektioihin
135
+ # ja limakalvo-ongelmiin. Nielemisvaikeudet ja alentunut syljeneritys korostavat aspiraatioriskin
136
+ # hallinnan tarvetta. Antikoagulanttihoito (rivaroksabaani) tulee huomioida kaikissa
137
+ # invasiivisissa toimenpiteissä. Kotihoidon rooli on keskeinen päivittäisen suuhygienian
138
+ # toteutumisessa.
139
+ #
140
+ # ### Arvio
141
+ # Kliinisesti merkittäviä löydöksiä ovat kuivuminen, fissuroitunut kieli ja proteesistomatiitti.
142
+ # Korkea kariesriski liittyy sekä vähentyneeseen sylkeen että mahdolliseen heikentyneeseen
143
+ # omahoitoon. Parodontaalisairauksien riski kasvaa jäljellä olevien hampaiden määrän
144
+ # myötä. Muistisairaudet rajoittavat yhteistyökykyä ja edellyttävät yksinkertaisia
145
+ # ohjeita kotihoidolle. Käypä hoito -suositusten mukaan lyhennetyn hammaskaaren malli
146
+ # voi olla riittävä toiminnallisesti.
147
+ #
148
+ # ### Suositus
149
+ # Prioriteettina on kivuttoman ja infektiovapaan suun ylläpito: tehostettu mekaaninen
150
+ # puhdistus pehmeällä harjalla kahdesti päivässä, fluorilakkaus vastaanotolla neljännesvuosittain
151
+ # sekä klooriheksidiinigeeli paikallisesti riskialueille. Proteesi tulisi poistaa yöksi
152
+ # ja puhdistaa huolellisesti päivittäin. Syljenkorvikkeet tai keinotekoiset syljet
153
+ # voivat helpottaa oireita; ksylitolituotteet eivät ole ensisijaisia nielemishäiriön
154
+ # vuoksi. Säännölliset kontrollikäynnit suuhygienistin kanssa sekä tiivis yhteistyö
155
+ # kotihoidon henkilöstön kanssa ovat välttämättisiä. Tarvittaessa konsultoi erikoishammaslääkäriä
156
+ # mahdollisten sieni-infektiodiagnostiikan ja antifungaalisen hoidon osalta.
157
+ ```
158
+
159
+ ## Example
160
+
161
+ **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?
162
+
163
+ **Assistant:**
164
+ ### Tausta
165
+ Potilas esittää tyypillisiä akuutin perikoroniitin oireita: paikallinen turvotus, märkäkertymä sekä yleisoireet kuten kuume ja trismus (avausrajoitus). Puoliksi puhjenneen alaviisaudenhampaan ympäristöön kehittynyt infektio voi levitä nopeasti pehmytkudoksiin tai aiheuttaa syvempiä komplikaatioita. Yleistilan heikkeneminen näkyy tässä tapauksessa selvästi kohonneena lämpötilana (>38 °C) sekä rajoittuneena suun avaamisena (<30 mm), mikä lisää riskiä vakavammille infektioille.
166
+
167
+ ### Arvio
168
+ Kliinisesti kyseessä on vaikea akuutti perikoroniitti, jossa systeemiset oireet ovat jo ilmeisiä. Märkäkertymän koko ja potilaan yleisvointi edellyttävät välitöntä toimenpidettä infektion leviämisen estämiseksi. Suun avauksen rajoitus viittaa mahdolliseen lihasjäykkyyteen tai alkavaan flegmonaaliseen prosessiin submandibulaarialueella. Tilanne vaatii ripeää arviota mahdollisesta sairaalahoitoon ohjaamisesta.
169
+
170
+ ### Suositus
171
+ Ensihoitona tulee tehdä huolellinen mekaaninen debridementti eli irrottaa tulehtunut limakalvo hampaan kruunun alta steriilein instrumentein. Mikrobiologisen viljelyn kannalta otetaan bakteerinäyte ennen antibioottihoidon aloittamista. Aloitetaan empiirinen mikrobilääkehoito esimerkiksi amoksisilliini + metronidatsoli; penisilliiniallergiselle klindamysiini. Kipulääkitys toteutetaan parasetamolilla ja/tai ibuprofeenilla annosteluohjeiden mukaisesti. Tarvittaessa konsultoidaan erikoissairaanhoitoa jatkohoidosta tilanteen mukaan.
172
+
173
+ **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?
174
+
175
+ **Assistant:**
176
+ ### Tausta
177
+ Tilanne on edennyt nopeasti: kuume nousee entisestään yli 39 °C:n tasolle, suun avaus vähenee merkittävästi vain noin 10 mm:iin sekä kasvoalueen turvotus laajenee myös kaulan alueelle. Nieleminen muuttuu kivuliaaksi ja hengityksessä ilmenee rohinaa – tämä viittaa mahdolliseen syvemmälle levinneeseen infektioprosessiin kuten submandibulaariseen absessiin tai Ludwig'n anginaan.
178
+
179
+ ### Arvio
180
+ Kyseessä on henkeä uhkaavan infektion alkuvaihe: hengitysteiden ahtauma voi johtua pehmytkudosödeemasta tai varhaisesta mediastiniitista. Trismus yhdessä laaja-alaisen turvotuksen kanssa nostaa riskin hengitystiekomplikaatioihin erityisesti nuorilla aikuisilla. Tällaisissa tapauksissa pelkkä polikliininen seuranta ei riitä vaan tarvitaan välitöntä kirurgista interventiota.
181
+
182
+ ### Suositus
183
+ Suosittelen kiireellistä lähettämistä erikoissairaanhoidon yksikköön suukirurgiaan tai korva-, nenä- ja kurkkutauteihin päivystyksellisesti. Sairaalaolosuhteissa voidaan tehdä tarvittavat kuvantamistutkimukset (esim. KKTT), aloittaa suonensisäinen antibioottihoito sekä harkita kirurgista dreneerausta anestesiassa. Hengitysteiden turvaaminen priorisoidaan aina ennen muita toimenpiteitä.
184
+
185
+ ## Training Details
186
+ - **Method:** Full fine-tuning (all parameters trained)
187
+ - **Base Model:** Finnish-NLP/Ahma-2-4B-Instruct (4B parameters)
188
+ - **Learning Rate:** 5e-5
189
+ - **Epochs:** 2 (checkpoint at 2968 steps)
190
+ - **Quantization:** None (full precision training)
191
+ - **Batch Size:** 8, gradient_accumulation=4 (effective batch size 32)
192
+ - **Precision:** BF16 (native precision for Ahma-2)
193
+ - **Data:** 50,132 conversations covering a broad range of different scenarios
194
+ - **Training Context:** 2048 tokens (model supports up to 128K input / 8K output)
195
+ - **Hardware:** H100 GPU with Unsloth optimizations
196
+ - **Training Performance:** Eval loss 0.426, train loss 0.331 at release checkpoint
197
+
198
+ ## Limitations and Important Notes
199
+
200
+ **Critical Medical Disclaimers:**
201
+ - Research purposes only - never use for actual medical decisions
202
+ - Model may hallucinate medical facts, treatments, or drug interactions
203
+ - Outputs have not been clinically validated and may contain medical misinformation
204
+ - All outputs require independent professional verification before any clinical application
205
+ - No liability is assumed for any consequences of model use
206
+
207
+ **Technical Limitations:**
208
+ - Primarily trained for dentist-to-dentist consultations - concept explanations included but not the main focus
209
+ - May particularly hallucinate on out-of-scope topics (further training could address this)
210
+ - Further fine-tuning may be needed for specific use cases
211
+ - System prompt dependency - using the training prompt is highly recommended
212
+ - Training used 2048 token sequences; inference supports full 128K/8K context but quality on very long sequences is untested
213
+ - No formal evaluation - quality assessment has been primarily subjective
214
+
215
+ **Bias and Fairness:**
216
+ - Training data consists of synthetic conversations which may contain inherent biases
217
+ - Model responses may reflect biases present in the GPT-4.1 generated training data
218
+ - Geographic and cultural biases toward Finnish dental practices and protocols
219
+ - Potential underrepresentation of certain patient demographics or clinical scenarios
220
+
221
+ ## Related Models
222
+ - v2 LoRA version: [ducklingcodehouse/Finnish-DentalQA-v2-lora](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-lora)
223
+ - v2 Merged version: [ducklingcodehouse/Finnish-DentalQA-v2-merged](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v2-merged)
224
+ - v1 LoRA version: [ducklingcodehouse/Finnish-DentalQA-lora](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-lora)
225
+ - v1 Merged version: [ducklingcodehouse/Finnish-DentalQA-merged](https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-merged)
226
+ - Base model: [Finnish-NLP/Ahma-2-4B-Instruct](https://huggingface.co/Finnish-NLP/Ahma-2-4B-Instruct)
227
+
228
+ ## Citation
229
+
230
+ If you use this model, please cite both this work and the base Ahma model:
231
+
232
+ ```bibtex
233
+ @misc{finnish-dentalqa-v3,
234
+ author = {Saxén, Heikki},
235
+ title = {Finnish-DentalQA-v3: Full Fine-tuned Model for Finnish Dental Medicine},
236
+ year = {2026},
237
+ publisher = {Hugging Face},
238
+ url = {https://huggingface.co/ducklingcodehouse/Finnish-DentalQA-v3}
239
+ }
240
+
241
+ @misc{ahma-2-4b-instruct,
242
+ author = {Tanskanen, Aapo and Toivanen, Rasmus},
243
+ title = {Ahma-2-4B-Instruct},
244
+ year = {2025},
245
+ publisher = {Hugging Face},
246
+ url = {https://huggingface.co/Finnish-NLP/Ahma-2-4B-Instruct}
247
+ }
248
+ ```