Un bug dans la fonction `generate()` de Hugging Face provoque des sorties incorrectes lorsque `past_key_values` est un `DynamicCache` construit externement. Ce problème affecte les méthodes de compression de cache KV comme SnapKV, H2O et KIVI qui reconstruisent les caches à partir de données de préremplissage. La cause racine est l'échec de la propagation du contexte positionnel, entraînant une perte de précision de 10,7 points de pourcentage sur Qwen3-VL-8B.

  • Ajout de la méthode de classe `DynamicCache.from_kv_tensors()` pour reconstruire les caches en toute sécurité avec un état interne correct.
  • Nécessité d'un `attention_mask` et de `position_ids` explicites pendant la génération pour restaurer la qualité de base.
  • La nouvelle méthode préalloue des listes internes via un paramètre optionnel `num_hidden_layers` pour la compatibilité ascendante.

Cette correction garantit que les flux de travail de compression KV produisent des sorties fiables en gérant correctement la longueur de séquence et les masques d'attention.