DeepPavlov supports Linux, Windows 10+ (through WSL/WSL2), MacOS (Big Sur+) platforms, Python 3.6-3.11.
Depending on the model used, you may need from 4 to 16 GB RAM.
Install with pip¶
You should install DeepPavlov in a virtual environment. If you’re
unfamiliar with Python virtual environments, take a look at this
guide. A virtual
environment makes it easier to manage different projects, and avoid compatibility issues between dependencies.
-
Create a virtual environment:
-
Activate the virtual environment on Linux (source could be replaced with .):
-
Install DeepPavlov inside this virtual environment:
Install from source¶
Install DeepPavlov dev branch from source with the following command:
pip install git+http://github.com/deeppavlov/DeepPavlov@dev
This command installs the bleeding edge dev version rather than the latest release version. The dev version is useful
for staying up-to-date with the latest developments. For instance, if a bug has been fixed since the last release but
a new release hasn’t been rolled out yet. However, this means the dev version may not always be stable.
Editable install¶
You will need an editable install if you want to make changes in the DeepPavlov source code that immediately take place
without requiring a new installation.
Clone the repository and install DeepPavlov with the following commands:
git clone http://github.com/deeppavlov/DeepPavlov.git pip install -e DeepPavlov
Docker Images¶
We have built several DeepPavlov based Docker images, which include:
DeepPavlov based Jupyter notebook Docker image;
Docker images which serve some of our models and allow to access them
via REST API (riseapi mode).
Here is our DockerHub repository with
images and deployment instructions.
Время на прочтение6 мин
Количество просмотров14K
В этой статье я хочу поделиться своим опытом использования данной open-source библиотеки на примере реализации одной задачи с парсингом файлов PDF/DOC/DOCX содержащих резюме специалистов.
Здесь я также опишу этапы реализации инструмента для подготовки датасета. После чего можно будет обучить модель BERT на полученном датасете в рамках задачи распознавания сущностей из текстов (Named Entity Recognition – в дальнейшем NER).
Итак, с чего начать. Естественно для начала нужно установить и настроить среду для запуска нашего инструмента. Установку я буду выполнять на Windows 10.
На Хабре уже есть несколько статей от разработчиков этой библиотеки, где как раз есть подробная инструкция по установке. А в этой статье я хотел бы собрать все воедино, от запуска и до обучения модели. Также я укажу решения некоторых проблем, с которыми я столкнулся при работе с этой библиотекой.
ВАЖНО: при установке важно соблюдение версий всех продуктов и компонентов, так как часто возникают проблемы при несовместимости версий. Особенно это касается библиотеки TensorFlow. Бывает даже так, что для некоторых задач вплоть до нужного коммита на GitHub нужно использовать. В случае с DeepPavlov достаточно соблюдение только поддерживаемой версии.
Я укажу версии продуктов работающей конфигурации, и спецификации моего ноутбука, на котором я запускал процесс обучения нейронной сети. Я приведу несколько ссылок в которых также описан процесс установки и настройки open-source библиотеки DeepPavlov.
Полезные ссылки от разработчиков DeepPavlov
- DeepPavlov для разработчиков: #1 инструменты NLP и создания чат-ботов. Здесь описан процесс установки библиотеки на примере модели ner_ontonotes_bert_mult, которая используется для мультиязычного анализа текстов.
- DeepPavlov для разработчиков: #2 настройка и деплоймент. Здесь вы сможете найти информацию об основных важных моментах в настройке библиотеки.
Версии компонентов для установки
- Python 3.6.6 – 3.7
- Visual Studio Community 2017 (опционально)
- Visual C++ Build Tools 14.0.25420.1
- nVIDIA CUDA 10.0.130_411.31_win10
- cuDNN-10.0-windows10-x64-v7.6.5.32
Установка среды для поддержки GPU
- Установка Python или Visual Studio Community 2017 в составе с Python. В моей установке я использовал второй способ, установив Visual Studio Community с поддержкой Python.
Конечно, придется вручную добавить путь до папки
C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64
в системную переменную PATH, там где установлен Python от Visual Studio, но для меня это не проблема, для меня важно знать, что я установил одну версию для Python.
Но это мой случай, вы можете установить все отдельно.
- Cледующим шагом необходимо установить Visual C++ Build Tools.
- Далее необходимо установить nVIDIA CUDA.
ВАЖНО: если ранее была установлена библиотека nVIDIA CUDA, тогда нужно удалить все установленные ранее компоненты от nVIDIA, вплоть до видео-драйвера. И уже потом на чистую установку видео-драйвера выполнять установку nVIDIA CUDA.
- Теперь устанавливаем cuDNN для nVIDIA CUDA.
Для этого Вам необходимо зарегистрировать членство для NVIDIA Developer Program (это бесплатно). - Скачиваем версию cuDNN для CUDA 10.0
- Распаковываем архив в папку
C:\Users\<имя_пользователя>\Downloads\cuDNN
- Копируем все содержимое папки ..\cuDNN в папку где у нас установлена CUDA
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
- Перезагружаем компьютер. Необязательно, но я рекомендую.
Установка DeepPavlov
- Создаeм и активируем виртуальное окружение Python.
ВАЖНО: я это делал через Visual Studio.
- Для этого я создал новый проект для From Existing Python code.
- Жмем далее до последнего окна, но на Finish пока не жмем. Необходимо снять галочку «Detect Virtual Environments»
- Жмем на Finish.
- Теперь нужно создать виртуальное окружение.
- Все оставляем по-умолчанию.
- Открываем папку проекта в командной строке. И выполняем команду:
.\env\Scripts\activate.bat
- Теперь все готово чтобы установить DeepPavlov. Выполняем команду:
pip install deeppavlov
- Далее необходимо установить TensorFlow 1.14.0 с поддержкой GPU. Для этого выполняем команду:
pip install tensorflow-gpu==1.14.0
- Почти все готово. Необходимо только убедиться, что TensorFlow будет использовать видеокарту для вычислений. Для этого напишем простенький скрипт devices.py, следующего содержания:
from tensorflow.python.client import device_lib print(device_lib.list_local_devices())
или tensorflow_test.py:
import tensorflow as tf tf.test.is_built_with_cuda() tf.test.is_gpu_available(cuda_only=False, min_cuda_compute_capability=None)
- После выполнения devices.py, мы должны увидеть примерно следующее:
- Теперь все готово для обучения и использования DeepPavlov с поддержкой GPU.
DeepPavlov на REST API
Для того чтобы запустить и установить сервис для REST API, нужно выполнить следующие команды:
- Устанавливаем в активное виртуальное окружение
python -m deeppavlov install ner_ontonotes_bert_mult
- Скачиваем модель ner_ontonotes_bert_mult с серверов DeepPavlov
python -m deeppavlov download ner_ontonotes_bert_mult
- Запустить REST API
python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
Данная модель будет доступна по адресу http://localhost:5005. Порт можете указать свой.
Все модели по-умолчанию будут скачены по пути
C:\Users\<имя_пользователя>\.deeppavlov
Настройка DeepPavlov для обучения
Перед тем как запускать процесс обучения нам необходимо настроить конфигурацию DeepPavlov так, чтобы процесс обучения не «валился» с ошибкой от того, что память на нашей видеокарте переполнена. Для этого у нас есть файлы конфигурации для каждой модели.
Как и в примере от разработчиков, я также собираюсь использовать модель ner_ontonotes_bert_mult. Все конфигурации по умолчанию для DeepPavlov находятся по пути:
<папка_проекта>\env\Lib\site-packages\deeppavlov\configs\ner
В моем случае файл будет называться как и модель ner_ontonotes_bert_mult.json.
Для моей конфигурации ноутбука мне пришлось поменять значение batch_size в блоке train на 4.
Иначе моя видеокарта после нескольких минут «захлёбывалась», и процесс обучения падал с ошибкой.
Конфигурация ноубука
- Модель: MSI GS-65
- Процессор: Core i7 8750H 2200 МГц
- Объём установленной памяти: 32 Гб DDR-4
- Жесткий диск: SSD 512 Гб
- Видеокарта: GeForce GTX 1070 8192 Мб
Инструмент для подготовки датасета
Для того чтобы обучить модель, нужно подготовить датасет. Датасет состоит из трех файлов train.txt, valid.txt, test.txt. С разбивкой данных в следующем процентном соотношении train – 80%, valid и test по 10%.
Датасет для BERT-модели имеет следующий вид:
Ivan B-PERSON
Ivanov I-PERSON
Senior B-WORK_OF_ART
Java I-WORK_OF_ART
Developer I-WORK_OF_ART
IT B-ORG
- I-ORG
Company I-ORG
Key O
duties O
: 0
Java B-WORK_OF_ART
Python B-WORK_OF_ART
CSS B-WORK_OF_ART
JavaScript B-WORK_OF_ART
Russian B-LOC
Federation I-LOC
. O
Petr B-PERSON
Petrov I-PERSON
Junior B-WORK_OF_ART
Web I-WORK_OF_ART
Developer I-WORK_OF_ART
Boogle B-ORG
I O
' O
ve O
developed O
Web B-WORK_OF_ART
- O
Application O
.
Skills O
: O
ReactJS B-WORK_OF_ART
Vue B-WORK_OF_ART
- I-WORK_OF_ART
JS I-WORK_OF_ART
HTML B-WORK_OF_ART
CSS B-WORK_OF_ART
Russian B-LOC
Federation I-LOC
. O
...
Формат датасета выглядит так:
<текст_токена><пробел><тип_токена>
ВАЖНО: после конца предложения обязательно должен быть перенос строки. Если предложение содержит более 75 токенов, то также необходимо поставить перенос строки, иначе при обучении модели процесс выпадет с ошибкой.
Для подготовки датасета я написал веб-интерфейс, где имеется возможность загрузить файлы DOC/PDF/DOCX на сервер, распарсить в обычный текст, а потом пропустить этот текст через активную модель с доступом по REST API сохранив при этом результат в промежуточную БД. Для этого я использую MongoDB.
После того как вышеперечисленные действия будут выполнены, можно приступать к формированию датасета под наши нужды.
Для этого в мною написанном веб-интерфейсе я сделал отдельную панель, где есть возможность осуществлять поиск по токенам датасета и затем менять тип токена и сам текст токена.
Инструмент также умеет автоматически на основе списка слов делать обновление типа у токена, указанного пользователем при запросе.
В целом инструмент помогает автоматизировать часть работы, но все равно приходится много делать ручной работы.
Интерфейс для проверки результата и разбивка датасета на три файла также реализованы.
Обучение DeepPavlov
Вот мы и добрались до самой интересной части. Для процесса обучения сначала нужно скачать модель ner_ontonotes_bert_mult, если вы это еще не сделали, то нужно выполнить первые два шага из раздела DeepPavlov на REST API выше.
Перед запуском процесса обучения необходимо выполнить два шага:
- Удалить полностью папку с обученной моделью:
C:\Users\<имя_пользователя>\.deeppavlov\models\ner_ontonotes_bert_mult
Так как эта модель обучалась на другом датасете.
- Скопировать подготовленные файлы датасета train.txt, valid.txt, test.txt в папку
C:\Users\<имя_пользователя>\.deeppavlov\downloads\ontonotes
Теперь можно запускать процесс обучения.
Для запуска обучения можно написать простенький скрипт train.py следующего вида:
from deeppavlov import configs, train_model
ner_model = train_model(configs.ner.ner_ontonotes_bert_mult, download=False)
или использовать командную строку:
python -m deeppavlov train <папка_проекта>\env\Lib\site-packages\deeppavlov\configs\ner\ner_ontonotes_bert_mult.json
Результаты
Я обучал модель на датасете размером 115540 токенов. Этот датасет был сгенерирован из 100 файлов резюме сотрудников. Процесс обучения у меня занял 5 часов 18 минут.
Модель имела следующие значения:
- precision: 76.32%;
- recall: 72.32%;
- FB1: 74.27;
- loss: 5.4907482981681826;
После правок нескольких проблем в авто-генерации датасета, я получил loss ниже. А в целом остался доволен результатом. Конечно, у меня осталось много вопросов по использованию этой библиотеки и то, что я здесь описал, это лишь капля в море.
Библиотека мне очень понравилась своей простотой и удобством в использовании. По крайней мере для задачи NER. Буду очень рад обсудить другие возможности этой библиотеки и надеюсь кому-то будет полезен материал из этой статьи.
To set up an editable install of DeepPavlov, which allows for immediate changes to the source code without needing to reinstall, follow these steps:
Clone the Repository
Start by cloning the DeepPavlov repository using the command below:
git clone http://github.com/deeppavlov/DeepPavlov.git
Install DeepPavlov in Editable Mode
Navigate into the cloned directory and install DeepPavlov in editable mode:
cd DeepPavlov
pip install -e .
This command ensures that any modifications made to the source code will be reflected in your Python environment immediately.
Setting Up the Development Environment
If you want to work on the development branch, you can install it using:
pip install git+http://github.com/deeppavlov/DeepPavlov@dev
This installs the latest development version, which may include features and fixes not yet available in the stable release. However, be aware that this version may not always be stable.
Syncing with Upstream
To keep your local repository updated with the latest changes from the main DeepPavlov repository, follow these commands:
git remote add upstream https://github.com/deeppavlov/DeepPavlov.git
git fetch upstream
git checkout -b dev --track upstream/dev
To sync your local dev
branch with upstream updates, use:
git checkout dev
git fetch upstream
git pull
Creating a New Branch
When working on new features or fixes, create a new branch:
git checkout -b feature_branch_name
Additional Requirements
If you need to install additional dependencies for documentation or testing, you can do so with:
pip install -e .[docs,tests]
This command installs the necessary packages to build documentation and run tests, ensuring a comprehensive development setup.
Best Practices
While developing, adhere to coding standards such as PEP8 and include meaningful docstrings and comments in your code. This practice not only helps you but also aids others who may work with your code in the future.
DeepPavlov supports multiple platforms including Linux, Windows 10+ (via WSL/WSL2), and MacOS (Big Sur+), with compatibility for Python 3.6-3.11. Depending on the model you choose, ensure your system has between 4 to 16 GB of RAM available.
Install with pip
To begin, it is recommended to install DeepPavlov within a virtual environment <https://docs.python.org/3/library/venv.html>
. This approach helps manage dependencies effectively and avoids compatibility issues across different projects. If you are new to Python virtual environments, refer to this guide <https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/>
for assistance.
-
Create a virtual environment:
python -m venv env
-
Activate the virtual environment:
- On Linux:
source env/bin/activate
- On Windows:
.\env\Scripts\activate
-
Install DeepPavlov:
pip install deeppavlov
Install from source
For those who wish to work with the latest developments, you can install the dev branch from source using the following command:
pip install git+http://github.com/deeppavlov/DeepPavlov@dev
This command fetches the latest changes, which may include bug fixes not yet available in the stable release. However, be aware that the dev version may not always be stable.
QuickStart
After installation, you can start using DeepPavlov’s pre-trained NLP models. Each model is defined by its configuration file, which can be found in the deeppavlov.configs
module. To access the list of available models, you can use:
from deeppavlov import configs
Once you have selected a model and its corresponding config file, you can train, evaluate, and infer using two primary interfaces:
- Command Line Interface (CLI)
- Python API
Before using the CLI, ensure you install the model’s package requirements:
python -m deeppavlov install <config_path>
Replace <config_path>
with the model name (without the .json
extension) or the path to the model’s config file.
Command Line Interface (CLI)
To interact with a model and get predictions, run:
python -m deeppavlov interact <config_path> [-d] [-i]
-d
downloads necessary data, including pretrained model files and embeddings (optional).-i
installs model requirements (optional).
You can also train the model using:
python -m deeppavlov train <config_path> [-d] [-i]
Editable Install
If you plan to modify the DeepPavlov source code, an editable install is necessary. Clone the repository and install it with:
git clone http://github.com/deeppavlov/DeepPavlov.git
pip install -e DeepPavlov
Docker Images
DeepPavlov also offers several Docker images, which include:
- A Jupyter notebook Docker image for interactive development.
- Docker images that serve models and provide access via REST API.
For more details, visit our DockerHub repository <https://hub.docker.com/u/deeppavlov/>
_ for images and deployment instructions.
Это приложение для Windows под названием DeepPavlov, последнюю версию которого можно загрузить как Release1.4.0sourcecode.zip. Его можно запустить онлайн на бесплатном хостинг-провайдере OnWorks для рабочих станций.
Загрузите и запустите онлайн это приложение под названием DeepPavlov с OnWorks бесплатно.
Следуйте этим инструкциям, чтобы запустить это приложение:
— 1. Загрузил это приложение на свой компьютер.
— 2. Введите в нашем файловом менеджере https://www.onworks.net/myfiles.php?username=XXXXX с желаемым именем пользователя.
— 3. Загрузите это приложение в такой файловый менеджер.
— 4. Запустите любой онлайн-эмулятор OS OnWorks с этого сайта, но лучше онлайн-эмулятор Windows.
— 5. В только что запущенной ОС Windows OnWorks перейдите в наш файловый менеджер https://www.onworks.net/myfiles.php?username=XXXXX с желаемым именем пользователя.
— 6. Скачайте приложение и установите его.
— 7. Загрузите Wine из репозиториев программного обеспечения вашего дистрибутива Linux. После установки вы можете дважды щелкнуть приложение, чтобы запустить его с помощью Wine. Вы также можете попробовать PlayOnLinux, необычный интерфейс поверх Wine, который поможет вам установить популярные программы и игры для Windows.
Wine — это способ запустить программное обеспечение Windows в Linux, но без Windows. Wine — это уровень совместимости с Windows с открытым исходным кодом, который может запускать программы Windows непосредственно на любом рабочем столе Linux. По сути, Wine пытается заново реализовать Windows с нуля, чтобы можно было запускать все эти Windows-приложения, фактически не нуждаясь в Windows.
СКРИНШОТЫ
ДипПавлов
ОПИСАНИЕ
DeepPavlov позволяет новичкам и экспертам легко создавать диалоговые системы. Лучше всего начать с удобных руководств. Они обеспечивают быстрое и удобное введение в использование DeepPavlov с полными сквозными примерами. Установка не требуется. Руководства объясняют концепции и компоненты DeepPavlov. Следуйте пошаговым инструкциям, чтобы установить, настроить и расширить платформу DeepPavlov для вашего варианта использования. DeepPavlov — это фреймворк с открытым исходным кодом для разработки чат-ботов и виртуальных помощников. Он имеет комплексные и гибкие инструменты, которые позволяют разработчикам и исследователям НЛП создавать готовые к работе разговорные навыки и сложных помощников для разговоров с несколькими навыками. Используйте BERT и другие современные модели глубокого обучения для решения задач классификации, NER, вопросов и ответов и других NLP-задач. Агент DeepPavlov позволяет создавать промышленные решения с многопрофильной интеграцией через сервисы API.
Особенности
- Платформа диалогового ИИ с открытым исходным кодом
- Запуск предварительно обученных или собственных компонентов НЛП и разговорных навыков
- Модели DeepPavlov теперь упакованы в простые в развертывании контейнеры, размещенные на Nvidia NGC и Docker Hu.
- Наша технология диалогового искусственного интеллекта может помочь ускорить ваши приложения НЛП до 20 раз.
- Создавать диалоговые системы могут как новички, так и эксперты.
- Следуйте пошаговым инструкциям по установке, настройке и расширению фреймворка DeepPavlov.
Язык программирования
Питон
Категории
Библиотеки, машинное обучение, чат-бот, платформы глубокого обучения, обработка естественного языка (NLP)
Это приложение также можно загрузить с https://sourceforge.net/projects/deeppavlov.mirror/. Он был размещен в OnWorks, чтобы его можно было легко запускать в Интернете с помощью одной из наших бесплатных операционных систем.