/ Модель

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

Контекст
32 768 токенов
Параметры
3,7 млрд
Лицензия
AGPL 3.0
Архитектура
qwen3 · dense
Базовая модель
Qwen3-4B-Base
Библиотека
transformers
Опубликована
1 окт 2026

prose-rewriter-4b-v2.2

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

Англоязычная модель на базе Qwen3 для переписывания абзацев художественной прозы в более естественном стиле с сохранением исходного смысла.

355скачиваний за 30 дней0лайковвеса обновлены1 окт 2026

Бенчмарки

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

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

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

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

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

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

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

Prose Rewriter 4B v2.2 — модель для переписывания прозы, созданная автором репозитория на базе Qwen/Qwen3-4B-Base с дообучением LoRA rank 32, слитым с весами с коэффициентом 1,20. Модель переформулирует абзац, написанный большой языковой моделью, стремясь сделать текст более естественным и сохранить исходный смысл. Это плотная причинная языковая модель Qwen3 примерно с 3,7 млрд параметров и контекстом 32 768 токенов; доступны веса Safetensors и варианты GGUF Q8_0 и Q4_K_M. Модель рассчитана на английскую художественную прозу, диалоги и повествование от первого или третьего лица. Она принимает один абзац за вызов в специальном формате source/rewrite и предназначена для перефразирования, а не для диалога или выполнения инструкций.

В оценке автора версия 2.2 реже повторяла фразы и предложения и реже добавляла неподтверждённое исходником содержание, чем версия 2.1. Однако модель всё ещё может придумывать местоимения или другие детали, повторяться и заметно сокращать текст; при коротком вводе она может дополнять, обрезать или выдумывать содержание. Практический минимум — около 15 слов, а техническая документация не является целевым жанром. Модель распространяется по лицензии AGPL-3.0.

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

  • переписывание абзацев англоязычной художественной прозы
  • редактирование прозы, созданной языковой моделью
  • снижение повторов в повествовательном тексте
  • переформулирование диалогов и художественных описаний

Ограничения

Предназначена для художественной прозы на английском языке, не для технической документации или диалога с моделью; обрабатывает один абзац за вызов, а на коротком вводе может дополнять, обрезать или выдумывать текст. Иногда добавляет неподтверждённые детали, повторяется или существенно сокращает исходник, поэтому результат следует проверять, особенно если важны персонажи и длина.

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

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

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

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

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

Открыть на Hugging Face

prose-rewriter-4b-v2.2

A paragraph-level prose rewriter: it takes prose written by a large model and re-renders it to be more human, preserving the semantics it was given.

Qwen/Qwen3-4B-Base with a rank-32 LoRA merged in at strength 1.20.

A third less repetition. Every training target that repeats itself -- the same sentence twice, a phrase said again, three sentences opening on the same words, happy, happy -- is now rejected, so the pool only ever shows the model the repetition going away. Rewrites that repeat themselves fall from 13.5% to 8.7%.

Less unsupported content, less slop vocabulary, at the same strength as v2.1. See Evaluation.

Variants

PathFormatUse with
/safetensors bf16, qwen3 archtransformers
GGUF/prose-rewriter-4b-v2.2-Q8_0.ggufGGUF Q8_0, 4.69 GBllama.cpp / llama-cpp-python
GGUF/prose-rewriter-4b-v2.2-Q4_K_M.ggufGGUF Q4_K_M, 2.72 GBllama.cpp / llama-cpp-python

The quants carry the chat template and stop on <|im_end|>, and the adapted output head is kept separate from the token embeddings, stored at Q8_0.

Prompt format

<|im_start|>source
{paragraph}<|im_end|>
<|im_start|>rewrite

The chat template in this repo builds exactly that string, byte for byte, from one message:

messages = [{"role": "source", "content": paragraph}]
tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

It is not a chat model. Every message is rendered as the source paragraph, so a runtime that probes the template with a user message still gets a valid prompt. Send one message per call.

Serving recipe

Sampled at temperature=0.9, top_p=0.9. However, temperature 0.9 hallucinates harder because this release edits harder than v2. It's recommended you use 0.8-0.85 instead.

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "chartreuse-verte/prose-rewriter-4b-v2.2"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, dtype=torch.bfloat16, device_map="cuda").eval()

def rewrite(paragraph):
    text = tok.apply_chat_template(
        [{"role": "source", "content": paragraph}],
        tokenize=False, add_generation_prompt=True,
    )
    ids = tok(text, return_tensors="pt", add_special_tokens=False).input_ids.to(model.device)
    out = model.generate(ids, max_new_tokens=512, do_sample=True, temperature=0.9, top_p=0.9)
    return tok.decode(out[0, ids.shape[1]:], skip_special_tokens=True).strip()

Same thing under llama.cpp. The role is source, which no chat API models, so build the string yourself; <|im_end|> stops it:

llama-cli -m GGUF/prose-rewriter-4b-v2.2-Q8_0.gguf -no-cnv -n 512 --temp 0.9 --top-p 0.9 \
  -p '<|im_start|>source
{paragraph}<|im_end|>
<|im_start|>rewrite
'

Input length

The training pool's median input is 37 words and 80% of it is under 70, so serve it on anything from a full sentence up.

The practical floor is about 15 words. Below it the failure mode is padding, cutting and fabrication rather than gibberish. Below 80 bytes, pass the text through unchanged.

Evaluation

Both releases measured as they ship, baked at strength 1.20, on 365 held-out paragraphs of LLM-written prose that neither model saw in training, at temperature=0.9, top_p=0.95, three swipes each. 1,095 generations an arm.

Pronoun invention numbers for this release, on 400 single-gender roleplay paragraphs:

v2.1v2.2
a gendered pronoun the input never licensed0.8%0.8%
... belonging to the other gender0.8%0.8%
a proper noun the input does not have0.3%0.3%

Paired over the 400 inputs, none of these separates.

Repetition on the 365 paragraphs -- a rewrite that repeats a sentence, a phrase, or a sentence opening:

inputv2.1v2.2
any repetition2.2%13.5%8.7%
... a whole sentence0.4%0.3%
... a phrase7.3%4.6%
... a sentence opening (anaphora)4.5%2.6%

Paired over the 365 inputs, any repetition falls (t = -3.6), repeated phrases fall (t = -2.8) and anaphora falls (t = -2.5).

Structural, on the same paragraphs:

v2.1v2.2
words changed44.0%43.7%
passed through unchanged3.1%2.5%
near-verbatim outputs1.4%0.9%
below the training edit floor35.4%35.9%
sentence count moved75.5%79.2%
sentence-length variety vs input+0.115+0.116
words kept from the input0.6160.620
length preserved0.8510.857
truncated below 0.75x23.7%21.4%
repeated 3-grams0.0050.004

Paired over the 365 inputs, only sentence count moved separates (t = +2.2). Over the 303 inputs of 51-90 words, no column does.

Unsupported content -- a sentence in the rewrite the input does not entail, scored by NLI with the input alone as the premise:

v2.1v2.2
unsupported sentences, mean per rewrite12.7%11.1%
unsupported sentences, all rewrites11.5%10.2%
coverage of the input (reverse entailment)0.4870.484

Paired over the 365 inputs, the unsupported rate falls (t = -2.3); coverage does not move.

The register numbers on the same paragraphs, against the input:

inputv2.1v2.2human corpus
banned constructions /1k7.522.512.500.00
slop lexicon density0.0810.0480.0440.019
purple score0.4980.3140.316--

Paired over all 365 inputs, lexicon density falls (t = -2.6). Banned constructions and purple do not separate.

Dialogue: the number of spoken lines changes on 1.6% of rewrites against v2.1's 0.8% (t = +1.7, does not separate), and of the rewrites whose input carried quoted speech, 1.0% lost the quotes entirely -- the same for both.

Markup round-trip on 365 tagged paragraphs -- every marker handed back in order, with the same counts: 79.5% for v2.1, 78.1% here.

A note on strength

Every number above is measured at the strength the release is baked at, which is not the same as measuring the adapter. LoRA strength is spent at merge time (W + (B @ A) * 2.40 here), and the metrics move with it: read at the adapter's natural 1.0 this same checkpoint is a materially different artifact.

Both releases ship at 1.20, so every difference above is the training pool and not the strength. 1.20 is where banned constructions bottomed out on the strength sweep: 1.15 carries a third more of them.

Training

Corrupt forward, train backward. The human paragraph is the target; an on-policy LLM manufactures the input by slop-ifying it.

The target side is human prose: published contemporary literary fiction, r/WritingPrompts (Mollymo/Human-to-AI-writing), AO3 (midwestern-simulation-active/ao3_random_subset), a scrape of bluemoonroleplaying.com -- the only human writing in the pool already in the deployment's own register -- and a sliver of fanfiction.net (atom-in-the-universe/fanfics-10k-10k).

The input side is manufactured from those targets, weighted and share-capped so that no single generator's tics dominate:

pool axiscomposition
rows15,290 over 10,982 distinct target paragraphs
corruption bandmedium 35%, heavy 31%, light 30%, identity/no-op 3%, curated real slop 1%
len_modematch only
markup15% of rows, identical on both sides
kindprose 91%, dialogue 8%, structural no-ops 1%
target sourcepublished fiction 39%, r/WritingPrompts 29%, AO3 20%, roleplay forum 8%, other 4%

Pairs pass invariant gates before they reach the GPU: POV, tense, who is in the scene, the gender of who is in the scene, the number of spoken lines, grammatical correctness on the target side, no repetition on the target side, content recall stratified by target length, and NLI entailment both ways. Two further screens shape what reaches training -- a floor on how much a pair actually changes, and a floor on the sentence-length variety of the target, applied at a higher threshold for long paragraphs than short ones.

Loss on the target paragraph only. Everything before rewrite is masked.

LoRAr=32, alpha=64, dropout 0.05
target modulesq, k, v, o, gate, up, down, and lm_head
trainable71,004,160 params (1.73%)
schedule2 epochs, lr 1e-4 cosine, batch 8 × accum 4, seq 2048
steps920 on one RTX 3090

The merge

Merged at strength 1.20. Rank 32 with alpha 64 is a LoRA scaling of 2.0, so the effective scaling is 2.40: W + (B @ A) * 2.40. Merged in float32, stored bfloat16.

lm_head is adapted, and Qwen3-4B-Base ties lm_head.weight to embed_tokens.weight. This checkpoint is untied: the merged output head is stored separately and the input embeddings are bit-identical to the base model's, which is what training assumed. config.json says tie_word_embeddings: false and it means it. Do not re-tie it, and if you convert to another format, check that the head survived.

Limitations

  • Not an instruct model. It has one job and one prompt. There is nothing to ask it.
  • Works on fictional prose only. May not work on technical documentation.
  • One paragraph per call. Longer input degrades; split it.
  • Still invents people occasionally. A phantom pronoun appears in 0.8% of rewrites. Check the output when the cast matters.
  • Truncates. It drops below 0.75x the input's length on 21.4% of paragraphs. Usually that is the slop going; check the output when length matters.
  • Still repeats itself. 8.7% of rewrites repeat a sentence, a phrase or a sentence opening the input did not. Check the output for loops.
  • Will not pass AI detectors. Pangram and such will still know because this model preserves word choices and certain sentence structures.
  • English only, narrative register (third and first person fiction, dialogue with quoted speech).
  • Short input pads, cuts and invents. The floor is about 15 words. See Input length.
  • Repeats a noun sooner than an LLM would. Human prose reuses a plain noun where generated prose uses a synonym, and this model has learned that habit.

License

The weights in this repository are released under the GNU Affero General Public License, version 3. The full text is in LICENSE.

This is a derivative of Qwen/Qwen3-4B-Base, which is licensed under Apache License 2.0. That license is preserved and its terms continue to apply to the base weights this model was built from; the AGPL covers the combined work as distributed here. Apache-2.0 is one-way compatible with AGPLv3, which is what makes this combination possible.

If you run a modified version of this model as a network service, AGPL section 13 requires you to offer the corresponding source of your modifications to its users.

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

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

GPU в ailist

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

Можно запустить

Подбираем GPU…

Класс архитектуры
Qwen3ForCausalLM
Ревизия весов
8f94823

0 моделей