| 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") |
| 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, |
| } |
| |
| config = MSAConfig.from_pretrained(origin_model_path) |
| config.msa_config = msa_config |
| tokenizer = AutoTokenizer.from_pretrained(origin_model_path) |
| model = MSAForCausalLM.from_pretrained( |
| origin_model_path, |
| config=config, |
| torch_dtype="bfloat16", |
| ) |
| print_model_stats(model) |
|
|
| |
| 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") |