Модель ner_ontonotes_bert_mult, Exception in ASGI application

DeepPavlov устанавливал по статье на Хабре. Установил и запустил модель ner_ontonotes_bert_mult. Пример запроса выполнял в Postman.

{
“x”: [
“В МФТИ можно добраться на электричке с Савёловского Вокзала.”,
“В юго-западной Руси стог жита оценен в 15 гривен”
]
}

Сервер возвращает ошибку.

2019-10-28 08:51:32 (‘172.16.11.18’, 2298) - “POST /model HTTP/1.1” 500
2019-10-28 08:51:32 Exception in ASGI application
Traceback (most recent call last):
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/uvicorn/protocols/http/httptools_impl.py”, line 375, in run_asgi
result = await app(self.scope, self.receive, self.send)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/starlette/applications.py”, line 133, in call
await self.error_middleware(scope, receive, send)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/starlette/middleware/errors.py”, line 177, in call
raise exc from None
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/starlette/middleware/errors.py”, line 155, in call
await self.app(scope, receive, _send)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/starlette/exceptions.py”, line 73, in call
raise exc from None
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/starlette/exceptions.py”, line 62, in call
await self.app(scope, receive, sender)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/starlette/routing.py”, line 590, in call
await route(scope, receive, send)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/starlette/routing.py”, line 208, in call
await self.app(scope, receive, send)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/starlette/routing.py”, line 41, in app
response = await func(request)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/fastapi/routing.py”, line 111, in app
raw_response = await dependant.call(**values)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/deeppavlov/utils/server/server.py”, line 173, in answer
return interact(model, item.dict())
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/deeppavlov/utils/server/server.py”, line 98, in interact
prediction = model(*model_args)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/deeppavlov/core/common/chainer.py”, line 205, in call
return self._compute(*args, param_names=self.in_x, pipe=self.pipe, targets=self.out_params)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/deeppavlov/core/common/chainer.py”, line 228, in _compute
res = component(*x)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/deeppavlov/models/bert/bert_ner.py”, line 515, in call
pred = self._decode_crf(feed_dict)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/deeppavlov/core/models/tf_backend.py”, line 27, in _wrapped
return func(*args, **kwargs)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/deeppavlov/models/bert/bert_ner.py”, line 442, in _decode_crf
feed_dict=feed_dict)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/tensorflow/python/client/session.py”, line 950, in run
run_metadata_ptr)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/tensorflow/python/client/session.py”, line 1173, in _run
feed_dict_tensor, options, run_metadata)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/tensorflow/python/client/session.py”, line 1350, in _do_run
run_metadata)
File “/home/astra/miniconda3/envs/dpv/lib/python3.7/site-packages/tensorflow/python/client/session.py”, line 1370, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: 2 root error(s) found.
(0) Invalid argument: Requested more than 0 entries, but params is empty. Params shape: [2,21,0]
[[node ner/GatherNd (defined at /site-packages/deeppavlov/models/bert/bert_ner.py:420) ]]
[[ner/Reshape/_801]]
(1) Invalid argument: Requested more than 0 entries, but params is empty. Params shape: [2,21,0]
[[node ner/GatherNd (defined at /site-packages/deeppavlov/models/bert/bert_ner.py:420) ]]
0 successful operations.
0 derived errors ignored.

Errors may have originated from an input operation.
Input Source operations connected to node ner/GatherNd:
ner/Where (defined at /site-packages/deeppavlov/models/bert/bert_ner.py:350)
ner/output_dense/BiasAdd (defined at /site-packages/deeppavlov/models/bert/bert_ner.py:186)

Input Source operations connected to node ner/GatherNd:
ner/Where (defined at /site-packages/deeppavlov/models/bert/bert_ner.py:350)
ner/output_dense/BiasAdd (defined at /site-packages/deeppavlov/models/bert/bert_ner.py:186)

Original stack trace for ‘ner/GatherNd’:
File “/runpy.py”, line 193, in _run_module_as_main
main”, mod_spec)
File “/runpy.py”, line 85, in _run_code
exec(code, run_globals)
File “/site-packages/deeppavlov/main.py”, line 3, in
main()
File “/site-packages/deeppavlov/deep.py”, line 125, in main
start_model_server(pipeline_config_path, https, ssl_key, ssl_cert, port=args.port)
File “/site-packages/deeppavlov/utils/server/server.py”, line 152, in start_model_server
model = build_model(model_config)
File “/site-packages/deeppavlov/core/commands/infer.py”, line 61, in build_model
component = from_params(component_config, mode=mode, serialized=component_serialized)
File “/site-packages/deeppavlov/core/common/params.py”, line 104, in from_params
component = cls(**dict(config_params, **kwargs))
File “/site-packages/deeppavlov/core/models/tf_backend.py”, line 74, in call
obj.init(*args, **kwargs)
File “/site-packages/deeppavlov/core/models/tf_backend.py”, line 27, in _wrapped
return func(*args, **kwargs)
File “/site-packages/deeppavlov/models/bert/bert_ner.py”, line 130, in init
self._init_graph()
File “/site-packages/deeppavlov/core/models/tf_backend.py”, line 27, in _wrapped
return func(*args, **kwargs)
File “/site-packages/deeppavlov/models/bert/bert_ner.py”, line 188, in _init_graph
self.logits = self.token_from_subtoken(logits, self.y_masks_ph)
File “/site-packages/deeppavlov/core/models/tf_backend.py”, line 27, in _wrapped
return func(*args, **kwargs)
File “/site-packages/deeppavlov/models/bert/bert_ner.py”, line 420, in token_from_subtoken
els = tf.gather_nd(units, idxs)
File “/site-packages/tensorflow/python/util/dispatch.py”, line 180, in wrapper
return target(*args, **kwargs)
File “/site-packages/tensorflow/python/ops/array_ops.py”, line 3796, in gather_nd
return gen_array_ops.gather_nd(params, indices, name=name)
File “/site-packages/tensorflow/python/ops/gen_array_ops.py”, line 3991, in gather_nd
“GatherNd”, params=params, indices=indices, name=name)
File “/site-packages/tensorflow/python/framework/op_def_library.py”, line 788, in _apply_op_helper
op_def=op_def)
File “/site-packages/tensorflow/python/util/deprecation.py”, line 507, in new_func
return func(*args, **kwargs)
File “/site-packages/tensorflow/python/framework/ops.py”, line 3616, in create_op
op_def=op_def)
File “/site-packages/tensorflow/python/framework/ops.py”, line 2005, in init
self._traceback = tf_stack.extract_stack()

Я понимаю, что проблема может быть в tensorflow. Пробовал обновить его с версии 1.14 до 1.15 - результат тот же, только позиция ошибки в библиотеке Tensorflow другая.

Запускаем на Tesla T4 в окружении VMware (проброс GPU) на Astra Linux Smolensk 1.16 (вот такие мы). Буду рад любым идеям или вопросам.

Привет!
У меня не получилось воспроивзести ошибку, но можно попробовать отследить источник проблемы:
ошибка возникает в els = tf.gather_nd(units, idxs), где у units почему-то последняя размерность равна 0: shape = [2,21,0]. Последния размерность в shape отвечает за число NER-тэгов. Число NER-тэгов передается в конфиг файле ner_ontonotes_bert_mult.json:43: "n_tags": "#tag_vocab.len".

Проверьте содержимое файла tag.dict, который должен скачиваться командой python -m deeppavlov download ner_ontonotes_bert_mult, в нем должен быть список NER-тэгов.

Схожая ошибка обсуждалась тут: Can anyone help me find what error is this?

1 Like

Спасибо. Действительно, файла tag.dict просто не было. Странно, но модель скачалась и распаковалась без ошибок (или я их не заметил) и вряд ли кто-то мог его удалить. Перекачал заново, проверил файлы и все заработало. :smiley: