Ошибка при доступе к контейнеру isanlp_rst
ulyanaisaeva opened this issue · 2 comments
Здравствуйте!
Столкнулась с ошибкой при запуске модели, скорее всего я что-то не учла, но делала по инструкции. Кажется, дело в том, что контейнер автоматически отключается через 1-2 минуты после запуска через docker run
.
---------------------------------------------------------------------------
_InactiveRpcError Traceback (most recent call last)
Cell In [6], line 30
9 ppl_ru = PipelineCommon([
10 (ProcessorRazdel(), ['text'],
11 {'tokens': 'tokens',
(...)
21 {'rst': 'rst'})
22 ])
24 text = ("Парацетамол является широко распространённым центральным ненаркотическим анальгетиком, обладает довольно "
25 "слабыми противовоспалительными свойствами. Вместе с тем при приёме больших доз может вызывать нарушения "
26 "работы печени, кровеносной системы и почек. Риски нарушений работы данных органов и систем "
27 "увеличивается при одновременном принятии спиртного, поэтому лицам, употребляющим алкоголь, рекомендуют "
28 "употреблять пониженную дозу парацетамола.")
---> 30 res = ppl_ru(text)
File ~/Desktop/Универ/rst_parsing/.venv/lib/python3.10/site-packages/isanlp/pipeline_common.py:74, in PipelineCommon.__call__(self, *input_data)
71 result = {e : inp for (e, inp) in zip(list(self._processors.values())[0][1], input_data)}
73 for proc, proc_input, proc_output in list(self._processors.values()):
---> 74 results = proc(*[result[e] for e in proc_input])
75 if type(results) is tuple:
76 results = {i : results[i] for i in range(len(results))}
File ~/Desktop/Универ/rst_parsing/.venv/lib/python3.10/site-packages/isanlp/processor_remote.py:42, in ProcessorRemote.__call__(self, *input_data)
38 pb_ann.Pack(annotation_to_protobuf.convert_annotation(input_data))
39 request = annotation_pb2.ProcessRequest(pipeline_name = self._pipeline_name,
40 input_annotations = pb_ann)
---> 42 response = self._stub.process(request)
43 return annotation_from_protobuf.convert_annotation(response.output_annotations)
File ~/Desktop/Универ/rst_parsing/.venv/lib/python3.10/site-packages/grpc/_channel.py:946, in _UnaryUnaryMultiCallable.__call__(self, request, timeout, metadata, credentials, wait_for_ready, compression)
937 def __call__(self,
938 request,
939 timeout=None,
(...)
942 wait_for_ready=None,
943 compression=None):
944 state, call, = self._blocking(request, timeout, metadata, credentials,
945 wait_for_ready, compression)
--> 946 return _end_unary_response_blocking(state, call, False, None)
File ~/Desktop/Универ/rst_parsing/.venv/lib/python3.10/site-packages/grpc/_channel.py:849, in _end_unary_response_blocking(state, call, with_call, deadline)
847 return state.response
848 else:
--> 849 raise _InactiveRpcError(state)
_InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
status = StatusCode.UNAVAILABLE
details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:3335: Failed to connect to remote host: Connection refused"
debug_error_string = "UNKNOWN:failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:3335: Failed to connect to remote host: Connection refused {grpc_status:14, created_time:"2022-11-05T18:43:29.799901+03:00"}"
>
Скачала образы, запустила:
docker run --rm -d -p 3334:3333 --name spacy_ru tchewik/isanlp_spacy:ru
docker run --rm -d -p 3335:3333 --name rst_ru tchewik/isanlp_rst:2.1-rstreebank
Вызываю парсинг как в примере (подставила localhost
):
from isanlp import PipelineCommon
from isanlp.processor_remote import ProcessorRemote
from isanlp.processor_razdel import ProcessorRazdel
# put the address here ->
address_syntax = ('localhost', 3334)
address_rst = ('localhost', 3335)
ppl_ru = PipelineCommon([
(ProcessorRazdel(), ['text'],
{'tokens': 'tokens',
'sentences': 'sentences'}),
(ProcessorRemote(address_syntax[0], address_syntax[1], '0'),
['tokens', 'sentences'],
{'lemma': 'lemma',
'morph': 'morph',
'syntax_dep_tree': 'syntax_dep_tree',
'postag': 'postag'}),
(ProcessorRemote(address_rst[0], address_rst[1], 'default'),
['text', 'tokens', 'sentences', 'postag', 'morph', 'lemma', 'syntax_dep_tree'],
{'rst': 'rst'})
])
text = ("Парацетамол является широко распространённым центральным ненаркотическим анальгетиком, обладает довольно "
"слабыми противовоспалительными свойствами. Вместе с тем при приёме больших доз может вызывать нарушения "
"работы печени, кровеносной системы и почек. Риски нарушений работы данных органов и систем "
"увеличивается при одновременном принятии спиртного, поэтому лицам, употребляющим алкоголь, рекомендуют "
"употреблять пониженную дозу парацетамола.")
res = ppl_ru(text)
Если убрать второй ProcessorRemote
, то все работает, но без ТРС-парсинга, естественно. То есть дело в его контейнере.
[Python 3.10.4]
Стоило только создать issue, и сразу нашла в логах, что оно пытается запуститься на GPU.
2022-11-05 15:50:40.117655: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2022-11-05 15:50:40.117927: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Подскажите, пожалуйста, CPU не потянет модель?
Прошу прощения, что зря создала тред.
Здравствуйте! Самое последнее уведомление сообщает именно о том, что модель пытается запуститься на CPU. Парсер содержит в том числе четыре нейронные модели и довольно требователен к ресурсам. Пожалуйста, сообщите вашу конфигурацию для уточнения.