Download component.py from gatilin/openvision3_base_latent_visual_encoder: direct link, hf CLI and curl.
- Browser
- Download file 1.06 kB
-
https://huggingface.co/gatilin/openvision3_base_latent_visual_encoder/resolve/main/component.py
- Command line
-
hf download hf://gatilin/openvision3_base_latent_visual_encoder/component.py
-
curl -L -o component.py https://huggingface.co/gatilin/openvision3_base_latent_visual_encoder/resolve/main/component.py
1.06 kB
| import json | |
| from pathlib import Path | |
| from functools import partial | |
| import torch | |
| from torch import nn | |
| from accelerate import init_empty_weights | |
| from safetensors.torch import load_file | |
| from native.transformer import VisionTransformer,LayerNorm | |
| def construct(root): | |
| cfg=json.loads((Path(root)/'source_config.json').read_text())['model_cfg'] | |
| v=cfg['vision_cfg'] | |
| return VisionTransformer(image_size=v['image_size'],patch_size=v['patch_size'],width=v['width'],layers=v['layers'],heads=v['width']//v['head_width'],mlp_ratio=4.0,in_channels=v['in_channels'],no_ln_pre=v['no_ln_pre'],pool_type=v['pool_type'],final_ln_after_pool=v['final_ln_after_pool'],norm_layer=partial(LayerNorm,**v['norm_kwargs']),act_layer=nn.GELU,output_tokens=v['output_tokens'],output_dim=cfg['embed_dim']) | |
| def load_model(root,device='cpu',dtype=torch.float32): | |
| with init_empty_weights(include_buffers=False):m=construct(root) | |
| m.load_state_dict(load_file(str(Path(root)/'model.safetensors')),strict=True,assign=True) | |
| return m.to(device=device,dtype=dtype).eval() | |