cradle-dialogue-qwen3-32b-2epoch

A Qwen3-32B model fine-tuned for turn-level mental health crisis detection in multi-turn conversations. This is the best-performing checkpoint (epoch 2) from 3-epoch training, as reported in the CRADLE-Dialogue paper.

โš ๏ธ Content Warning: This model is designed to detect sensitive topics including suicide ideation, self-harm, rape, domestic violence, and child abuse.

Model Description

Full fine-tune of Qwen/Qwen3-32B, trained on the CRADLE-Dialogue synthetic training corpus โ€” 3,058 dialogues (48,557 turns) generated from Reddit posts via GPT-5 and annotated with structured Alertโ€“Confirm labels.

Given a multi-turn dialogue and the model's own previous predictions, the model assigns a crisis label to the current user turn only.

Performance

Evaluated on the CRADLE-Dialogue test set (600 clinician-annotated dialogues):

Setting Metric Score
Turn-Level Micro F1 51.31
Turn-Level Macro F1 54.96
Turn-Level Micro Recall 54.99
Dialogue-Level Micro F1 68.88
Dialogue-Level Macro F1 69.29
Dialogue-Level (Confirm Only) Micro F1 76.03

Outperforms all open-source baselines and achieves competitive results against Claude-4.5-Sonnet and GPT-5.1.

Output Format

The model outputs exactly one line per inference call:

none
alert_ongoing
alert_past
confirm_SI_passive_ongoing
confirm_SH_past
confirm_DV_ongoing; confirm_RA_past   # multi-label, separated by "; "

Inference

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

model_id = "SungJoo/cradle-dialogue-qwen3-32b-2epoch"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    trust_remote_code=True,
)

SYSTEM_MSG = (
    "You are a clinical dialogue safety annotator. "
    "Return EXACTLY ONE LINE: the label(s) or 'none'. "
    "No commentary, no reasoning, no markdown."
)

# Build your prompt using the full evaluation prompt template from the paper.
# At each turn, provide: full dialogue history + model's previous predictions + current user turn.
messages = [
    {"role": "system", "content": SYSTEM_MSG},
    {"role": "user", "content": YOUR_PROMPT},
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=False,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=64,
        do_sample=False,
    )

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

Training Details

Config Value
Base model Qwen/Qwen3-32B
Fine-tuning method Full fine-tune (no LoRA)
Total epochs 3 (this checkpoint: epoch 2, best val loss)
Learning rate 5e-6
Batch size 1 (per device)
Gradient accumulation 16
Max sequence length 4096
Precision bfloat16
Hardware 2ร— NVIDIA H200
LR scheduler Cosine with warmup (ratio=0.05)

Intended Use

This model is intended for research purposes in clinical NLP and crisis detection. It is not a substitute for professional mental health assessment or crisis intervention.

Related Resources

Downloads last month
5
Safetensors
Model size
33B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for SungJoo/cradle-dialogue-qwen3-32b-2epoch

Base model

Qwen/Qwen3-32B
Finetuned
(537)
this model

Dataset used to train SungJoo/cradle-dialogue-qwen3-32b-2epoch