#!/usr/bin/env python3 """Explicit offline application of reviewed model-card defaults; never load weights.""" import argparse import copy import json import os from pathlib import Path import subprocess import time import uuid QWEN_SOURCES={ 'jpetrina/Qwen3.8-27B-IQ4_XS-pure-GGUF', 'vmarcelo/Qwen3.8-27B-MIX_GGUF', 'JonathanColetti/Qwen3.8-27B-Uncensored-GGUF', } NEUTRAL=dict(repeat_penalty=1.0,presence_penalty=0.0,frequency_penalty=0.0) def recommendations(entry): repo=entry.get('repo') if repo in QWEN_SOURCES: return dict(temperature=1.0,top_p=.95,top_k=20,**NEUTRAL) if repo=='ggml-org/gemma-4-31B-it-GGUF': return dict(temperature=1.0,top_p=.95,top_k=64,**NEUTRAL) return None def configure(rows,entries,add_large_ultra=False): result=copy.deepcopy(rows);report=[] for row in result: if row.get('kind')!='chat':continue recommended=recommendations(entries.get(row['model_id'],{})) if recommended is None: report.append(dict(name=row['name'],state='unknown-source'));continue changed=any(row['parameters'].get(k)!=v for k,v in recommended.items()) if changed: row['parameters'].update(recommended);row['revision']+=1;row['updated_at']=time.time() report.append(dict(name=row['name'],state='updated' if changed else 'unchanged',sampling=recommended)) if add_large_ultra: medium=next((r for r in result if r.get('name')=='Qwen3.8 27B - Medium' and r.get('kind')=='chat'),None) if not medium or entries.get(medium['model_id'],{}).get('repo')!='jpetrina/Qwen3.8-27B-IQ4_XS-pure-GGUF': raise ValueError('Das geprüfte Medium-Profil fehlt; keine Profile erstellt.') for suffix,context,split,micro in [('Large',192000,[86,14],256),('Ultra',262144,[80,20],128)]: name='Qwen3.8 27B - '+suffix if any(r['name']==name for r in result):continue row=copy.deepcopy(medium);row.update(id=uuid.uuid4().hex,revision=1,name=name,updated_at=time.time()) row['parameters'].update(context=context,slots=1,batch=2048,ubatch=micro,tensor_split=split,split_mode='layer',gpu_offload='full',gpu_reserve_mode='none',gpu_reserve_mib={}) if suffix=='Ultra':row['parameters']['vision_device']='cpu' result.append(row);report.append(dict(name=name,state='created',sampling=recommendations(entries[medium['model_id']]))) return result,report def main(): parser=argparse.ArgumentParser(description=__doc__) parser.add_argument('--installation',type=Path,required=True) parser.add_argument('--apply',action='store_true') parser.add_argument('--add-large-ultra',action='store_true') args=parser.parse_args();base=args.installation.resolve();state=base/'state';path=state/'profiles.json' original=path.read_bytes();rows=json.loads(original) entries={row['model_id']:json.loads((state/'models'/row['model_id']/'entry.json').read_text()) for row in rows} configured,report=configure(rows,entries,args.add_large_ultra) if args.apply and configured!=rows: manifest=json.loads((base/'installation.json').read_text()) container=json.loads(subprocess.check_output(['docker','inspect',manifest['name']],text=True))[0] if container['Config'].get('Labels',{}).get('de.casaderoll.athena-deck.standalone')!=str(base) or container['State']['Running']: raise RuntimeError('Nur bei gestopptem, dieser Installation zugeordnetem Deck-Container anwenden.') if path.read_bytes()!=original:raise RuntimeError('Profile wurden zwischenzeitlich geändert.') backup=base/'backups'/str(time.time_ns());backup.mkdir(parents=True,mode=0o700) (backup/'profiles.json').write_bytes(original) temporary=path.with_suffix('.sampling.tmp');temporary.write_text(json.dumps(configured)) metadata=path.stat();os.chmod(temporary,metadata.st_mode);os.chown(temporary,metadata.st_uid,metadata.st_gid) temporary.replace(path) print(json.dumps(dict(applied=args.apply,profiles=report),ensure_ascii=False,indent=2)) if __name__=='__main__':main()