| import torch |
| import torch.optim as optim |
| import torch.optim.lr_scheduler as lr_scheduler |
| from torch.utils.data import DataLoader |
| from torch import nn |
| from transformers import AutoModel, AutoTokenizer |
|
|
| class DebertaEvaluator(nn.Module): |
| |
| def __init__(self): |
| super().__init__() |
| |
| self.deberta = AutoModel.from_pretrained('microsoft/deberta-v3-base') |
| self.dropout = nn.Dropout(0.5) |
| self.linear = nn.Linear(768, 6) |
| |
| def forward(self, input_id, mask): |
| output = self.deberta(input_ids=input_id, attention_mask=mask) |
| output_pooled = torch.mean(output.last_hidden_state, 1) |
| dropout_output = self.dropout(output_pooled) |
| linear_output = self.linear(dropout_output) |
| |
| return linear_output |
|
|
| def inference(input_text): |
| saved_model_path = './' |
| model = torch.load(saved_model_path + 'fine-tuned-model.pt', map_location=torch.device('cpu')) |
| tokenizer = torch.load(saved_model_path + 'fine-tuned-tokenizer.pt', map_location=torch.device('cpu')) |
| model.eval() |
| input = tokenizer(input_text) |
| input_ids = torch.Tensor(input['input_ids']).to(torch.device('cpu')).long() |
| input_ids.resize_(1,len(input_ids)) |
| print(input_ids) |
| mask = torch.Tensor(input['attention_mask']).to(torch.device('cpu')) |
| mask.resize_(1, len(mask)) |
| output = model(input_ids, mask) |
| |
| return output.tolist() |
|
|
| if __name__ == "__main__": |
| inference() |
|
|