fastNLP
fastNLP copied to clipboard
提供对HuggingFace的Transformers的支持
HuggingFace的Transformers上提供了大量SOTA的NLP预训练模型,包括很多先进的tiny模型。 可以作为fastNLP的embeddings导入(类似已有的BERT),但是目前没有办法直接使用,可否提供相应的API呢?
写了一段代码尝试了Albert的导入,下游任务使用了BertForSentenceMatching:
from torch import nn
from transformers import BertTokenizer, AlbertModel
class AlbertEmbedding(nn.Module):
def __init__(self, tokenizer, model):
super(AlbertEmbedding, self).__init__()
self.tokenizer = tokenizer
self.model = model
self.model.include_cls_sep = True
self.embedding_dim = self.model.config.hidden_size
def forward(self, words):
max_len = self.model.config.max_position_embeddings
truncate_words = words[:, 0:max_len]
truncate_words[:, -1] = self.tokenizer.sep_token_id
outputs = self.model(truncate_words)
hidden = outputs[0]
return hidden
tokenizer = BertTokenizer.from_pretrained("voidful/albert_chinese_tiny")
albert = AlbertModel.from_pretrained("voidful/albert_chinese_tiny")
embed = AlbertEmbedding(tokenizer, albert)
model = BertForSentenceMatching(embed)
嗯嗯,我们会加紧解决下这个问题。但是fastNLP的Embedding会比你写的这个稍微复杂一下,不过,我们尽快研究下如何引入更多的Embedding吧
嗯嗯,我们会加紧解决下这个问题。但是fastNLP的Embedding会比你写的这个稍微复杂一下,不过,我们尽快研究下如何引入更多的Embedding吧 大佬您好!何时可以支持Albert呢?急急急
现在fastNLP有提供一个叫做TransformersEmbeddding的类,你可以看看是否可以用上。但是这个Embedding没有针对各种pretrain model做adaptation,性能上不一定能够发挥到模型的最大化。