О чём эта новость
- Потоки событий Server-Sent Events (SSE) теперь доступны для предсказаний в Cog.подробнее →
- Разработчики могут интегрировать SSE в свои приложения для динамического отображения результатов.подробнее →
- Рабочий процесс
cog weightsполучил статус экспериментального, его не рекомендуется использовать в продакшене.подробнее → - В версии реализованы улучшения в статическом парсере схемы и исправления ошибок.подробнее →
Replicate выпустил предварительный релиз Cog v0.21.0-rc.1, который привносит значительные изменения для инженеров, работающих с этой инфраструктурой. Главное нововведение — полноценная поддержка потоков предсказаний на основе Server-Sent Events (SSE), что позволяет получать данные об исполнении модели в реальном времени. Эти потоки открывают широкие возможности для создания интерактивных приложений, где актуальность информации критически важна. Однако, вместе с новыми возможностями, появились и предупреждения: рабочий процесс cog weights теперь помечен как экспериментальный, что указывает на необходимость осторожного использования в производственных средах.
Внедрение потоков событий для предсказаний
Предварительный релиз Cog v0.21.0-rc.1 вводит полноценную поддержку потоков предсказаний на основе Server-Sent Events (SSE). Эта технология позволяет серверу отправлять обновления клиенту в однонаправленном режиме по HTTP-соединению, что идеально подходит для получения данных об исполнении моделей машинного обучения в реальном времени.
В отличие от традиционных методов, таких как опрос (polling) или веб-хуки, SSE обеспечивает более эффективный и оперативный способ получения инкрементальных обновлений. Если при опросе клиент периодически запрашивает у сервера новые данные, а веб-хуки требуют настройки обратных вызовов, то SSE устанавливает постоянное соединение, через которое сервер может "проталкивать" события по мере их возникновения. Это особенно ценно для приложений, где важна низкая задержка и непрерывное отображение прогресса, например, в чат-ботах или системах генерации контента.
Потоки событий в Cog транслируют различные этапы жизненного цикла предсказаний. Разработчики могут получать события start (начало), output (промежуточные результаты), log (логи выполнения), metric (метрики) и terminal completed (завершение предсказания). Это позволяет клиентам детально отслеживать процесс работы модели и реагировать на него по мере необходимости. Для активации потоковой передачи предиктору необходимо явно подключить эту функциональность с помощью декоратора @streaming или @cog.streaming.
При запросе предсказания по HTTP клиенты должны включить заголовок Accept: text/event-stream, чтобы указать свое желание получать потоковые события. При этом важно отметить, что в источниках отсутствует информация о влиянии потоковой передачи SSE на производительность моделей или требования к ресурсам, что может быть важным фактором при масштабировании.
Практическое применение и возможности потоковой передачи
Новая функция потоковой передачи SSE в Cog открывает широкие возможности для создания интерактивных и динамичных приложений, особенно в области языковых моделей. Одним из наиболее очевидных сценариев использования является разработка чат-приложений, подобных ChatGPT, где ответы генерируются и отображаются слово за словом, создавая впечатление "живого" взаимодействия. Это достигается за счет потоковой передачи токенов по мере их генерации моделью.
Для настройки клиента на получение потоковых событий можно использовать встроенный в браузер API EventSource или инструменты командной строки, такие как cURL. Например, в JavaScript клиент может создать EventSource, указав URL потока, полученный от Replicate, и затем добавлять слушателей событий для output, error и done.
const source = new EventSource(prediction.urls.stream, { withCredentials: true });
source.addEventListener("output", (e) => {
console.log("output", e.data);
});
source.addEventListener("error", (e) => {
console.error("error", JSON.parse(e.data));
});
source.addEventListener("done", (e) => {
source.close();
console.log("done", JSON.parse(e.data));
});
Эта гибкость позволяет разработчикам отображать промежуточные результаты, логи или метрики в реальном времени, улучшая пользовательский опыт и обеспечивая большую прозрачность выполнения модели. Кроме того, для клиентов, которые переподключаются к потоку, предусмотрен механизм повторного воспроизведения (replay) удерживаемых "in-flight" событий с использованием запроса PUT /predictions/{id}, что гарантирует целостность данных даже при временных разрывах соединения.
Предупреждение об экспериментальном статусе cog weights
В релизе Cog v0.21.0-rc.1 команда cog weights теперь помечена как экспериментальная, и при каждом ее использовании выводится предупреждение. Это означает, что рабочий процесс управления весами, связанный с этой командой, находится в активной разработке и не предназначен для использования в производственных средах.
Статус "экспериментальный" подразумевает, что функциональность может быть нестабильной, ее API или поведение могут измениться в будущих версиях без предварительного уведомления. Использование таких функций в продакшене сопряжено с рисками возникновения ошибок, непредсказуемого поведения или даже потери данных, поскольку отсутствуют гарантии обратной совместимости или надежности.
Разработчикам рекомендуется воздерживаться от включения cog weights в свои критически важные рабочие процессы, пока функция не будет стабилизирована и официально выпущена. К сожалению, в доступных источниках не представлены планы по стабилизации рабочего процесса cog weights и предполагаемые сроки, что оставляет вопрос о его готовности к производственному использованию открытым. В таких случаях обычно требуется внимательное отслеживание будущих релизов и официальной документации для получения обновленной информации о статусе и рекомендациях.
Другие улучшения и исправления ошибок
Помимо основных нововведений, Cog v0.21.0-rc.1 включает несколько важных улучшений и исправлений ошибок, направленных на повышение стабильности и удобства работы с платформой.
Среди улучшений следует отметить разрешение целей для статического парсера схемы Python. Теперь парсер использует метод run() как основную точку входа для предсказаний, сохраняя при этом устаревшее поведение с резервным использованием predict(). Это изменение также обеспечивает более последовательное разрешение унаследованных и импортированных целей.
Были также устранены несколько критических ошибок: cog doctor --fix теперь корректно отображает текст рекомендации для проблем без автоматического исправления. Кроме того, загрузка весов, управляемая Cog, теперь отправляет правильный тип медиаданных для слоев весов во время финализации реестра, сохраняя при этом стандартное поведение для обычных слоев образов. Наконец, валидация предиктора теперь правильно обрабатывает строковые аннотации PEP 563 (from __future__ import annotations), предотвращая некорректное отклонение действительных методов setup() -> None или принятие недействительных run() -> None из-за строкового представления аннотации None.
Что это значит
Обновление Cog v0.21.0-rc.1 добавило потоковую передачу событий Server-Sent Events. Однако важно учитывать экспериментальный статус некоторых компонентов, таких как cog weights, и избегать их использования в продакшене до стабилизации.