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.3.5

I. docker-compose.yml

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

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

Скопируйте следующие настройки:
1
version: "3"
2
3
4
services:
5
redis:
6
image: redis:6-alpine
7
restart: always
8
logging: &short_logging
9
driver: "json-file"
10
options:
11
max-file: "10"
12
max-size: "100m"
13
14
mongo:
15
image: mongo:3.6-stretch
16
restart: always
17
logging:
18
driver: none
19
ports:
20
- ${MONGO_PORT:-27017}:27017
21
22
front:
23
image: registry.dbrain.io/public/docr-demo-nginx:1.5.12
24
restart: always
25
volumes:
26
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
27
env_file: &env .env
28
ports:
29
- ${API_PORT:-8080}:80
30
depends_on:
31
- api
32
33
worker: &service
34
image: registry.dbrain.io/public/worker:v3.7.3.5
35
restart: always
36
env_file: *env
37
command: ""
38
logging: *short_logging
39
depends_on:
40
- mongo
41
- redis
42
volumes:
43
- ./errlogs:/logs:rw
44
45
api:
46
<<: *service
47
image: registry.dbrain.io/public/api:v3.7.3.5
48
49
classifier:
50
<<: *service
51
image: registry.dbrain.io/public/classifier:v3.7.3.5
52
53
multidocnet:
54
<<: *service
55
image: registry.dbrain.io/public/multidocnet:v3.7.3.5
56
57
table_handler:
58
<<: *service
59
image: registry.dbrain.io/public/table-handler:v3.7.3.5
60
61
heuristics:
62
<<: *service
63
image: registry.dbrain.io/public/heuristics:v3.7.3.5
64
65
wordnet:
66
<<: *service
67
image: registry.dbrain.io/public/wordnet:v3.7.3.5
68
69
ocr:
70
<<: *service
71
image: registry.dbrain.io/public/ocr:v3.7.3.5
72
73
fieldnet:
74
<<: *service
75
image: registry.dbrain.io/public/fieldnet:v3.7.3.5
76
77
checkbox_segm:
78
<<: *service
79
image: registry.dbrain.io/public/checkbox-segm:v3.7.3.5
80
81
face:
82
<<: *service
83
image: registry.dbrain.io/public/face:v3.7.3.5
84
tmpfs:
85
- /tmp/tmpfs
Copied!

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 видеокарте.
1
version: "3"
2
3
4
services:
5
redis:
6
image: redis:6-alpine
7
restart: always
8
logging: &short_logging
9
driver: "json-file"
10
options:
11
max-file: "10"
12
max-size: "100m"
13
14
mongo:
15
image: mongo:3.6-stretch
16
restart: always
17
logging:
18
driver: none
19
ports:
20
- ${MONGO_PORT:-27017}:27017
21
22
front:
23
image: registry.dbrain.io/public/docr-demo-nginx:1.5.12
24
restart: always
25
volumes:
26
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
27
env_file: &env .env
28
ports:
29
- ${API_PORT:-8080}:80
30
depends_on:
31
- api
32
33
worker: &service
34
image: registry.dbrain.io/public/worker:v3.7.3.5
35
restart: always
36
env_file: *env
37
command: ""
38
logging: *short_logging
39
depends_on:
40
- mongo
41
- redis
42
volumes:
43
- ./errlogs:/logs:rw
44
45
api:
46
<<: *service
47
image: registry.dbrain.io/public/api:v3.7.3.5
48
49
classifier:
50
<<: *service
51
image: registry.dbrain.io/public/classifier:v3.7.3.5
52
53
multidocnet: &service-gpu
54
<<: *service
55
image: registry.dbrain.io/public/multidocnet:v3.7.3.5
56
environment:
57
CUDA_VISIBLE_DEVICES: 0
58
59
table_handler:
60
<<: *service
61
image: registry.dbrain.io/public/table-handler:v3.7.3.5
62
63
heuristics:
64
<<: *service
65
image: registry.dbrain.io/public/heuristics:v3.7.3.5
66
67
wordnet:
68
<<: *service
69
image: registry.dbrain.io/public/wordnet:v3.7.3.5
70
71
ocr:
72
<<: *service-gpu
73
image: registry.dbrain.io/public/ocr:v3.7.3.5
74
75
fieldnet:
76
<<: *service-gpu
77
image: registry.dbrain.io/public/fieldnet:v3.7.3.5
78
79
checkbox_segm:
80
<<: *service
81
image: registry.dbrain.io/public/checkbox-segm:v3.7.3.5
82
83
face:
84
<<: *service
85
image: registry.dbrain.io/public/face:v3.7.3.5
86
tmpfs:
87
- /tmp/tmpfs
Copied!

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:
1
version: "3"
2
3
4
services:
5
redis:
6
image: redis:6-alpine
7
restart: always
8
logging: &short_logging
9
driver: "json-file"
10
options:
11
max-file: "10"
12
max-size: "100m"
13
14
mongo:
15
image: mongo:3.6-stretch
16
restart: always
17
logging:
18
driver: none
19
ports:
20
- ${MONGO_PORT:-27017}:27017
21
22
front:
23
image: registry.dbrain.io/public/docr-demo-nginx:1.5.12
24
restart: always
25
volumes:
26
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
27
env_file: &env .env
28
ports:
29
- ${API_PORT:-8080}:80
30
depends_on:
31
- api
32
33
worker: &service
34
image: registry.dbrain.io/public/worker:v3.7.3.5
35
restart: always
36
env_file: *env
37
command: ""
38
logging: *short_logging
39
depends_on:
40
- mongo
41
- redis
42
volumes:
43
- ./errlogs:/logs:rw
44
45
api:
46
<<: *service
47
image: registry.dbrain.io/public/api:v3.7.3.5
48
49
classifier: &service-gpu0
50
<<: *service
51
image: registry.dbrain.io/public/classifier:v3.7.3.5
52
environment:
53
CUDA_VISIBLE_DEVICES: 0
54
55
multidocnet:
56
<<: *service-gpu0
57
image: registry.dbrain.io/public/multidocnet:v3.7.3.5
58
59
table_handler:
60
<<: *service-gpu0
61
image: registry.dbrain.io/public/table-handler:v3.7.3.5
62
63
heuristics:
64
<<: *service
65
image: registry.dbrain.io/public/heuristics:v3.7.3.5
66
67
wordnet: &service-gpu1
68
<<: *service
69
image: registry.dbrain.io/public/wordnet:v3.7.3.5
70
environment:
71
CUDA_VISIBLE_DEVICES: 1
72
73
ocr:
74
<<: *service-gpu1
75
image: registry.dbrain.io/public/ocr:v3.7.3.5
76
77
fieldnet:
78
<<: *service-gpu1
79
image: registry.dbrain.io/public/fieldnet:v3.7.3.5
80
81
checkbox_segm:
82
<<: *service-gpu0
83
image: registry.dbrain.io/public/checkbox-segm:v3.7.3.5
84
85
face:
86
<<: *service
87
image: registry.dbrain.io/public/face:v3.7.3.5
88
tmpfs:
89
- /tmp/tmpfs
Copied!

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:
1
# common
2
VERSION=v3.7.3.5
3
4
# front
5
TRY_ENDPOINT=/try
6
7
LOGS_PATH=
8
SERVICE_LOGS_PATH=/logs/srvlog.txt
9
10
# cuda
11
CUDA_VISIBLE_DEVICES=
12
NVIDIA_VISIBLE_DEVICES=all
13
NVIDIA_DRIVER_CAPABILITIES=all
14
15
DEFAULT_NORMALIZATION_FIAS=False
16
WORKER_POOL_SIZE=32
17
API_ENDPOINT=
18
19
# Legacy - не работает, но необходимо для запуска
20
DADATA_TOKEN=
21
DADATA_SECRET=
22
23
AUTOCODE_REPORT=
24
AUTOCODE_TOKEN=
25
26
QUEUE_URL="redis://redis"
27
REDIS_HOST="redis"
28
REDIS_PASSWORD=""
29
REDIS_PORT="6379"
30
REDIS_USER=""
31
Copied!
Параметр CUDA_VISIBLE_DEVICES указывает на видеокарту. Если оставить его пустым, Dbrain будет выполняться на центральном процессоре. Для использования видеокарты укажите её порядковый номер, например CUDA_VISIBLE_DEVICES=0.
Скачайте файл nginx.conf:
nginx.conf
1KB
Binary
Положите три файла docker-compose.yml, .env и nginx.conf в одну директорию.

Запуск Dbrain

Перейдите в директорию, содержащую три файла конфигурации. Введите в командой строке следующую команду:
1
docker-compose up -d --force-recreate
Copied!
При необходимости добавьте параметры масштабирования сервисов (--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. Откройте этот файл в текстовом редакторе, например, в Блокноте, и скопируйте туда содержимое окна ниже:
1
VERSION=v3.6.8
2
3
# front
4
TRY_ENDPOINT=/try
5
6
# cuda
7
CUDA_VISIBLE_DEVICES=
8
NVIDIA_VISIBLE_DEVICES=all
9
NVIDIA_DRIVER_CAPABILITIES=all
10
11
# Legacy
12
DADATA_TOKEN=
13
DADATA_SECRET=
14
15
AUTOCODE_REPORT=
16
AUTOCODE_TOKEN=
Copied!
Замените текст «ваш_ключ_лицензии» на ваш ключ лицензии. Сохраните получившийся файл в папку 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"