Включение AI-поиска привело к сбою моего сервера

Вчера вечером я включил опцию «AI embeddings enabled», и процесс заполнения данных (backfill) выполнялся в фоновом режиме. Сегодня я включил опцию «AI embeddings semantic search enabled», и загрузка процессора постоянно достигала 100%, при этом образовалась огромная очередь LOW в Sidekiq. Поиск на сервере полностью перестал работать.

Я отключил семантический поиск, и через несколько минут загрузка процессора вернулась к норме, а вся очередь была очищена.

Так есть ли способ сделать это иначе, или такое поведение ожидаемо?

2 лайка

Мне бы очень хотелось узнать больше о вашем профиле «железа», если вы используете самохостинг. Я тоже думал о том же для своих серверов, но не уверен в последствиях. Этот anecdotal опыт подсказывает мне, что стоит пока подождать или подготовить более продуманный план.

Время выполнения Jobs::GenerateEmbeddings должно составлять секунды, так как вы делаете API-запрос к сервису эмбеддингов для получения данных. Этот график нормален: он просто показывает, что операция занимает время, поскольку работу выполняет другой GPU в облаке.

Высокая загрузка CPU очень неожиданна. Возможно, ваш сервер PostgreSQL изначально был сильно перегружен, и вставка около 1000 чисел подряд оказалась достаточной, чтобы его нагрузить.

Нам нужно гораздо больше данных для диагностики: какие характеристики у сервера? Что именно показывают графики CPU, какой процесс потребляет ресурсы, какой сервис эмбеддингов вы используете и так далее…

Я вижу, что вы поделились только графиком длительности работы Sidekick, и он показывает, что после включения эмбеддингов Discourse корректно выполнил их обратное заполнение.

Можете ли вы предоставить больше информации о вашей конфигурации? Кто является поставщиком эмбеддингов? Это сторонний API или вы также размещаете его самостоятельно? Сколько у вас тем? Какие характеристики у базы данных?

Я использую сервер DigitalOcean с 16 ГБ оперативной памяти и 4 виртуальными процессорами Intel.

Использую Open AI text-embedding-3-small.

Загрузка процессора обычно составляет около 50% или меньше. Вот как это выглядело после включения семантического поиска. У нас около 2,5 млн сообщений и 250 тыс. тем. Я не включил генерацию эмбеддингов для личных сообщений, иначе пришлось бы добавить ещё 1 млн сообщений и 100 тыс. тем.

1 лайк