Я вычисляю некоторые вложения с помощью библиотеки SentenceTransformers. Однако я получаю разные результаты при кодировании предложений и вычислении их вложений при проверке суммы их значений. Например:
В:
Код: Выделить всё
RANDOM_SEED = 42
np.random.seed(RANDOM_SEED)
random.seed(RANDOM_SEED)
tf.random.set_seed(RANDOM_SEED)
torch.manual_seed(RANDOM_SEED)
transformer_models = [
'M-CLIP/M-BERT-Distil-40',
]
sentences = df['content'].tolist()
for transformer_model in tqdm(transformer_models, desc="Transformer Models"):
tqdm.write(f"Processing with Transformer Model: {transformer_model}")
model = SentenceTransformer(transformer_model)
embeddings = model.encode(sentences)
print(f"Embeddings Checksum for {transformer_model}:", np.sum(embeddings))
Код: Выделить всё
Embeddings Checksum for M-CLIP/M-BERT-Distil-40: 1105.9185
Код: Выделить всё
Embeddings Checksum for M-CLIP/M-BERT-Distil-40: 1113.5422
Альтернатива, которую я пытался установить после и до расчета вложений, повторных начальных чисел:
Код: Выделить всё
import torch
import numpy as np
import random
import tensorflow as tf
from sentence_transformers import SentenceTransformer
from tqdm.auto import tqdm
RANDOM_SEED = 42
# Setting seeds
np.random.seed(RANDOM_SEED)
random.seed(RANDOM_SEED)
tf.random.set_seed(RANDOM_SEED)
torch.manual_seed(RANDOM_SEED)
# Ensuring PyTorch determinism
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
transformer_models = ['M-CLIP/M-BERT-Distil-40']
sentences = df['content'].tolist()
for transformer_model in tqdm(transformer_models, desc="Transformer Models"):
# Set the seed again right before loading the model
np.random.seed(RANDOM_SEED)
random.seed(RANDOM_SEED)
tf.random.set_seed(RANDOM_SEED)
torch.manual_seed(RANDOM_SEED)
tqdm.write(f"Processing with Transformer Model: {transformer_model}")
model = SentenceTransformer(transformer_model, device='cpu') # Force to use CPU
embeddings = model.encode(sentences, show_progress_bar=False) # Disable progress bar and parallel tokenization
print(f"Embeddings Checksum for {transformer_model}:", np.sum(embeddings))
Источник: https://stackoverflow.com/questions/781 ... ansformers