Использование нескольких видеокарт

Если на физическом сервере установлено несколько видеокарт, вы можете создать дополнительные экземпляры findface-extract-api-gpu или findface-video-worker-gpu и распределить их по одному экземпляру на карту.

В этом разделе:

Распределение экземпляров findface-extraction-api-gpu по видеокартам

Для распределения экземпляров findface-extraction-api-gpu по нескольким видеокартам выполните следующие действия:

  1. Остановите исходный сервис findface-extraction-api-gpu.

    sudo service findface-extraction-api stop
    
  2. Создайте несколько копий файла конфигурации /etc/findface-extraction-api.ini, в зависимости от того, какое количество видеокарт будет использоваться для извлечения биометрических образцов. Добавьте соответствующие номера устройств GPU к именам новых файлов конфигурации, как показано в примере ниже (устройства GPU №0 и №6).

    /etc/findface-extraction-api@0.ini
    /etc/findface-extraction-api@6.ini
    
  3. Откройте новые файлы конфигурации. Укажите номера устройств GPU, а также номера слушающих портов.

    sudo vi /etc/findface-extraction-api@0.ini
    
    listen: 127.0.0.1:18666
    ...
    
    gpu_device: 0
    ...
    
    sudo vi /etc/findface-extraction-api@6.ini
    
    listen: 127.0.0.1:18667
    ...
    
    gpu_device: 6
    ...
    
  4. Запустите новые сервисы.

    sudo service findface-extraction-api@0 start
    sudo service findface-extraction-api@6 start
    

Привязка findface-video-worker-gpu к дополнительной видеокарте

Для создания дополнительного экземпляра findface-video-worker-gpu и его привязки к свободной видеокарте выполните следующие действия:

  1. Отобразите статус исходного сервиса findface-video-worker-gpu, выполнив команду:

    sudo systemctl status findface-video-worker-gpu.service
    
  2. Найдите полный путь к сервису в следующей строке:

    Loaded: loaded (/usr/lib/systemd/system/findface-video-worker-gpu.service); enabled; vendor preset: enabled
    

    В приведенном примере это findface-video-worker-gpu.service (имя может быть другим). Создайте копию сервиса под новым именем.

    sudo cp /usr/lib/systemd/system/findface-video-worker-gpu.service /usr/lib/systemd/system/findface-video-worker-gpu2.service`
    
  3. Таким же образом создайте под новым именем копию исходного файла конфигурации.

    sudo cp /etc/findface-video-worker-gpu.ini /etc/findface-video-worker-gpu2.ini
    
  4. Откройте только что созданный файл конфигурации и актуализируйте номер используемого GPU-устройства. Измените номер порта в секции streamer по следующей формуле: 18999 (номер порта для GPU 0) - номер GPU-устройства, т. е. для GPU 1, port = 18998, для GPU 2, port = 18997 и т. д.

    sudo vi /etc/findface-video-worker-gpu2.ini
    
    ## cuda device number
    device_number = 1
    
    ...
    
    #------------------------------
    [streamer]
    #------------------------------
    ## streamer/shots webserver port, 0=disabled
    ## type:number env:CFG_STREAMER_PORT longopt:--streamer-port
    port = 18999
    ...
    
  5. Откройте новый сервис и укажите только что созданный файл конфигурации.

    sudo vi /usr/lib/systemd/system/findface-video-worker-gpu2.service
    
    ExecStart=/usr/bin/findface-video-worker-gpu --config /etc/findface-video-worker-gpu2.ini
    
  6. Для применения изменений перезагрузите демон systemd.

    sudo systemctl daemon-reload
    
  7. Добавьте новый сервис в автозагрузку.

    sudo systemctl enable findface-video-worker-gpu2.service
    
    Created symlink from /etc/systemd/system/multi-user.target.wants/findface-video-worker-gpu2.service to /usr/lib/systemd/system/findface-video-worker-gpu2.service
    
  8. Запустите новый сервис.

    sudo systemctl start findface-video-worker-gpu2.service
    
  9. Проверьте статус обоих сервисов findface-video-worker-gpu.

    sudo systemctl status findface-video-worker-* | grep -i 'Active:' -B 3
    
    ● findface-video-worker-gpu2.service - findface-video-worker-gpu daemon
      Loaded: loaded (/usr/lib/systemd/system/findface-video-worker-gpu2.service; enabled; vendor preset: enabled)
      Active: active (running) since Thu 2019-07-18 10:32:02 MSK; 1min 11s ago
    
    ...
    
    ● findface-video-worker-gpu.service - findface-video-worker-gpu daemon
      Loaded: loaded (/usr/lib/systemd/system/findface-video-worker-gpu.service; enabled; vendor preset: enabled)
      Active: active (running) since Mon 2019-07-15 15:18:33 MSK; 2 days ago