CoolFace
Modelpublic

NebulaPixel/SummOrchestra-3B-GRPO-BRL-CSDS

sourceHugging Faceapache-2.0updated 11mo agoView on Hugging Face
1likes13downloads
Model Card

SummOrchestra: Coordinating Multi-role Dialogue Understanding and Summarization

📊 Performance Comparison of SummOrchestra on the CSDS Dataset

ModelTraining MethodROUGE-1ROUGE-2ROUGE-LBERTScore
gpt-4.1-42.9114.0832.0477.37
gpt-4.1-mini-42.7814.1132.3177.40
gpt-4o-48.5219.5936.5579.51
gpt-4o-mini-45.8716.9333.8278.28
gpt-5-39.7211.4728.9875.63
gpt-5-mini-41.5412.9530.1576.68
qwen2.5-3BSFT56.8731.3547.4082.58
qwen2.5-3BGRPO(B+R+L)58.9133.4749.6983.36
qwen2.5-7BSFT58.1133.1949.0583.29
qwen2.5-7BGRPO(B+R+L)59.3234.5350.4083.64
Note: - Results are evaluated on the CSDS (Chinese Summarization Dialogues Dataset). - ROUGE scores are computed using `rouge-chinese` with F1-based evaluation. - BERTScore is calculated using the `google-bert/bert-base-chinese` model. - GRPO (B+R+L) indicates that the reward function combines BERTScore (B), ROUGE (R), and Length (L)

rewards.

🧩 Example: Using Your Fine-Tuned Summarization Model

This is a minimal example showing how to load and run our model.

📦 Install dependencies

bash
pip install transformers torch

Run and infere Results

python
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "dada122/SummOrchestra-7B-GRPO-BRL-CSDS"

tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Example input (same structure as your dataset)
messages = [
    {"role": "system", "content": "You are a summarization assistant."},
    {
        "role": "user",
        "content": (
            "Summarize the following conversation:\n"
            "agent: 有什么问题我可以帮您处理或解决呢?\n"
            "user: 你好\n"
            "user: 以前的手机号码销号了,密码也忘了\n"
            "agent: ..."
        )
    }
]

# Convert messages into a single text string
input_text = "\n".join(f"{m['role']}: {m['content']}" for m in messages)

# Generate the summary
inputs = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))