File size: 7,603 Bytes
7db882f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a53437d
7db882f
a53437d
7db882f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
---
library_name: peft
base_model: Qwen/Qwen3-4B-Instruct-2507
tags:
  - code
  - lora
  - rocm
  - habbo
  - game-server-emulation
  - flash
  - shockwave
  - continued-pretraining
language:
  - en
license: apache-2.0
inference: false
---

# FuseLLM-Instruct-4B-v1

A domain-specialist code model for the **Habbo Hotel ecosystem** β€” server emulators (Java, C#, PHP, Rust) and Flash/Shockwave client tooling (ActionScript, LiveScript, SWF/DIR reverse engineering). Built by continued pretraining of `Qwen3-4B-Instruct-2507` on a curated corpus of ~85K source files (~211M tokens) drawn from Habbo emulator projects, decompiled client code, and CMS/database dumps.

---

## tl;dr

- **What it is:** a 4B-parameter instruction-tuned code model, LoRA-continued-pretrained on Habbo emulator + retro-client source code.
- **Trained on:** a single consumer GPU β€” AMD Radeon RX 7900 XTX, 24 GB VRAM, ROCm 7.1.1. bf16 LoRA, no quantization.
- **Runs on:** essentially *any* recent consumer GPU. At 4B params, a Q4_K_M GGUF is ~4.5 GB β€” it fits comfortably in 8 GB VRAM and will run on 6 GB with a smaller context. The full bf16 merged weights (~14.7 GB) fit in 16 GB. If your card was made in the last ~6 years and has β‰₯6 GB, it can run FuseLLM-Instruct-4B-v1.

---

## Inference β€” yes, your GPU can run this

The point of shipping a 4B model is that you don't need a datacenter to use it. The training rig was a 24 GB consumer AMD card; **inference needs far less.**

| Path | Size | Min. VRAM (comfortable) | Notes |
|---|---|---|---|
| **GGUF Q4_K_M (recommended)** | ~4.5 GB | 8 GB (runs on 6 GB, short ctx) | Via Ollama / llama.cpp / LM Studio / KoboldCpp. CPU-only also works β€” slow but functional. |
| GGUF Q8_0 | ~4.9 GB | 8 GB | Near-lossless; only marginally bigger than Q4_K_M. |
| bf16 merged (full precision) | ~14.7 GB + KV cache | 16 GB | The "no quantization" path. 24 GB leaves room for a long context. |

Concrete examples of cards that run it fine:

- **8 GB:** RTX 3060 / 4060 / 5060, RX 6600 / 7600, Arc A580 β€” Q4_K_M with 4–8K context.
- **12 GB:** RTX 3060 12GB / 4070 / 5070, RX 6700 XT / 7700 XT β€” Q4_K_M with long context, or Q8_0 comfortably.
- **16 GB:** RTX 4060 Ti 16GB / 4080 / 5070 Ti, RX 7800 XT / 9070 β€” bf16 merged fits.
- **24 GB:** RTX 3090 / 4090 / 5090, RX 7900 XTX/XT β€” bf16 merged with a large context, or Q4 with room to spare.

Linux, Windows, macOS (Metal) all supported through llama.cpp / Ollama. **AMD, NVIDIA, and Intel are all first-class** β€” the GGUF backend is vendor-agnostic.

### Quick start (Ollama)

```bash
ollama run h4bbo/fusellm-instruct-4b-v1          # once uploaded
# or load the local GGUF:
ollama create fusellm-instruct-4b - Modelfile         # FROM ./fusellm-instruct-4b-v1-Q4_K_M.gguf
ollama run fusellm-instruct-4b
```

### Quick start (transformers, bf16)

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

tok = AutoTokenizer.from_pretrained("h4bbo/FuseLLM-Instruct-4B-v1")
model = AutoModelForCausalLM.from_pretrained(
    "h4bbo/FuseLLM-Instruct-4B-v1",
    torch_dtype=torch.bfloat16,
    device_map="auto",
)
```

---

## Training details

### Hardware

| | |
|---|---|
| GPU | AMD Radeon RX 7900 XTX, 24 GB VRAM (Navi 31) |
| Stack | ROCm 7.1.1, PyTorch 2.13.0+rocm7.1 (`gfx1100` native) |
| Why not CUDA | The rig is AMD-only β€” the whole recipe below is the ROCm path. No H100, no A100, no datacenter. |

This is a **one-consumer-GPU** training run. The 4B base + bf16 LoRA + gradient checkpointing fits in 24 GB without any quantization (QLoRA was deliberately avoided β€” bitsandbytes-on-ROCm is still "preview" quality). If you have a single 24 GB card of either vendor, you can reproduce this run.

### Base model

`Qwen/Qwen3-4B-Instruct-2507` β€” bf16 safetensors, Apache-2.0, ~8 GB. Downloaded from HF Hub (requires `HF_TOKEN`).

### Method β€” bf16 LoRA continued pretraining

Raw-code continued pretraining (full-sequence causal-LM loss, no instruction pairs).

- **LoRA:** r=32, alpha=64, dropout=0.05, all 7 Qwen3 projections (`q/k/v/o/gate/up/down_proj`), `task_type=CAUSAL_LM`.
- **Optimizer/schedule:** `adamw_torch`, lr=1e-4, cosine, warmup_ratio=0.03, max_grad_norm=1.0, 1 epoch.
- **Batching:** per-device batch 2 Γ— grad-accum 16 = effective 32, `max_length=2048` with `packing_strategy="wrapped"` (~65K tokens/step), ~3,050 steps, ~3–5 h.
- **Precision/memory:** `bf16=True`, `gradient_checkpointing=True` (`use_reentrant=False`), `attn_implementation="sdpa"` (FlashAttention-2 is broken on ROCm), `optim="adamw_torch"` (no bitsandbytes). `PYTORCH_HIP_ALLOC_CONF=expandable_segments:True,garbage_collection_threshold:0.8`, `HSA_OVERRIDE_GFX_VERSION=11.0.0`.
- **Loss:** `completion_only_loss` unset β€” full-sequence causal-LM on packed raw code (correct for continued pretraining, since there are no instruction/response pairs to mask).
- **Merge:** `merge_and_unload(safe_merge=True)` into the bf16 base β†’ standalone safetensors. `save_peft_format=False` (critical β€” otherwise the adapter re-attaches on reload).

### Training data

| | |
|---|---|
| Files | 84,925 unique (sha256-deduped; 206,707 duplicates removed; 2.07M minified files skipped) |
| Size | 803.2 MB |
| Tokens | ~211M (est. chars/4) |
| Format | `{"text": <redacted file content>}` β€” TRL `dataset_text_field="text"` |

By language (files): Java 26,335 Β· C# 19,048 Β· PHP 10,969 Β· LiveScript 7,457 Β· ActionScript 3,801 Β· Python 3,023 Β· JavaScript 2,646 Β· XML 2,569 Β· HTML 2,023 Β· CSS 1,470 Β· Rust 1,442 Β· C 1,103 Β· TypeScript 644 Β· C++ 517 Β· SQL 494 Β· VB 362 Β· JSON 351 Β· + Markdown/Gradle/YAML/Scala/Lua.

Sources: 123 Quackster Habbo emulator/tooling repos (incl. private: HorusClient, Kurkku, Aleeda, Icarus variants, cappo-emu, …), `ntuative/RELEASE63…`, `deklol/Shockless`, plus deeply-nested Beta-archive extractions (Debbo, BloodLine, Chocohotel, uberEmu, etc.) β€” 497 archives / 30 GB unpacked. `.sql` DB dumps (148 MB) are included for now and may be dropped in a later revision.

---

## Intended use & limitations

**Intended:** code completion / Q&A for Habbo server-emulator and retro-client development β€” packet handling, room/item state, CMS schemas, SWF/DIR reverse engineering, Shockwave Lingo, ActionScript 3 client internals.

**Not intended:** general-purpose chat, math, or non-Habbo code generation. This is a *continued-pretraining* of an instruct model on domain code; it is not a general assistant and was not aligned for safety/RLHF beyond what the base instruct model already had.

**Limitations:**
- 4B parameters β€” strong on domain pattern-completion, weaker than larger models on multi-file reasoning.

---

## License & data provenance

- **Base model:** `Qwen3-4B-Instruct-2507` β€” **Apache-2.0**. Fine-tuning and redistribution permitted with attribution. βœ…
- **This fine-tune (weights):** released under **Apache-2.0** *conditional on the data licensing below*. The LoRA adapter is small and derivative; the merged model inherits both base and data obligations.
- **Training data:** mixed provenance β€”
  - Author's own repos (fine).
  - **GPL / various third-party emulators** (PHPRetro/Yifan Lu, uberEmu/Meth0d, Holograph, Icarus, etc.) β€” GPL-derivative debate applies; a model trained on GPL source is arguably a derivative work.

## Citation

If this model is useful, cite the base and this fine-tune:

```bibtex
@misc{fusellm-instruct-4b-v1,
  title  = {FuseLLM-Instruct-4B-v1: a Habbo ecosystem code model},
  note   = {bf16 LoRA continued pretraining of Qwen3-4B-Instruct-2507},
  year   = {2026},
}
```