Ограничения
Библиотека учебная: код простой и читается целиком, а результат моделей проверен сверкой с HuggingFace. Ниже — чего в ней нет и что учесть, прежде чем строить на ней эксперименты.
Обучение
Заголовок раздела «Обучение»Trainer— минимальный цикл. Нет сохранения чекпоинтов и лучшей модели, продолжения обучения (состояние оптимизатора не сохраняется), смешанной точности, накопления градиентов, распределённого обучения, логирования метрик кромеloss_history. См. Обучение.- Датасеты не склеивают тексты. Каждая строка — один пример, всё после
block_sizeотбрасывается; классической нарезки непрерывного потока на блоки нет. - Учебный корпус игрушечный — 15 предложений. На нём проверяют, что обучение работает, а не качество модели.
- Оценки качества нет. Модуль
llm.evaluationпуст; перплексию считайте сами какexpот валидационного loss.
- Скользящее окно не экономит вычисления.
GroupedQueryAttentionсчитает полную матрицуQKᵀи затем маскирует лишнее: экономия есть только в памяти на KV-кэш при генерации. - Окно на одну позицию шире, чем в HuggingFace. В Mistral и Mixtral окно —
window_size + 1позиций, как в тексте статьи; при загрузке весов HF —window_size = sliding_window − 1. См. Mistral. - Нули в середине
attention_maskи скользящее окно. Окно считается по местам в последовательности, а не по позициям настоящих токенов: pad-места в середине строки занимают окно, хотя и замаскированы. Левый и правый паддинг это не затрагивает. - Нет оптимизированных ядер (FlashAttention,
scaled_dot_product_attention) и квантизации. - RoPE без масштабирования (
rope_scaling): модели вроде Llama 3 сrope_scalingв конфиге не воспроизводятся.Llamaподдерживает только обычный MHA.
Токенизатор
Заголовок раздела «Токенизатор»- Символьный BPE, а не byte-level: символ, которого не было в корпусе, становится
<unk>. Для многоязычных данных корпус токенизатора должен содержать все нужные символы. - Обучение медленное на больших корпусах: частоты пар пересчитываются на каждом слиянии.
hf-proxy
Заголовок раздела «hf-proxy»- Только
GPT; KV-кэш HF иgeneration_configне поддерживаются. См. Интеграцию с HuggingFace.
Совместимость
Заголовок раздела «Совместимость»Изменения, после которых старый код, конфиги или чекпоинты ведут себя иначе, — в CHANGELOG. Технический долг и история исправлений — в бэклоге.