Локальная установка

Dbrain — серверное решение. Если вы хотите его протестировать, воспользуйтесь веб-демо. Мы не используем долговременного хранилища данных, все входящие файлы передаются на сервер по защищённому протоколу, обрабатываются в оперативной памяти и удаляются сразу после возврата результатов пользователю. В тестовых целях пригодится паспорт России из Википедии.

Воспользуйтесь инструкциями ниже, если хотите развернуть решение Dbrain в собственном закрытом IT-контуре.

Требования к аппаратной части

Сценарии использования:

1. Минимальный — не более 1 документа в минуту

  • Процессор: 4 ядра, 3,3 GHz, расширение AVX 2; ориентир: Intel Xeon E-2124

  • Оперативная память: 64 Gb

  • Накопитель: 500 Gb SSD

2. Стандартный — до 60 документов в минуту

  • Видеокарта: Nvidia Tesla T4

  • Процессор: 8 ядер, 2,6 GHz, расширение AVX 2; ориентир: Intel Xeon Silver 4114

  • Оперативная память: 64 Gb

  • Накопитель: 1000 Gb SSD

3. Корпоративный — до 600 документов в минуту

  • Видеокарта: Nvidia Tesla T4 х2

  • Процессор: 12 ядер, 2,6 GHz, расширение AVX 2; ориентир: Intel Xeon Gold 6126

  • Оперативная память: 128 Gb

  • Накопитель: 2000 Gb SSD

Выше перечислены аппаратные требования для продуктивной эксплуатации. Dbrain запускается и на слабых конфигурациях, например на ноутбуке Core i5-8250U 1.6 GHz / 8 Gb ОЗУ / 250 Gb SSD. Тем не менее, работоспособность на таких слабых конфигурациях не гарантируется.

Ubuntu
Debian
Windows
Ubuntu

Требования к окружению:

  1. Операционная система Ubuntu версии 18.04

  2. Система менеджмента контейнеров Docker

  3. docker-compose

  4. Для использования мощностей видеокарт нужны:

    1. nvidia-docker

    2. Драйвера Nvidia последней доступной версии

    3. CUDA версии не ниже 11.1

  5. Доступ в интернет для проверки лицензии:

    • Адрес: https://license.ml.dbrain.io/check/v2

    • IP: динамический

    • Порт: 443

    • Протокол: TCP

    • Запрос: POST

Конфигурационные файлы

Найдите актуальную версию контейнера на странице Dbrain на Docker Hub. В примерах ниже используется v3.5.12. Если вы используете кастомную версию коробки, она также доступна на Docker Hub. Название образа кастомной коробки нужно указать в строкеimage: dbrainbinaries/docr:v3.5.12

I. docker-compose.yml

Создайте файл docker-compose.yml в зависимости от спецификации вашего сервера.

1. Нет видеокарты / Одна видеокарта с видеопамятью от 11 до 48 Gb

Скопируйте следующие настройки:

version: "3"
services:
queue:
image: rabbitmq:3.7-management-alpine
restart: always
logging: &short_logging
driver: "json-file"
options:
max-file: "10"
max-size: "100m"
redis:
image: redis:6-alpine
restart: always
logging: *short_logging
mongo:
image: mongo:3.6-stretch
restart: always
logging:
driver: none
worker: &service
image: dbrainbinaries/docr:v3.5.12
restart: always
env_file: &env .env
command: worker
logging: *short_logging
front:
image: dbrainbinaries/docr-demo-nginx:1.3.6
volumes:
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
env_file: *env
ports:
- ${API_PORT:-8080}:80
api:
<<: *service
command: api
logging: *short_logging
classifier:
image: dbrainbinaries/classifier:v1.0.12
env_file: *env
restart: always
logging: *short_logging
multidocnet:
<<: *service
command: multidocnet
logging: *short_logging
heuristics:
<<: *service
command: heuristics
logging: *short_logging
wordnet:
<<: *service
command: wordnet
logging: *short_logging
ocr:
<<: *service
command: ocr
logging: *short_logging
fieldnet:
image: dbrainbinaries/fieldnet:v1.0.8
logging: *short_logging
fulltext:
<<: *service
command: fulltext
logging: *short_logging
face:
<<: *service
command: face
logging: *short_logging
checkbox_segm:
<<: *service
command: checkbox_segm
logging: *short_logging
table_handler:
<<: *service
command: table_handler
logging: *short_logging

2. Одна видеокарта с видеопамятью 2-10 Gb

В этом случае все сервисы Dbrain не влезут на видеокарту. Поэтому есть смысл запускать на видеокарте только самые ресурсоёмкие: multidocnet, wordnet, ocr, fieldnet.

Не забудьте проверить, какой номер имеет видеокарта в системе с помощью команды nvidia-smi. Если она отличается от 0, вам потребуется исправить цифру в строчках CUDA_VISIBLE_DEVICES: 0.

Скопируйте следующие настройки:

version: "3"
services:
queue:
image: rabbitmq:3.7-management-alpine
restart: always
logging: &short_logging
driver: "json-file"
options:
max-file: "10"
max-size: "100m"
redis:
image: redis:6-alpine
restart: always
logging: *short_logging
mongo:
image: mongo:3.6-stretch
restart: always
logging:
driver: none
worker: &service
image: dbrainbinaries/docr:v3.5.12
restart: always
env_file: &env .env
command: worker
logging: *short_logging
front:
image: dbrainbinaries/docr-demo-nginx:1.3.6
volumes:
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
env_file: *env
ports:
- ${API_PORT:-8080}:80
api:
<<: *service
command: api
logging: *short_logging
classifier:
image: dbrainbinaries/classifier:v1.0.12
env_file: *env
restart: always
logging: *short_logging
# environment:
# CUDA_VISIBLE_DEVICES: 0
# classifier_2:
# image: dbrainbinaries/classifier:v1.0.12
# env_file: *env
# restart: always
# logging: *short_logging
# environment:
# CUDA_VISIBLE_DEVICES: 1
multidocnet:
<<: *service
command: multidocnet
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
heuristics:
<<: *service
command: heuristics
logging: *short_logging
wordnet:
<<: *service
command: wordnet
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
ocr:
<<: *service
command: ocr
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
fieldnet:
image: dbrainbinaries/fieldnet:v1.0.8
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
fulltext:
<<: *service
command: fulltext
logging: *short_logging
# environment:
# CUDA_VISIBLE_DEVICES: 0
face:
<<: *service
command: face
logging: *short_logging
# environment:
# CUDA_VISIBLE_DEVICES: 0
checkbox_segm:
<<: *service
command: checkbox_segm
logging: *short_logging
# environment:
# CUDA_VISIBLE_DEVICES: 0
table_handler:
<<: *service
command: table_handler
logging: *short_logging
# environment:
# CUDA_VISIBLE_DEVICES: 0

3. На вашем сервере две видеокарты с видеопамятью от 11 до 48 Gb

В этом случае у вас есть возможность использовать дополнительные копии сервисов Dbrain для ускорения работы.

Проверьте, какие номера имеют видеокарты в системе с помощью команды nvidia-smi. Если они отличаются от 0 и 1, вам потребуется исправить цифру в строчках CUDA_VISIBLE_DEVICES:.

Скопируйте следующие настройки:

version: "3"
services:
queue:
image: rabbitmq:3.7-management-alpine
restart: always
logging: &short_logging
driver: "json-file"
options:
max-file: "10"
max-size: "100m"
redis:
image: redis:6-alpine
restart: always
logging: *short_logging
mongo:
image: mongo:3.6-stretch
restart: always
logging:
driver: none
worker: &service
image: dbrainbinaries/docr:v3.5.12
restart: always
env_file: &env .env
command: worker
logging: *short_logging
front:
image: dbrainbinaries/docr-demo-nginx:1.3.6
volumes:
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
env_file: *env
ports:
- ${API_PORT:-8080}:80
api:
<<: *service
command: api
logging: *short_logging
classifier:
image: dbrainbinaries/classifier:v1.0.12
env_file: *env
restart: always
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
classifier_2:
image: dbrainbinaries/classifier:v1.0.12
env_file: *env
restart: always
environment:
CUDA_VISIBLE_DEVICES: 1
logging: *short_logging
multidocnet:
<<: *service
command: multidocnet
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
multidocnet_2:
<<: *service
command: multidocnet
environment:
CUDA_VISIBLE_DEVICES: 1
logging: *short_logging
heuristics:
<<: *service
command: heuristics
logging: *short_logging
wordnet:
<<: *service
command: wordnet
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
wordnet_2:
<<: *service
command: wordnet
environment:
CUDA_VISIBLE_DEVICES: 1
logging: *short_logging
ocr:
<<: *service
command: ocr
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
ocr_2:
<<: *service
command: ocr
environment:
CUDA_VISIBLE_DEVICES: 1
logging: *short_logging
fieldnet:
image: dbrainbinaries/fieldnet:v1.0.8
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
fieldnet_2:
image: dbrainbinaries/fieldnet:v1.0.8
environment:
CUDA_VISIBLE_DEVICES: 1
logging: *short_logging
fulltext:
<<: *service
command: fulltext
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
fulltext_2:
<<: *service
command: fulltext
environment:
CUDA_VISIBLE_DEVICES: 1
logging: *short_logging
face:
<<: *service
command: face
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
face_2:
<<: *service
command: face
environment:
CUDA_VISIBLE_DEVICES: 1
logging: *short_logging
checkbox_segm:
<<: *service
command: checkbox_segm
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
checkbox_segm_2:
<<: *service
command: checkbox_segm
environment:
CUDA_VISIBLE_DEVICES: 1
logging: *short_logging
table_handler:
<<: *service
command: table_handler
environment:
CUDA_VISIBLE_DEVICES: 0
logging: *short_logging
table_handler_2:
<<: *service
command: table_handler
environment:
CUDA_VISIBLE_DEVICES: 1
logging: *short_logging

4. У вас иная конфигурация

Возьмите за основу конфигурацию №3. Если у вас остаётся свободная видеопамять, вы можете создать дополнительные копии ключевых сервисов multidocnet, wordnet, ocr, fieldnet по аналогии с существующими парами. Например третья копия fieldnet будет называться fieldnet_3, четвёртая fieldnet_4 и т.д. Количество видеокарт тоже не ограничено, вы можете управлять какую копию какого сервиса на какой видеокарте разместить в строке CUDA_VISIBLE_DEVICES.

II. env и nginx.conf

Создайте файл .env:

# common
VERSION=v3.5.12
# front
TRY_ENDPOINT=/try
# cuda
CUDA_VISIBLE_DEVICES=
NVIDIA_VISIBLE_DEVICES=all
NVIDIA_DRIVER_CAPABILITIES=all
# license
LICENSE=ВАШ_КЛЮЧ_ЛИЦЕНЗИИ

Параметр CUDA_VISIBLE_DEVICES указывает на видеокарту. Если оставить его пустым, Dbrain будет выполняться на центральном процессоре. Для использования видеокарты укажите её порядковый номер, например CUDA_VISIBLE_DEVICES=0. Если видеокарт несколько, перечислите их через запятую: CUDA_VISIBLE_DEVICES=0,1.

Не забудьте указать свой ключ лицензии в параметре LICENSE=

Скачайте файл nginx.conf:

Положите три файла docker-compose.yml, .env и nginx.conf в одну директорию.

Запуск Dbrain

Перейдите в директорию, содержащую три файла конфигурации. Введите в командой строке следующую команду:

docker-compose up -d --force-recreate

Всё готово! Теперь вы можете использовать локальную версию веб-демо, открыв в браузере ссылку http://localhost:8080. Вы также можете обращаться к серверу с помощью API.

Debian

Инструкция на примере Debian 10 (buster) + Nvidia Tesla T4

  1. В /etc/apt/sources.list добавляем non-free contrib репозитарии:

    1. deb http://deb.debian.org/debian buster-backports main non-free contrib

    2. deb-src http://deb.debian.org/debian buster-backports main non-free contrib

  2. apt update

  3. apt install linux-headers-$(uname -r) make gcc acpid dkms nvidia-tesla-418-driver nvidia-tesla-418-smi nvidia-cuda-toolkit

  4. systemctl reboot

Далее следуем инструкции из раздела Ubuntu.

Windows

Вы можете установить Dbrain на компьютер с ОС Windows 10. Для этого вам потребуется выполнить следующие шаги.

1. Установите Docker

  1. Скачайте установщик Docker с официального сайта. Рекомендуем использовать версию из Stable channel.

  2. Запустите установщик и следуйте инструкциям на экране. В конце установки нужно перезагрузить компьютер.

  3. После перезагрузки проверьте область уведомлений в правом нижнем углу. Если там нет иконки с китом, скорее всего у вашей учётной записи нет прав для запуска Docker. В таком случае наберите слово Docker в поиске. Кликните правой кнопкой мыши по приложению Docker Desktop и выберите «Запуск от имени администратора».

2. Установите PowerShell

  1. Скачайте установщик PowerShell из официального репозитория. Рекомендуем использовать stable версию из строки Windows (x64).

  2. Запустите установщик и следуйте инструкциям на экране.

  3. Наберите слово PowerShell в поиске. Кликните правой кнопкой мыши по приложению PowerShell и выберите «Запуск от имени администратора».

3. Проверьте, что среда подготовлена

  1. Выполните в PowerShell команду docker version

  2. Выполните команду docker run hello-world.

  3. Если вы не получили ошибок на этих двух этапах, значит всё работает хорошо.

4. Подготовьте файл конфигурации .env

Создайте на компьютере папку с любым названием, например Dbrain. Создайте файл без названия с расширением env, у вас должно получиться .env. Откройте этот файл в текстовом редакторе, например, в Блокноте, и скопируйте туда содержимое окна ниже:

# common
VERSION=v3.5.12
# cuda
CUDA_VISIBLE_DEVICES=
NVIDIA_VISIBLE_DEVICES=all
NVIDIA_DRIVER_CAPABILITIES=all
# license
LICENSE=ваш_ключ_лицензии

Замените текст «ваш_ключ_лицензии» на ваш ключ лицензии. Сохраните получившийся файл в папку Dbrain.

5. Подготовьте файлы конфигурации docker-compose.yml и nginx.conf

Скачайте файл docker-compose.yml и nginx.conf:

Положите эти файлы в папку Dbrain.

6. Выдайте Docker доступ к папке с файлами конфигурации

  1. Нажмите правой кнопкой мыши на иконку кита Docker в правом нижнем углу экрана

  2. Выберите пункт Settings в выпадающем меню

  3. Выберите раздел Resources, подпункт File Sharing

  4. Кликните иконке по синего плюса в круге и укажите путь к директории Dbrain, например C:\Dbrain

  5. Нажмите кнопку Apply & Restart

7. Запуск Dbrain

  1. Вернитесь в запущенный на шаге № 2 PowerShell

  2. Перейдите в папку Dbrain с помощью команды cd C:\Dbrain

  3. Выполните команду docker-compose up -d --force-recreateи дождитесь завершения запуска всех контейнеров

Всё готово!

Теперь вы можете использовать локальную версию веб-демо, открыв в браузере ссылку http://localhost:8080.

Вы также можете обращаться к локальной версии Dbrain с помощью API. Для этого:

  1. Положите изображение паспорта или другого типового документа в папку Dbrain.

  2. В PowerShell выполните команду curl -X POST "http://localhost:12345/recognize?doc_type=passport_main&quality=75&dpi=300&auto_pdf_raw_images=true&pdf_raw_images=true&token=ваш_ключ_лицензии" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "[email protected]:\Dbrain\Pasport_RF.jpg;type=image/jpeg"