YAML Metadata Warning: empty or missing yaml metadata in repo card (https://huggingface.co/docs/hub/model-cards#model-card-metadata)
BuildwellAI Model V2
Fine-tuned Qwen3-14B for UK construction industry applications.
Features
- 42 MCP Server Integration: Tool calling for all BuildwellAI calculation servers
- Multi-Mode Responses: Direct answers, thinking mode, and tool calling
- Anti-Overfitting: Early stopping, dropout, weight decay, validation monitoring
- Streaming API: OpenAI-compatible streaming inference server
Quick Start
1. Prepare Dataset
cd /opt/buildwellai/buildwellai-llm-models/buildwellai-model-v2/scripts
python3 prepare_dataset.py
This will:
- Convert CSV files (BSI, UK Benchmark, Q&A pairs)
- Load existing JSONL datasets (thinking_mode, tool_calling)
- Generate MCP training data for all 42 servers
- Validate and deduplicate
- Split into train/validation sets
2. Fine-Tune
python3 finetune.py
Or with custom config:
python3 finetune.py --config ../configs/training_config.json
3. Run Streaming API
python3 streaming_api.py --model ../output/buildwellai-qwen3-14b-v2/merged --port 8080
Or interactive CLI:
python3 streaming_api.py --model ../output/buildwellai-qwen3-14b-v2/merged --cli
Dataset Sources
| Source | Description | Count |
|---|---|---|
| qa-buildwell-ai.csv | Q&A pairs | ~39K |
| UK Building Control Benchmark | Building control questions | ~160 |
| BSI Flex 8670 | Building safety competence | ~47 |
| dataset_thinking_mode.jsonl | Reasoning examples | 10K |
| dataset_tool_calling.jsonl | Tool call examples | 8K |
| MCP Generated | All 42 MCP servers | ~250 |
Anti-Overfitting Measures
- Lower Learning Rate: 1e-5 (vs typical 2e-4)
- Weight Decay: 0.05 L2 regularization
- LoRA Dropout: 0.1 in adapter layers
- Early Stopping: Patience of 3, monitors val_loss
- Validation Split: 5% held out for monitoring
- Lower LoRA Rank: r=16 reduces capacity
- Fewer Epochs: 2 epochs max
- Gradient Clipping: max_grad_norm=0.5
Estimated Training Time
On 2x RTX A5000 (RunPod):
| Dataset Size | Method | Time | Cost |
|---|---|---|---|
| ~60K samples | Unsloth QLoRA | ~12-15 hours | ~$13-16 |
| ~60K samples | HF Standard | ~25-30 hours | ~$25-30 |
API Usage
OpenAI-Compatible Endpoint
import openai
client = openai.OpenAI(
base_url="http://localhost:8080/v1",
api_key="not-needed"
)
response = client.chat.completions.create(
model="buildwellai-qwen3-14b-v2",
messages=[
{"role": "user", "content": "What are the PSI values for junction E5?"}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content, end="")
Direct Endpoint
curl -X POST http://localhost:8080/chat \
-H "Content-Type: application/json" \
-d '{
"messages": [{"role": "user", "content": "Calculate U-value for cavity wall"}],
"stream": false
}'
File Structure
buildwellai-model-v2/
βββ configs/
β βββ training_config.json
βββ datasets/
β βββ train.jsonl
β βββ validation.jsonl
β βββ dataset_stats.json
βββ scripts/
β βββ prepare_dataset.py
β βββ finetune.py
β βββ streaming_api.py
βββ output/
β βββ buildwellai-qwen3-14b-v2/
β βββ adapter/
β βββ merged/
βββ logs/
MCP Servers Covered
All 42 BuildwellAI MCP calculation servers:
- Structural: Part A, disproportionate collapse
- Thermal: U-value, PSI, condensation, thermal break
- Energy: SAP10, SBEM, Part L, Passivhaus
- Fire: Safety, smoke ventilation, evacuation
- Sustainability: BREEAM, WELL, LCA, embodied carbon
- Water: Part G, drainage, SuDS, flood risk
- Comfort: Daylight, overheating, acoustics, ventilation
- And more...
Inference Providers NEW
This model isn't deployed by any Inference Provider. π Ask for provider support