Riseapi выдает ошибку

Доброго времени суток!

Я дообучил rusentiment conv bert и сохранил модель. Теперь хочу поднять апи и использовать модель в интеграций с фронтендом, но код ниже выдает ошибку

!python -m deeppavlov riseapi /content/test.json
`2021-06-07 23:48:12.504838: W tensorflow/core/common_runtime/bfc_allocator.cc:424] ****************************xxxxxxxxxxxxxxxxxxxx****************************xxxxxxxxxxxxxxxxxxxx***_
2021-06-07 23:48:12.504883: W tensorflow/core/framework/op_kernel.cc:1628] OP_REQUIRES failed at constant_op.cc:77 : Resource exhausted: OOM when allocating tensor of shape [119547,768] and type float
2021-06-07 23:48:12.504940: E tensorflow/core/common_runtime/executor.cc:642] Executor failed to create kernel. Resource exhausted: OOM when allocating tensor of shape [119547,768] and type float
	 [[{{node Optimizer/Optimizer/bert/embeddings/word_embeddings/AdamWeightDecayOptimizer/Initializer/zeros}}]]
2021-06-07 23:48:12.521 ERROR in 'deeppavlov.core.common.params'['params'] at line 112: Exception in <class 'deeppavlov.models.bert.bert_classifier.BertClassifierModel'>
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/tensorflow_core/python/client/session.py", line 1365, in _do_call
    return fn(*args)
  File "/usr/local/lib/python3.7/dist-packages/tensorflow_core/python/client/session.py", line 1350, in _run_fn
    target_list, run_metadata)
  File "/usr/local/lib/python3.7/dist-packages/tensorflow_core/python/client/session.py", line 1443, in _call_tf_sessionrun
    run_metadata)
tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor of shape [119547,768] and type float
	 [[{{node Optimizer/Optimizer/bert/embeddings/word_embeddings/AdamWeightDecayOptimizer/Initializer/zeros}}]]

Вариант с уменшением batch size подойдет так как модель уже натренирована и готова к пользованию.

Я также пробовал так:


from deeppavlov.utils.server import start_model_server
start_model_server(mix_model)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-7-30ecd7d9cf91> in <module>()
----> 1 start_model_server(mix_model)

4 frames
/usr/lib/python3.7/asyncio/base_events.py in _check_runnung(self)
    521     def _check_runnung(self):
    522         if self.is_running():
--> 523             raise RuntimeError('This event loop is already running')
    524         if events._get_running_loop() is not None:
    525             raise RuntimeError(

RuntimeError: This event loop is already running

Как решить данную проблему?

Добрый день.

Первая ошибка вызвана нехваткой ОЗУ: Resource exhausted: OOM...

А по поводу второй ошибки: две перечисленные строки - единственные выполняемые комманды, или в запускаемом скрипте присутствуют и другие?

Это единственные команды.
mix_model это json с параметрами. Помимо start_model_server запускал interact_model_by_telegram(mix_model, token=’’). Скрипт с телеграм работает отлично. Но остановил его и рестартнул перед тем как запускать riseapi.

Можете прислать версию питона, полное виртуальное окружение (pip freeze) и конфигурационный файл? Никак не могу воспроизвести ошибку.
И попробуйте установить nest-asyncio.

спасибо, nest-asyncio помог решить проблему.
Получаю команду:

Server is running on http://0.0.0.0:5000

Но когда перехожу по ссылке выше, получаю вот такой error msg

This site can’t be reached
0.0.0.0 refused to connect.

Это нормальное явление? Как я понимаю команда http://0.0.0.0:5000/probe или /api должны были дать какие-то респонс но у меня выдает The site cant be reached.
Я меня мало опыта в работе с rest api, поэтому не могли бы подсказать каковы мои следующие шаги?

Мне надо получить респонс (убедиться что api работает) и упаковать в контейнер чтобы в дальнейшем интегрировать с webapp

Версия питона 3.7.10
Мой json file выглядить так:

mix_model = {
  "dataset_reader": {
    "class_name": "basic_classification_reader",
    "x": "content",
    "y": "sentiment",
    "data_path": "/content/drive/MyDrive/AI/datasets/pikabu/df_concat_neu/",
    "train": "train_concat_neu.csv",
    "test": "test_concat_neu.csv",
    "valid": "validation_concat_neu.csv"
  },
  "dataset_iterator": {
    "class_name": "basic_classification_iterator",
    "seed": 42,
    "shuffle": True
  },
  "chainer": {
    "in": [
      "x"
    ],
    "in_y": [
      "y"
    ],
    "pipe": [
      {
        "class_name": "bert_preprocessor",
        "vocab_file": "drive/MyDrive/AI/config/ru_conversational_cased_L-12_H-768_A-12/vocab.txt",
        "do_lower_case": False,
        "max_seq_length": 256,
        "in": [
          "x"
        ],
        "out": [
          "bert_features"
        ]
      },
      {
        "id": "classes_vocab",
        "class_name": "simple_vocab",
        "fit_on": [
          "y"
        ],
        "save_path": "drive/MyDrive/bert_model/model_mix_73/multiple_classes.dict",
        "load_path": "drive/MyDrive/bert_model/model_mix_73/multiple_classes.dict",
        "in": "y",
        "out": "y_ids"
      },
      {
        "in": "y_ids",
        "out": "y_onehot",
        "class_name": "one_hotter",
        "depth": 3,
        "single_vector": True
      },
      {
        "class_name": "bert_classifier",
        "n_classes": 3,
        "return_probas": True,
        "one_hot_labels": True,
        "bert_config_file": "drive/MyDrive/AI/config/ru_conversational_cased_L-12_H-768_A-12/bert_config.json",
        "pretrained_bert": "drive/MyDrive/AI/config/ru_conversational_cased_L-12_H-768_A-12/bert_model.ckpt",
        "save_path": "drive/MyDrive/bert_model/model_mix_73/mixed_bert_model/model",
        "load_path": "drive/MyDrive/bert_model/model_mix_73/mixed_bert_model/model",
        "learning_rate": 1e-5,
        "keep_prob": 0.5,
        "learning_rate_drop_patience": 2,
        "learning_rate_drop_div": 2.0,
        "load_before_drop": True,
        "in": [
          "bert_features"
        ],
        "in_y": [
          "y_onehot"
        ],
        "out": [
          "y_pred_probas"
        ]
      },
      {
        "in": "y_pred_probas",
        "out": "y_pred_ids",
        "class_name": "proba2labels",
        "max_proba": True
      },
      {
        "in": "y_pred_ids",
        "out": "y_pred_labels",
        "ref": "classes_vocab"
      }
    ],
    "out": [
      "y_pred_labels"
    ]
  },
  "train": {
    "batch_size": 8,
    "epochs": 7,
    "metrics": [
      "f1_weighted",
      "f1_macro",
      "accuracy",
      {
        "name": "roc_auc",
        "inputs": [
          "y_onehot",
          "y_pred_probas"
        ]
      }
    ],
    "show_examples": False,
    "pytest_max_batches": 2,
    "validation_patience": 2,
    "val_every_n_epochs": 1,
    "log_every_n_epochs": 1,
    "tensorboard_log_dir": "drive/MyDrive/bert_model/model_mix_73/logs/",
    "evaluation_targets": [
      "train",
      "valid",
      "test"
    ],
    "class_name": "nn_trainer"
  },
  "metadata": {
    "variables": {
      "ROOT_PATH": "~/.deeppavlov",
      "DOWNLOADS_PATH": "{ROOT_PATH}/downloads",
      "MODELS_PATH": "{ROOT_PATH}/models",
      "MODEL_PATH": "{MODELS_PATH}/classifiers/rusentiment_bert_v0/"
    },
    "requirements": [
      "deeppavlov/requirements/tf.txt",
      "deeppavlov/requirements/bert_dp.txt"
    ],
    "download": [
      {
        "url": "http://files.deeppavlov.ai/deeppavlov_data/bert/ru_conversational_cased_L-12_H-768_A-12.tar.gz",
        "subdir": "/content/bert_models"
      },
      {
        "url": "http://files.deeppavlov.ai/deeppavlov_data/classifiers/rusentiment_convers_bert_v0.tar.gz",
        "subdir": "drive/MyDrive/bert_model/model_mix_73/classifier"
      }
    ]
  }
}

В целом процесс таков:

!pip install tensorflow-gpu==1.15.2
!pip install deeppavlov
!python -m deeppavlov install rusentiment_convers_bert
from deeppavlov.utils.server import start_model_server

import nest_asyncio
nest_asyncio.apply(mix_model)

Есть ли какой-нибудь туториал от deeppavlov по работе с rest api и докеризаций?

UPDATE:
Я изменил внутри deeppavlov/utils/settings/server_config.json

    "host": "127.0.0.1",
    "port": 8000,

но сервер все равно запускается на Uvicorn running on [http://0.0.0.0:5000](http://0.0.0.0:5000/)
еще попробовал запустить команду ниже

!python -m deeppavlov riseapi /content/test.json -b 2 -p 8000

он дал Uvicorn running on http://0.0.0.0:8000 но получаю тот же результат
**0.0.0.0** refused to connect. Как изменить host number? В documentation вроде не указан вариант с изменением host number