DeepPavlov para desenvolvedores: # 2 configuração e implantação

Todos os artigos do ciclo:

1. DeepPavlov para desenvolvedores: ferramentas número 1 da PNL e crie bots de bate-papo
2. DeepPavlov para desenvolvedores: # 2 configuração e implantação

Olá pessoal! No primeiro artigo de nossa série, aprendemos o que é o DeepPavlov, quais modelos de biblioteca estão prontos para uso sem treinamento prévio e como executar servidores REST com eles. Antes de iniciar o treinamento dos modelos, falaremos sobre as várias possibilidades de implantação dos modelos DeepPavlov e alguns recursos das configurações da biblioteca.

Concordamos que todos os scripts de inicialização da biblioteca são executados no ambiente Python com a biblioteca DeepPavlov instalada (para instalação, consulte o primeiro artigo, para virtualenv , leia aqui ). Os exemplos neste artigo não requerem conhecimento da sintaxe do Python.



Modos de interação com os modelos de PNL DeepPavlov


O DeepPavlov atualmente suporta 4 maneiras de interagir com os modelos de PNL (pré-treinados e criados pelo usuário):

  • O servidor REST (modo riseapi ) é a principal ferramenta para integrar modelos, foi descrito em detalhes em um artigo anterior (documentação) .
  • Soquete do servidor TCP ou UNIX (modo risesocket ) - se a integração de baixo nível (documentação) for necessária.
  • Bot no Telegram (modo de telegrama ) - modo de demonstração, permite que você interaja com o modelo através do Telegram (documentação) .
  • Linha de comando (modo de interação ) - modo de demonstração e depuração, permite interagir com o modelo através da linha de comando. O modelo no modo de interação via linha de comando é inicializado com o seguinte comando:
    python -m deeppavlov interact 


O parâmetro <config_path> (necessário nos quatro modos) pode levar o caminho completo para o arquivo de configuração do modelo ou o nome do arquivo de configuração sem uma extensão. Neste último caso, a configuração do modelo deve ser registrada na biblioteca.

As configurações de todos os modelos fornecidos com o DeepPavlov são registradas na biblioteca. A lista de modelos fornecidos pode ser encontrada na seção MODELS da documentação do DeepPavlov, suas configurações podem ser encontradas aqui .

Uso de GPU


Em qualquer um dos modos acima, os modelos de PNL são inicializados, baseados em redes neurais. Isso os torna bastante exigentes em recursos de computação. Você pode melhorar o desempenho dos modelos usando a GPU. Para fazer isso, você precisará de uma placa gráfica nVidia com memória de vídeo suficiente (dependendo do modelo em execução) e uma versão suportada da estrutura CUDA . Você pode encontrar todas as informações necessárias sobre o lançamento de modelos DeepPavlov na GPU aqui .

Arquivos de configurações da biblioteca


Todas as configurações da biblioteca estão contidas em três arquivos:

  • server_config.json - configurações para servidores REST e soquete, bem como um conector Telegram
  • dialog_logger_config.json - configurações para registrar solicitações de modelos
  • log_config.json - configurações de log da biblioteca

Por padrão, os arquivos de configuração estão localizados em <deep_pavlov_root> / utils / settings , em que <deep_pavlov_root> é o diretório de instalação do DeepPavlov (geralmente é lib / python <XX> / site-packages / deeppavlov no ambiente virtual). Usando o comando

 python -m deeppavlov.settings 

Você pode descobrir o caminho exato para o diretório com os arquivos de configurações. Você também pode definir o caminho para um diretório conveniente, especificando-o na variável de ambiente DP_SETTINGS_PATH . Após a primeira execução do comando acima (um servidor com qualquer modelo DeepPavlov treinado), os arquivos do diretório padrão serão copiados para o diretório do DP_SETTINGS_PATH . A equipe

 python -m deeppavlov.settings -d 

redefine as configurações copiando os arquivos de configurações do diretório padrão na parte superior dos arquivos para DP_SETTINGS_PATH .

Nas configurações do DeepPavlov, você deve prestar atenção:

  • server_config.json , parâmetro model_args_names:
    Do último artigo , lembramos:
    - argumentos para a API REST DeepPavlov nomeados;
    - qualquer modelo no DeepPavlov é identificado pelo nome da sua configuração.
    Portanto, os nomes dos argumentos padrão de cada modelo são obtidos de sua configuração.

    Analisaremos a estrutura das configurações do modelo em detalhes nos seguintes artigos; agora apenas observamos que os nomes dos argumentos na API REST podem ser redefinidos da seguinte maneira:

     model_args_names: [“arg_1_name”, ..., “arg_n_name”] 

    A sequência dos nomes dos argumentos corresponde à sequência na qual os argumentos são definidos na configuração do modelo, a sequência vazia como o valor do parâmetro model_args_names corresponde aos nomes padrão.
  • log_config.json:
    Observe que, para registrar o uvicorn, é usado um logger, configurado separadamente. Você pode ler sobre a estrutura de configuração do módulo Python de registro aqui .

Executando modelos pré-treinados no Docker


Qualquer modelo DeepPavlov pré-treinado pode ser iniciado no contêiner Docker no modo de serviço REST. Instruções detalhadas estão em nossos repositórios no DockerHub: aqui para a CPU, aqui para a GPU. Os modelos de API em contêineres são totalmente consistentes com a descrição do artigo anterior.

Deeppavlov cloud


Para facilitar o trabalho com modelos de PNL pré-treinados da DeepPavlov, começamos a fornecê-los no modo SaaS. Para usar os modelos, você precisa se registrar em nosso serviço e obter um token na seção Tokens da sua conta pessoal. A documentação da API está na seção Informações. Sob um token, você pode enviar até 1000 solicitações para o modelo.

Atualmente, o serviço é lançado na versão Alpha e seu uso é gratuito. Além disso, o conjunto e o formato para o fornecimento de modelos serão expandidos de acordo com as solicitações do usuário. O formulário de solicitação pode ser encontrado na parte inferior da página de demonstração .

Os seguintes modelos estão agora disponíveis no DeepPavlov Cloud:

  • Reconhecimento de entidade nomeada (multilíngue) - reconhecimento de entidades nomeadas;
  • Sentiment (RU) - classificação da tonalidade do texto;
  • SQuAD (multilíngue) - a resposta a uma pergunta do texto como um fragmento deste texto.

Conclusão


Neste artigo, nos familiarizamos com os recursos de configuração e implantação dos modelos DeepPavlov, aprendemos sobre as imagens do Docker DP e a possibilidade de acesso gratuito aos modelos DP como SaaS.

No próximo artigo, treinaremos um modelo DeepPavlov simples em nosso conjunto de dados. E não esqueça que o DeepPavlov tem um fórum - faça suas perguntas sobre a biblioteca e os modelos. Obrigado pela atenção!

Source: https://habr.com/ru/post/pt476772/


All Articles