Действия

UPS. Руководство администратора: различия между версиями

Материал из Флора AI

Нет описания правки
Строка 12: Строка 12:




===== '''Установка/обновление сервиса''' =====
===== '''Установка/обновление UPS''' =====
[https://cloud.connect2ai.net/index.php/apps/files/?dir=/ups&fileid=482 Дистрибутив] распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.
[https://cloud.connect2ai.net/index.php/apps/files/?dir=/ups&fileid=482 Дистрибутив] распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.


Строка 21: Строка 21:
Загрузить последнюю версию пакета  <code>curl -s '<nowiki>https://cloud.connect2ai.net/ups/'</nowiki> --user 'user_nexcloud:pass_nexcloud' | bash</code>
Загрузить последнюю версию пакета  <code>curl -s '<nowiki>https://cloud.connect2ai.net/ups/'</nowiki> --user 'user_nexcloud:pass_nexcloud' | bash</code>


Устновить/обновить пакет одной командой <code>curl -s '<nowiki>https://cloud.connect2ai.net/ups/?name=s'</nowiki> --user 'user_nexcloud:pass_nexcloud' | bash && chmod +x ./ups.sh && ./ups.sh -i</code>
Установить/обновить пакет одной командой <code>curl -s '<nowiki>https://cloud.connect2ai.net/ups/?name=s'</nowiki> --user 'user_nexcloud:pass_nexcloud' | bash && chmod +x ./ups.sh && ./ups.sh -i</code>


Проверить актуальную версию пакета можно <code>curl -s '<nowiki>https://cloud.connect2ai.net/ups/?type=v'</nowiki></code>
Проверить актуальную версию пакета можно <code>curl -s '<nowiki>https://cloud.connect2ai.net/ups/?type=v'</nowiki></code>
Строка 36: Строка 36:




====='''Установка/создание модулей'''=====
====='''Установка модулей для UPS'''=====
Есть возможность создать любой модуль, который будет эмулировать любой API интерфейс любого стороннего сервиса через UPS. Для примера создан интерфейс Яндекс. Установка модулей возможна прямым копирование файлов модуля в деррикторию /opt/ups/modules/<название модуля>.
Есть возможность создать любой модуль, который будет эмулировать любой API интерфейс любого стороннего сервиса через UPS. Для примера создан интерфейс Яндекс. Установка модулей возможна прямым копирование файлов модуля в директорию /opt/ups/modules/<название модуля>.


Чтобы убедиться, что модуль доступен и работает, выполните запрос
Чтобы убедиться, что модуль доступен и работает, выполните запрос
Строка 45: Строка 45:
out.wav должен содержать синтезированный голос озвучивший текст из запроса.
out.wav должен содержать синтезированный голос озвучивший текст из запроса.


Данные пример запроса говорит о том, что написан интерфейс яндекса по синтезу. Соотвественно обращание к нему идет, как к Яндексу и ответ, как от Яндекса.
Данные пример запроса говорит о том, что написан интерфейс яндекса по синтезу. Соответственно обращение к нему идет, как к Яндексу и ответ, как от Яндекса.


Пример структуры файла модуля (файл должен иметь имя handler.py и лажать по пути /op/ups/modules/[имя модуля]/handler.py):
Пример структуры файла модуля (файл должен иметь имя handler.py и лажать по пути /op/ups/modules/[имя модуля]/handler.py):
Строка 116: Строка 116:


===== '''Конфигурирование параметров сервиса''' =====
===== '''Конфигурирование параметров сервиса''' =====
Настройка параметров сервиса ыьс производится в файле /opt/ups/params.json
Настройка параметров сервиса ups производится в файле /opt/ups/params.json


Описание параметров приведено в таблице
Описание параметров приведено в таблице
Строка 221: Строка 221:
Логи сервиса по умолчанию находятся в файле /opt/ups/logs/log.txt
Логи сервиса по умолчанию находятся в файле /opt/ups/logs/log.txt


===== '''Удаление''' =====
===== '''Удаление UPS''' =====
Для удаления выполните команду: <code>/opt/ups/uninstall</code>. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.
Для удаления выполните команду: <code>/opt/ups/uninstall</code>. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.

Версия от 10:31, 8 апреля 2024

Общее описание

Сервис предназначен для управления базовыми сервисами ядра, а также в качестве прокси-сервера доступа к сервисам с функцией балансировки нагрузки.


Термины и определения

Universal Proxy Server (UPS) – Сервис управления ядром с проксированием запросов.


Системные требования

Для нормальной работы сервиса требуется 4Гб оперативной памяти, 1 CPU >= 2.20GHz и 40Гб дискового пространства.


Установка/обновление UPS

Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.

Для UPS необходимо устанавливать выделенное окружение.

Установка/обновление UPS осуществляется скриптом chmod +x ./ups-<версия>-<релиз>.sh && ./ups-<версия>-<релиз>.sh -i с правами администратора. Список всех ключей инсталятора можно посмотреть, запустив инсталятор ./ups-<версия>-<релиз>.sh без ключей.

Загрузить последнюю версию пакета curl -s 'https://cloud.connect2ai.net/ups/' --user 'user_nexcloud:pass_nexcloud' | bash

Установить/обновить пакет одной командой curl -s 'https://cloud.connect2ai.net/ups/?name=s' --user 'user_nexcloud:pass_nexcloud' | bash && chmod +x ./ups.sh && ./ups.sh -i

Проверить актуальную версию пакета можно curl -s 'https://cloud.connect2ai.net/ups/?type=v'

Не забудьте запустить сервис и включить в автозапуск в системе:

sudo systemctl enable ups.service && sudo systemctl start ups.service

Удостоверьтесь, что сервис стартовал:

systemctl status ups.service

Разрешите доступ к порту 6182 на нужном интерфейсе по протоколу tcp.


Установка модулей для UPS

Есть возможность создать любой модуль, который будет эмулировать любой API интерфейс любого стороннего сервиса через UPS. Для примера создан интерфейс Яндекс. Установка модулей возможна прямым копирование файлов модуля в директорию /opt/ups/modules/<название модуля>.

Чтобы убедиться, что модуль доступен и работает, выполните запрос

curl -X GET "http://АДРЕС_СЕРВЕРА:6182/tts/synthesize/yandex_tts_emulator?rate=100&pitch=100&volume=0" --H "accept: application/json" --data-urlencode "text=текст для синтеза" --output out.wav

out.wav должен содержать синтезированный голос озвучивший текст из запроса.

Данные пример запроса говорит о том, что написан интерфейс яндекса по синтезу. Соответственно обращение к нему идет, как к Яндексу и ответ, как от Яндекса.

Пример структуры файла модуля (файл должен иметь имя handler.py и лажать по пути /op/ups/modules/[имя модуля]/handler.py):

import uuid, io, json

from app.modules import modulesns

from flask import send_file

from flask_restplus import Resource, reqparse

from app.ups import tools

config = json.load(open('/opt/ups/modules/yandex_tts_emulator/config.json'))

parser = reqparse.RequestParser()

parser.add_argument('voice',required=True)

parser.add_argument('text',required=True)

@modulesns.route("/speech/v1/tts:synthesize"

class YandexEmulator(Resource): # имя класса можно указать свое

   def post(self): # обязательный метод post класса

       args = parser.parse_args()

       voice = args['voice']

       voice = config['voices'].get(voice,None)

       if not voice:

           modulesns.abort(405, message = "Wrong voice", error = 1)

       reply = tools.getData(servicetype="tts",method="GET",data={'text':args['text']},url="/tts/synthesize/"+voice)

       if type(reply) is dict:

           return reply

# возвращаемым значение метода post должен быть правильный результат, в данном примере синтезированный аудиофайл

       return send_file(

           io.BytesIO(reply),

           attachment_filename=str(uuid.uuid4())+'.wav',

           as_attachment=True,

           mimetype='audio/wav'

       )


Пример структуры файла конфигурации (файл должен иметь имя config.json и лажать по пути /op/ups/modules/[имя модуля]/config.json):{

   "voices": {

       "alena": "Alya_8kHz"

   }

}


Конфигурирование параметров сервиса

Настройка параметров сервиса ups производится в файле /opt/ups/params.json

Описание параметров приведено в таблице

Параметр По умолчанию Назначение
logs.path logs/ Директория для хранения логов. Примеры абсолютного пути: "/var/log/ups/"
logs.backups 10 Количество файлов ротации
logs.maxSize 5242880 Максимальный размер файла в байтах, триггер для ротации
auth.accessLifeTime 1800 Время жизни access token
auth.refreshLifeTime 86400 Время жизни refresh token
servers.{service}.trainer http://127.0.0.1:PORT Ссылка на сервер для обучения моделей сервисов. Возможные варианты значения service (с портами по умолчанию) следующие: smc (6181), see (6184), spr (6183)
servers.{service}.cluster [http://127.0.0.1:PORT] Список ссылок на рабочие серверы сервисов. Возможные варианты значения service (с портами по умолчанию) следующие: smc (6181), see (6184), spr (6183), tts (6186), sbs (6185).
servers.{service}.timers.connect 0.5 Лимит времени на подключение к сервису, сек.
servers.{service}.timers.read 300 Лимит времени на получение данных от сервиса, сек.
servers.{service}.timers.failed 600 Длительность паузы обращений к сервису при сбое, сек.
servers.{service}.timers.install 60 Лимит времени на установку модели на сервис
servers.{service}.timers.info 3 Лимит времени на получение информации о модели
nopassword [

"GET:/auth/refresh",

"GET:/auth/rights",

"POST:/auth/access",

"GET:/lang/",

"GET:/tts/synthesize",

"POST:/sbs/embedding",

"GET:/smc/classify",

"GET:/auth/version",

"GET:/smc/compress",

"GET:/smc/emotion",

"GET:/see/entities",

"POST:/sbs/analyze",

"POST:/sbs/verify",

"POST:/sbs/search",

"POST:/spr/stt",

"GET:/spr/result",

"GET:/auth/user/info",

"GET:/model/info",

"POST:/auth/user/password"

]

Список методов, которые не требуют авторизации


Сбор данных об ошибках

Логи сервиса по умолчанию находятся в файле /opt/ups/logs/log.txt

Удаление UPS

Для удаления выполните команду: /opt/ups/uninstall. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели.