У меня есть примерно 2 миллиона предложений, которые я хочу превратить в векторы, используя большой RoBERTa AI AI, настроенный на NLI и STSB, для сходства предложений (используя потрясающий пакет-преобразователь предложений пакет).
У меня уже есть фрейм данных с двумя столбцами: «высказывание», содержащее каждое предложение из корпуса, и «отчет», содержащий для каждого предложения заголовок документа, из которого он взят.
Оттуда мой код выглядит следующим образом:
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 часов, что больше, чем я могу сэкономить.
Можно ли как-нибудь ускорить это, изменив мой код? Является ли создание огромного списка в памяти, а затем добавление его в фрейм данных лучшим способом для продолжения? (Я подозреваю, что нет).
Большое спасибо заранее!