Seal Phase 4AK frozen D18 independent validation
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
"""One registered AK action per fresh process; no changes to frozen runtimes."""
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import urllib.request
|
||||
|
||||
from context import ROOT, EXP, CFG, check, budget, read
|
||||
import runtime_bridge as bridge
|
||||
|
||||
|
||||
def preflight():
|
||||
# Establish visibility before the lazy runtime/component Torch import.
|
||||
os.environ['CUDA_VISIBLE_DEVICES'] = CFG['gpu_uuid']
|
||||
os.environ['CUDA_HOME'] = '/usr/local/cuda'
|
||||
os.environ['PATH'] = str(ROOT / 'models/male-cns-lif/.venv/bin') + ':/usr/local/cuda/bin:' + os.environ['PATH']
|
||||
os.environ['MAX_JOBS'] = '2'
|
||||
os.environ['TORCH_CUDA_ARCH_LIST'] = '8.9'
|
||||
for port in (8188, 8189, 8190):
|
||||
with urllib.request.urlopen(f'http://192.168.10.51:{port}/queue', timeout=5) as response:
|
||||
queue = json.load(response)
|
||||
bridge.require(not queue['queue_running'] and not queue['queue_pending'], 'ComfyUI busy: defer, never evict')
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('backend', choices=['gpu', 'oracle', 'component'])
|
||||
parser.add_argument('group', choices=bridge.GROUPS)
|
||||
parser.add_argument('case')
|
||||
parser.add_argument('--repeat', type=int, default=0)
|
||||
args = parser.parse_args()
|
||||
check(); budget()
|
||||
row = bridge.authorize_case(EXP, CFG, args.group, args.case, args.backend, args.repeat)
|
||||
case = EXP / 'cases' / args.group / args.case
|
||||
spec = bridge.case_spec(case)
|
||||
bridge.require(spec['name'] == args.case and spec['budget_root'] == str(EXP) and
|
||||
spec['output_budget_bytes'] == CFG['output_budget_bytes'], 'Case identity/new budget differs')
|
||||
if args.group == 'controls':
|
||||
bridge.control_inputs(case, row['source_case'])
|
||||
else:
|
||||
bridge.require(spec.get('kind') == 'fullgraph' and spec.get('validation_cohort') == args.group and
|
||||
all(spec[key] == row[key] for key in ('mode', 'odor_id', 'odor_index', 'seed')),
|
||||
'New fullgraph case differs from its registered cohort cell')
|
||||
output = EXP / 'gpu' / args.group / f'{args.case}-r{args.repeat}'
|
||||
if args.backend == 'component':
|
||||
summary = read(output / 'summary.json')
|
||||
bridge.require(summary.get('complete') is True and summary.get('pass_all') is True and
|
||||
summary.get('case') == args.case and summary.get('apl_delay_steps') == 18,
|
||||
'Component audit needs a complete matching D18 GPU run')
|
||||
preflight()
|
||||
def execute():
|
||||
if args.backend == 'gpu':
|
||||
result = bridge.run_gpu(case, output, EXP / 'extension-build')
|
||||
elif args.backend == 'oracle':
|
||||
result = bridge.run_oracle(case, EXP / 'oracle' / args.group / args.case)
|
||||
else:
|
||||
result = bridge.component(output, spec['apl_bundle_dir'], EXP / 'component-audit' / args.group / (args.case + '.json'))
|
||||
budget()
|
||||
bridge.require(result.get('pass_all') is True, 'Runtime/component evidence did not pass its own integrity checks')
|
||||
return result
|
||||
result = bridge.guarded_action(EXP, args.backend, args.group, args.case, args.repeat, execute)
|
||||
print(json.dumps(dict(backend=args.backend, group=args.group, case=args.case, repeat=args.repeat,
|
||||
complete=result.get('complete'), pass_all=result.get('pass_all')), allow_nan=False), flush=True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user