(args)
| 175 | |
| 176 | |
| 177 | def train(args): |
| 178 | os.environ["WANDB_SILENT"] = "true" |
| 179 | os.environ["WANDB_ERROR_REPORTING"] = "false" |
| 180 | os.makedirs(args.out_dir, exist_ok=True) |
| 181 | if args.local_rank == 0: |
| 182 | tb_log_dir =os.getenv("TENSORBOARD_LOG_PATH", "/tensorboard_logs/") |
| 183 | #tb_log_dir = os.path.join(args.out_dir, "logs") |
| 184 | writer = SummaryWriter(log_dir=tb_log_dir) |
| 185 | #wandb.init( |
| 186 | #project="chemical_predict", |
| 187 | #name=datetime.datetime.now().strftime('%Y-%m-%d--%H:%M')+'-'+args.data_name |
| 188 | #) |
| 189 | |
| 190 | # Load the model and tokenizer |
| 191 | pretrained_model_path = args.pretrained_model_path |
| 192 | num_epoch = args.num_epoch |
| 193 | batch_size= args.per_device_train_batch_size |
| 194 | yield_predictor_path = args.yield_predictor_path |
| 195 | lr=args.lr |
| 196 | max_length = args.max_length |
| 197 | |
| 198 | data_path=args.data_path |
| 199 | data_name = args.data_name |
| 200 | # Save the base model |
| 201 | lora_adapter_path = args.lora_adapter_path |
| 202 | |
| 203 | load_ds_dir = args.load_ds_dir |
| 204 | load_ds_ckpt_id = args.load_ds_ckpt_id |
| 205 | |
| 206 | use_lora = args.use_lora |
| 207 | |
| 208 | log_path = os.path.join(args.out_dir, args.log_file) |
| 209 | |
| 210 | logging.basicConfig( |
| 211 | filename=log_path, |
| 212 | level=logging.INFO, |
| 213 | ) |
| 214 | logger = logging.getLogger() |
| 215 | |
| 216 | # args.global_rank = torch.distributed.get_rank() |
| 217 | get_accelerator().set_device(args.local_rank) |
| 218 | device = torch.device(get_accelerator().device_name(), args.local_rank) |
| 219 | # Initializes the distributed backend which will take care of sychronizing nodes/GPUs |
| 220 | # torch.distributed.init_process_group(backend='nccl') |
| 221 | deepspeed.init_distributed() |
| 222 | |
| 223 | print('using device', device) |
| 224 | |
| 225 | print('Load model...') |
| 226 | logger.info('Load model...') |
| 227 | |
| 228 | |
| 229 | if use_lora: |
| 230 | |
| 231 | # Define LoRA configuration |
| 232 | if not os.path.exists(lora_adapter_path): |
| 233 | model = AutoModel.from_pretrained(pretrained_model_path) |
| 234 | tokenizer = AutoTokenizer.from_pretrained(pretrained_model_path) |
no test coverage detected