Most wearable well being fashions are constructed one final result at a time. That strategy breaks down at thirty-five endpoints. Labels are costly and retrospective annotation is infeasible.
Google Analysis launched SensorFM, a basis mannequin for wearable well being pre-trained on greater than 1 trillion minutes of sensor knowledge from 5 million folks.

What’s SensorFM?
SensorFM is a Giant Sensor basis Mannequin for wearable time-series illustration studying. It ingests 34 one-minute mixture options drawn from 5 sensors: PPG, accelerometer, EDA, pores and skin temperature, and altimeter. These options are organized into seven classes, over a 24-hour context window.
The spine is a ViT-1D encoder skilled with a masked-autoencoder goal and a patch dimension of [20, 1]. Pretraining used 5,000,000 consented members, sampled between September 2024 and September 2025. That corpus spans 100+ international locations, all 50 U.S. states, and 20+ Fitbit and Pixel Watch fashions. It totals over two billion hours, or multiple trillion minutes.
4 variants exist, every paired with a proportional knowledge quantity.
| Variant | Parameters | Encoder hidden / layers | Proportional knowledge | Sensor-hours |
|---|---|---|---|---|
| XXS | 138,740 | 64 / 2 | 5K topics | 2×10⁶ |
| XS | 933,204 | 128 / 4 | 50K topics | 2×10⁷ |
| S | 7,290,068 | 256 / 8 | 500K topics | 2×10⁸ |
| B | 110,763,412 | 768 / 12 | 5M topics | 2×10⁹ |
Analysis makes use of separate knowledge. It covers 13,985 topics throughout three potential IRB-approved research. These are metabolic, cardiac and respiratory well being (N = 1,655), sleep (N = 6,377), and psychological well being (N = 5,953). The 35 duties cowl cardiovascular (6), metabolic (8), psychological well being (8), sleep (3), demographics (4), and way of life (6).
The Scaling Case
With that setup, the primary query is whether or not scale buys something measurable. The analysis crew swept 4 mannequin sizes in opposition to 4 knowledge volumes.
SensorFM-B on the 5M corpus cuts reconstruction validation loss by 31% versus SensorFM-XXS. Generative loss drops 28% on common. Downstream, it beneficial properties ΔAUC = 0.09 on classification and Δr = 0.21 on regression. Throughout variants, B wins 33 of 35 duties, and XXS ranks final on 33 of 35.
The failure case is equally informative. SensorFM-B skilled on solely 5K topics posts a 1.082 validation loss. That’s worse than each smaller variant on the similar quantity. Pretraining was stopped early as a result of the mannequin overfit.


Consequently, all headline outcomes assume knowledge volumes scaled proportionally to capability. Alongside that co-scaled diagonal, imply ROC AUC strikes .664, .681, .710, .752. Imply Pearson r strikes .386, .435, .536, .612. The above determine reveals the development has not saturated.
AIM: Dealing with Lacking Knowledge as Sign
Scaling alone doesn’t clarify these numbers. Actual streams fragment throughout charging, off-wrist durations, and power-saving modes. Standard strategies both impute the gaps, injecting bias, or drop the home windows, discarding knowledge.
SensorFM as a substitute makes use of Adaptive and Inherited Masking (AIM), launched by Xu et al. in LSM-2. The utilized masks is the union of the inherited missingness masks and the factitious masks. Loss is computed solely on artificially masked patches that had floor fact. Two-stage token masking, utilizing token dropout and a focus masking, retains this environment friendly.
As a result of the decoder learns to reconstruct ablated observations, imputation and forecasting come at no cost.
| Generative job | Imply fill | NN fill | Linear interp. | SensorFM-B |
|---|---|---|---|---|
| Random imputation, 80% | 0.915 | 1.020 | 0.854 | 0.215 |
| Temporal interpolation, 60 min | 0.904 | 0.943 | 0.777 | 0.468 |
| Temporal extrapolation, 60 min | 0.937 | 1.102 | 1.102 | 0.563 |
| Sign imputation, 12/26 channels | 1.025 | 1.025 | 1.025 | 0.170 |
Reconstruction MSE on the held-out take a look at set, decrease is healthier.
In opposition to the very best baseline, SensorFM improves random imputation by 74.8%. Sensor sign imputation improves by 83.7%.
Fingers-On: Adapting the Embeddings
Turning that illustration into predictions is simple. The encoder stays frozen. Embeddings are aggregated per particular person, utilizing the imply and customary deviation throughout days. These cut back to 50 principal parts. A linear head then trains underneath five-fold, person-independent cross-validation.
import numpy as np
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import roc_auc_score
def person_level(emb, pid):
"""Collapse day-level embeddings into one vector per participant."""
folks = np.distinctive(pid)
feats = []
for p in folks:
e = emb[pid == p] # (n_days, d)
feats.append(np.concatenate([e.mean(axis=0), e.std(axis=0)]))
return np.nan_to_num(np.stack(feats)), folks # pandas std() is NaN at 1 day
X, folks = person_level(emb, pid) # emb: frozen SensorFM embeddings
y = labels[people] # one label per participant
aucs = []
for tr, te in StratifiedKFold(5, shuffle=True, random_state=0).break up(X, y):
pca = PCA(n_components=50).match(X[tr]) # PCA-50, match on the practice fold solely
clf = LogisticRegression(max_iter=400) # paper: AdamW, lr 5e-3, wd 1e-4, 400 steps
clf.match(pca.rework(X[tr]), y[tr])
p = clf.predict_proba(pca.rework(X[te]))[:, 1]
aucs.append(roc_auc_score(y[te], p))
print(np.imply(aucs))
This linear probe beats a supervised feature-engineered baseline on 34 of 35 duties. Chosen outcomes observe.
| Job | Metric | Demos. solely | Feat. Eng. | SensorFM-B |
|---|---|---|---|---|
| Age | r | – | .662 | .920 |
| Psychological Well being Med. | ROC | .594 | .773 | .819 |
| PHQ-8 | r | .303 | .354 | .450 |
| Insulin Resistance | ROC | .717 | .710 | .761 |
| Hypertension Dx | ROC | .762 | .747 | .786 |
| Framingham 30 Danger | r | .782 | .592 | .714 |
The final row will not be an outlier. ASCVD and Framingham scores are calculated from demographic options. Demographic-only fashions due to this fact win by building. The analysis crew reviews SensorFM finest on 31 of 35 duties, not all of them.
Two caveats sit in the identical tables. Demographics nonetheless assist SensorFM on 22 of 30 duties, although the carry shrinks with scale. In very-low-label regimes, demographic priors alone stay sturdy.
The Agentic Classroom
Even a linear probe wants per-task tuning. To automate that, the analysis crew ran a ‘classroom’ of 5 LLM scholar brokers. These span gemini-2.5 flash by means of gemini-3.1 professional preview. Brokers generate, execute, rating, and refine Python heads over 20 cycles, utilizing unreduced embeddings.
In complete they ran 30,516 experiments. Agent-found heads beat the linear probe on 16 of 20 classification duties, measured by F1. Additionally they raised Pearson correlation on 12 of 15 regression duties. Answer high quality tracked the Synthetic Evaluation Intelligence Index.
The successful options are conservative. Nearly all lowered the embedding house to 50–100 dimensions. Linear fashions outnumbered non-linear ones, and ensembles appeared in underneath 1 / 4.
Grounding a Private Well being Agent
The ultimate experiment checks SensorFM as a device, not a benchmark entry. Gemini 3 Flash generated well being summaries for 31 actual participant profiles. Each situation obtained demographics and feature-engineered each day metrics. Circumstances then added SensorFM predictions, ground-truth targets, or nothing.
In response to the analysis paper, 4 board-certified physicians, blinded to situation, produced 1,860 rankings throughout 5 rubric dimensions. Including SensorFM predictions beat the baseline total (W = 10110, p < 0.001), and on every dimension. Its predictions have been statistically indistinguishable from floor fact (p = 0.396).
Use Circumstances
- Screening and danger stratification: A frozen encoder plus one linear head flags candidates for confirmatory lab work. The paper scopes this to screening, not analysis.
- Repairing each day summaries: With 60 contiguous minutes ablated, SensorFM retains 99.7% step-count and 99.9% deep-sleep accuracy.
- Label-scarce research: Probe frozen embeddings as a substitute of coaching end-to-end. Examine in opposition to a demographics-only baseline first.
- Grounded teaching: The agent immediate forbids emitting uncooked regression values or boolean flags. Predictions are interpreted qualitatively as a substitute.
Interactive Explorer
‘+VH[r]+’
‘;
for(var c=0;c<4;c++){html+=’
‘;}
html+=”;
}
tb.innerHTML=html;
operate bar(label,val,max,txt){
var w=Math.max(2,Math.spherical(val/max*100));
return ”;
}
operate choose(r,c){
root.querySelectorAll(‘#mtx .cell’).forEach(operate(x){x.classList.take away(‘sel’);});
root.querySelector(‘#mtx .cell[data-r=”‘+r+'”][data-c=”‘+c+'”]’).classList.add(‘sel’);
doc.getElementById(‘k1’).textContent=f3(LOSS[r][c]);
doc.getElementById(‘k2’).textContent=f3s(ROC[r][c]);
doc.getElementById(‘k3’).textContent=f3s(PR[r][c]);
doc.getElementById(‘k4’).textContent=f3(RIMP[r][c]);
doc.getElementById(‘cfgtag’).textContent=”SensorFM-“+MV[c]+’ u00b7 ‘+VOL[r]+’ topics’;
var v;
if(r===c&&c===3){v=’The headline configuration. Co-scaled to 10u2078 parameters and a pair of billion sensor-hours, it wins 33 of 35 downstream duties.’;}
else if(c===3&&r<2){v=’Capability outruns knowledge right here. Pretraining was terminated early as a result of the mannequin overfit the small corpus.’;}
else if(r===c){v=’On the co-scaled diagonal. Loss, ROC AUC and Pearson r all enhance monotonically as you progress down it.’;}
else if(c
‘;
});
doc.getElementById(‘genrows’).innerHTML=h;
}
var cv=doc.getElementById(‘cv’),ctx=cv.getContext(‘2nd’);
var ROWS=34,COLS=144,PADL=118,PADT=26,CW,CH;
var GROUPS=[[‘Accelerometer’,10],[‘Altitude’,1],[‘EDA’,2],[‘HR/HRV’,13],[‘SpO2’,3],[‘Temperature’,1],[‘Sleep’,4]];
var sig=[],masks=[],recon=[],mode=”rand”;
operate seeded(i,j){var x=Math.sin(i*12.9898+j*78.233)*43758.5453;return x-Math.ground(x);}
operate construct(){
sig=[];for(var i=0;i
row.push(Math.min(1,Math.max(0.04,circ+burst+(seeded(i,j)-0.5)*0.16)));}sig.push(row);}
masks=[];for(i=0;i
recon=[];for(i=0;i
},18);
});
construct();applyMode(‘rand’);
/* ———- panel 3 (Desk ED.11) ———- */
var FAM={
act:[[‘Steps’,5958.89,6208.41,6227.49,”]],
slp:[[‘Light’,24.57,25.43,25.64,’min’],[‘Deep’,426.24,444.12,444.48,’min’],[‘REM’,66.71,69.78,69.51,’min’]],
exr:[[‘Light (95u2264HR<114)’,125.07,129.63,130.64,’min’],[‘Aerobic (114u2264HR<152)’,21.94,22.38,22.92,’min’],[‘Anaerobic (152u2264HR)’,1.04,1.05,1.07,’min’]],
spo:[[‘High (>90%)’,223.68,233.40,233.28,’min’],[‘Low (<90%)’,6.48,6.62,6.74,’min’]],
tmp:[[‘Normal (<37u00b0C)’,1065.56,1112.05,1112.03,’min’],[‘High (u226537u00b0C)’,1.10,1.12,1.13,’min’]]
};
operate renderRec(fam,anim){
var rows=FAM[fam],h=””;
rows.forEach(operate(r){
var mx=Math.max(r[1],r[2],r[3]);
[‘Baseline’,’SensorFM recovered’,’Ground truth’].forEach(operate(lab,okay){
var v=r[k+1],pct=(v/r[3]*100).toFixed(1);
var colour=okay===0?’#c98b4b’:(okay===1?’#4f8a10′:’#7a8a80′);
h+=’
‘;
});
h+=”;
});
doc.getElementById(‘recbars’).innerHTML=h;
if(anim){setTimeout(operate(){root.querySelectorAll(‘#recbars .bar’).forEach(operate(b){b.model.width=b.dataset.w+’%’;});},40);}
resize();
}
doc.getElementById(‘famsel’).addEventListener(‘change’,operate(){renderRec(this.worth,true);});
doc.getElementById(‘playRec’).addEventListener(‘click on’,operate(){renderRec(doc.getElementById(‘famsel’).worth,true);});
renderRec(‘act’,false);
/* ———- panel 4 (Desk ED.9) ———- */
var T=[
[‘Age’,’Demographics’,’r’,null,.662,null,.920,null],
[‘BMI’,’Demographics’,’r’,null,.441,null,.809,null],
[‘Height’,’Demographics’,’r’,null,.409,null,.675,null],
[‘Weight’,’Demographics’,’r’,null,.460,null,.809,null],
[‘Currently Working’,’Lifestyle’,’ROC’,.637,.769,.782,.912,.912],
[‘Disability’,’Lifestyle’,’ROC’,.600,.702,.722,.753,.758],
[‘Disability Affects Work’,’Lifestyle’,’ROC’,.534,.605,.625,.699,.697],
[‘Smoking’,’Lifestyle’,’ROC’,.629,.754,.771,.870,.867],
[‘Medicaid’,’Lifestyle’,’ROC’,.589,.726,.729,.814,.814],
[‘No Medications’,’Lifestyle’,’ROC’,.617,.687,.699,.739,.744],
[‘Cardiovascular Dx’,’Cardiovascular’,’ROC’,.701,.696,.706,.712,.696],
[‘Hypertension Dx’,’Cardiovascular’,’ROC’,.762,.747,.780,.786,.786],
[‘Respiratory Dx’,’Cardiovascular’,’ROC’,.640,.642,.640,.682,.674],
[‘ASCVD Risk’,’Cardiovascular’,’r’,.740,.604,.764,.730,.784],
[‘Framingham Risk’,’Cardiovascular’,’r’,.743,.548,.730,.669,.724],
[‘Framingham 30 Risk’,’Cardiovascular’,’r’,.782,.592,.772,.714,.756],
[‘Diabetes Dx’,’Metabolic’,’ROC’,.688,.727,.734,.763,.756],
[‘Diabetes Med.’,’Metabolic’,’ROC’,.704,.672,.706,.700,.705],
[‘Hyperlipidemia’,’Metabolic’,’ROC’,.688,.643,.670,.674,.676],
[‘Pre-Diabetes’,’Metabolic’,’ROC’,.731,.728,.742,.704,.707],
[‘Insulin Resistance’,’Metabolic’,’ROC’,.717,.710,.717,.761,.763],
[‘HOMA-IR’,’Metabolic’,’r’,.316,.374,.397,.479,.480],
[‘HbA1c’,’Metabolic’,’r’,.282,.221,.228,.293,.292],
[‘Triglycerides’,’Metabolic’,’r’,.251,.131,.173,.269,.287],
[‘Mild Depression’,’Mental Health’,’ROC’,.653,.682,.705,.726,.730],
[‘Mild Anxiety’,’Mental Health’,’ROC’,.641,.654,.680,.698,.699],
[‘Persistent Stress’,’Mental Health’,’ROC’,.676,.664,.697,.712,.717],
[‘Depress./Anxiety Dx’,’Mental Health’,’ROC’,.626,.672,.693,.717,.721],
[‘Mental Health Med.’,’Mental Health’,’ROC’,.594,.773,.783,.819,.826],
[‘PHQ-8′,’Mental Health’,’r’,.303,.354,.410,.450,.459],
[‘GAD-7′,’Mental Health’,’r’,.291,.244,.294,.400,.403],
[‘PSS’,’Mental Health’,’r’,.378,.305,.417,.463,.476],
[‘Sleep Disorder Treatment’,’Sleep’,’ROC’,.653,.610,.625,.649,.653],
[‘Sleep Disturbance PRO’,’Sleep’,’r’,.195,.283,.326,.390,.393],
[‘Sleep Impairment PRO’,’Sleep’,’r’,.344,.310,.372,.448,.460]
];
operate renderTasks(){
var cat=doc.getElementById(‘catsel’).worth,q=doc.getElementById(‘q’).worth.toLowerCase();
var h=””,n=0;
T.forEach(operate(t){
if(cat!==’all’&&t[1]!==cat)return;
if(q&&t[0].toLowerCase().indexOf(q)<0)return;
n++;
var vals=t.slice(3),finest=Math.max.apply(null,vals.filter(operate(v){return v!==null;}));
h+=’
‘+t[1]+’
‘;
vals.forEach(operate(v,okay){
if(v===null){h+=’
‘;return;}
var cls=(v===finest)?(okay>=3?’win’:’loss’):”;
h+=’
‘;
});
h+=’
‘;
});
doc.getElementById(‘taskrows’).innerHTML=h;
doc.getElementById(‘cnt’).textContent=n+’ proven’;
resize();
}
doc.getElementById(‘catsel’).addEventListener(‘change’,renderTasks);
doc.getElementById(‘q’).addEventListener(‘enter’,renderTasks);
renderTasks();
/* ———- auto resize ———- */
operate resize(){
attempt{var h=doc.physique.offsetHeight+40;father or mother.postMessage({mtpFrame:’sensorfm’,top:h},’*’);}catch(e){}
}
window.addEventListener(‘load’,resize);
setTimeout(resize,120);setTimeout(resize,600);
})();
Have to associate with us for selling your GitHub Repo OR Hugging Face Web page OR Product Launch OR Webinar and many others.? Join with us
