roskosmos19/Rhea-4B-Coding-max
2521
1---2datasets:3- Aquiles-ai/Athenea-Coding-100k4- roskosmos19/Rhea-Coding5license: apache-2.06tags:7- code8- agent9- merge10- uncensored11- Rhea12- multi-pass13- reasoning14- Claude15- Mythos16- max17- xhigh18language:19- en20pipeline_tag: text-generation21library_name: transformers22base_model:23- Aquiles-ai/Athenea-4B-Coding24---25 26<h1 align="center">Rhea 4B Coding</h1>27 2829 30**Rhea-4B-Coding** is an optimized version of [Aquiles-ai/Athenea-4B-Coding](https://huggingface.co/Aquiles-ai/Athenea-4B-Coding), specialized in **code reasoning, debugging, agentic tools and multi-pass problem solving**.31 32Trained on high-quality programming data with explicit reasoning traces using ` thinking` and ` 思考结束` tags, the model is designed to perform detailed **3-pass reasoning** for software development, algorithm design, and code comprehension tasks:33 341. **Pass 1**: First implementation352. **Pass 2**: Self-review for bugs, edge cases, security, performance363. **Pass 3**: Final optimized version with identical functionality37 38> ⚠️ **Important Note:** This model uses an *uncensored* base version, providing full expressive freedom and unrestricted output generation. Users are fully responsible for any use or content produced by the model. It is intended exclusively for research and experimentation purposes.39 40## 🎯 Model Description41 42Rhea-4B-Coding extends Athenea-4B-Coding's structured reasoning capabilities into programming-related domains with **multi-pass processing**, showing strong performance on logical problem-solving, code completion, debugging scenarios, and iterative code refinement.43 44Key features:45 46* **Multi-Pass Processing**: 3-step reasoning with `<think>`, `<review>`, and `<final>` tags47* **Agentic Tools** for AI Agents48* **Step-by-step code reasoning** within ` thinking` blocks49* **Self-review capabilities** for bug detection and optimization50* **Specialization in algorithmic and debugging tasks**51* **Uncensored output generation** for full reasoning visibility52* **Improved logical consistency** through focused fine-tuning53* **Compatible with open inference frameworks** (Transformers, vLLM, etc.)54 55The model was fine-tuned using the dataset [Aquiles-ai/Athenea-Coding-100k](https://huggingface.co/datasets/Aquiles-ai/Athenea-Coding-100k), which includes diverse programming challenges, structured reasoning chains, and natural language explanations across multiple programming languages.56 57## 🔄 Multi-Pass Architecture58 59The model uses special tokens for structured reasoning:60 61| Token | Purpose |62|-------|---------|63| `<think>` | Start of self-review phase (Pass 2) |64| `</think>` | End of self-review phase |65| `<review>` | Start of review results documentation |66| `</review>` | End of review results |67| `<final>` | Start of final optimized version (Pass 3) |68| `</final>` | End of final version |69 70This structure ensures **identical functionality** across all passes while improving **code structure, comments, and robustness**.71 72## 💻 Usage73 74### Installation75 76```bash77uv pip install transformers torch accelerate78```79 80### Basic Inference81 82```python83from transformers import AutoModelForCausalLM, AutoTokenizer84import torch85 86model = AutoModelForCausalLM.from_pretrained("Roskosmos19/Rhea-4B-Coding",87 dtype=torch.bfloat16,88 trust_remote_code=True,89 device_map="auto",90 attn_implementation="flash_attention_2") # Requires flash-attn91 92# Without flash-attn:93# model = AutoModelForCausalLM.from_pretrained("Roskosmos19/Rhea-4B-Coding",94# dtype="auto",95# device_map="auto"96# )97 98tokenizer = AutoTokenizer.from_pretrained("Roskosmos19/Rhea-4B-Coding", trust_remote_code=True)99 100messages = [101 {"role": "user", "content": "Hey, write a Python function that calculates the factorial of a number recursively."}102]103 104inputs = tokenizer.apply_chat_template(105 messages,106 add_generation_prompt=True,107 tokenize=True,108 return_dict=True,109 return_tensors="pt",110).to('cuda')111 112with torch.no_grad():113 output = model.generate(114 **inputs,115 max_new_tokens=16384, # Increased for multi-pass output116 pad_token_id=tokenizer.pad_token_id,117 eos_token_id=tokenizer.eos_token_id,118 )119 120# Decode and print the output121print(tokenizer.decode(output[0], skip_special_tokens=False))122```123 124### Multi-Pass Inference (Recommended)125 126```python127from transformers import AutoModelForCausalLM, AutoTokenizer128import torch129 130model = AutoModelForCausalLM.from_pretrained("Roskosmos19/Rhea-4B-Coding",131 dtype=torch.bfloat16,132 trust_remote_code=True,133 device_map="auto")134 135tokenizer = AutoTokenizer.from_pretrained("Roskosmos19/Rhea-4B-Coding", trust_remote_code=True)136 137def generate_multi_pass(prompt, max_tokens_per_pass=4096):138 """139 Generate code with 3-pass reasoning:140 Pass 1: First implementation141 Pass 2: Self-review142 Pass 3: Final optimized version143 """144 145 # Pass 1: First implementation146 messages = [{"role": "user", "content": prompt}]147 inputs = tokenizer.apply_chat_template(148 messages,149 add_generation_prompt=True,150 tokenize=True,151 return_dict=True,152 return_tensors="pt",153 ).to('cuda')154 155 with torch.no_grad():156 output1 = model.generate(157 **inputs,158 max_new_tokens=max_tokens_per_pass,159 temperature=0.4,160 pad_token_id=tokenizer.pad_token_id,161 eos_token_id=tokenizer.eos_token_id,162 )163 164 pass1 = tokenizer.decode(output1[0], skip_special_tokens=False)165 166 # Pass 2: Self-review167 review_prompt = pass1 + "\n<<think>\n### PASS 2 - Self-Review:\n"168 inputs2 = tokenizer(review_prompt, return_tensors="pt").to('cuda')169 170 with torch.no_grad():171 output2 = model.generate(172 **inputs2,173 max_new_tokens=2048,174 temperature=0.3,175 pad_token_id=tokenizer.pad_token_id,176 eos_token_id=tokenizer.eos_token_id,177 )178 179 review = tokenizer.decode(output2[0], skip_special_tokens=False)180 181 # Pass 3: Final version182 final_prompt = review + "\n<<final>\n### PASS 3 - Final Version:\n"183 inputs3 = tokenizer(final_prompt, return_tensors="pt").to('cuda')184 185 with torch.no_grad():186 output3 = model.generate(187 **inputs3,188 max_new_tokens=max_tokens_per_pass,189 temperature=0.2,190 pad_token_id=tokenizer.pad_token_id,191 eos_token_id=tokenizer.eos_token_id,192 )193 194 final = tokenizer.decode(output3[0], skip_special_tokens=False)195 196 return {197 "pass1": pass1,198 "review": review,199 "pass3": final200 }201 202# Example usage203result = generate_multi_pass("Write a Python function for binary search")204print("=== PASS 1 ===")205print(result["pass1"])206print("\n=== REVIEW ===")207print(result["review"])208print("\n=== FINAL ===")209print(result["pass3"])210```211 212### Streaming Inference213 214```python215from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer216import torch217from threading import Thread218 219model = AutoModelForCausalLM.from_pretrained("Roskosmos19/Rhea-4B-Coding",220 dtype=torch.bfloat16,221 trust_remote_code=True,222 device_map="auto",223 attn_implementation="flash_attention_2")224 225tokenizer = AutoTokenizer.from_pretrained("Roskosmos19/Rhea-4B-Coding", trust_remote_code=True)226 227messages = [228 {"role": "user", "content": "Hey, write a Python function that implements the binary search algorithm recursively."}229]230 231inputs = tokenizer.apply_chat_template(232 messages,233 add_generation_prompt=True,234 tokenize=True,235 return_dict=True,236 return_tensors="pt",237).to('cuda')238 239# Create the streamer240streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=False)241 242# Build kwargs for generate243generate_kwargs = dict(244 **inputs,245 max_new_tokens=16384, # Increased for multi-pass output246 pad_token_id=tokenizer.pad_token_id,247 eos_token_id=tokenizer.eos_token_id,248 streamer=streamer,249)250 251def _generate_thread(model, kwargs):252 with torch.no_grad():253 model.generate(**kwargs)254 255thread = Thread(target=_generate_thread, args=(model, generate_kwargs))256thread.start()257 258for chunk in streamer:259 print(chunk, end="", flush=True)260```261 262### Production Deployment with vLLM263 264**Start server:**265 266```bash267vllm serve Roskosmos19/Rhea-4B-Coding \268 --host 0.0.0.0 \269 --port 8000 \270 --api-key dummyapikey \271 --max-model-len=262144 \272 --async-scheduling \273 --gpu-memory-utilization=0.90274```275 276**Request to the server from the OpenAI client:**277 278```python279from openai import OpenAI280client = OpenAI(api_key="dummyapikey", base_url="http://127.0.0.1:8000/v1")281stream = client.chat.completions.create(282 model="roskosmos19/Rhea-4B-Coding",283 messages=[{284 "role": "user",285 "content": "Hey, write a Python function that determines if a string is a palindrome, ignoring case, spaces, and punctuation."286 }],287 max_tokens=16384, # Increased for multi-pass output288 stream=True289)290for chunk in stream:291 if chunk.choices[0].delta.content:292 print(chunk.choices[0].delta.content, end="", flush=True)293```294 295**vLLM Benefits:** 20-30x faster inference, OpenAI-compatible API, continuous batching, async scheduling.296 297## 📝 Model Configuration298 299| Parameter | Value | Description |300|-----------|-------|-------------|301| `temperature` | 0.4 | Balanced creativity and consistency |302| `max_new_tokens` | 32768 | Full multi-pass output capacity |303| `repetition_penalty` | 1.0 | No penalty for intentional code repetition |304| `no_repeat_ngram_size` | 0 | Allows code structure repetition |305| `use_cache` | true | Faster inference for long outputs |306 307## ⚙️ Files Modified for Multi-Pass308 309| File | Changes |310|------|---------|311| `generation_config.json` | Extended tokens, optimized for multi-pass |312| `config.json` | Enabled caching, full context window |313| `tokenizer_config.json` | Added `<think>`, `<review>`, `<final>` tokens |314| `special_tokens_map.json` | Registered new special tokens |315| `chat_template.jinja` | 3-pass prompt structure |316 317## 🤝 Credits318 319- Base model: [Aquiles-ai/Athenea-4B-Coding](https://huggingface.co/Aquiles-ai/Athenea-4B-Coding)320- Dataset: [Aquiles-ai/Athenea-Coding-100k](https://huggingface.co/datasets/Aquiles-ai/Athenea-Coding-100k)321- Architecture: Qwen3 4B322 323<p align="center">324 Roskosmos19325</p>