BERT & Multiprocessing - PullRequest
       27

BERT & Multiprocessing

1 голос
/ 10 мая 2019

Я пытался создать многопроцессорное встраивание BERT.

Попытался кодировать, как показано ниже, но не смог взлететь.

bert_command = 'bert-serving-start -model_dir uncased_L-12_H-768_A-12 -num_worker 40'
process = subprocess.Popen(bert_command.split(), stdout=subprocess.PIPE)
from bert_serving.client import BertClient

, затем используя

import concurrent.futures

для многопроцессорной обработки встраивания

def embedding_dic(file_list):
    dic={}
    with concurrent.futures.ProcessPoolExecutor(max_workers=20) as executor:
        for file, e in zip(file_list, executor.map(embedding_file, file_list)):
            dic[file]=e
    return dic

def embedding_file(file):
    file_obj = open(form_path+file, 'r')
    file_read = file_obj.readlines()
    file_obj.close()
    file_read = [i.rstrip() for i in file_read if not(bool(not i or i.isspace()))] 
    file_read =[' |||'.join(file_read )]
    bc = BertClient(check_length=False)
    try:
        embedding = bc.encode(file_read)
    except ValueError: 
        embedding=None
    return embedding

Но поток застревает на

embedding = bc.encode(file_read)

Любая помощь высоко ценится.

Относительно конфигурации машины:

Системная информация

  • Debian
  • Версия TensorFlow: 1.13
  • Python версия: 3.6
  • bert-as-service версия: 1.8.9
  • Модель процессора и памяти: 48-ядерный Docker Machine и 60 ГБ памяти
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...