Text Classification
PEFT
Safetensors
English
gemma4
lora
multi-label-classification
text-only
research-prototype
Instructions to use mts-the-architect/open-sensations-gemma4-e2b-bf16-lora with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use mts-the-architect/open-sensations-gemma4-e2b-bf16-lora with PEFT:
from peft import PeftModel from transformers import AutoModel base_model = AutoModel.from_pretrained("google/gemma-4-E2B") model = PeftModel.from_pretrained(base_model, "mts-the-architect/open-sensations-gemma4-e2b-bf16-lora") - Notebooks
- Google Colab
- Kaggle
Download verify_gemma_inference.py from mts-the-architect/open-sensations-gemma4-e2b-bf16-lora: direct link, hf CLI and curl.
- Browser
- Download file 4.01 kB
-
https://huggingface.co/mts-the-architect/open-sensations-gemma4-e2b-bf16-lora/resolve/main/verify_gemma_inference.py
- Command line
-
hf download hf://mts-the-architect/open-sensations-gemma4-e2b-bf16-lora/verify_gemma_inference.py
-
curl -L -o verify_gemma_inference.py https://huggingface.co/mts-the-architect/open-sensations-gemma4-e2b-bf16-lora/resolve/main/verify_gemma_inference.py
4.01 kB
| """Exercise saved Gemma releases through the real approved-key HTTP API.""" | |
| import json | |
| import os | |
| from pathlib import Path | |
| os.environ.setdefault('HF_HOME',str(Path(__file__).resolve().parent/'.cache/huggingface')) | |
| import tempfile | |
| import threading | |
| from http.server import ThreadingHTTPServer | |
| import urllib.request | |
| import urllib.error | |
| import torch | |
| import serve_models | |
| from api_access import AccessStore | |
| ROOT=Path(__file__).resolve().parent | |
| EXAMPLES={ | |
| 'open-emotions':dict(text='Thank you for helping me! I am relieved and grateful.'), | |
| 'open-morals':dict(text='We should protect vulnerable people and treat everyone fairly.'), | |
| 'open-sensations':dict(text='The aroma of freshly brewed coffee filled the kitchen.',target='aroma'), | |
| } | |
| def main(): | |
| torch.set_num_threads(8) | |
| results={} | |
| with tempfile.TemporaryDirectory() as tmp: | |
| serve_models.ACCESS=AccessStore(Path(tmp)/'access.sqlite3') | |
| serve_models.ALLOW_ANONYMOUS=False | |
| server=ThreadingHTTPServer(('127.0.0.1',0),serve_models.Handler) | |
| thread=threading.Thread(target=server.serve_forever,daemon=True);thread.start() | |
| def post(route,body,key=None): | |
| headers={'Content-Type':'application/json'} | |
| if key:headers['Authorization']='Bearer '+key | |
| request=urllib.request.Request(f'http://127.0.0.1:{server.server_port}{route}', | |
| data=json.dumps(body).encode(),headers=headers) | |
| try:response=urllib.request.urlopen(request,timeout=1200) | |
| except urllib.error.HTTPError as error:response=error | |
| with response:return response.status,json.load(response),dict(response.headers) | |
| try: | |
| status,registration,_=post('/v1/access-requests',dict(app_name='Gemma verification',contact='local@example.test')) | |
| assert status==201 | |
| key=registration['api_key'] | |
| assert post('/v1/emotions',EXAMPLES['open-emotions'],key)[0]==403 | |
| serve_models.ACCESS.change(registration['request_id'],'approved',3,3) | |
| for route,task in serve_models.ROUTES.items(): | |
| out=ROOT/'outputs/gemma'/task | |
| run=json.loads((out/'run.json').read_text()) | |
| serve_models.MODEL_PATHS[task]=out/run['decision']['selected_arm']/'model' | |
| body={**EXAMPLES[task],'text':(EXAMPLES[task]['text']+' ')*12,'window_size':64,'overlap':16} | |
| status,result,_=post(route,body,key) | |
| assert status==200,(task,status,result) | |
| assert result['model']==f'mts-the-architect/{task}-gemma4-e2b-bf16-lora' | |
| assert len(result['windows'])>1 and result['task']==task | |
| expected=set(run['labels']) | |
| for window in result['windows']: | |
| assert set(window['scores'])==expected | |
| assert set(window['labels'])<=expected | |
| assert all(0<=v<=1 for v in window['scores'].values()) | |
| assert window['input_tokens']<=64 | |
| results[task]=dict(sliding_http=result,short_input=serve_models.predict(task,EXAMPLES[task])) | |
| print('Saved checkpoint + real HTTP contract passed',task,flush=True) | |
| serve_models.MODELS.clear();torch.cuda.empty_cache() | |
| status,_,headers=post('/v1/emotions',EXAMPLES['open-emotions'],key) | |
| assert status==429 and int(headers['Retry-After'])>0 | |
| serve_models.ACCESS.change(registration['request_id'],'revoked') | |
| assert post('/v1/emotions',EXAMPLES['open-emotions'],key)[0]==403 | |
| finally: | |
| server.shutdown();server.server_close();thread.join() | |
| path=ROOT/'outputs/gemma/inference_verification.json' | |
| path.write_text(json.dumps(dict(completed=True,approved_key_real_inference=True, | |
| rate_limit_verified=True,revocation_verified=True,examples=results),indent=2)+'\n') | |
| print('All inference checks passed; no client credentials retained.',flush=True) | |
| if __name__=='__main__':main() | |