ada-llm-gnn
LLM DATA · GNN AGENTSAn IFC building model goes in; out comes whether a wheelchair user can reach every room, and if not, which door or room breaks which rule of the 2010 ADA Standards. Three graph neural network agents check the doors, the rooms and the route, and a main agent gives the verdict. There was no labelled data to learn from, so a large LLM generated it and a 7B model took over the generation. Bir IFC bina modeli girer; tekerlekli sandalye kullanan biri her odaya ulaşabiliyor mu, ulaşamıyorsa hangi kapı ya da oda 2010 ADA Standartları'nın hangi kuralını bozuyor, o çıkar. Üç graph neural network ajanı kapıları, odaları ve rotayı denetliyor, bir ana ajan kararı veriyor. Öğrenilecek etiketli veri yoktu; onu büyük bir LLM üretti, üretimi de 7B bir model devraldı.
Left: a test building no model saw in training. D2 leaves 1196 mm of clear floor on its push side, 24 mm short of ADA 404.2.4, so R2 cannot be reached. Right: the ground floor of a public model (FZK-Haus). Its inner doors fail on an estimated width, a number this page does not trust; see the last section. Solda: hiçbir modelin eğitimde görmediği bir test binası. D2'nin itme tarafında 1196 mm boş alan var, ADA 404.2.4'ün 24 mm altında; bu yüzden R2'ye ulaşılamıyor. Sağda: açık bir modelin (FZK-Haus) zemin katı. İç kapıları tahmini bir genişlikle kalıyor; o sayıya bu sayfa güvenmiyor, son bölüme bak.
Training data that did not exist Olmayan eğitim verisi
There is no labelled set of IFC buildings with accessibility verdicts. A large LLM describes a building as JSON; my code writes the IFC file, a rule engine checks every value and writes the labels, and only buildings that match the scenario they were asked for are kept. The LLM never writes IFC itself. Erişilebilirlik kararıyla etiketlenmiş bir IFC bina veri seti yok. Büyük bir LLM binayı JSON olarak tarif ediyor; IFC dosyasını benim kodum yazıyor, bir kural motoru her değeri kontrol edip etiketleri yazıyor ve sadece istenen senaryoya uyan binalar kalıyor. LLM hiçbir zaman IFC'yi kendisi yazmıyor.
Asked in independent requests, a model repeats itself: in an early run 27 of 36 doors had the same 1000 mm handle height. So code, not the model, now fixes the layout and the exact values near each limit. The teacher's 231 verified answers fine-tuned Qwen2.5-7B with LoRA in 20 minutes on one GPU, and the student generated the remaining 2,013 buildings. Birbirinden bağımsız isteklerde model kendini tekrar ediyor: ilk denemelerden birinde 36 kapının 27'sinin kol yüksekliği aynı 1000 mm'ydi. Bu yüzden yerleşimi ve her sınırın hemen yanındaki değerleri artık model değil kod belirliyor. Öğretmenin doğrulanmış 231 cevabıyla Qwen2.5-7B tek GPU'da 20 dakikada LoRA ile eğitildi; kalan 2.013 binayı bu öğrenci üretti.
| generatorüreten | valid / attemptsgeçerli / deneme | rateoran |
|---|---|---|
| teacher, Nemotron 3 Ultra (API)öğretmen, Nemotron 3 Ultra (API) | 231 / 231 | 100% |
| student, Qwen2.5-7B + LoRAöğrenci, Qwen2.5-7B + LoRA | 2,013 / 2,493 | 81% |
| the same 7B, untunedaynı 7B, eğitilmemiş | 2 / 50 | 4% |
The untuned model failed mostly by putting doors on walls other than the ones asked for (37 of its 48 rejections). The student also copied what the prompts left free: 3,432 of its 4,026 doors have a 1000 mm handle. Eğitilmemiş model çoğunlukla kapıları istenen duvarlardan başkasına koyduğu için elendi (48 retten 37'si). Öğrenci, prompt'ların serbest bıraktığı değerleri de kopyaladı: 4.026 kapısının 3.432'sinin kolu 1000 mm'de.
A door edge cannot see the other door Bir kapı kenarı öbür kapıyı göremiyor
Rooms are nodes and doors are edges. A room too small to turn in can still be crossed in a straight line, if the door you enter by and the door you leave by are on opposite walls; on adjacent walls a 90° turn is needed and the rooms behind are cut off. That depends on two doors of the same room at once. Odalar düğüm, kapılar kenar. Dönülemeyecek kadar küçük bir oda yine de düz bir çizgide geçilebilir: girdiğin ve çıktığın kapılar karşılıklı duvarlardaysa. Komşu duvarlardaysa 90° dönmek gerekir ve arkadaki odalara ulaşılamaz. Bu, aynı odanın iki kapısına birden bağlı.
Message passing along door edges got 28 of the 40 such test buildings wrong. On a transit graph, where a node is "entering a room through a door" and an edge is "crossing it from one door to the other" and carries both walls, it got 4 wrong. Door, room and route agents reach F1 0.926, 0.960 and 0.879 on the failing class. Kapı kenarları boyunca mesaj geçirme, bu türden 40 test binasının 28'ini yanlış bildi. Düğümün "bir odaya bir kapıdan girmek", kenarın "odayı bir kapıdan öbürüne geçmek" olduğu ve iki duvarı birden taşıdığı transit graph'ta yanlış sayısı 4'e indi. Kapı, oda ve rota ajanları bozuk sınıfta F1 0.926, 0.960 ve 0.879'a ulaşıyor.
Does the judge need to be an LLM? Hakemin LLM olması gerekiyor mu?
The main agent gets the three agents' findings and decides. All rows below see the same findings for the same 336 test buildings; the two groups differ only in how the agents were trained. Ana ajan üç ajanın bulgularını alıp karar veriyor. Aşağıdaki bütün satırlar aynı 336 test binası için aynı bulguları görüyor; iki grup arasındaki tek fark ajanların nasıl eğitildiği.
| main agentana ajan | agents: complete dataajanlar: tam veri | agents: values deletedajanlar: silinmiş değer |
|---|---|---|
| path tracing, no LLMyol izleme, LLM yok | 0.893 | 0.938 |
| Qwen2.5-7B, fine-tuned on findingsQwen2.5-7B, bulgularla ince ayarlı | 0.916 | 0.921 |
| GPT-OSS-20B, zero-shotGPT-OSS-20B, zero-shot | 0.899 | – |
| Qwen2.5-7B, untuned, zero-shotQwen2.5-7B, eğitilmemiş, zero-shot | 0.569 | – |
Building verdict, macro F1. The untuned 7B model read the failing values correctly but called most accessible buildings inaccessible; four worked examples did not change that (0.566). Fine-tuned, it beat path tracing while the agents still erred near the limits (8 buildings to 1, McNemar p = 0.039): it re-checked the raw value. With better agents the gap closed (3 to 8, p = 0.23). Its explanations stay fluent and are sometimes wrong, as in "clear width 824 mm < 815 mm". Bina kararı, macro F1. Eğitilmemiş 7B model bozuk değerleri doğru okudu ama erişilebilir binaların çoğuna erişilemez dedi; dört örnek göstermek bunu değiştirmedi (0.566). İnce ayardan sonra, ajanlar sınıra yakın değerlerde hâlâ yanılırken yol izlemeyi geçti (8 binaya 1, McNemar p = 0.039): ham değeri kendisi yeniden kontrol ediyordu. Ajanlar iyileşince fark kapandı (3'e 8, p = 0.23). Açıklamaları akıcı kalıyor ama bazen yanlış, örneğin "clear width 824 mm < 815 mm".
When the file does not have the value Değer dosyada yoksa
A rule engine can only skip an unknown value, and miss broken buildings, or fail it, and raise false alarms. On the test set a share of the values was deleted at random after reading the file; every system saw the same deletions, three times over. Bir kural motoru bilinmeyen bir değeri ya atlar, bozuk binaları kaçırır, ya da bozuk sayar, yanlış alarm verir. Test kümesinde dosya okunduktan sonra değerlerin bir kısmı rastgele silindi; her sistem aynı silmeleri gördü, üç kez tekrarlandı.
| 30% of values deleteddeğerlerin %30'u silinmiş | macro F1 | missed / 225kaçan / 225 | false alarms / 111yanlış alarm / 111 |
|---|---|---|---|
| rule engine, skip unknownkural motoru, bilinmeyeni atla | 0.782 | 72 | 0 |
| rule engine, unknown failskural motoru, bilinmeyen bozuk | 0.423 | 0 | 109 |
| agents trained with deleted valuessilinmiş değerle eğitilen ajanlar | 0.756 | 3 | 58 |
On macro F1 the skipping rule engine stays ahead, and on complete data it is right by construction: it wrote the labels. What the agents offer is the middle: almost no missed buildings with half the false alarms. Training with deleted values also made them better on complete data (doors 0.901 to 0.926, rooms 0.925 to 0.960). Macro F1'de atlayan kural motoru önde kalıyor; tam veride de tanım gereği haklı, çünkü etiketleri o yazdı. Ajanların sunduğu şey ortası: neredeyse hiç kaçan bina yok, yanlış alarm yarı yarıya. Silinmiş değerlerle eğitim ajanları tam veride de iyileştirdi (kapı 0.901'den 0.926'ya, oda 0.925'ten 0.960'a).
What is not claimed here Burada iddia edilmeyenler
Real buildings Gerçek binalar
20 public IFC models were read; 2 have no spaces and cannot be checked. All 18 others came out inaccessible, mostly on estimated door widths, and the width field means the leaf in Revit 2011 but includes the frame in Revit 2024. No verdict on a real file has been checked by hand. 20 açık IFC modeli okundu; 2'sinde oda yok, kontrol edilemiyor. Kalan 18'inin hepsi erişilemez çıktı, çoğu tahmini kapı genişliği yüzünden; o genişlik alanı Revit 2011'de kanadın kendisi, Revit 2024'te kasa dahil. Gerçek bir dosyadaki hiçbir karar elle kontrol edilmedi.
Two rooms, one storey İki oda, tek kat
Every building in training and test has two rooms. Corridors and larger plans are untested, and a multi-storey file is cut down to its entrance storey. Eğitimdeki ve testteki her binada iki oda var. Koridorlar ve daha büyük planlar denenmedi; çok katlı bir dosya giriş katına indiriliyor.
Labels from my own rules Etiketler benim kurallarımdan
The rule engine is my reading of the standard: adjacent walls need a turn, ADA 404.2.4 is simplified to a front approach, clear floor space is bounded by the room's depth. No architect has reviewed it, and the agents learn exactly this reading. Kural motoru standardı benim okuma biçimim: komşu duvarlar dönüş gerektirir, ADA 404.2.4 önden yaklaşmaya sadeleştirildi, kapı önü alan odanın derinliğiyle sınırlı. Hiçbir mimar bunu incelemedi ve ajanlar tam olarak bu okumayı öğreniyor.
Read further Devamını oku
The paper in IEEE format: generation and distillation, the agents, the main agents compared, the missing-value experiment and the test on public models. IEEE biçiminde makale: üretim ve damıtma, ajanlar, ana ajanların kıyası, eksik değer deneyi ve açık modellerdeki test.
OPENAÇ arrow_forward table_chart README.mdResults at a glance, the commands that reproduce each step, and what the project cannot do. Sonuçlar bir bakışta, her adımı yeniden üreten komutlar ve projenin yapamadıkları.
OPENAÇ arrow_forward play_circle streamlit_app.pyUpload an IFC file, get the verdict, the broken rule, what could not be checked and a 3D view. Runs on a CPU; without a GPU the rule-based main agent decides and says so. Bir IFC dosyası yükle; karar, bozulan kural, kontrol edilemeyenler ve 3B görünüm gelsin. İşlemcide çalışıyor; GPU yoksa kural tabanlı ana ajan karar veriyor ve bunu söylüyor.
OPENAÇ arrow_forward