Download component.py from gatilin/pixelumm_pixel_io: direct link, hf CLI and curl.
- Browser
- Download file 2.9 kB
-
https://huggingface.co/gatilin/pixelumm_pixel_io/resolve/main/component.py
- Command line
-
hf download hf://gatilin/pixelumm_pixel_io/component.py
-
curl -L -o component.py https://huggingface.co/gatilin/pixelumm_pixel_io/resolve/main/component.py
2.9 kB
| """Strict, component-only loaders. No language model allocation or remote execution.""" | |
| import json,pathlib,torch | |
| from torch import nn | |
| from safetensors.torch import load_file | |
| try: | |
| from transformers.initialization import no_init_weights | |
| except ImportError: | |
| from transformers.modeling_utils import no_init_weights | |
| def build_model(root,dtype=None,attention='sdpa'): | |
| root=pathlib.Path(root);kind=root.name | |
| if (root/'pixel_native.py').exists(): | |
| from pixel_io import PixelUMMPixelIO | |
| model=PixelUMMPixelIO();kind='pixelumm_pixel_io' | |
| elif (root/'sensenova').exists(): | |
| from pixel_io import SenseNovaPixelIO | |
| model=SenseNovaPixelIO(json.loads((root/'source_config.json').read_text()));kind='sensenova_pixel_io' | |
| elif (root/'component_config.json').exists(): | |
| from mingtok.modeling_mingtok import MingTok,MingTokConfig | |
| cfg=json.loads((root/'component_config.json').read_text());model=MingTok(MingTokConfig(**cfg));kind='mingtok' | |
| elif (root/'vision_encoder').exists(): | |
| from vision_encoder import UniARVisionConfig,UniARVisionModel | |
| cfg=UniARVisionConfig.from_dict(json.loads((root/'source_config.json').read_text()));cfg._attn_implementation=attention | |
| model=UniARVisionModel(cfg);kind='uniar_bsq' | |
| else: | |
| import llada_tokenizer as native | |
| cfg=json.loads((root/'source_config.json').read_text());vc=native.make_vision_config(cfg);vc._attn_implementation=attention | |
| model=nn.Module();model.model=nn.Module();model.model.visual=native.VisionEncoder(vc);model.model.vqmodel=native.VQVAE(native.make_vq_config(cfg));kind='llada_image_tokenizer' | |
| if dtype is None:dtype=torch.bfloat16 if kind=='uniar_bsq' else torch.float32 | |
| return model.to(dtype=dtype).eval() | |
| def tokenizer_view(model,root): | |
| """Expose upstream PIL->token API around strictly loaded LLaDA modules.""" | |
| import llada_tokenizer as native | |
| t=native.ImageTokenizer.__new__(native.ImageTokenizer) | |
| t.device=next(model.parameters()).device;t.dtype=next(model.parameters()).dtype | |
| t.visual=model.model.visual;t.vqmodel=model.model.vqmodel | |
| t.image_processor=native.ImagePreprocessor(pathlib.Path(root)/'preprocessor_config.json') | |
| t.spatial_merge_size=t.visual.spatial_merge_size | |
| return t | |
| def load_model(root,dtype=None,attention='sdpa',device='cpu'): | |
| root=pathlib.Path(root);model=build_model(root,dtype,attention) | |
| state=load_file(str(root/'model.safetensors'),device='cpu') | |
| model.load_state_dict(state,strict=True);del state | |
| return model.to(device).eval() | |
| def load_sigvq(root,dtype=torch.float32,device='cpu'): | |
| """Load LLaDA's separate token-to-decoder conditioning bridge with strict state checks.""" | |
| from sigvq import SigVQ | |
| root=pathlib.Path(root);model=SigVQ(vocab_size=16384,inner_dim=4096).to(dtype=dtype) | |
| state=torch.load(root/'sigvq_embedding.pt',map_location='cpu',weights_only=True) | |
| model.load_state_dict(state,strict=True);del state | |
| return model.to(device).eval() | |