Skip to content

Commit 16074b2

Browse files
authored
Update from pytorch-transformers to transformers library (#61)
* updated dependencies, updated ignore_index and ignored values in tensors * removed idea project files * set transformers library version, updated additional special tokens to list
1 parent 175e0c4 commit 16074b2

6 files changed

Lines changed: 12 additions & 12 deletions

File tree

convai_evaluation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from projects.convai2.eval_f1 import eval_f1, setup_args as setup_args_f1
1818
from projects.convai2.eval_ppl import eval_ppl, setup_args as setup_args_ppl
1919
from projects.convai2.build_dict import build_dict
20-
from pytorch_transformers import (OpenAIGPTDoubleHeadsModel, OpenAIGPTLMHeadModel, OpenAIGPTTokenizer,
20+
from transformers import (OpenAIGPTDoubleHeadsModel, OpenAIGPTLMHeadModel, OpenAIGPTTokenizer,
2121
GPT2DoubleHeadsModel, GPT2LMHeadModel, GPT2Tokenizer)
2222

2323
from train import build_input_from_segments, pad_dataset, SPECIAL_TOKENS, add_special_tokens_

interact.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import torch
1313
import torch.nn.functional as F
1414

15-
from pytorch_transformers import OpenAIGPTLMHeadModel, OpenAIGPTTokenizer, GPT2LMHeadModel, GPT2Tokenizer
15+
from transformers import OpenAIGPTLMHeadModel, OpenAIGPTTokenizer, GPT2LMHeadModel, GPT2Tokenizer
1616
from train import SPECIAL_TOKENS, build_input_from_segments, add_special_tokens_
1717
from utils import get_dataset, download_pretrained_model
1818

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
torch
22
pytorch-ignite
3-
pytorch-transformers>=1.2
3+
transformers==2.5.1
44
tensorboardX==1.8
55
tensorflow # for tensorboardX

test_special_tokens.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import shutil
33
import unittest
44

5-
from pytorch_transformers import OpenAIGPTTokenizer, GPT2Tokenizer
5+
from transformers import OpenAIGPTTokenizer, GPT2Tokenizer
66
from train import ATTR_TO_SPECIAL_TOKEN, SPECIAL_TOKENS
77

88
class TestSpecialTokenTreatment(unittest.TestCase):

train.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
from ignite.metrics import Accuracy, Loss, MetricsLambda, RunningAverage
1717
from ignite.contrib.handlers import ProgressBar, PiecewiseLinear
1818
from ignite.contrib.handlers.tensorboard_logger import TensorboardLogger, OutputHandler, OptimizerParamsHandler
19-
from pytorch_transformers import (AdamW, OpenAIGPTDoubleHeadsModel, OpenAIGPTTokenizer,
19+
from transformers import (AdamW, OpenAIGPTDoubleHeadsModel, OpenAIGPTTokenizer,
2020
GPT2DoubleHeadsModel, GPT2Tokenizer, WEIGHTS_NAME, CONFIG_NAME)
2121

2222
from utils import get_dataset, make_logdir
2323

2424
SPECIAL_TOKENS = ["<bos>", "<eos>", "<speaker1>", "<speaker2>", "<pad>"]
2525
ATTR_TO_SPECIAL_TOKEN = {'bos_token': '<bos>', 'eos_token': '<eos>', 'pad_token': '<pad>',
26-
'additional_special_tokens': ('<speaker1>', '<speaker2>')}
26+
'additional_special_tokens': ['<speaker1>', '<speaker2>']}
2727
MODEL_INPUTS = ["input_ids", "mc_token_ids", "lm_labels", "mc_labels", "token_type_ids"]
2828
PADDED_INPUTS = ["input_ids", "lm_labels", "token_type_ids"]
2929

@@ -42,7 +42,7 @@ def pad_dataset(dataset, padding=0):
4242
""" Pad the dataset. This could be optimized by defining a Dataset class and padding at the batch level, but this is simpler. """
4343
max_l = max(len(x) for x in dataset["input_ids"])
4444
for name in PADDED_INPUTS:
45-
dataset[name] = [x + [padding if name != "lm_labels" else -1] * (max_l - len(x)) for x in dataset[name]]
45+
dataset[name] = [x + [padding if name != "lm_labels" else -100] * (max_l - len(x)) for x in dataset[name]]
4646
return dataset
4747

4848

@@ -62,9 +62,9 @@ def build_input_from_segments(persona, history, reply, tokenizer, lm_labels=Fals
6262
instance["input_ids"] = list(chain(*sequence))
6363
instance["token_type_ids"] = [speaker2 if i % 2 else speaker1 for i, s in enumerate(sequence) for _ in s]
6464
instance["mc_token_ids"] = len(instance["input_ids"]) - 1
65-
instance["lm_labels"] = [-1] * len(instance["input_ids"])
65+
instance["lm_labels"] = [-100] * len(instance["input_ids"])
6666
if lm_labels:
67-
instance["lm_labels"] = ([-1] * sum(len(s) for s in sequence[:-1])) + [-1] + sequence[-1][1:]
67+
instance["lm_labels"] = ([-100] * sum(len(s) for s in sequence[:-1])) + [-100] + sequence[-1][1:]
6868
return instance
6969

7070

@@ -227,7 +227,7 @@ def inference(engine, batch):
227227

228228
# Prepare metrics - note how we compute distributed metrics
229229
RunningAverage(output_transform=lambda x: x).attach(trainer, "loss")
230-
metrics = {"nll": Loss(torch.nn.CrossEntropyLoss(ignore_index=-1), output_transform=lambda x: (x[0][0], x[1][0])),
230+
metrics = {"nll": Loss(torch.nn.CrossEntropyLoss(ignore_index=-100), output_transform=lambda x: (x[0][0], x[1][0])),
231231
"accuracy": Accuracy(output_transform=lambda x: (x[0][1], x[1][1]))}
232232
metrics.update({"average_nll": MetricsLambda(average_distributed_scalar, metrics["nll"], args),
233233
"average_accuracy": MetricsLambda(average_distributed_scalar, metrics["accuracy"], args)})
@@ -260,7 +260,7 @@ def inference(engine, batch):
260260

261261
# On the main process: close tensorboard logger and rename the last checkpoint (for easy re-loading with OpenAIGPTModel.from_pretrained method)
262262
if args.local_rank in [-1, 0] and args.n_epochs > 0:
263-
os.rename(checkpoint_handler._saved[-1][1][-1], os.path.join(log_dir, WEIGHTS_NAME)) # TODO: PR in ignite to have better access to saved file paths (cleaner)
263+
os.rename(os.path.join(log_dir, checkpoint_handler._saved[-1][1]), os.path.join(log_dir, WEIGHTS_NAME)) # TODO: PR in ignite to have better access to saved file paths (cleaner)
264264
tb_logger.close()
265265

266266
if __name__ == "__main__":

utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import torch
1313

14-
from pytorch_transformers import cached_path
14+
from transformers import cached_path
1515

1616
PERSONACHAT_URL = "https://s3.amazonaws.com/datasets.huggingface.co/personachat/personachat_self_original.json"
1717
HF_FINETUNED_MODEL = "https://s3.amazonaws.com/models.huggingface.co/transfer-learning-chatbot/gpt_personachat_cache.tar.gz"

0 commit comments

Comments
 (0)