Text-to-Video
PEFT
lora
distillation
few-step
Andyson's picture
Duplicate from Perflow-Shuai/MiniMax-H3-LongLive-LoRA-4Step-Audio2-PromptMix-iter1000
d651476
Raw History Blame Contribute Delete
5.81 kB
"""Separate, truthful cache schema for authored audio-training candidates."""
from common import *
from audio_data_candidates import candidates,validate
CACHE=EXP/'audio_candidate_cache'
def candidate_manifest():
manifest=read(EXP/'audio_data_candidates.json')
rows=candidates()
if manifest['candidates']!=rows or manifest['checks']!=validate(rows) or manifest['source_sha256']!=sha(EXP/'audio_data_candidates.py'):
raise RuntimeError('Authored candidate source/manifest mismatch')
return manifest
def qualified_teacher():
root=EXP/'audio_data_qualification'
receipt=read(root/'SUCCESS.json')
if receipt['status']!='success' or receipt['samples']!=8 or receipt['speech_samples']!=4:
raise RuntimeError('Teacher-data preflight is incomplete')
for filename,key in (('MANIFEST.json','manifest_sha256'),('AUDIO_DIAGNOSTICS.json','diagnostics_sha256'),
('asr/TRAINING_ASR.json','asr_sha256')):
if sha(root/filename)!=receipt[key]:
raise RuntimeError('Teacher-data preflight report changed')
manifest=read(root/'MANIFEST.json')
from qualify_audio_data import plan as qualification_plan
if manifest['plan']!=qualification_plan():
raise RuntimeError('Teacher preflight used different data or Base revision')
selected={row['id']:row for row in manifest['plan']['samples']}
if len(manifest['samples'])!=8 or {row['id'] for row in manifest['samples']}!=set(selected):
raise RuntimeError('Teacher-data media coverage mismatch')
for row in manifest['samples']:
if any(row[key]!=selected[row['id']][key] for key in ('prompt','seed')):
raise RuntimeError('Teacher-data media request mismatch')
if sha(row['video'])!=row['video_sha256'] or sha(row['native_wav'])!=row['native_wav_sha256']:
raise RuntimeError('Teacher-data media changed')
asr=read(root/'asr/TRAINING_ASR.json')
speech={key:row for key,row in selected.items() if row['phrase']}
if len(asr['results'])!=4 or {r['case'] for r in asr['results']}!=set(speech) or any(
r['edit_distance']!=0 or r['text_prompt_supplied_to_asr'] or r['reference']!=speech[r['case']]['phrase']
or r['language']!=speech[r['case']]['language'] for r in asr['results']):
raise RuntimeError('Sampled teacher transcripts require review before encoding this trial')
if not receipt['sampled_speech_reference_gate_passed'] or receipt['speech_exact_matches']!=4:
raise RuntimeError('Sampled teacher speech-reference gate has not passed')
return sha(root/'SUCCESS.json')
def contract():
candidate_manifest()
source_contract()
return {'artifact_type':'h3_authored_audio_candidate_embeddings_v1','schema_version':1,
'model_revision':REVISION,'workflow':'positive_text_encoding','IR':False,
'candidate_manifest_sha256':sha(EXP/'audio_data_candidates.json'),
'qualified_teacher_receipt_sha256':qualified_teacher(),
'qualification_scope':'Sampled transcript gate only, not perceptual or whole-pool quality.',
'sources':{name:sha(EXP/name) for name in ('audio_candidate_cache.py','encode_audio_candidates.py','audio_data_candidates.py')},
'official_encoder_sha256':sha(ASSETS/'external/diffusers-minimax-h3/src/diffusers/modular_pipelines/minimax_h3/encoders.py'),
'text_dim':read(BASE/'transformer/config.json')['text_dim']}
def validate_condition(condition,row):
imports()
from minimax_h3.encode_longlive_prompt_cache_v4 import _validate_encoded_condition
expected={'id':row['id'],'prompt':row['prompt'],
'prompt_sha256':hashlib.sha256(row['prompt'].encode()).hexdigest()}
if any(condition.get(key)!=value for key,value in expected.items()):
raise RuntimeError('Encoded candidate identity mismatch')
_validate_encoded_condition(condition)
if condition['prompt_embeds'].shape[-1]!=read(BASE/'transformer/config.json')['text_dim']:
raise RuntimeError('Candidate embedding width differs from original Base')
def load_condition(row,expected_contract):
import torch
root=CACHE/row['id']
receipt=read(root/'SUCCESS.json')
path=root/'condition.pt'
if receipt['status']!='success' or receipt['contract']!=expected_contract or receipt['id']!=row['id']:
raise RuntimeError('Candidate encoding receipt mismatch')
if path.stat().st_size!=receipt['bytes'] or sha(path)!=receipt['sha256']:
raise RuntimeError('Candidate tensor payload changed')
payload=torch.load(path,map_location='cpu',weights_only=True)
if payload['contract']!=expected_contract:
raise RuntimeError('Candidate tensor contract mismatch')
condition=payload['condition']
validate_condition(condition,row)
return condition
def verify_collection():
expected=contract()
manifest=read(CACHE/'COLLECTION.json')
rows=candidate_manifest()['candidates']
if manifest['contract']!=expected or [r['id'] for r in manifest['conditions']]!=[r['id'] for r in rows]:
raise RuntimeError('Audio candidate cache coverage/contract mismatch')
result={}
for row,record in zip(rows,manifest['conditions'],strict=True):
if record['receipt_sha256']!=sha(CACHE/row['id']/'SUCCESS.json'):
raise RuntimeError('Audio candidate row receipt changed')
result[row['id']]=load_condition(row,expected)
return result,{'collection_sha256':sha(CACHE/'COLLECTION.json'),'contract':expected}
def load_pool():
receipt=read(CACHE/'SUCCESS.json')
if receipt['status']!='success' or receipt['conditions']!=256 or receipt['collection_sha256']!=sha(CACHE/'COLLECTION.json'):
raise RuntimeError('Audio candidate cache is incomplete or changed')
return verify_collection()