Download code/multi_vlm2vec_train/loaders/proj_models.py from WaitXian/liqi: direct link, hf CLI and curl.
- Browser
- Download file 2.81 kB
-
https://huggingface.co/WaitXian/liqi/resolve/main/code/multi_vlm2vec_train/loaders/proj_models.py
- Command line
-
hf download hf://WaitXian/liqi/code/multi_vlm2vec_train/loaders/proj_models.py
-
curl -L -o proj_models.py https://huggingface.co/WaitXian/liqi/resolve/main/code/multi_vlm2vec_train/loaders/proj_models.py
2.81 kB
| ## TODO: 实现一个映射层,将输出得到的特征维度映射到embed空间当中 | |
| from models.proj_models import LLM2EmbedProjector, LLM2EmbedAddProjector | |
| from typing import Optional | |
| from logger import get_logger | |
| from transformers.modeling_utils import load_state_dict | |
| from transformers.trainer_utils import get_last_checkpoint | |
| import os | |
| from . import register_loader | |
| logger = get_logger(__name__) | |
| def load_mlp_projector( | |
| fc_args: "FCArguments", | |
| in_dim = 3074, | |
| is_trainable: Optional[bool] = False, | |
| resume_from_checkpoint=None, | |
| output_dir=None | |
| ): | |
| if fc_args.stage == "classify": | |
| mlp_model = LLM2EmbedProjector( | |
| in_dim = in_dim, | |
| out_dim = fc_args.embed_dim, | |
| fp16=False | |
| ) | |
| if resume_from_checkpoint: | |
| if os.path.exists(output_dir): | |
| new_model_name_or_path_proj = get_last_checkpoint(output_dir) | |
| logger.info("start to load pfc not from: {}, but from {}".format( | |
| fc_args.model_name_or_path_proj, new_model_name_or_path_proj | |
| )) | |
| else: | |
| new_model_name_or_path_proj = None | |
| logger.info('not exists (output_dir) for pfc {}, load pfc from {}'.format(output_dir, fc_args.model_name_or_path_proj)) | |
| if new_model_name_or_path_proj: | |
| logger.info("(resume process) start to load pfc from: {}".format(new_model_name_or_path_proj)) | |
| mlp_model.maybe_load_state_dict_from_path(new_model_name_or_path_proj) | |
| else: | |
| logger.info("(resume failed) still start to load pfc from: {}".format(fc_args.model_name_or_path_proj)) | |
| mlp_model.maybe_load_state_dict_from_path(fc_args.model_name_or_path_proj) | |
| else: | |
| logger.info("start to load pfc from: {}".format(fc_args.model_name_or_path_proj)) | |
| mlp_model.maybe_load_state_dict_from_path(fc_args.model_name_or_path_proj) | |
| if is_trainable: | |
| mlp_model.train() | |
| else: | |
| mlp_model.eval() | |
| else: | |
| mlp_model = None | |
| return mlp_model | |
| def load_add_projector( | |
| fc_args: "FCArguments", | |
| in_dim = 3074, | |
| is_trainable: Optional[bool] = False, | |
| resume_from_checkpoint=None, | |
| output_dir=None | |
| ): | |
| if fc_args.stage == "classify": | |
| mlp_model = LLM2EmbedAddProjector( | |
| in_dim = in_dim, | |
| out_dim = fc_args.embed_dim, | |
| fp16=False | |
| ) | |
| logger.info("No weights for LLM2EmbedAddProjector") | |
| if is_trainable: | |
| mlp_model.train() | |
| else: | |
| mlp_model.eval() | |
| else: | |
| mlp_model = None | |
| return mlp_model |