Я работал над проектом тематического моделирования с использованием BERTopic 0.16.3, и предварительные результаты были многообещающими. Однако по мере развития проекта и появления требований я столкнулся с конкретной проблемой масштабируемости.
А именно:
< li>Для разработки/тестирования необходимо достаточно быстро обучиться на умеренном количестве документов (от десятков тысяч до нескольких сотен тысяч)
Наши машины для разработки — Mac, так что это вероятно, придется выполнять на ЦП
[*]Для производства необходимо обучение на большом количестве документов (несколько миллионов ) без увеличения использования памяти
Для базового уровня, с настройками по умолчанию на моем компьютере, BERTopic имеет пиковое использование памяти примерно 35 КБ на документ, что легко превращается в сотни ГБ или даже ТБ для объема данных, которые будут предоставлены в рабочей среде.
В идеале пиковое использование памяти должно быть сублинейным в зависимости от количества документов.
< /ul>
Последнее требование требует пакетной обработки документов, поскольку для одновременной загрузки их всех в память требуется линейная память. Итак, я изучал алгоритмы кластеризации, которые работают с тематическим онлайн-моделированием. В документации BERTopic предлагается использовать MiniBatchKMeans от scikit-learn, но результаты, которые я получаю от этого, не очень хорошие.
Некоторые модели, которые я рассматривал, включают:
через incdbscan: поначалу это казалось многообещающим, но время выполнения и, в конечном итоге, объем памяти раздулись. Для примерно 120 тысяч документов в пакетах по 5000 он не использовал более 4 ГБ ОЗУ в течение первых 3,5 часов, но не завершил работу в течение десяти часов и в какой-то момент в середине использовал почти 40 ГБ ОЗУ.
через scikit-learn: дал очень хорошие результаты при первоначальном тестировании (возможно, даже лучше, чем HDBSCAN), но он не реализует метод parts_fit. Я нашел этот ответ на другой вопрос, в котором говорится, что можно обучить два из них, используя одну связь, независимо, а затем объединить их, но не указано, как это сделать.
Последние два также не предоставляют метод прогнозирования, что ограничивает их полезность.
Я новичок в этой теме, так что, возможно, я подхожу к этому совершенно неверно, и непосредственная проблема, которую я пытаюсь решить, не имеет решения. Чтобы внести ясность, на базовом уровне я пытаюсь ответить на вопрос: Как мне выполнить тематическое моделирование (и получить хорошие результаты) для большого количества документов, не используя слишком много памяти? >
Я работал над проектом тематического моделирования с использованием BERTopic 0.16.3, и предварительные результаты были многообещающими. Однако по мере развития проекта и появления требований я столкнулся с конкретной проблемой масштабируемости. А именно: [list] < li>Для разработки/тестирования необходимо достаточно быстро обучиться на умеренном количестве документов (от десятков тысяч до нескольких сотен тысяч)
[*]Наши машины для разработки — Mac, так что это вероятно, придется выполнять на ЦП [/list]
[*]Для производства необходимо обучение на большом количестве документов (несколько миллионов ) без увеличения использования памяти [list] Для базового уровня, с настройками по умолчанию на моем компьютере, BERTopic имеет пиковое использование памяти примерно 35 КБ на документ, что легко превращается в сотни ГБ или даже ТБ для объема данных, которые будут предоставлены в рабочей среде. [*]В идеале пиковое использование памяти должно быть сублинейным в зависимости от количества документов. < /ul>
[/list] Последнее требование требует пакетной обработки документов, поскольку для одновременной загрузки их всех в память требуется линейная память. Итак, я изучал алгоритмы кластеризации, которые работают с тематическим онлайн-моделированием. В документации BERTopic предлагается использовать MiniBatchKMeans от scikit-learn, но результаты, которые я получаю от этого, не очень хорошие. Некоторые модели, которые я рассматривал, включают: [list] [*][code]Birch[/code] через scikit-learn: использует даже больше памяти, чем стандартный HDBSCAN BERTopic, даже при пакетной обработке. Также работает намного медленнее. [*][code]IncrementalDBSCAN[/code] через incdbscan: поначалу это казалось многообещающим, но время выполнения и, в конечном итоге, объем памяти раздулись. Для примерно 120 тысяч документов в пакетах по 5000 он не использовал более 4 ГБ ОЗУ в течение первых 3,5 часов, но не завершил работу в течение десяти часов и в какой-то момент в середине использовал почти 40 ГБ ОЗУ. [code]AgglomerativeClustering[/code] через scikit-learn: дал очень хорошие результаты при первоначальном тестировании (возможно, даже лучше, чем HDBSCAN), но он не реализует метод parts_fit. Я нашел этот ответ на другой вопрос, в котором говорится, что можно обучить два из них, используя одну связь, независимо, а затем объединить их, но не указано, как это сделать. [/list] Последние два также не предоставляют метод прогнозирования, что ограничивает их полезность. Я новичок в этой теме, так что, возможно, я подхожу к этому совершенно неверно, и непосредственная проблема, которую я пытаюсь решить, не имеет решения. Чтобы внести ясность, на базовом уровне я пытаюсь ответить на вопрос: [b]Как мне выполнить тематическое моделирование (и получить хорошие результаты) для большого количества документов, не используя слишком много памяти?[/b] >
Я работал над проектом тематического моделирования с использованием BERTopic 0.16.3, и предварительные результаты были многообещающими. Однако по мере развития проекта и появления требований я столкнулся с конкретной проблемой масштабируемости.
А...
У меня возникают проблемы с получением значений, которые я толкаю в массив своих карт. Я не знаю, если я не называю правильным свойством или просто неправильно добавляю в массив.
У меня есть сценарий, в котором я должен прочитать все сообщения из уплотненной темы (тема 2) с начала. Я должен сохранить все эти сообщения в памяти, которые будут действовать как поиск/кэш.
` Постановка проблемы: я хочу создать DailyCostAndUsagesReport с использованием функции DataExport, которая присутствует в Службе выставления счетов и управления затратами Aws. Я использую AwsSDK, поэтому для этого мне нужна зависимость Gradle,...