【发布时间】:2020-08-18 15:39:11
【问题描述】:
我有大约 200 万个句子,我想使用 Facebook AI 的 RoBERTa-large,在 NLI 和 STSB 上针对句子相似度进行微调(使用很棒的 sentence-transformers 包)。
我已经有一个包含两列的数据框:“话语”包含语料库中的每个句子,“报告”包含每个句子的文档标题。
从那里,我的代码如下:
from sentence_transformers import SentenceTransformer
from tqdm import tqdm
model = SentenceTransformer('roberta-large-nli-stsb-mean-tokens')
print("Embedding sentences")
data = pd.read_csv("data/sentences.csv")
sentences = data['utterance'].tolist()
sentence_embeddings = []
for sent in tqdm(sentences):
embedding = model.encode([sent])
sentence_embeddings.append(embedding[0])
data['vector'] = sentence_embeddings
目前,tqdm 估计整个过程在我的计算机上大约需要 160 个小时,这超出了我的能力。
有什么方法可以通过更改代码来加快速度?在内存中创建一个巨大的列表然后将其附加到数据框是在这里进行的最佳方式吗? (我怀疑不是)。
非常感谢!
【问题讨论】:
-
唯一合理的加速将来自获得更好的 GPU。
-
@Paul Miller 你能回答你的问题,即完整的解决方案吗?您检查了 Christine_NLP 作为一个很好的答案,但我们还需要完整的解决方案。你现在的代码是什么,你是如何加速它的?我可以根据克里斯汀的回答弄清楚。谢谢。
-
@TedoVrbanec 我已经扩展了下面的代码。
标签: python nlp word-embedding transformer