--- license: apache-2.0 base_model: mlx-community/Qwen3.5-2B-bf16 tags: [mlc-llm, web-llm, architecture, bim, japanese, distillation] language: [ja] pipeline_tag: text-generation --- # bimspec 2B (MLC / WebLLM) — 言葉が、建つ。 **bimspec** は [bim.house](https://bim.house) の建築設計AI。敷地条件(用途地域・道路幅員・防火指定・気候)と要望の自然文から、建築基準法(斜線・採光・容積/建ぺい)適合を狙った**設計スペック JSON** を返す蒸留モデルです。Qwen3.5-2B を LoRA 蒸留 → MLC q4f16_1 量子化。**WebGPU のあるブラウザならインストール不要・完全ローカル(無通信)で動きます。** - 🏠 ライブデモ: **https://bim.house/design/local** (このモデルがブラウザ内で動いています) - 📦 兄弟モデル: [bimspec-qwen3.5-2b](https://huggingface.co/yukihamada/bimspec-qwen3.5-2b-q4f16_1-MLC) / [bimspec-qwen3.5-4b](https://huggingface.co/yukihamada/bimspec-qwen3.5-4b-q4f16_1-MLC) / [27B (MLX, サーバ用)](https://huggingface.co/yukihamada/bimspec-qwen3.6-27b) - 🔧 エンジン側 OSS: [yukihamada/tsugi](https://github.com/yukihamada/tsugi) (採点・法規・構造エンジン, MIT) ## 設計思想 — LLM はスペックだけ、正しさは決定的エンジン このモデルは**家の形 (BIM要素) を直接生成しません**。出力はたった4キーのスペックです: ```json { "form": "中庭ロの字", "floors": 2, "material": "SOLUNA 籾殻SIPs (国産杉+籾殻)", "features": ["薪ストーブ", "土間", "耐力壁強化"] } ``` これを**決定的エンジン** (Rust製・[wasm版](https://bim.house/static/bimspec_wasm/bimspec_score.js)あり) が幾何に展開し、建築基準法 (斜線・採光・容積/建ぺい)・構造 (偏心率/剛性率)・5軸 (機能/美/環境/楽しさ/適法) を**実採点**します。LLM は「センス」担当、「正しさ」はエンジンが保証する分業です。採点器は決定的なので、ブラウザ内 wasm とサーバの判定は**ビット一致**します。 ## 入出力 **入力** (system + user): - system: bim.house の設計ガイダンス入りプロンプト (デモページのソース参照) - user — 敷地ブリーフ: ``` 敷地: 静岡県 静岡周辺 #55 用途地域: 第一種低層住居専用地域 敷地面積: 117㎡ (間口9.0m × 奥行13.0m) 前面道路: 幅員6.0m 気候: 省エネ地域区分4 要望: 二世帯でほどよい距離感の家 ``` **出力スキーマ** (response_format で enum 拘束を推奨 — 自由文字列だと量子化モデルが文字化けトークンを吐くため): | キー | 型 | 値 | |---|---|---| | form | enum | 中庭ロの字 / 総2階(箱) / L字 / 平屋(矩形) | | floors | int | 1–3 | | material | enum | SOLUNA 籾殻SIPs (国産杉+籾殻) / SIPs (杉CLT+籾殻+竹) / CLT パネル / 木造軸組 / 2x4 枠組壁 / RC打放しコンクリート / 鉄骨造 | | features | enum[] | 吹き抜け・ウッドデッキ・縁側・ロフト・薪ストーブ・土間・床暖房・太陽光発電・耐力壁強化 など24語 (≤8個) | ## 教師データと作り方 1. **教師** = bim.house 本番物件 **1,321件** (2026-06-07ダンプ) + 遺伝的アルゴリズム (GA) 探索のベスト設計。**品質しきい値: 決定的エンジン採点 ≥88点 + 法規適合のみ採用** (低品質教師はドリフトの原因になるため除外) 2. **ブリーフに法規制約を明記** (道路幅員・防火指定など)。これが無いと「同じ見た目の敷地で正解階数が違う」ラベルノイズになり学習が壊れる、というのが開発初期の最大の学び 3. **学習**: mlx_lm LoRA (Apple Silicon)。サイズ掃引の結果 **4B が最良** (0.8B=89.15 / 2B=90.10 / **4B=93.13** / 9B=89.60 — 9B は 4B に勝てない) 4. **評価は LLM 審判でなく実エンジン**: 生成スペックを実敷地で幾何展開して決定的採点 (canonical 91敷地)。「上手く見える」でなく「実際に点が出る」で測ります 5. **best-of-N で教師超え**: 単発 (temp0.7) 91.13 → **best-of-8 + 決定的審判選抜で 98.70・適法率100%** (教師平均 96.87 を上回る)。reward model は不要 — 正解器があるなら近似は要りません ## WebLLM での使い方 ```js import * as webllm from "https://esm.run/@mlc-ai/web-llm"; const appConfig = { ...webllm.prebuiltAppConfig }; appConfig.model_list = [...appConfig.model_list, { model: "https://huggingface.co/yukihamada/bimspec-qwen3.5-2b-q4f16_1-MLC", model_id: "bimspec-2b", model_lib: webllm.modelLibURLPrefix + webllm.modelVersion + "/Qwen3.5-2B-q4f16_1_cs1k-webgpu.wasm", vram_required_MB: 2245.44, overrides: { context_window_size: 4096 } }]; const engine = await webllm.CreateMLCEngine("bimspec-2b", { appConfig }); const out = await engine.chat.completions.create({ messages: [{role:"system", content: SYS}, {role:"user", content: brief}], temperature: 0.9, // best-of-N するなら 0.7–0.9、単発なら 0 max_tokens: 640, response_format: { type: "json_object", schema: SCHEMA } // enum拘束 (上の表) }); ``` **推奨レシピ**: N=3〜8 案を temp 0.7–0.9 で生成 → 各案を決定的審判 ([wasm](https://github.com/yukihamada/tsugi) `score_building(spec_json, site_json)` または `POST https://bim.house/api/bimspec/score`) で採点 → 適法優先・total 最大を選抜。これだけで単発比 +7点級の改善が出ます。 **注意 (Qwen3.5/3.6系)**: thinking が漏れる環境では `enable_thinking: false` 相当の設定を必ず入れること。MLC変換は `conv_template: qwen3_5_nothink` 済みです。 ## 性能 (このサイズ) | 指標 | 値 | |---|---| | canonical 91敷地・実エンジン採点 (単発) | **90.10** / 100 (蒸留時測定) | | 適法率 | 未集計 (4B は 88/91 — 高精度が必要なら 4B 推奨) | | ロード後の1案生成 | 数秒〜十数秒 (GPU依存) | | VRAM | 約 2.2 GB | ## 制限・免責 - **守備範囲は日本の低層住宅 (1〜3階)**。中高層・非住宅・日本国外の法規は学習外 - 出力は**設計の初期スタディ (C級提案)** です。建築確認申請には建築士による設計・法規判断が必要です - 法規・構造の合否はモデルでなく決定的エンジン側で必ず検証してください (モデル出力を鵜呑みにしない) - 敷地ブリーフが学習分布 (上記フォーマット) から離れるほど精度は落ちます ## English summary bimspec is a distilled architecture-design LLM for [bim.house](https://bim.house). Given a Japanese site brief (zoning, lot, road width, fire district, climate) + wishes, it returns a 4-key design spec JSON (form / floors / material / features). The spec is expanded to geometry and scored by a **deterministic** building-code + structural engine (Rust, also compiled to wasm for fully-offline in-browser judging). Teacher data: 1,321 real production designs + GA search results, filtered to engine-score ≥88 & code-compliant. Trained with mlx_lm LoRA on Qwen3.5; size sweep found 4B optimal (93.13 vs 9B 89.60). Best-of-8 + deterministic judge reaches 98.70 avg with 100% code-compliance, beating the teacher (96.87). Runs entirely in the browser via WebLLM/WebGPU — try it live at https://bim.house/design/local. Scope: Japanese low-rise houses (1–3 floors); not a substitute for a licensed architect.