Download src/utils/resave_model.py from Anoy123423123/MSA-Code: direct link, hf CLI and curl.
- Browser
- Download file 3.04 kB
-
https://huggingface.co/Anoy123423123/MSA-Code/resolve/main/src/utils/resave_model.py
- Command line
-
hf download hf://Anoy123423123/MSA-Code/src/utils/resave_model.py
-
curl -L -o resave_model.py https://huggingface.co/Anoy123423123/MSA-Code/resolve/main/src/utils/resave_model.py
3.04 kB
| import os | |
| import sys | |
| sys.path.append(os.getcwd()) | |
| from src.msa.model import MSAForCausalLM | |
| from src.msa.configuration_msa import MSAConfig | |
| from src.utils.common import print_model_stats | |
| from transformers import AutoTokenizer | |
| def save_checkpoint(model, tokenizer, save_model_path): | |
| model.save_pretrained(save_model_path) | |
| tokenizer.save_pretrained(save_model_path) | |
| def main(origin_model_path, save_model_path): | |
| router_layer_idx = os.environ.get("ROUTER_LAYER_IDX", "all") | |
| aux_loss = os.environ.get("AUX_LOSS", "false") == "true" | |
| lmloss_weigth = float(os.environ.get("LMLOSS_WEIGHT", 1.0)) | |
| auxloss_weight = float(os.environ.get("AUX_LOSS_WEIGHT", 0.1)) | |
| recloss_weight = float(os.environ.get("REC_LOSS_WEIGHT", 0.0)) | |
| ansloss_weight = float(os.environ.get("ANS_LOSS_WEIGHT", 1.0)) | |
| aux_loss_method = os.environ.get("AUX_LOSS_METHOD", "INFONCE") # INFONCE, BCE, INFONCE_DECOUPLE, INFONCE_DECOUPLE_FOCAL | |
| decouple_router = os.environ.get("DECOUPLE_ROUTER", "false").lower() == "true" | |
| rewrite_position = os.environ.get("REWRITE_POSITION", "false") == "true" | |
| top_k_docs = int(os.environ.get("TOP_K_DOCS", 2)) | |
| pooling_kernel_size = int(os.environ.get("POOLING_KERNEL_SIZE", 2)) | |
| head_reduce_method = os.environ.get("HEAD_REDUCE_METHOD", "max") | |
| query_reduce_method = os.environ.get("QUERY_REDUCE_METHOD", "max") | |
| chunk_reduce_method = os.environ.get("CHUNK_REDUCE_METHOD", "max") | |
| decouple_pooling_mode = os.environ.get("DECOUPLE_POOLING_MODE", "mean") | |
| infonce_loss_temp = float(os.environ.get("INFONCE_LOSS_TEMP", 0.1)) | |
| msa_config = { | |
| "router_layer_idx": router_layer_idx, | |
| "aux_loss": aux_loss, | |
| "lmloss_weigth": lmloss_weigth, | |
| "auxloss_weight": auxloss_weight, | |
| "recloss_weight": recloss_weight, | |
| "ansloss_weight": ansloss_weight, | |
| "aux_loss_method": aux_loss_method, | |
| "decouple_router": decouple_router, | |
| "rewrite_position": rewrite_position, | |
| "top_k_docs": top_k_docs, | |
| "pooling_kernel_size": pooling_kernel_size, | |
| "infonce_loss_temp": infonce_loss_temp, | |
| "head_reduce_method": head_reduce_method, | |
| "query_reduce_method": query_reduce_method, | |
| "chunk_reduce_method": chunk_reduce_method, | |
| "decouple_pooling_mode": decouple_pooling_mode, | |
| } | |
| # 使用 MSAConfig,它会自动将 msa_config 转换为 DotDict | |
| config = MSAConfig.from_pretrained(origin_model_path) | |
| config.msa_config = msa_config # MSAConfig 会自动转换为 DotDict | |
| tokenizer = AutoTokenizer.from_pretrained(origin_model_path) | |
| model = MSAForCausalLM.from_pretrained( | |
| origin_model_path, | |
| config=config, | |
| torch_dtype="bfloat16", | |
| ) | |
| print_model_stats(model) | |
| # save | |
| save_checkpoint(model, tokenizer, save_model_path) | |
| if __name__ == "__main__": | |
| origin_model_path = sys.argv[1] | |
| save_model_path = sys.argv[2] | |
| main(origin_model_path, save_model_path) | |
| print(f"Model has been saved to : {save_model_path}") | |
| print("Done") |