/ Модель

Характеристики

Лицензия
Apache 2.0
Базовая модель
Qwen3-8B
Опубликована
26 авг 2026

Qwen3-8B-UnBias-Plus-SFT-Instruct-V2

Генерация текстаТекст → текст4 профессии

Дообученная модель Qwen3-8B для обнаружения предвзятых формулировок в новостях, оценки их серьёзности и нейтрального переписывания статей.

2скачиваний за 30 дней2лайкавеса обновлены30 авг 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Qwen3-8B-UnBias-Plus-SFT-Instruct-V2 — дообученная Vector Institute модель для выявления предвзятости в новостных материалах и нейтрального переписывания текста. По статье она отмечает отдельные фрагменты с предвзятой формулировкой, классифицирует тип и серьёзность каждого фрагмента, выставляет общую оценку статье и возвращает её нейтральную версию в структурированном JSON. Этот репозиторий является форком модели Vector Institute с файлами для развёртывания на Hugging Face Inference Endpoint; сами веса не изменены.

Модель основана на Qwen/Qwen3-8B и обучена методом supervised fine-tuning с LoRA на 5 000 размеченных новостных статей UnBias-Plus. Вариант V2 работает без блоков chain-of-thought и предназначен для прямого вывода структурированного JSON. Он консервативно отмечает явную существенную предвзятость, при этом всегда помечает токсичные и дегуманизирующие формулировки; при переписывании изменяет только отмеченные фрагменты. Базовая модель Qwen3-8B многоязычная, однако эта карточка описывает англоязычные обучающие данные и сценарии.

Для использования требуется корректный обучающий системный промпт; пакет unbias-plus помогает подготовить запрос и обработать результат. Модель распространяется по лицензии Apache-2.0. Оценки и разметка отражают заданные моделью категории и могут пропускать менее очевидную или контекстно зависимую предвзятость.

Сценарии применения

  • Поиск предвзятых фрагментов в новостной статье
  • Классификация типа предвзятости и её серьёзности
  • Оценка общего уровня предвзятости статьи
  • Нейтральное переписывание новостного текста
  • Формирование структурированной JSON-разметки новостных материалов

Ограничения

Модель настроена на консервативное выявление явной существенной предвзятости, поэтому может не отмечать менее очевидные или зависящие от контекста случаи. Для наиболее точного формата результата требуется использовать системный промпт, применённый при обучении.

Для каких профессий подходит4

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

NOTE ON THIS MODEL VERSION:

This is a fork of the vector-institute/Qwen3-8B-UnBias-Plus-SFT-Instruct-V2 with an added requirements.txt file as well as a handler.py, in order to be deployable on a Huggingface Inference Endpoint. I have not changed anything about the model itself.

handler.py uses the unbias-plus Python package to take in text as input and return the following dictionary when the model is invoked:

{
  "severity": 0,
  "biased_segments": [
    {
      "original": "exact substring from input article",
      "replacement": "neutral alternative phrase (or empty string to delete)",
      "severity": "Low | Medium | High",
      "bias_type": "loaded_language | euphemism | dehumanizing_language | opinion_as_fact | unsupported_generalization | stereotypical_association | sensationalism | informational_bias",
      "reasoning": "short, specific explanation of the linguistic cue"
    }
  ],
  "unbiased_text": "Full rewritten neutral article"
}

(See below for further information)

Qwen3-8B-UnBias-Plus-SFT-Instruct-V2

A fine-tuned version of Qwen3-8B for news media bias detection and neutral rewriting, developed by the Vector Institute as part of the UnBias-Plus project.

Given a news article, the model identifies biased language segments, classifies each segment's bias type and severity, provides neutral replacements, assigns a single article-level severity score, and returns a fully rewritten unbiased version, all in a single structured JSON response.

This is the V2 Instruct variant, trained without chain-of-thought thinking blocks (enable_thinking=False). It produces clean structured JSON directly, making it suitable for production inference via vLLM or other OpenAI-compatible backends.

V2 is trained as a conservative span-level bias annotator: it flags only clear, material bias (while always flagging toxic/dehumanizing language), applies a strict bias-type label precedence, treats attributed/quoted language under the same standard, and changes only flagged text when producing the rewrite.

Trained on: train_4 (5,000 expert-annotated news articles)

Difference from Qwen3-8B-UnBias-Plus-SFT-Instruct

SFT-Instruct (predecessor)SFT-Instruct-V2 (this model)
Training datatrain_3 (UnBias-Plus-3000)train_4 (5,000 expert-annotated articles)
Article severity scale0, 1, 2, 3, 40–10 integer
Segment severitylow / medium / highLow / Medium / High
Output fieldsseverity, bias_found, biased_segments, unbiased_textseverity, biased_segments, unbiased_text (label/bias_found derived downstream)
Bias type taxonomy7 free-form labels8 canonical slugs with strict label precedence
System promptBias detection + rewrite rulesConservative span-level annotator (label precedence, attribution handling, toxicity rules, audit step)

Model Details

PropertyValue
Base modelQwen/Qwen3-8B
Fine-tuning methodSupervised Fine-Tuning (SFT) with LoRA
Training precisionbf16 (full precision, no quantization during training)
LoRA rank16
Training frameworkUnsloth + TRL
Context length8192 tokens
Thinking modeDisabled (enable_thinking=False)
Output formatStructured JSON
Training datasettrain_4 (5,000 expert-annotated articles)

Usage

The exact system prompt used during training is maintained in src/unbias_plus/prompt.py (SYSTEM_PROMPT). For faithful results, use that prompt verbatim — a condensed version is shown below for illustration. The easiest path is to use the unbias-plus package, which wires up the prompt, parsing, and offset computation for you.

Using with transformers

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch, json

model_id = "vector-institute/Qwen3-8B-UnBias-Plus-SFT-Instruct-V2"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)
model.eval()

# Use the full SYSTEM_PROMPT from src/unbias_plus/prompt.py for best results.
SYSTEM_PROMPT = """You are a conservative span-level bias annotator.

Given an article, identify material biased language, assign one article-level
severity score (0-10), and produce a neutral rewrite that changes only flagged
text. Return the result only as a single valid JSON object with the fields
`severity`, `biased_segments`, and `unbiased_text`. Do not output `binary_label`
or `bias_found`. Do not write anything outside the JSON object."""

article = "Your news article here..."

messages = [
    {"role": "system", "content": SYSTEM_PROMPT},
    {"role": "user", "content": f"Analyze the following article for bias and return the result in the required JSON format.\n\nARTICLE:\n{article}"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    enable_thinking=False,
    return_tensors="pt",
    return_dict=True,
    truncation=True,
    max_length=8192,
)

with torch.no_grad():
    outputs = model.generate(
        input_ids=inputs["input_ids"].to(model.device),
        attention_mask=inputs["attention_mask"].to(model.device),
        max_new_tokens=4096,
        do_sample=False,
        temperature=None,
        top_p=None,
        pad_token_id=tokenizer.eos_token_id,
    )

new_tokens = outputs[0][inputs["input_ids"].shape[1]:]
response = tokenizer.decode(new_tokens, skip_special_tokens=True)
result = json.loads(response)

Using with vLLM

vllm serve vector-institute/Qwen3-8B-UnBias-Plus-SFT-Instruct-V2 \
  --served-model-name unbias-plus \
  --max-model-len 8192 \
  --dtype bfloat16
from openai import OpenAI
import json

client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")

completion = client.chat.completions.create(
    model="unbias-plus",
    messages=messages,
    max_tokens=4096,
    temperature=0,
    extra_body={"chat_template_kwargs": {"enable_thinking": False}},
)
result = json.loads(completion.choices[0].message.content)

Output Schema

The model emits exactly three fields. binary_label and bias_found are not produced by the model — they are derived downstream from severity (severity > 0 ⇒ biased).

{
  "severity": 0,
  "biased_segments": [
    {
      "original": "exact substring from input article",
      "replacement": "neutral alternative phrase (or empty string to delete)",
      "severity": "Low | Medium | High",
      "bias_type": "loaded_language | euphemism | dehumanizing_language | opinion_as_fact | unsupported_generalization | stereotypical_association | sensationalism | informational_bias",
      "reasoning": "short, specific explanation of the linguistic cue"
    }
  ],
  "unbiased_text": "Full rewritten neutral article"
}
  • severity is an integer 0–10 (article-level).
  • Each segment's severity is a string: Low, Medium, or High.
  • bias_type is exactly one of the eight canonical slugs listed below.
  • If biased_segments is empty, article severity is 0. If severity > 0, there is at least one segment.

Article-level Severity Scale

ValueMeaning
0No biased segments
1–5Limited, low, or moderate bias
6–10Strong, recurring, or highly distorting bias

Bias Types Detected

V2 assigns exactly one primary bias_type per segment, using the following label precedence (first applicable label wins):

  1. dehumanizing_language — treats people or groups as less than human, as a threatening mass, or as inherently dangerous (e.g. "vermin", "flood of migrants").
  2. stereotypical_association — assigns traits, roles, or motives to a demographic/social/political/protected group, links identity to suspicion or wrongdoing, or reduces a group to a single function.
  3. sensationalism — hyperbolic, alarmist, or dramatic language that inflates significance (e.g. "bombshell", "catastrophe", "sparks fury").
  4. opinion_as_fact — an unattributed subjective or evaluative judgment presented as fact (e.g. "the policy is a failure").
  5. unsupported_generalization — a sweeping or absolute claim about a group or situation without support (e.g. "everyone knows", "immigrants always").
  6. euphemism — softened or vague wording that minimizes, hides, or downplays harmful facts (e.g. "collateral damage", "enhanced interrogation").
  7. informational_bias — authorial framing that visibly treats one side, source, or claim differently in a way that steers interpretation.
  8. loaded_language — clearly charged, morally weighted, editorial, toxic, abusive, or inflammatory wording not covered by a more specific type (e.g. "thugs", "so-called reform").

Hardware Requirements

SetupConfiguration
Recommended (server)torch_dtype=torch.bfloat16, device_map="auto" (~16GB VRAM)
Lightweight (laptop)load_in_4bit=True (~5GB VRAM)

Model Variants

ModelParamsContextBest for
Qwen3.5-4B-UnBias-Plus-SFT-Instruct4B4096Speed, low VRAM
Qwen3-8B-UnBias-Plus-SFT-Instruct-V2 (this)8B8192Higher recall, longer articles, production deployment

Citation

  title={UnBias-Plus: Detect, Explain, and Rewrite Bias},
  author={Radwan, Ahmed Y and ElKady, Ahmed and Chaduvula, Sindhuja and Hafez, Mohamed and Krishnan, Amrit and Raza, Shaina},
  journal={arXiv preprint arXiv:2606.23412},
  year={2026}
}

Links

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

Доступ к модели ограничен автором; у платформы нет доступа к весам.

Ревизия весов
f1f95bb

0 моделей