# Stanford CS336: Как превратить сырой интернет в качественные данные для LLM

Источник: https://www.youtube.com/watch?v=9Cd0THLS1t0
Канал: Stanford Online
Опубликовано: 16.06.2025

---

В современной разработке больших языковых моделей (LLM) данные не возникают из ниоткуда — их необходимо извлекать из живых сервисов, веб-дампов и архивов, подвергая сложной многоступенчатой очистке. В рамках курса Stanford CS336 «Language Modeling from Scratch» эксперты Stanford Online разобрали внутреннюю механику препроцессинга: от классических алгоритмов обработки Big Data до использования современных LLM для фильтрации обучающих выборок.

## 🧠 Алгоритмы фильтрации: от n-грам до классификаторов
[[JUMP:0:55]]

Основная задача фильтрации — выделить из огромного массива «сырых» данных (например, Common Crawl) качественное подмножество, максимально похожее на целевой эталон (Wikipedia или научные статьи) [1:35]. Этот процесс должен быть чрезвычайно быстрым: если запуск фильтра будет стоить столько же, сколько обучение модели, в нём теряется смысл [2:30].

Для реализации этой задачи выделяют три основных подхода:

*   **N-gram модели с использованием KenLM.** Это классический статистический метод, основанный на подсчёте последовательностей слов. Чаще всего используется сглаживание Кнесера-Нея (Kneser-Ney smoothing) для обработки редких сочетаний [3:09]. Модель обучается на качественном корпусе (например, Wikipedia) и оценивает перплексию (степень «удивления» модели) для новых текстов. Тексты с аномально высокой перплексией отсеиваются как шум [7:53].
*   **Линейные классификаторы Fasttext.** Разработанный в Facebook (Meta) инструмент позволяет проводить классификацию текста почти с линейной скоростью [8:47]. Вместо использования гигантских матриц весов Fasttext применяет снижение размерности и хэширование n-грам, что позволяет эффективно обрабатывать даже редкие слова, допуская небольшое количество коллизий ради скорости [11:23].
*   **Вероятностная перевыборка (Importance Sampling).** Более фундаментальный подход, где вместо простой классификации «хороший/плохой» строится оценка отношения двух распределений: целевого (качественного) и исходного (сырого) [13:45]. Это позволяет лучше сохранять разнообразие данных, подтягивая распределение сырого корпуса к эталонному [18:25].

## 📊 Кейсы применения: языки, качество и токсичность
[[JUMP:23:44]]

Фильтрация используется не только для удаления «мусора», но и для решения специфических задач подготовки датасета.

**Идентификация языка.** Модели часто обучаются на английском языке, но в Common Crawl перемешаны сотни наречий. Использование классификатора Fasttext позволяет оставить только нужные языки [25:52]. Например, в модели Dolma страницы сохранялись только если вероятность английского языка превышала 0.5 [26:33]. Однако спикер отмечает, что для коротких предложений или диалектов такие классификаторы могут ошибаться [28:25].

**Фильтрация по качеству.** Современные подходы всё чаще используют мощные модели для оценки данных:

*   **GPT-3** обучала классификатор на данных из проверенных источников против «сырого» веба [30:48].
*   **Llama** использовала страницы, на которые ссылается Wikipedia, как позитивные примеры [31:28].
*   **phi-1 (Microsoft)** применила инновационный метод: они попросили GPT-4 оценить образовательную ценность 100 тысяч примеров кода на Python [32:10]. На этих «синтетических» метках был обучен более быстрый классификатор Random Forest, который затем профильтровал миллионы строк кода [32:51].

**Токсичность и контент NSFW.** Для очистки от нежелательного контента часто используются датасеты вроде Jigsaw Toxic Comments [35:26]. На их основе обучаются быстрые модели Fasttext, которые помечают контент как «токсичный», «оскорбительный» или «непристойный» [35:55].

## 🖇 Дедупликация: борьба с «зеркалами» интернета
[[JUMP:36:56]]

Интернет переполнен дубликатами: лицензии MIT, стандартные условия обслуживания, зеркала сайтов вроде Project Gutenberg копируются тысячи раз [37:23]. В наборе данных C4 одна и та же фраза о продукте с Amazon встречалась более 61 000 раз [39:49]. 

Дедупликация критически важна по трем причинам:

1.  **Эффективность:** нет смысла тратить вычислительные ресурсы на обучение на одних и тех же данных [40:59].
2.  **Защита от запоминания (Memorization):** модели склонны дословно заучивать тексты, которые встречаются часто, что ведет к рискам нарушения приватности и авторских прав [41:25].
3.  **Качество:** перекос в сторону часто повторяющихся шаблонов снижает общую обобщающую способность модели.

Для точной дедупликации (Exact Deduplication) на уровне документов или предложений эффективно использовать **фильтры Блума (Bloom Filters)** [46:47]. Это компактная битовая структура данных, которая позволяет быстро проверить наличие элемента в наборе. Она может давать ложноположительные срабатывания (сказать, что дубликат есть, хотя его нет), но никогда не ошибается в обратную сторону [47:41]. Вероятность ошибки можно контролировать, увеличивая количество хэш-функций [55:34].

## 🔍 Поиск неявных дубликатов через MinHash и LSH
[[JUMP:58:38]]

Самая сложная задача — найти «почти дубликаты» (тексты, отличающиеся на запятую или одно слово). Для этого используется мера сходства Жаккара (Jaccard similarity) — отношение пересечения множества слов к их объединению [59:08].

Поскольку сравнивать каждый документ с каждым невозможно (это заняло бы квадратичное время), применяется алгоритм **MinHash** [1:00:31]. Его суть в том, что вероятность коллизии хэшей двух документов в точности равна их сходству по Жаккару [1:01:15]. 

Чтобы сделать процесс ещё более точным, применяется **Locality Sensitive Hashing (LSH)**:

*   Хэши разбиваются на «полосы» (bands) [1:06:02].
*   Два документа считаются дубликатами, если хотя бы в одной полосе все их хэши совпали [1:06:34].
*   Этот метод «сгущает» вероятности: если документы похожи на 99%, они почти гарантированно склеятся. Если похожи менее чем на 50% — они почти гарантированно будут считаться разными [1:11:18].

Например, в некоторых исследованиях используются параметры LSH, позволяющие считать дубликатами тексты, где на 100 слов отличается лишь одно [1:12:03]. По мнению лектора, это крайне строгая, но необходимая мера для очистки обучающих корпусов [1:12:16].