#spacy #multiple-gpu
#spacy #несколько графических процессоров
Вопрос:
Я использую spacy для прогнозирования тегов ner с использованием gpu. У меня большая машина с 8 графическими процессорами, я хочу использовать все эти графические процессоры.
один из способов использования всех графических процессоров — запустить 8 разных сценариев на каждом графическом процессоре, а затем передать текст каждому сценарию с помощью очереди kafka.
Есть ли какой-либо другой способ, с помощью которого мы можем использовать один скрипт, чтобы использовать все графические процессоры для прогнозирования ner.
Ответ №1:
Вы пробовали запускать Spacy с MPI? Я сам экспериментирую со следующим кодом, поэтому, пожалуйста, дайте мне знать, если это сработает!
from mpi4py import MPI
import cupy
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
if rank == 0:
data = ["His friend Nicolas J. Smith is here with Bart Simpon and Fred."*100]
else:
data = None
unit = comm.scatter(data, root=0)
with cupy.cuda.Device(rank):
import spacy
from thinc.api import set_gpu_allocator, require_gpu
set_gpu_allocator("pytorch")
require_gpu(rank)
nlp = spacy.load('en_core_web_lg')
nlp.add_pipe("merge_entities")
tmp_list = []
for doc in nlp.pipe(unit):
res = " ".join([t.text if not t.ent_type_ else t.ent_type_ for t in doc])
tmp_list.append(res)
result = comm.gather(tmp_list, root=0)
if comm.rank == 0:
print (result)
else:
result = None