Prediction
Определение
Каждый запуск модели создает прогноз (prediction) - объект, содержащий входные параметры, полученные результаты и метаданные (версия модели, пользователь, статус и временные метки). Каждый прогноз имеет структуру:
- ID прогноза
- Входные данные
- Параметры инференса
- Результаты инференса
- Временные метки
- Статус выполнения
- Метрики выполнения
- Использованные ресурсы
Пример прогноза:
{
"id":"d5a46834-c430-4342-9779-4ea5e76d057d",
"input":{
"audio":"https://you-app.ru/audio.mp3",
"model":"large-v3-turbo",
"diarize":false,
"language":"auto",
"speakers":1,
"word_timestamp":false
},
"status":"starting",
"output":null,
"source":"api",
"runtime":null,
"created_at":"2024-06-26T05:26:31.974000Z"
}
Приведенный пример иллюстрирует как создан новый объект prediction с текущим статусом "starting" для модели openai/whisper, которая выполняет транскрибацию аудиофайлов. Как только прогноз будет закончен prediction получит статус succeeded, свойство output будет заполнено выходными данными модели, а runtime вернет общее время выполнения.
Создание прогноза
Чтобы создать прогноз необходимо отправить POST запрос в соответствующую конечную точку, например https://connecte.ai/api/v1/openai/whisper, посетите страницу со всеми эндпоинтами.
Пример API запроса:
curl https://connecte.ai/api/v1/openai/whisper \
--request POST \
--header "Authorization: Bearer $CONNECTE_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"audio" : "https://site.ru/audio.mp3"
}'
Режимы обработки прогнозы
Существуют два режима создания прогнозов по API - ASYNC, SYNC
Асинхронный режим (по умолчанию)
- Для более длительных и ресурсоемких вычислений
- После создания prediction переходит в статус "processing" и возвращает ID
- Когда статус поменяется на succeeded или failed отправит webhook
- ID позволяет проверять статус обработки и получать результаты в любой момент
Синхронный режим (SYNC)
- Оптимизирован для легковесных моделей
- Предполагает мгновенные (или близкие к нему) вычисления
- Результат обработки непосредственно в ответе запроса
Синхронный режим
Синхронный режим оптимизирован для быстрого получения результатов и идеально подходит для приложений реального времени. В этом режиме вы освобождаете себя от polling'а и вебхуков, выходные данные будут переданы в рамках одного запроса.
Чтобы создать синхронный запрос добавьте HTTP заголовок Prefer со значением sync:
curl https://connecte.ai/api/v1/openai/whisper \
--request POST \
--header "Prefer: sync" \
--header "Request-Timeout: 10" \
--header "Authorization: Bearer $CONNECTE_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"audio" : "https://site.ru/audio.mp3"
}'
Ответ будет содержать только выходные данные модели:
{
"segments":{...},
"transcription":{...},
"translation":{...},
"detected_language":{...}
}
Жизненный цикл прогноза
Сразу, как только прогноз создан он получает статус pending, обрабатывается и попадает в очередь. Далее давайте рассмотрим весь жизненный цикл прогноза.
- Pending - ваш запрос прошел валидацию -> создан прогноз -> обрабатывается
- Queued - ограничений нет, попадает в очередь
- Starting - инициализация модели, если модель в состоянии "теплая" стадия проходит мгновенно
- Processing - модель запущена, происходят вычисления
- Succeeded - прогноз завершен, выходные данные готовы
- Failed - на одном из этапов произошла ошибка
- Canceled - отменен пользователем
Получение результатов
Есть несколько способов получать результаты прогнозов. Если вы не используете API, а делаете запросы к моделям только через веб-форму то вы легко можете посмотреть результаты ваших прогнозов в личном кабинете.
Когда вы работаете с ресурсоемкими задачами требующие длительных вычислений вы можете опрашивать API отправляя запросы через каждые n секунд для проверки статуса прогноза.
Если вы хотите более оперативно получать информацию о готовности прогноза, используйте инструмент webhook'ов. Просто добавьте url в заголовок X-Webhook-URL, как только прогноз перейдет в состояние Succeeded или Failed на ваш URL придет webhook уведомление.
Использование вебхука:
curl https://connecte.ai/api/v1/openai/whisper \
--request POST \
--header "X-Webhook-URL: https://your-app.ru/connecte-url" \
--header "Authorization: Bearer $CONNECTE_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"audio" : "https://site.ru/audio.mp3"
}'