--- language: - en license: apache-2.0 base_model: HuggingFaceTB/SmolLM3-3B tags: - clinical - medical - sentence-classification - multi-label - action-items - discharge-summary - lora - peft datasets: - chrisvoncsefalvay/smol-discharge-sentences-sft metrics: - f1 - accuracy pipeline_tag: text-generation library_name: peft --- # SmolLM3-Instruct Discharge Sentences SFT A fine-tuned version of [SmolLM3-3B](https://huggingface.co/HuggingFaceTB/SmolLM3-3B) for **multi-label clinical sentence classification** in hospital discharge summaries. ## Model Description This model classifies individual sentences from discharge summaries into categories of follow-up actions: - **instructions**: Case-specific instructions for the patient - **appointment**: Appointment-related followup - **medication**: Medication-related followups - **lab**: Lab-related followup - **procedure**: Procedure-related followup - **imaging**: Imaging-related followup - **other**: Other helpful contextual information ## Performance Evaluated on 5,313 test samples: | Metric | Score | |--------|-------| | **JSON Validity** | 100.0% | | **Exact Match Accuracy** | 85.6% | | **Micro F1** | 0.796 | | **Macro F1** | 0.647 | | **Micro Precision** | 0.854 | | **Micro Recall** | 0.745 | ### Per-Category Performance | Category | Precision | Recall | F1 | Support | |----------|-----------|--------|-----|---------| | instructions | 0.873 | 0.745 | 0.804 | 1153 | | appointment | 0.848 | 0.902 | 0.874 | 660 | | medication | 0.797 | 0.674 | 0.730 | 239 | | lab | 0.909 | 0.606 | 0.727 | 132 | | procedure | 0.700 | 0.400 | 0.509 | 35 | | imaging | 0.909 | 0.541 | 0.678 | 37 | | other | 0.526 | 0.127 | 0.204 | 79 | ### Comparison with Base SFT Model | Metric | Base SFT | Instruct SFT | Improvement | |--------|----------|--------------|-------------| | JSON Validity | 97.5% | 100.0% | +2.5 pp | | Exact Match | 76.3% | 85.6% | **+9.3 pp** | | Micro F1 | 0.631 | 0.796 | **+26%** | | Macro F1 | 0.568 | 0.647 | +14% | | Micro Recall | 0.553 | 0.745 | **+35%** | ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel # Load base model and adapter base_model = AutoModelForCausalLM.from_pretrained( "HuggingFaceTB/SmolLM3-3B", torch_dtype="auto", device_map="auto", ) model = PeftModel.from_pretrained(base_model, "chrisvoncsefalvay/smollm3-instruct-discharge-sentences-sft") tokenizer = AutoTokenizer.from_pretrained("chrisvoncsefalvay/smollm3-instruct-discharge-sentences-sft") # Prepare input messages = [ {"role": "system", "content": "You are a clinical action item classifier..."}, {"role": "user", "content": "Classify this sentence:\n\nPlease take aspirin 81mg daily."} ] input_text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False) inputs = tokenizer(input_text, return_tensors="pt").to(model.device) # Generate outputs = model.generate(**inputs, max_new_tokens=64, temperature=0.1) response = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True) print(response) # {"categories": ["medication", "instructions"]} ``` ## Training Details - **Base Model**: HuggingFaceTB/SmolLM3-3B (instruction-tuned) - **Method**: LoRA (r=64, alpha=128, dropout=0.1) - **Target Modules**: q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj - **Dataset**: [chrisvoncsefalvay/smol-discharge-sentences-sft](https://huggingface.co/datasets/chrisvoncsefalvay/smol-discharge-sentences-sft) - **Training Samples**: 25,782 - **Epochs**: 3 - **Learning Rate**: 5e-5 - **Effective Batch Size**: 16 - **Precision**: bf16 ## Advantages Over Base Model Using the instruction-tuned SmolLM3-3B as a base provides: 1. **Perfect JSON validity** (100%) - built-in chat template ensures reliable structured output 2. **Significantly higher recall** (+35%) - better at identifying action items 3. **No custom template needed** - uses standard chat format ## Citation If you use this model, please cite: ```bibtex @misc{smollm3-instruct-discharge-sft, author = {von Csefalvay, Chris}, title = {SmolLM3-Instruct Discharge Sentences SFT}, year = {2025}, publisher = {HuggingFace}, url = {https://huggingface.co/chrisvoncsefalvay/smollm3-instruct-discharge-sentences-sft} } ``` ## License Apache 2.0