TRIADS / README.md
Rtx09's picture
TRIADS — 6-benchmark weights + model code + Gradio app
8a82d34
---
license: mit
language: en
tags:
- materials-science
- machine-learning
- pytorch
- matbench
- small-data
- attention
- recursive
- crystal
- gradio
datasets:
- matbench
metrics:
- mae
- roc_auc
model-index:
- name: TRIADS
results:
- task:
type: regression
name: Yield Strength Prediction (MPa)
dataset:
name: matbench_steels
type: matbench
metrics:
- type: mae
value: 91.20
name: MAE (MPa)
- task:
type: regression
name: Band Gap Prediction (eV)
dataset:
name: matbench_expt_gap
type: matbench
metrics:
- type: mae
value: 0.3068
name: MAE (eV)
- task:
type: classification
name: Metallicity Classification
dataset:
name: matbench_expt_ismetal
type: matbench
metrics:
- type: roc_auc
value: 0.9655
name: ROC-AUC
- task:
type: classification
name: Glass Forming Ability
dataset:
name: matbench_glass
type: matbench
metrics:
- type: roc_auc
value: 0.9285
name: ROC-AUC
- task:
type: regression
name: Exfoliation Energy (meV/atom)
dataset:
name: matbench_jdft2d
type: matbench
metrics:
- type: mae
value: 35.89
name: MAE (meV/atom)
- task:
type: regression
name: Peak Phonon Frequency (cm⁻¹)
dataset:
name: matbench_phonons
type: matbench
metrics:
- type: mae
value: 41.91
name: MAE (cm⁻¹)
---
# TRIADS — Materials Property Prediction Across 6 Matbench Benchmarks
**TRIADS (Tiny Recursive Information-Attention with Deep Supervision)** is a parameter-efficient recursive architecture for materials property prediction, purpose-built for the **small-data regime** (312–5,680 samples).
[![GitHub](https://img.shields.io/badge/GitHub-Code-black?logo=github)](https://github.com/Rtx09x/TRIADS)
[![Paper](https://img.shields.io/badge/Paper-PDF-red)](https://github.com/Rtx09x/TRIADS/raw/main/TRIADS_Final.pdf)
## Live Demo
Try the interactive demo with all 6 benchmarks → **[Launch App](https://huggingface.co/spaces/Rtx09/TRIADS)**
## Results Summary
| Task | N | TRIADS | Params | Rank |
|---|---|---|---|---|
| `matbench_steels` (yield strength) | 312 | **91.20 MPa** | 225K | #3 |
| `matbench_expt_gap` (band gap) | 4,604 | **0.3068 eV** | 100K | #2 composition-only |
| `matbench_expt_ismetal` (metal?) | 4,921 | **0.9655 ROC-AUC** | 100K | **#1** composition-only |
| `matbench_glass` (glass forming) | 5,680 | **0.9285 ROC-AUC** | 44K | #2 |
| `matbench_jdft2d` (exfol. energy) | 636 | **35.89 meV/atom** | 75K | **#1** no-pretraining |
| `matbench_phonons` (phonon freq.) | 1,265 | **41.91 cm⁻¹** | 247K | **#1** no-pretraining |
## Two Model Variants
### HybridTRIADS (composition tasks: steels, gap, ismetal, glass, jdft2d)
Input: Chemical formula → Magpie + Mat2Vec (composition tokens)
Core: 2-layer self-attention cell, iterated T=16-20 times with shared weights
Training: Per-cycle deep supervision (w_t ∝ t)
### GraphTRIADS (structural task: phonons)
Input: CIF/structure → 3-order hierarchical crystal graph (atoms, bonds, triplet angles, dihedral angles)
Core: Hierarchical GNN message-passing stack inside the shared recursive cell
Halting: Gate-based adaptive halting (4–16 cycles per sample)
## Pretrained Checkpoints
Weights are organized by benchmark. Download via `huggingface_hub`:
```python
from huggingface_hub import hf_hub_download
import torch
# Download one benchmark's weights (contains all folds compiled)
ckpt = torch.load(
hf_hub_download("Rtx09/TRIADS", "steels/weights.pt"),
map_location="cpu"
)
# ckpt['folds'] -> list of fold dicts, each with 'model_state' and 'test_mae'
# ckpt['n_extra'] -> int (needed for model init)
# ckpt['config'] -> dict (d_attn, d_hidden, ff_dim, dropout, max_steps)
```
### Checkpoint Index
| Benchmark | File | Folds | Notes |
|---|---|---|---|
| matbench_steels | `steels/weights.pt` | 5 | HybridTRIADS V13A · 225K · 5-seed ensemble compiled |
| matbench_expt_gap | `expt_gap/weights.pt` | 5 | HybridTRIADS V3 · 100K |
| matbench_expt_ismetal | `is_metal/weights.pt` | 5 | HybridTRIADS · 100K |
| matbench_glass | `glass/weights.pt` | 5 | HybridTRIADS · 44K |
| matbench_jdft2d | `jdft2d/weights.pt` | 5 | HybridTRIADS V4 · 75K · 5-seed ensemble compiled |
| matbench_phonons | `phonons/weights.pt` | 5 | GraphTRIADS V6 · 247K · also needs `phonons/dataset.pt` |
## Citation
```bibtex
@article{tiwari2026triads,
author = {Rudra Tiwari},
title = {TRIADS: Tiny Recursive Information-Attention with Deep Supervision},
year = {2026},
url = {https://github.com/Rtx09x/TRIADS}
}
```
## License
MIT License — see [GitHub repository](https://github.com/Rtx09x/TRIADS/blob/main/LICENSE).