Files
ModelHub XC 7f588ffae1 初始化项目,由ModelHub XC社区提供模型
Model: arshaan-nazir/qwen2.5-3b-humanizer-merged
Source: Original Platform
2026-08-20 14:11:19 +08:00

194 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
language:
- en
license: apache-2.0
base_model: Qwen/Qwen2.5-3B-Instruct
tags:
- text-generation
- humanizer
- rewriter
- qwen2.5
- qlora
- merged
- conversational
pipeline_tag: text-generation
---
# Qwen2.5-3B AI Text Humanizer (Merged)
A fine-tuned version of **Qwen/Qwen2.5-3B-Instruct** that rewrites AI-generated text to sound natural and human-written. This is the **fully merged** model — the LoRA adapter weights have been baked directly into the base model, making it compatible with fast inference engines like **vLLM**.
> ⚠️ This is a **private model**. You need a HuggingFace token with read access to load it.
## Model Details
| Property | Value |
|---|---|
| Base model | `Qwen/Qwen2.5-3B-Instruct` |
| Fine-tuning method | QLoRA (r=64, α=128) |
| Training dataset | `qwertyuiopasdfg/English_humanize` (20k rows) |
| Adapter repo | `arshaan-nazir/qwen2.5-3b-humanizer-qlora` |
| Model type | Causal LM — merged weights |
| Language | English |
| License | Apache 2.0 |
## What It Does
Takes AI-generated text as input and rewrites it to:
- Sound natural and conversational
- Use contractions where appropriate
- Vary sentence length and structure
- Avoid stiff, formal phrasing
- Preserve all original facts
## How to Use
### With Transformers
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
HF_TOKEN = "hf_YOUR_TOKEN_HERE" # needs read access to this repo
print("Loading tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(
"arshaan-nazir/qwen2.5-3b-humanizer-merged",
token=HF_TOKEN,
)
print("Loading model...")
model = AutoModelForCausalLM.from_pretrained(
"arshaan-nazir/qwen2.5-3b-humanizer-merged",
torch_dtype=torch.bfloat16,
device_map="auto",
token=HF_TOKEN,
)
model.eval()
SYSTEM = """You are a helpful editor.
Rewrite the input so it sounds natural, clear, and conversational while preserving every fact.
Rules:
- Vary sentence length and structure (mix short and long).
- Use contractions where natural.
- Avoid stiff/overly formal phrases.
- No bullet points, headings, or numbered lists.
- Keep paragraphs reasonable (no more than 5 sentences per paragraph).
- Output ONLY the rewritten text (no preamble, no labels).
"""
def humanize(text):
msgs = [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": f"Rewrite the following so it sounds fully human-written.\n\nTEXT:\n{text}\n\nREWRITE:"}
]
prompt = tokenizer.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(model.device)
with torch.no_grad():
output = model.generate(
input_ids,
max_new_tokens=512,
do_sample=True,
temperature=0.75,
top_p=0.92,
repetition_penalty=1.08,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.eos_token_id,
)
return tokenizer.decode(output[0, input_ids.shape[1]:], skip_special_tokens=True)
text = "The utilization of artificial intelligence has resulted in significant advancements."
print(humanize(text))
```
### With vLLM (recommended — fastest)
```python
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
HF_TOKEN = "hf_YOUR_TOKEN_HERE"
tokenizer = AutoTokenizer.from_pretrained(
"arshaan-nazir/qwen2.5-3b-humanizer-merged",
token=HF_TOKEN,
)
llm = LLM(
model="arshaan-nazir/qwen2.5-3b-humanizer-merged",
dtype="bfloat16",
gpu_memory_utilization=0.90,
max_model_len=4096,
enforce_eager=True,
)
sampling_params = SamplingParams(
temperature=0.75,
top_p=0.92,
repetition_penalty=1.08,
max_tokens=1024,
)
SYSTEM = """You are a helpful editor.
Rewrite the input so it sounds natural, clear, and conversational while preserving every fact.
Rules:
- Vary sentence length and structure (mix short and long).
- Use contractions where natural.
- Avoid stiff/overly formal phrases.
- No bullet points, headings, or numbered lists.
- Keep paragraphs reasonable (no more than 5 sentences per paragraph).
- Output ONLY the rewritten text (no preamble, no labels).
"""
text = "Your AI-generated text here..."
msgs = [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": f"Rewrite the following so it sounds fully human-written.\n\nTEXT:\n{text}\n\nREWRITE:"}
]
prompt = tokenizer.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
outputs = llm.generate([prompt], sampling_params)
print(outputs[0].outputs[0].text.strip())
```
## Recommended Inference Settings
| Parameter | Value |
|---|---|
| `temperature` | 0.75 |
| `top_p` | 0.92 |
| `repetition_penalty` | 1.08 |
| `max_new_tokens` | 512–1024 |
## Training Details
- **Base model:** `Qwen/Qwen2.5-3B-Instruct`
- **Method:** QLoRA with 4-bit NF4 quantization during training
- **LoRA rank:** 64, alpha: 128
- **Target modules:** `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj`
- **Dataset:** `qwertyuiopasdfg/English_humanize` — 20k (input, output) pairs of AI-generated vs human-written text
- **Epochs:** 3
- **Optimizer:** paged_adamw_8bit
- **Learning rate:** 2e-4 with cosine schedule
## Difference from Adapter Repo
| | [`qwen2.5-3b-humanizer-qlora`](https://huggingface.co/arshaan-nazir/qwen2.5-3b-humanizer-qlora) | This repo |
|---|---|---|
| Type | LoRA adapter only | Fully merged model |
| Requires base model | ✅ Yes | ❌ No |
| vLLM compatible | ❌ No | ✅ Yes |
| Size | ~120 MB | ~6 GB |
| Load time | Slower (loads base + adapter) | Faster (single model) |
## Live Demo
Try it at: [arshaan-nazir/ai-text-humanizer](https://huggingface.co/spaces/arshaan-nazir/ai-text-humanizer-1771785713)
## Developer
**arshaan-nazir** — [HuggingFace Profile](https://huggingface.co/arshaan-nazir)