Voydevich
Hugging Face Transformers

Що нового в Hugging Face Transformers 5.19

Реліз додає мультимодальну модель EmbeddingGemma 2, реалізацію token-dispatch для expert parallelism та підтримку continuous batching у базових функціях attention.

Реліз від 6 жовтня 2026 · оновлено 9 листопада 2026

Головне

  • Додано мультимодальну ембединг-модель EmbeddingGemma 2 на базі Gemma 4
  • Реалізація token-dispatch для expert parallelism (за замовчуванням для Qwen3 MoE та Mellum)
  • Підтримка continuous batching безпосередньо у функціях SDPA та Flash Attention
  • Пошарова конфігурація для DynamicCache та StaticCache
  • Уніфіковане повернення router logits для моделей MoE за output_router_logits=True

Коротко

Hugging Face Transformers 5.19 представляє нову мультимодальну ембединг-модель EmbeddingGemma 2 від Google. Реліз розширює можливості паралелізації завдяки реалізації token-dispatch для expert parallelism та вводить конфігурацію кешу окремо для кожного шару моделі. Також оновлено роботу механізмів attention у режимі continuous batching та стандартизовано вивід router logits для MoE-архітектур.

Нові можливості

Мультимодальна модель EmbeddingGemma 2

  • Додано EmbeddingGemma2 — мультимодальну модель ембедингів від Google на базі архітектури Gemma 4.
  • Модель кодує текст, зображення, аудіо та відео (окремо або в межах одного запиту) у спільний 768-вимірний векторний простір для задач крос-модального пошуку, семантичної схожості, кластеризації та класифікації.
  • Завдяки Matryoshka Representation Learning розмірність ембедингів можна зменшувати до 512, 256 або 128 вимірів.
  • Підтримуються налаштовувані бюджети токенів для зображень і відео, а невикористовувані вежі зору або аудіо можна вимикати під час завантаження для економії пам'яті.

Паралелізація (Parallelization)

  • Для expert parallelism реалізовано механізм token-dispatch через нове правило плану ep_dispatch_experts. Він став стандартним для Qwen3 MoE та Mellum і знімає вимогу щодо рівності розмірів EP та TP.
  • Плани tp_plan та ep_plan розділено, а також додано dense- та expert-сітки пристроїв (device mesh).
  • Trainer адаптовано для роботи з expert parallelism.
  • Документацію оновлено з приміткою про підтримку tensor parallelism для PEFT-адаптерів.

Робота з кешем

  • Додано конфігурацію кешу на рівні окремих шарів: DynamicCache та StaticCache ініціалізують кожен шар із власного конфігу (sliding window, attention chunk size, conv states та кількість attention heads), що покращує підтримку гетерогенних моделей.

Continuous Batching та бекенди

  • Дозволено реєстрацію нових бекендів обробки (processing backends).
  • Механізм continuous batching став більш незалежним від типу пристроїв; додано підтримку бекенду XPU.
  • Увімкнено тестування моделей на майбутньому бекенді torch_tpu.

Ламаючі зміни

  • Router logits у MoE-моделях: Усі MoE-моделі, маршрутизатори яких обчислюють логіти, тепер повертають їх за умови output_router_logits=True за шаблоном Qwen3-MoE (рекордер router_logits на базовій моделі, MoeModelOutputWithPast від бекбону та MoE causal LM output від голови моделі). Код, який спирався на попередній формат або відсутність цих даних, має зчитувати логіти з відповідних класів виводу.
  • Вибір image query в Owlv2: Метод Owlv2ForObjectDetection.embed_image_query тепер вибирає query box із найвищим показником objectness відповідно до оригінального блокнота OWLv2, а не за евристикою OWL-ViT. Це може змінити ембединги запитів та результати детекції.
  • Депрекація префікса "paged|": Префікс "paged|" для реалізацій SDPA та Flash Attention оголошено застарілим. Замість paged|sdpa чи paged|flash_attention_2 для continuous batching слід вказувати звичайні назви реалізацій (наприклад, sdpa або flash_attention_2).
  • Підтримка continuous batching у SDPA та Flash Attention: Базові функції sdpa_attention.py та flash_attention.py отримали пряму підтримку continuous batching, а звернення через префікс "paged|..." перенаправляються до них. Для eager префікс "paged|eager" залишається обов'язковим.
  • Оновлення кешу в continuous batching: Оновлення кешу для шляхів на основі індексів (index-based) та таблиць блоків (block-table) об'єднано в один виклик, що змінює поведінку функції оновлення та впливає на кастомний код, що викликав ці шляхи окремо.

Виправлення та покращення

  • Квантований кеш: Виправлено обробку квантованого кешу — метод generate більше не мутує переданий користувачем cache_config, а також відновлено роботу QuantizedLayer.reorder_cache.
  • Навчання: У Trainer додано атрибут loss_is_scaled_for_ga, що вказує, чи масштабує compute_loss втрати для накопичення градієнтів (gradient accumulation).
  • Обчислення RoPE: Обчислення RoPE переведено на операцію множення (mul) замість матричного множення (matmul).
  • Генерація тексту:
    • Виправлено збереження маскованих оцінок EOS в експоненційному штрафі за довжину (exponential decay length penalty).
    • Виправлено рядки джерела для encoder repetition penalty після розширення батчу.
    • Виправлено підрахунок повторюваних n-грам у WatermarkDetector.
  • Робота з моделями:
    • У cohere_compass додано video до input_modalities.
    • У конфігурацію GPT-OSS додано зчитування параметрів alpha та limit для clamped SwiGLU.
    • Виправлено батчинг відео та CI для minicpm 4.6V.
    • Для DeepseekV4 видалено colwise_gather_output для lm_head.
    • Виправлено chunked prefill із багатоосьовими position_ids для Qwen3-VL.
    • Додано memory mixin для GTE.
  • Пайплайни: Застарілі пайплайни тепер виконують перенаправлення, а видалені — викликають виняток.
  • Загальні виправлення: Виправлено ігнорування seed=0 у DataCollatorForLanguageModeling.

Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо