Aquí está la implementación de encode

from transformers import BertTokenizer

def encode(self, document): 
    tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
    return tokenizer(document, 
                    max_length=50,
                    return_tensors='pt',
                    padding=True,
                    truncation=True)

Cuando corrí

start = time.process_time()
train_articles = [self.encode(document) for document in dataset["train"]["article"][:100]]
print("Time:", time.process_time() - start)

La salida fue Time: 34.859681388. Tenga en cuenta que cada elemento en dataset["train"]["article"] es una lista de aprox. 47 oraciones con en media 15 palabras por oración. El proceso es bastante largo para procesar solo 100 documentos. Soy muy nuevo en la programación. ¿Hay alguna manera de acelerar el proceso? Tengo que ejecutar self.encode en 100000 documentos, así que tengo que encontrar una manera de acelerar el proceso.

-3
Michael 29 may. 2021 a las 05:58

1 respuesta

La mejor respuesta

Una forma de mejorar el rendimiento es usar el patrón de rosca múltiple. En su caso, si va a invocar esta función muchas veces en un proceso, está mejor adoptando la rosca de Python:

import threading
thd1 = threading.Thread("thread-1").spawn(encode)
for i in range(10):
   thd1.start

Ahora estás acelerando diez veces.

1
Jinghui Niu 29 may. 2021 a las 07:10