Text Classification
PEFT
lora
document-question-answering
structured-decisions
calibration
synthetic-evaluation
Instructions to use botp/Solomon with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use botp/Solomon with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
| """Preserve five-task trained-head confidence/routing with optional evidence.""" | |
| import hashlib,json | |
| from pathlib import Path | |
| import numpy as np | |
| from solomon.engine import SolomonEngine,sha | |
| from solomon.engine_reasoning import ReasoningEngine | |
| from solomon.service_heads import HeadsService | |
| from solomon.service_answers import Service as ConfidenceService | |
| from solomon.service_evidence import EvidenceService,CONTRACT | |
| class ServiceEngine(SolomonEngine,ReasoningEngine): | |
| def __init__(self,*args,correctness_report_sha256=None,**kwargs): | |
| super().__init__(*args,**kwargs) | |
| self.identity.update(trained_heads_report_sha256=correctness_report_sha256,serving_sha256=sha(__file__)) | |
| self.identity.pop('fingerprint',None) | |
| self.identity['fingerprint']=hashlib.sha256(json.dumps(self.identity,sort_keys=True).encode()).hexdigest() | |
| def estimate(self,state,block,n,stage='fast',max_new_tokens=512): | |
| if not any('image' in p for p in state['parts']): | |
| return ReasoningEngine.estimate(self,state,block,n,stage=stage,max_new_tokens=max_new_tokens) | |
| if stage!='fast':raise ValueError('image reasoning is unqualified') | |
| with self._lock,self.torch.inference_mode(): | |
| ids,_,_,_=self._encode(state['parts'],self._render(state['parts'],block),state['features']) | |
| p=state['prefix_tokens'] | |
| if not self.torch.equal(ids[:,:p],state['prefix_ids']):raise ValueError('image estimate prefix mismatch') | |
| return {'input_tokens':int(ids.shape[1])-p,'generated_tokens':0,'branches':1, | |
| 'full_prompt_tokens':int(ids.shape[1]),'reused_prefix_tokens':p} | |
| class ConfidenceHeadsService(HeadsService): | |
| def expected_identity(self,stage): | |
| return {**super().expected_identity(stage),'contract':CONTRACT,'serving_sha256':sha(__file__)} | |
| def _validate_artifact(self,stage,artifact): | |
| ConfidenceService._validate_artifact(self,stage,artifact) | |
| if artifact.get('schema')!='solomon-heads-envelope-v1':raise ValueError('the evidence layer confidence envelope required') | |
| selected=artifact.get('trained_head_identity',{});runtime=self.runtime_identity | |
| if (selected.get('weights_sha256')!=runtime.get('trained_heads_sha256') or | |
| selected.get('report_sha256')!=runtime.get('trained_heads_report_sha256') or | |
| selected.get('feature_identity',{}).get('runtime_fingerprint')!=runtime.get('base_fingerprint') or | |
| selected.get('feature_identity',{}).get('adapter_sha256')!=runtime.get('adapter_sha256')): | |
| raise ValueError('the evidence layer correctness/head/backbone identity mismatch') | |
| class FreshDecider: | |
| def __init__(self,engine,design,store):self.engine=engine;self.design=design;self.store=store | |
| def __call__(self,parts,task,request): | |
| from solomon.service_states import Service as Readout | |
| engine=self.engine | |
| class Capture: | |
| def __init__(self):self.records=[] | |
| def ask(self,*args,**kwargs): | |
| result=engine.ask(*args,**kwargs);self.records.append(result);return result | |
| capture=Capture();state=engine.prefill(parts or [{'text':''}]) | |
| class Fixed(Readout): | |
| def _warm(self,key):return state | |
| readout=Fixed(self.store,capture,self.design) | |
| with engine.task_context(task):answer=readout.ask('fresh-evidence',task,**request) | |
| return {'answer':answer,'cost':{'input_tokens':state['prefix_tokens']+sum(r['branch_tokens'] for r in capture.records), | |
| 'branches':len(capture.records),'prefill_tokens':state['prefix_tokens']}} | |
| def service(store,engine,design,*,artifact=None,views_artifact=None,views_tasks=(),selector=None,page_selector=None): | |
| answers=ConfidenceHeadsService(store,engine,design,artifact=artifact,views_artifact=views_artifact,views_tasks=views_tasks) | |
| return EvidenceService(answers,FreshDecider(engine,design,Path(store)/'.evidence-readout'),selector,page_selector) | |