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

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

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

Оценки скорости распознавания даны на примере изображения главного разворота Паспорта РФ в формате JPEG

1. Минимальный

  • Обработка одного документа: 5 секунд
  • Обработка комплекта из 100 документов: 8 минут
  • Процессор: 6 ядер, 4.1-4.8 GHz, расширение AVX 2; ориентир: Intel Core i5-10600KF
  • Оперативная память: 32 Gb
  • Накопитель: 500 Gb SSD

2. Стандартный

  • Обработка одного документа: 3 секунды
  • Обработка комплекта из 100 документов: 90 секунд
  • Видеокарта: Nvidia RTX A4000 16 Gb
  • Процессор: 16 ядер, 3.2-3.9 GHz, расширение AVX 2; ориентир: AMD EPYC 7343
  • Оперативная память: 64 Gb
  • Накопитель: 512 Gb SSD

3. Корпоративный

  • Обработка одного документа: 3 секунды
  • Обработка комплекта из 100 документов: 60 секунд
Балансировщик (2 сервера):
  • Процессор: 2 ядра
  • Оперативная память: 2 Gb
База данных (MongoDB, 2 сервера):
  • Процессор: 8 ядер
  • Оперативная память: 64 Gb
  • Накопитель: 512 Gb NVMe (допустимо использование SSD)
Сервисы (2 сервера):
  • Видеокарта (x3): Nvidia RTX A5000 24 Gb
  • Процессор (x2): 24 ядра, 3.2-4.0 GHz, расширение AVX 2; ориентир: AMD EPYC 74F3
  • Оперативная память: 256 Gb
  • Накопитель: 512 Gb SSD
Выше перечислены аппаратные требования для продуктивной эксплуатации. Dbrain запускается и на слабых конфигурациях, например на ноутбуке Core i5-8250U 1.6 GHz / 8 Gb ОЗУ / 250 Gb SSD. Тем не менее, работоспособность на таких слабых конфигурациях не гарантируется.
Ubuntu
Debian
Windows

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

  1. 1.
    Операционная система Ubuntu версии 18.04+
  2. 2.
    Система менеджмента контейнеров Docker
  3. 3.
    docker-compose
  4. 4.
    Для использования мощностей видеокарт нужны:
    1. 1.
      nvidia-docker
    2. 2.
      Драйвера Nvidia последней доступной версии
    3. 3.
      CUDA версии не ниже 11.1
  5. 5.
    Доступ в интернет для проверки лицензии:
    • Адрес: https://license.ml.dbrain.io/check/v2
    • IP: динамический
    • Порт: 443
    • Протокол: TCP
    • Запрос: POST

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

Если вы устанавливаете кастомный образ, его название нужно указать в параметре image соответствующего сервиса, например: registry.dbrain.io/custom/worker:v3.7.5.1

I. docker-compose.yml

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

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

Скопируйте следующие настройки:
version: "3"
services:
redis:
image: redis:6-alpine
restart: always
logging: &short_logging
driver: "json-file"
options:
max-file: "10"
max-size: "100m"
mongo:
image: mongo:3.6-stretch
restart: always
logging:
driver: none
ports:
- ${MONGO_PORT:-27017}:27017
front:
image: registry.dbrain.io/public/docr-demo-nginx:1.6.6
restart: always
volumes:
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
env_file: &env .env
ports:
- ${API_PORT:-8080}:80
depends_on:
- api
worker: &service
image: registry.dbrain.io/public/worker:v3.7.5.1
restart: always
env_file: *env
command: ""
logging: *short_logging
depends_on:
- mongo
- redis
volumes:
- ./errlogs:/logs:rw
api:
<<: *service
image: registry.dbrain.io/public/api:v3.7.5.1
classifier:
<<: *service
image: registry.dbrain.io/public/classifier:v3.7.5.1
multidocnet:
<<: *service
image: registry.dbrain.io/public/multidocnet:v3.7.5.1
table_handler:
<<: *service
image: registry.dbrain.io/public/table-handler:v3.7.5.1
heuristics:
<<: *service
image: registry.dbrain.io/public/heuristics:v3.7.5.1
wordnet:
<<: *service
image: registry.dbrain.io/public/wordnet:v3.7.5.1
ocr:
<<: *service
image: registry.dbrain.io/public/ocr:v3.7.5.1
fieldnet:
<<: *service
image: registry.dbrain.io/public/fieldnet:v3.7.5.1
checkbox_segm:
<<: *service
image: registry.dbrain.io/public/checkbox-segm:v3.7.5.1
face:
<<: *service
image: registry.dbrain.io/public/face:v3.7.5.1
tmpfs:
- /tmp/tmpfs

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

В этом случае все сервисы Dbrain не влезут на видеокарту. Поэтому есть смысл запускать на видеокарте только самые ресурсоёмкие. В порядке приоритета: multidocnet, fieldnet, ocr, wordnet, classifier, table_handler, checkbox_segm.
Например, если ваша видеопамять всего 2гб, поместите на видеокарту только сервис multidocnet. Имеются исключения: если в вашем кейсе отсутствует классификация, вам не нужен multidocnet. Классификацию включают в себя эндпоинт /classify и эндпоинт /recognize в режиме mode=default.
Не забудьте проверить, какой номер имеет видеокарта в системе с помощью команды nvidia-smi. Если она отличается от 0, вам потребуется исправить цифру в строчках CUDA_VISIBLE_DEVICES: 0.
Следующее содержание файла docker-compose.yml соответствует режиму, когда на видеокарту с номером 0 отправлены три сервиса: multidocnet, fieldnet и ocr. Это позволит запустить сервис на 12 Gb видеокарте.
version: "3"
services:
redis:
image: redis:6-alpine
restart: always
logging: &short_logging
driver: "json-file"
options:
max-file: "10"
max-size: "100m"
mongo:
image: mongo:3.6-stretch
restart: always
logging:
driver: none
ports:
- ${MONGO_PORT:-27017}:27017
front:
image: registry.dbrain.io/public/docr-demo-nginx:1.6.6
restart: always
volumes:
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
env_file: &env .env
ports:
- ${API_PORT:-8080}:80
depends_on:
- api
worker: &service
image: registry.dbrain.io/public/worker:v3.7.5.1
restart: always
env_file: *env
command: ""
logging: *short_logging
depends_on:
- mongo
- redis
volumes:
- ./errlogs:/logs:rw
api:
<<: *service
image: registry.dbrain.io/public/api:v3.7.5.1
classifier:
<<: *service
image: registry.dbrain.io/public/classifier:v3.7.5.1
multidocnet: &service-gpu
<<: *service
image: registry.dbrain.io/public/multidocnet:v3.7.5.1
environment:
CUDA_VISIBLE_DEVICES: 0
table_handler:
<<: *service
image: registry.dbrain.io/public/table-handler:v3.7.5.1
heuristics:
<<: *service
image: registry.dbrain.io/public/heuristics:v3.7.5.1
wordnet:
<<: *service
image: registry.dbrain.io/public/wordnet:v3.7.5.1
ocr:
<<: *service-gpu
image: registry.dbrain.io/public/ocr:v3.7.5.1
fieldnet:
<<: *service-gpu
image: registry.dbrain.io/public/fieldnet:v3.7.5.1
checkbox_segm:
<<: *service
image: registry.dbrain.io/public/checkbox-segm:v3.7.5.1
face:
<<: *service
image: registry.dbrain.io/public/face:v3.7.5.1
tmpfs:
- /tmp/tmpfs

3. На вашем сервере две и более видеокарты (с произвольными объёмами видеопамяти, суммарно более 20 Гб)

В этом случае у вас есть возможность использовать дополнительные копии сервисов Dbrain для ускорения работы, а также раскидать разные сервисы по разным видеокартам.
Проверьте, какие номера имеют видеокарты в системе с помощью команды nvidia-smi. Соответствующие номера нужно проставлять в переменнуюCUDA_VISIBLE_DEVICES. Обратите внимание, что комфортная работа сервисов classifier, checkbox_segm и table_handler требует минимум 2 Гб видеопамяти на копию сервиса, multidocnet, fieldnet и wordnet — по 3 Гб видеопамяти, а сервис ocr в интенсивном режиме использования требует 5-6 Гб видеопамяти (хотя на старте может занимать 2 Гб). Учтите это — переполнение видеопамяти может привести к неработоспособности сервиса.
Например, следующий пример файла docker-compose.yml позволяет запустить по одной копии сервисов и распределить их на две видеокарты по 12 Гб с номерами 0 и 1. Чтобы применить данную конфигурацию as-is, убедитесь, что nvidia-smi выдаёт вам такие же номера видеокарт 0 и 1:
version: "3"
services:
redis:
image: redis:6-alpine
restart: always
logging: &short_logging
driver: "json-file"
options:
max-file: "10"
max-size: "100m"
mongo:
image: mongo:3.6-stretch
restart: always
logging:
driver: none
ports:
- ${MONGO_PORT:-27017}:27017
front:
image: registry.dbrain.io/public/docr-demo-nginx:1.6.6
restart: always
volumes:
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
env_file: &env .env
ports:
- ${API_PORT:-8080}:80
depends_on:
- api
worker: &service
image: registry.dbrain.io/public/worker:v3.7.5.1
restart: always
env_file: *env
command: ""
logging: *short_logging
depends_on:
- mongo
- redis
volumes:
- ./errlogs:/logs:rw
api:
<<: *service
image: registry.dbrain.io/public/api:v3.7.5.1
classifier: &service-gpu0
<<: *service
image: registry.dbrain.io/public/classifier:v3.7.5.1
environment:
CUDA_VISIBLE_DEVICES: 0
multidocnet:
<<: *service-gpu0
image: registry.dbrain.io/public/multidocnet:v3.7.5.1
table_handler:
<<: *service-gpu0
image: registry.dbrain.io/public/table-handler:v3.7.5.1
heuristics:
<<: *service
image: registry.dbrain.io/public/heuristics:v3.7.5.1
wordnet: &service-gpu1
<<: *service
image: registry.dbrain.io/public/wordnet:v3.7.5.1
environment:
CUDA_VISIBLE_DEVICES: 1
ocr:
<<: *service-gpu1
image: registry.dbrain.io/public/ocr:v3.7.5.1
fieldnet:
<<: *service-gpu1
image: registry.dbrain.io/public/fieldnet:v3.7.5.1
checkbox_segm:
<<: *service-gpu0
image: registry.dbrain.io/public/checkbox-segm:v3.7.5.1
face:
<<: *service
image: registry.dbrain.io/public/face:v3.7.5.1
tmpfs:
- /tmp/tmpfs

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

Возьмите за основу конфигурацию №3. Раскидайте сервисы по разным видеокартам с помощью переменной CUDA_VISIBLE_DEVICES. При запуске используйте параметр scale в команде docker-compose up для соответствующих сервисов, чтобы оптимально занять видеопамять. Например, если вы хотите полностью занять видеокарту 0 сервисом classifier, а видеокарту 1 сервисом multidocnet, в соответствующем месте docker-compose.yml исправьте переменные CUDA_VISIBLE_DEVICES, а при запуске используйте команду docker-compose up -d --scale multidocnet=3 --scale classifier=4. Об использовании команды docker-compose смотрите ниже.

II. env и nginx.conf

Создайте файл .env:
# common
VERSION=v3.7.5.1
# front
TRY_ENDPOINT=/try
LOGS_PATH=
SERVICE_LOGS_PATH=/logs/srvlog.txt
# cuda
CUDA_VISIBLE_DEVICES=
NVIDIA_VISIBLE_DEVICES=all
NVIDIA_DRIVER_CAPABILITIES=all
DEFAULT_NORMALIZATION_FIAS=False
WORKER_POOL_SIZE=32
API_ENDPOINT=
# Legacy - не работает, но необходимо для запуска
DADATA_TOKEN=
DADATA_SECRET=
AUTOCODE_REPORT=
AUTOCODE_TOKEN=
REDIS_HOST="redis"
REDIS_PASSWORD=""
REDIS_PORT="6379"
REDIS_USER=""
Параметр CUDA_VISIBLE_DEVICES указывает на видеокарту. Если оставить его пустым, Dbrain будет выполняться на центральном процессоре. Для использования видеокарты укажите её порядковый номер, например CUDA_VISIBLE_DEVICES=0.
Скачайте файл nginx.conf:
nginx.conf
1KB
Binary
Положите три файла docker-compose.yml, .env и nginx.conf в одну директорию.

Запуск Dbrain

Перейдите в директорию, содержащую три файла конфигурации. Введите в командой строке следующую команду:
docker-compose up -d --force-recreate
При необходимости добавьте параметры масштабирования сервисов (--scale, смотрите выше). Обратите внимание, что можно масштабировать как сервисы, работающие на CPU, так и сервисы, работающие на GPU.
Всё готово! Теперь вы можете использовать локальную версию веб-демо, открыв в браузере ссылку http://localhost:8080. Вы также можете обращаться к серверу с помощью API.

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

  1. 1.
    В /etc/apt/sources.list добавляем non-free contrib репозитарии:
    1. 1.
      deb http://deb.debian.org/debian buster-backports main non-free contrib
    2. 2.
      deb-src http://deb.debian.org/debian buster-backports main non-free contrib
  2. 2.
    apt update
  3. 3.
    apt install linux-headers-$(uname -r) make gcc acpid dkms nvidia-tesla-418-driver nvidia-tesla-418-smi nvidia-cuda-toolkit
  4. 4.
    systemctl reboot
Далее следуем инструкции из раздела Ubuntu.
Вы можете установить Dbrain на компьютер с ОС Windows 10, но при этом вам доступна только CPU версия сервис. Для этого вам потребуется выполнить следующие шаги.

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

  1. 1.
    Скачайте установщик Docker с официального сайта. Рекомендуем использовать версию из Stable channel.
  2. 2.
    Запустите установщик и следуйте инструкциям на экране. В конце установки нужно перезагрузить компьютер.
  3. 3.
    После перезагрузки проверьте область уведомлений в правом нижнем углу. Если там нет иконки с китом, скорее всего у вашей учётной записи нет прав для запуска Docker. В таком случае наберите слово Docker в поиске. Кликните правой кнопкой мыши по приложению Docker Desktop и выберите «Запуск от имени администратора».
2. Установите PowerShell
  1. 1.
    Скачайте установщик PowerShell из официального репозитория. Рекомендуем использовать stable версию из строки Windows (x64).
  2. 2.
    Запустите установщик и следуйте инструкциям на экране.
  3. 3.
    Наберите слово PowerShell в поиске. Кликните правой кнопкой мыши по приложению PowerShell и выберите «Запуск от имени администратора».

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

  1. 1.
    Выполните в PowerShell команду docker version
  2. 2.
    Выполните команду docker run hello-world.
  3. 3.
    Если вы не получили ошибок на этих двух этапах, значит всё работает хорошо.

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

Создайте на компьютере папку с любым названием, например Dbrain. Создайте файл без названия с расширением env, у вас должно получиться .env. Откройте этот файл в текстовом редакторе, например, в Блокноте, и скопируйте туда содержимое окна ниже:
VERSION=v3.6.8
# front
TRY_ENDPOINT=/try
# cuda
CUDA_VISIBLE_DEVICES=
NVIDIA_VISIBLE_DEVICES=all
NVIDIA_DRIVER_CAPABILITIES=all
# Legacy
DADATA_TOKEN=
DADATA_SECRET=
AUTOCODE_REPORT=
AUTOCODE_TOKEN=
Замените текст «ваш_ключ_лицензии» на ваш ключ лицензии. Сохраните получившийся файл в папку Dbrain.

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

Скачайте файл docker-compose.yml и nginx.conf:
docker-compose.yml
2KB
Code
nginx.conf
725B
Binary
Положите эти файлы в папку Dbrain.

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

  1. 1.
    Нажмите правой кнопкой мыши на иконку кита Docker в правом нижнем углу экрана
  2. 2.
    Выберите пункт Settings в выпадающем меню
  3. 3.
    Выберите раздел Resources, подпункт File Sharing
  4. 4.
    Кликните иконке по синего плюса в круге и укажите путь к директории Dbrain, например C:\Dbrain
  5. 5.
    Нажмите кнопку Apply & Restart

7. Запуск Dbrain

  1. 1.
    Вернитесь в запущенный на шаге № 2 PowerShell
  2. 2.
    Перейдите в папку Dbrain с помощью команды cd C:\Dbrain
  3. 3.
    Выполните команду docker-compose up -d --force-recreateи дождитесь завершения запуска всех контейнеров

Всё готово!

Теперь вы можете использовать локальную версию веб-демо, открыв в браузере ссылку http://localhost:8080.
Вы также можете обращаться к локальной версии Dbrain с помощью API. Для этого:
  1. 1.
    Положите изображение паспорта или другого типового документа в папку Dbrain.
  2. 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"
Copy link
On this page
Требования к аппаратной части