Ошибка в функции `generate()` от Hugging Face приводит к некорректным результатам, когда `past_key_values` представляет собой созданный вручную объект `DynamicCache`. Эта проблема затрагивает методы сжатия KV-кэша, такие как SnapKV, H2O и KIVI, которые восстанавливают кэш на основе данных префилла. Корневая причина заключается в отсутствии передачи позиционного контекста, что приводит к потере точности на 10,7 процентных пункта на модели Qwen3-VL-8B.
- Добавлен классовый метод `DynamicCache.from_kv_tensors()` для безопасного восстановления кэшей с правильным внутренним состоянием.
- Требуется явное указание `attention_mask` и `position_ids` во время генерации для восстановления базового качества.
- Новый метод предварительно выделяет внутренние списки через необязательный параметр `num_hidden_layers` для обратной совместимости.
Это исправление гарантирует, что рабочие процессы сжатия KV дают надёжные результаты за счёт корректной обработки длины последовательности и масок внимания.