Instructions to use Thermostatic/HumanQwen3.5-4B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Thermostatic/HumanQwen3.5-4B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Thermostatic/HumanQwen3.5-4B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("Thermostatic/HumanQwen3.5-4B") model = AutoModelForMultimodalLM.from_pretrained("Thermostatic/HumanQwen3.5-4B", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.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=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Thermostatic/HumanQwen3.5-4B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Thermostatic/HumanQwen3.5-4B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Thermostatic/HumanQwen3.5-4B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Thermostatic/HumanQwen3.5-4B
- SGLang
How to use Thermostatic/HumanQwen3.5-4B 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 "Thermostatic/HumanQwen3.5-4B" \ --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": "Thermostatic/HumanQwen3.5-4B", "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 "Thermostatic/HumanQwen3.5-4B" \ --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": "Thermostatic/HumanQwen3.5-4B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Unsloth Desktop
- Docker Model Runner
How to use Thermostatic/HumanQwen3.5-4B with Docker Model Runner:
docker model run hf.co/Thermostatic/HumanQwen3.5-4B
HumanQwen3.5-4B
A fine-tune of Qwen/Qwen3.5-4B that writes the way people actually write: fewer stock phrases, less filler, no reflexive bullet lists, and no "I hope this helps!". It keeps the base model's coding, math and reasoning abilities, which were measured before and after (see below).
Trained with Unsloth on 8× RTX 5090.
How it was trained
All training data is permissively licensed, so the model is released under Apache 2.0.
SFT (LoRA r=128 on all linear layers, merged, 2 epochs, Unsloth, padding-free, 8× RTX 5090, 28 minutes), 23k examples:
- Human replies: the best-ranked human assistant replies from OpenAssistant oasst2 (Apache-2.0), English only, quality- and toxicity-filtered, one example per assistant turn.
- Human long-form writing: documents from fineweb-edu (ODC-BY) crawled in 2019–2020, before AI-generated web text was common. The base model wrote the request each document answers (instruction back-translation); the response is the untouched human text.
- Capability replay: the base model's own answers to chat (UltraChat, MIT), math (GSM8K/MATH, MIT) and code (Magicoder OSS-Instruct, MIT) prompts. Math and code keep their full reasoning in thinking mode, so the model doesn't drift away from what it could already do. A DPO stage (human reply preferred over the base model's reply) was also trained, but it is not part of this release: it lowered non-thinking GSM8K from 90.5% to 82.8% and HumanEval from 78.0% to 68.3%.
Evaluation
All prompts are held out from training. Sampling for every model: temperature 0.7, top-p 0.8, top-k 20, non-thinking mode.
HumanQwen long-form uses presence_penalty=1.5 (see Usage).
Style. Chat: 300 held-out oasst2 conversations, compared with the real human reply. Long-form: 200 held-out writing requests, compared with the real 2019–2020 human document.
| Chat replies | Qwen3.5-4B | HumanQwen3.5-4B | Real humans |
|---|---|---|---|
| Length (words) | 549 | 209 | 179 |
| Replies with markdown headers | 79% | 6% | 4% |
| Bold phrases per 100 words | 3.6 | 0.24 | 0.09 |
| Lines that are bullet points | 40% | 26% | 22% |
| Long-form writing | Qwen3.5-4B | HumanQwen3.5-4B | Real humans |
|---|---|---|---|
| Length (words) | 628 | 507 | 589 |
| Pieces with markdown headers | 85% | 0% | 0% |
| Bold phrases per 100 words | 1.77 | 0 | 0 |
| Lines that are bullet points | 23% | 8.5% | 5.7% |
| Stock LLM phrases per 1k words ("delve", "it's important to note", …) | 1.35 | 0.86 | 0.33 |
Capabilities (GSM8K: 400 test problems; HumanEval: all 164, executed):
| Qwen3.5-4B | HumanQwen3.5-4B | |
|---|---|---|
| GSM8K, thinking | 85.8% | 87.0% |
| HumanEval, thinking | 90.2% | 90.9% |
| GSM8K, non-thinking | 91.5% | 90.5% |
| HumanEval, non-thinking | 82.9% | 78.0% |
An honest caveat about AI detectors. The open detector fakespot-ai/roberta-base-ai-text-detection-v1 still flags HumanQwen's long-form writing as AI-generated (100% of pieces, vs. 98.5% for the base model and 15.5% for the real human documents). The model writes with human structure and register, but not with human-like token statistics. (On chat the detector is uninformative: it flags 91% of the real human oasst replies as AI.)
Usage
Writing style was trained in non-thinking mode (enable_thinking=False); thinking mode is kept for math and code.
Use Qwen3.5's recommended non-thinking sampling including presence_penalty=1.5. Without it, about 40% of long
pieces fall into repetition loops; with it, about 5% do.
vllm serve Thermostatic/HumanQwen3.5-4B --max-model-len 32768
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="x")
r = client.chat.completions.create(
model="Thermostatic/HumanQwen3.5-4B",
messages=[{"role": "user", "content": "Write a short blog post about learning to bake sourdough."}],
temperature=0.7, top_p=0.8, presence_penalty=1.5,
extra_body={"top_k": 20, "chat_template_kwargs": {"enable_thinking": False}},
)
print(r.choices[0].message.content)
Limitations
- The human-written training replies come from crowd volunteers (oasst2) and 2019–2020 web pages, with their quirks. The model can be terser than you might want.
- It reads more human, but it does not evade AI-text detectors (see Evaluation).
- Non-thinking HumanEval is about 5 points lower than the base model; use thinking mode for code.
- Long outputs can loop without
presence_penalty. - Only English writing was targeted.
License
Apache 2.0. Base model: Qwen3.5-4B by the Qwen team (Apache 2.0). Training data: OpenAssistant oasst2 (Apache-2.0), fineweb-edu (ODC-BY), UltraChat 200k (MIT), GSM8K (MIT), MATH (MIT), Magicoder OSS-Instruct (MIT).
- Downloads last month
- 38