ivaavi's picture
Publish clean standalone Singularity xMESH 0.8B release
56856ed verified
Raw History Blame Contribute Delete
1.53 kB
#!/usr/bin/env python3
"""Run one typed xMESH decision through the standalone Singularity runtime."""
from __future__ import annotations
import argparse, json, sys
from pathlib import Path
import torch
PACKAGE=Path(__file__).resolve().parents[1]
sys.path.insert(0,str(PACKAGE))
from sgl_systemone import load_artifact, systemone
from xmesh_policy import apply_policy
p=argparse.ArgumentParser(); p.add_argument('--request',type=Path,required=True); p.add_argument('--device',choices=('mps','cpu','cuda'),default='mps'); args=p.parse_args()
payload=json.loads(args.request.read_text())
if set(payload)!={'state','questions'}: raise SystemExit("request must contain exactly 'state' and 'questions'")
dtype=torch.float16 if args.device in {'mps','cuda'} else torch.float32
model,processor,temperature=load_artifact(str(PACKAGE),device=args.device,dtype=dtype)
response=systemone(model,processor,{'model':'Singularity-xMESH-0.8B',**payload},temperature=temperature,max_length=2048)
raw={}
for name,value in response['answers'].items():
if value['type']=='noul': raw[name]={'answer':float(value['noul'])>=0.5,'confidence':None}
elif value['type']=='choice': raw[name]={'answer':value['choice'],'confidence':value.get('confidence')}
else: raw[name]={'answer':value['score'],'confidence':value.get('confidence')}
answers,overrides=apply_policy(payload['state'],payload['questions'],raw)
print(json.dumps({'model':'Singularity xMESH 0.8B','answers':answers,'policy_overrides':overrides,'usage':response['usage']},indent=2))