File size: 4,750 Bytes
5c43ead
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0c0218c
5c43ead
0c0218c
0323af4
 
5c43ead
0c0218c
5c43ead
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0c0218c
 
5c43ead
 
 
 
 
 
 
0c0218c
 
5c43ead
 
 
 
7401c3e
 
 
 
 
5c43ead
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0c0218c
 
5c43ead
 
0c0218c
5c43ead
 
0c0218c
5c43ead
0c0218c
 
 
5c43ead
 
 
 
 
 
 
 
 
 
 
 
0c0218c
5c43ead
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
---
base_model: Qwen/Qwen3.5-35B-A3B
library_name: peft
pipeline_tag: text-generation
tags:
- harbour
- fivewin
- fwh
- lora
- sft
- transformers
- trl
- unsloth
- code-generation
- xbase
- clipper
language:
- en
- es
license: apache-2.0
---

# Harbour/FWH Coder β€” Qwen3.5-35B-A3B LoRA v2

> **Training code:** https://github.com/FiveTechSoft/finetune

LoRA adapter fine-tuned on **5,004 compilable Harbour and FiveWin (FWH) examples** for code generation. Built on top of [Qwen3.5-35B-A3B](https://huggingface.co/Qwen/Qwen3.5-35B-A3B), a 35B Mixture-of-Experts model with 256 experts (8 active per token).

## What's New in v2

| | v1 | **v2** |
|---|---|---|
| **Dataset** | 996 entries (7 categories) | **5,004 entries** (8 categories) |
| **Training time** | 3h 43min | **~8h** |
| **Eval loss** | 0.5957 | **0.4790** (↓20%) |
| **Train loss** | 0.6456 | **0.4211** (↓35%) |
| **Format** | messages (chat) | instruction/output |
| **Learning rate** | 1e-4 | 8e-5 (conservative) |
| **Epochs** | 3 | 2 |

### Key improvements

- **5x more training data** β€” expanded from 996 to 5,004 unique, compilable examples
- **Better loss convergence** β€” 35% lower train loss, 20% lower eval loss
- **More conservative training** β€” lower learning rate preserves base model capabilities
- **FiveWin (FWH) coverage** β€” added FiveWin GUI framework examples
- **Verified code** β€” all examples verified with Harbour v3.2.0dev compiler

## Dataset

Training data sourced from the [Harbour](https://harbour.github.io/) project β€” an open-source Clipper-compatible compiler β€” and [FiveWin](https://fivewin.com/) (FWH) GUI framework.

### Categories

| Category | Count | Description |
|---|---|---|
| contrib | 583 | Contribution libraries (network, database, graphics, security...) |
| rtl | 80 | Harbour Runtime Library |
| include | 59 | Header files with constants/macros |
| tests | 225 | Test programs |
| extras | 25 | Extra libraries |
| utils | 13 | Utility programs |
| fwh | ~500+ | FiveWin GUI framework examples |
| low-level C | 500+ | HB_FUNC C extension wrappers |

### Format

```json
{
  "instruction": "Write a Harbour function that creates a 2D array...",
  "input": "",
  "system": "You are an expert Harbour programmer...",
  "output": "FUNCTION CreateTable()\n   LOCAL aTable := {}\n   ...",
  "task_type": "code_generation"
}
```

## Training Details

### Hardware

- **Device:** NVIDIA GB10 Grace Blackwell Superchip (DGX Spark)
- **Architecture:** ARM aarch64 (10 NVIDIA Grace CPU cores + Blackwell GPU)
- **RAM:** 121 GB unified memory (CPU + GPU shared)
- **OS:** Ubuntu 24.04.4 LTS (aarch64)
- **Training time:** 7h 49min (564 steps, 2 epochs over 5,004 samples)

### Hyperparameters

| Parameter | Value |
|---|---|
| Base model | Qwen3.5-35B-A3B (MoE, 256 experts) |
| Method | QLoRA (4-bit) |
| LoRA rank | 8 |
| LoRA alpha | 16 |
| LoRA targets | q/k/v/o/gate/up/down_proj |
| Epochs | 2 |
| Learning rate | 8e-5 |
| LR scheduler | cosine |
| Warmup ratio | 0.05 |
| Batch size | 1 (effective: 16 via grad accum) |
| Max seq length | 1024 |
| Optimizer | adamw_8bit |

### Framework

- Unsloth 2026.6.8
- Transformers 5.5.0
- PEFT 0.19.1
- PyTorch 2.12.1

## How to Use

### With PEFT + Transformers

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

base_model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3.5-35B-A3B",
    load_in_4bit=True,
    device_map="auto",
)
model = PeftModel.from_pretrained(base_model, "fivetech/Harbour")
tokenizer = AutoTokenizer.from_pretrained("fivetech/Harbour")

prompt = "Write a Harbour function that splits a CSV string into an array."
messages = [
    {"role": "system", "content": "You are an expert Harbour programmer. Write compilable code."},
    {"role": "user", "content": prompt},
]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer([text], return_tensors="pt").to(model.device)

output = model.generate(**inputs, max_new_tokens=1500, temperature=0.2)
print(tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
```

### With Ollama (merge + quantize first)

```bash
# Export to GGUF
python -m unsloth.save_pretrained_gguf model_output/ ./tokenizer/ q4_k_m

# Then use with Ollama
ollama create harbour-coder -f Modelfile
```

## Evaluation

Evaluated on 100 Harbour programming tests (Arrays, OOP, Functions, Database, File I/O, Control flow):

- **Compilation pass rate:** TBD (running test battery)
- **Categories tested:** Arrays (48), OOP (22), Other (9), Functions (8), Database (7), File I/O (4), Control (2)

## License

Apache 2.0

## Model Card Contact

fivetech β€” https://github.com/fivetechsoft/finetune