Text Generation
Transformers
Safetensors
Arabic
English
qwen2
propaganda-detection
persuasion-techniques
span-identification
explainability
lora
conversational
text-generation-inference
Instructions to use QCRI/ProBel-MTL with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use QCRI/ProBel-MTL with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="QCRI/ProBel-MTL") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("QCRI/ProBel-MTL") model = AutoModelForCausalLM.from_pretrained("QCRI/ProBel-MTL", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use QCRI/ProBel-MTL with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "QCRI/ProBel-MTL" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "QCRI/ProBel-MTL", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/QCRI/ProBel-MTL
- SGLang
How to use QCRI/ProBel-MTL with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "QCRI/ProBel-MTL" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "QCRI/ProBel-MTL", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "QCRI/ProBel-MTL" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "QCRI/ProBel-MTL", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use QCRI/ProBel-MTL with Docker Model Runner:
docker model run hf.co/QCRI/ProBel-MTL
| license: apache-2.0 | |
| base_model: Qwen/Qwen2.5-7B-Instruct | |
| language: | |
| - ar | |
| - en | |
| pipeline_tag: text-generation | |
| library_name: transformers | |
| datasets: | |
| - QCRI/ProBel | |
| tags: | |
| - propaganda-detection | |
| - persuasion-techniques | |
| - span-identification | |
| - explainability | |
| - lora | |
| # ProBel-MTL | |
| The bilingual multi-task model from the ProBel paper (Mt-SFT): a single | |
| Qwen2.5-7B-Instruct fine-tune that handles all five ProBel tasks in both Arabic | |
| and English — binary propaganda detection, coarse-category and fine-grained | |
| technique classification (with explanations), and technique-labeled span | |
| extraction in two output formats. | |
| Trained with LoRA (r=16, alpha=32) on the Arabic and English training splits of | |
| [QCRI/ProBel](https://huggingface.co/datasets/QCRI/ProBel) across all five task | |
| formats jointly; the checkpoint was selected on validation loss and merged into | |
| the base model, so it loads as a regular causal LM. The LoRA adapter alone is | |
| in `lora_adapter/`. | |
| Companion resources: [dataset](https://huggingface.co/datasets/QCRI/ProBel) · | |
| [code](https://github.com/MohamedBayan/ProBel) · paper: *ProBel: Propaganda | |
| Detection with Techniques, Spans, and Explanations* (arXiv preprint; the link | |
| will be added here once the listing is live). | |
| ## Test scores | |
| | | Binary | Coarse | Technique | Span-tag | Span-occ | | |
| |---|---|---|---|---|---| | |
| | Arabic | 0.763 | 0.682 | 0.575 | 0.411 | 0.362 | | |
| | English | 0.735 | 0.410 | 0.272 | 0.189 | 0.241 | | |
| Binary is macro-F1; coarse/technique are micro-F1; spans use the | |
| overlap-adjusted micro-F1 of Da San Martino et al. (2020). These match the | |
| paper's Mt-SFT rows and were produced with greedy decoding. | |
| ## Prompt templates | |
| The model expects the exact task prompts it was trained on. | |
| [`prompts/templates.json`](prompts/templates.json) ships all ten of them — | |
| `{arabic, english} x {binary, coarse, multilabel, span_tag, span_match_occ}` — | |
| each a `{"system": ..., "user": ...}` pair where the user message contains a | |
| `{TEXT}` placeholder for the input sentence. | |
| | Task | Model output | | |
| |---|---| | |
| | `binary` | `Label: true` or `Label: false`, then `Explanation: ...` | | |
| | `coarse` / `multilabel` | `Labels: <names or none>`, then `Explanation: ...` | | |
| | `span_tag` | the input sentence with inline `<span type="Technique">...</span>` tags | | |
| | `span_match_occ` | a JSON list of `{"text", "label", "occurrence"}` objects | | |
| Arabic templates carry the same task instructions with an Arabic-specialized | |
| system prompt; the model answers Arabic inputs in Arabic. | |
| ## Usage | |
| ```bash | |
| pip install "transformers>=4.51" accelerate | |
| ``` | |
| Binary detection with an explanation: | |
| ```python | |
| import json | |
| from huggingface_hub import hf_hub_download | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| templates = json.load(open(hf_hub_download("QCRI/ProBel-MTL", "prompts/templates.json"))) | |
| model = AutoModelForCausalLM.from_pretrained("QCRI/ProBel-MTL", | |
| dtype="bfloat16", device_map="auto") | |
| tok = AutoTokenizer.from_pretrained("QCRI/ProBel-MTL") | |
| def run(task, lang, text, max_new_tokens=512): | |
| t = templates[lang][task] | |
| msgs = [{"role": "system", "content": t["system"]}, | |
| {"role": "user", "content": t["user"].replace("{TEXT}", text)}] | |
| ids = tok.apply_chat_template(msgs, add_generation_prompt=True, | |
| return_tensors="pt").to(model.device) | |
| out = model.generate(ids, max_new_tokens=max_new_tokens, do_sample=False) | |
| return tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True) | |
| print(run("binary", "english", | |
| "The corrupt elites are destroying everything we hold dear.")) | |
| # Label: true | |
| # Explanation: The paragraph relies on a sweeping, emotive accusation that | |
| # unnamed "elites" are ruining "everything we hold dear" ... | |
| ``` | |
| Technique-labeled span extraction (same helper): | |
| ```python | |
| print(run("span_tag", "english", | |
| "The corrupt elites are destroying everything we hold dear.")) | |
| # <span type="Appeal_to_Fear-Prejudice">The corrupt elites are destroying | |
| # everything we hold dear.</span> | |
| print(run("multilabel", "arabic", | |
| "الإعلام الكاذب يواصل نشر أكاذيبه المسمومة لتضليل الشعب.")) | |
| # Labels: Loaded_Language, Questioning_the_Reputation | |
| # Explanation: يستخدم النص لغة محملة بالعواطف مثل "الكاذب" و"أكاذيبه المسمومة" ... | |
| ``` | |
| The model also serves directly with vLLM: | |
| ```bash | |
| vllm serve QCRI/ProBel-MTL | |
| ``` | |
| The parsers that turn the span outputs back into character offsets, and the | |
| full evaluation pipeline, are in the | |
| [code repository](https://github.com/MohamedBayan/ProBel). | |
| ## Intended use and limitations | |
| Built for research on propaganda and persuasion-technique analysis in news and | |
| social-media text. Predictions are imperfect, technique performance follows the | |
| long-tailed label distribution (rare techniques are often missed), and outputs | |
| should support trained human reviewers rather than replace them, particularly | |
| in moderation or policy settings. | |
| ## Citation | |
| ```bibtex | |
| @misc{kmainasi2026probelpropagandadetectiontechniques, | |
| title={ProBel: Propaganda Detection with Techniques, Spans, and Explanations}, | |
| author={Mohamed Bayan Kmainasi and Ali Ezzat Shahroor and Elisa Sartori and Giovanni Da San Martino and Firoj Alam}, | |
| year={2026}, | |
| eprint={2608.22388}, | |
| archivePrefix={arXiv}, | |
| primaryClass={cs.CL}, | |
| url={https://arxiv.org/abs/2608.22388}, | |
| } | |
| ``` | |