from datasets.load import load_dataset import pandas as pd import logging from simpletransformers.t5 import T5Args, T5Model logging.basicConfig(level=logging.INFO) transformers_logger = logging.getLogger("transformers") transformers_logger.setLevel(logging.WARNING) raw_datasets = load_dataset('iwslt2017', 'iwslt2017-zh-en') train_df = pd.DataFrame(raw_datasets['train']['translation']) train_df.columns = ['input_text', 'target_text'] reverse_df = train_df.copy() reverse_df.columns = ['target_text', 'input_text'] train_df['prefix'] = 'translate english to chinese' reverse_df['prefix'] = 'translate chinese to english' train_df = pd.concat([train_df, reverse_df]) eval_df = pd.DataFrame(raw_datasets['validation']['translation']) eval_df.columns = ['input_text', 'target_text'] reverse_df = eval_df.copy() reverse_df.columns = ['target_text', 'input_text'] eval_df['prefix'] = 'translate english to chinese' reverse_df['prefix'] = 'translate chinese to english' eval_df = pd.concat([eval_df, reverse_df]) model_args = T5Args() model_args.max_seq_length = 96 model_args.train_batch_size = 20 model_args.eval_batch_size = 20 model_args.num_train_epochs = 4 model_args.evaluate_during_training = True model_args.evaluate_during_training_steps = 5000 model_args.use_multiprocessing = False model_args.fp16 = False model_args.save_steps = -1 model_args.save_model_every_epoch = True model_args.save_eval_checkpoints = False model_args.no_cache = True model_args.reprocess_input_data = True model_args.overwrite_output_dir = False model_args.preprocess_inputs = False model_args.num_return_sequences = 1 model_args.wandb_project = "MT5 English-Chinese Translation" model = T5Model("mt5", "outputs", args=model_args) model.train_model(train_df, eval_data=eval_df, output_dir='mt5_more_epochs')