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

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

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

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

  • Процессор: 6 ядер, 4,1 GHz, расширение AVX 2; ориентир: Intel Core i5-10600KF
  • Оперативная память: 32 Gb
  • Накопитель: 500 Gb SSD

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

  • Видеокарта: Nvidia Tesla T4
  • Процессор: 8 ядер, 3,9 GHz, расширение AVX 2; ориентир: Intel Xeon W-2245
  • Оперативная память: 64 Gb
  • Накопитель: 1 Tb NVMe

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

  • Видеокарта: Nvidia Tesla T4 х2
  • Процессор: 8 ядер, 3,9 GHz, расширение AVX 2; ориентир: Intel Xeon W-2245 x2
  • Оперативная память: 128 Gb
  • Накопитель: 1 Tb NVMe x2
Выше перечислены аппаратные требования для продуктивной эксплуатации. 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

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

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

I. docker-compose.yml

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

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

Скопируйте следующие настройки:
1
version: "3"
2
3
services:
4
5
queue:
6
image: rabbitmq:3.7-management-alpine
7
restart: always
8
logging: &short_logging
9
driver: "json-file"
10
options:
11
max-file: "10"
12
max-size: "100m"
13
14
redis:
15
image: redis:6-alpine
16
restart: always
17
logging: *short_logging
18
19
mongo:
20
image: mongo:3.6-stretch
21
restart: always
22
logging:
23
driver: none
24
25
worker: &service
26
image: dbrainbinaries/docr-worker:v3.6.10
27
restart: always
28
env_file: &env .env
29
command: ""
30
depends_on:
31
- queue
32
- mongo
33
- redis
34
logging: *short_logging
35
volumes:
36
- ./errlogs:/logs:rw
37
38
front:
39
image: dbrainbinaries/docr-demo-nginx:1.5.2
40
volumes:
41
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
42
env_file: *env
43
ports:
44
- ${API_PORT:-8080}:80
45
depends_on:
46
- api
47
48
api:
49
<<: *service
50
image: dbrainbinaries/docr-api:v3.6.10
51
52
classifier:
53
<<: *service
54
image: dbrainbinaries/docr-classifier:v3.6.10
55
56
multidocnet:
57
<<: *service
58
image: dbrainbinaries/docr-multidocnet:v3.6.10
59
60
heuristics:
61
<<: *service
62
image: dbrainbinaries/docr-heuristics:v3.6.10
63
64
wordnet:
65
<<: *service
66
image: dbrainbinaries/docr-wordnet:v3.6.10
67
68
ocr:
69
<<: *service
70
image: dbrainbinaries/docr-ocr:v3.6.10
71
72
fieldnet:
73
<<: *service
74
image: dbrainbinaries/docr-fieldnet:v3.6.10
75
76
checkbox_segm:
77
<<: *service
78
image: dbrainbinaries/docr-checkbox-segm:v3.6.10
79
80
table_handler:
81
<<: *service
82
image: dbrainbinaries/docr-table-handler:v3.6.10
83
84
face:
85
<<: *service
86
image: dbrainbinaries/docr-face:v3.6.10
87
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
services:
4
5
queue:
6
image: rabbitmq:3.7-management-alpine
7
restart: always
8
logging: &short_logging
9
driver: "json-file"
10
options:
11
max-file: "10"
12
max-size: "100m"
13
14
redis:
15
image: redis:6-alpine
16
restart: always
17
logging: *short_logging
18
19
mongo:
20
image: mongo:3.6-stretch
21
restart: always
22
logging:
23
driver: none
24
25
worker: &service
26
image: dbrainbinaries/docr-worker:v3.6.10
27
restart: always
28
env_file: &env .env
29
command: ""
30
depends_on:
31
- queue
32
- mongo
33
- redis
34
logging: *short_logging
35
volumes:
36
- ./errlogs:/logs:rw
37
38
front:
39
image: dbrainbinaries/docr-demo-nginx:1.5.2
40
volumes:
41
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
42
env_file: *env
43
ports:
44
- ${API_PORT:-8080}:80
45
depends_on:
46
- api
47
48
api:
49
<<: *service
50
image: dbrainbinaries/docr-api:v3.6.10
51
52
classifier:
53
<<: *service
54
image: dbrainbinaries/docr-classifier:v3.6.10
55
56
multidocnet: &service-gpu
57
<<: *service
58
image: dbrainbinaries/docr-multidocnet:v3.6.10
59
environment:
60
CUDA_VISIBLE_DEVICES: 0
61
62
heuristics:
63
<<: *service
64
image: dbrainbinaries/docr-heuristics:v3.6.10
65
66
wordnet:
67
<<: *service
68
image: dbrainbinaries/docr-wordnet:v3.6.10
69
70
ocr:
71
<<: *service-gpu
72
image: dbrainbinaries/docr-ocr:v3.6.10
73
74
fieldnet:
75
<<: *service-gpu
76
image: dbrainbinaries/docr-fieldnet:v3.6.10
77
78
checkbox_segm:
79
<<: *service
80
image: dbrainbinaries/docr-checkbox-segm:v3.6.10
81
82
table_handler:
83
<<: *service
84
image: dbrainbinaries/docr-table-handler:v3.6.10
85
86
face:
87
<<: *service
88
image: dbrainbinaries/docr-face:v3.6.10
89
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
services:
4
5
queue:
6
image: rabbitmq:3.7-management-alpine
7
restart: always
8
logging: &short_logging
9
driver: "json-file"
10
options:
11
max-file: "10"
12
max-size: "100m"
13
14
redis:
15
image: redis:6-alpine
16
restart: always
17
logging: *short_logging
18
19
mongo:
20
image: mongo:3.6-stretch
21
restart: always
22
logging:
23
driver: none
24
25
worker: &service
26
image: dbrainbinaries/docr-worker:v3.6.10
27
restart: always
28
env_file: &env .env
29
command: ""
30
depends_on:
31
- queue
32
- mongo
33
- redis
34
logging: *short_logging
35
volumes:
36
- ./errlogs:/logs:rw
37
38
front:
39
image: dbrainbinaries/docr-demo-nginx:1.5.2
40
volumes:
41
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
42
env_file: *env
43
ports:
44
- ${API_PORT:-8080}:80
45
depends_on:
46
- api
47
48
api:
49
<<: *service
50
image: dbrainbinaries/docr-api:v3.6.10
51
52
classifier: &service-gpu0
53
<<: *service
54
image: dbrainbinaries/docr-classifier:v3.6.10
55
environment:
56
CUDA_VISIBLE_DEVICES: 0
57
58
multidocnet:
59
<<: *service-gpu0
60
image: dbrainbinaries/docr-multidocnet:v3.6.10
61
62
heuristics:
63
<<: *service
64
image: dbrainbinaries/docr-heuristics:v3.6.10
65
66
wordnet: &service-gpu1
67
<<: *service
68
image: dbrainbinaries/docr-wordnet:v3.6.10
69
environment:
70
CUDA_VISIBLE_DEVICES: 1
71
72
ocr:
73
<<: *service-gpu1
74
image: dbrainbinaries/docr-ocr:v3.6.10
75
76
fieldnet:
77
<<: *service-gpu1
78
image: dbrainbinaries/docr-fieldnet:v3.6.10
79
80
checkbox_segm:
81
<<: *service-gpu0
82
image: dbrainbinaries/docr-checkbox-segm:v3.6.10
83
84
table_handler:
85
<<: *service-gpu0
86
image: dbrainbinaries/docr-table-handler:v3.6.10
87
88
face:
89
<<: *service
90
image: dbrainbinaries/docr-face:v3.6.10
91
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
VERSION=v3.6.10
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
DEFAULT_NORMALIZATION_FIAS=False
12
13
# Legacy - не работает, но необходимо для запуска
14
DADATA_TOKEN=
15
DADATA_SECRET=
16
17
AUTOCODE_REPORT=
18
AUTOCODE_TOKEN=
19
Copied!
Параметр CUDA_VISIBLE_DEVICES указывает на видеокарту. Если оставить его пустым, Dbrain будет выполняться на центральном процессоре. Для использования видеокарты укажите её порядковый номер, например CUDA_VISIBLE_DEVICES=0.
Скачайте файл nginx.conf:
nginx.conf
725B
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"
Last modified 3mo ago