Transformers Releases

Release v5.19.0

# Release v5.19.0 ## 新增模型 ### EmbeddingGemma2 EmbeddingGemma 2 是来自 Google 的多模态嵌入模型,基于 Gemma 4 架构构建。它将文本、图像、音频和视频,单独或合并在一个输入中,编码到一个共享的 768 维向量空间中,用于跨模态检索、语义相似度、聚类和分类。它使用 Matryoshka Representation Learning,因此嵌入可以截断为…

Release v5.19.0

新增模型

EmbeddingGemma2

EmbeddingGemma 2 是来自 Google 的多模态嵌入模型,基于 Gemma 4 架构构建。它将文本、图像、音频和视频,单独或合并在一个输入中,编码到一个共享的 768 维向量空间中,用于跨模态检索、语义相似度、聚类和分类。它使用 Matryoshka Representation Learning,因此嵌入可以截断为 512、256 或 128 维。它还提供可配置的视觉和视频 token 预算,并且在加载时可以禁用未使用的视觉或音频塔以节省内存。

链接: 文档 * Smthn smthn (#49364) 由 @vasqu 在 #49364

破坏性变更

所有路由器计算 logits 的 MoE 模型现在在 output_router_logits=True时会返回这些 logits,遵循 Qwen3-MoE 模式(基模型上有 router_logits 记录器,主干输出 MoeModelOutputWithPast ,头部输出 MoE 因果 LM 输出),因此依赖之前输出或其缺失的代码应从这些输出类中读取路由器 logits。 * 🚨 从每个计算 router logits 的 MoE 模型返回它们 (#48920) 由 @qgallouedec 提交

Owlv2ForObjectDetection.embed_image_query 现在选择 objectness 分数最高的查询框,与原始 OWLv2 notebook 一致,而不是 OWL-ViT 启发式方法,因此图像引导的查询嵌入和检测结果可能与早期版本不同。 * 🚨 通过 objectness 选择 OWLv2 图像查询 (#49200) 由 @qgallouedec 提交

SDPA 和 flash attention 实现的 "paged|" 前缀已被弃用,因此用户应为连续批处理设置常规注意力实现(例如 sdpa 或 flash_attention_2),而不是 paged|sdpa 或 paged|flash_attention_2。 * 🚨 注意 🚨 弃用 SDPA 和 flash 的 "paged|" 前缀 (#49112) 由 @remi-or 提交

常规 flash 和 SDPA 注意力函数(flash_attention.py, sdpa_attention.py)现在直接支持连续批处理,这些的 "paged|..." 实现被重定向到它们,而 eager 仍需要 "paged|eager" 前缀。 * 🚨 注意 🚨 让常规注意力支持 CB (#49101) 由 @remi-or 提交

在连续批处理中,基于索引和块表路径的缓存更新现在被融合为单个调用,这稍微改变了缓存更新函数的行为,并影响调用单独更新路径的任何自定义代码。 * 🚨 [CB] 🚨 融合索引和块表路径的更新 (#49088) 由 @remi-or 提交

为移除 "paged"做准备,连续批处理内部实现发生了变化:`max * 🚨 [CB] 🚨 移除 "paged" 前的小修复 (#49069) 由 @remi-or 提交

并行化

专家并行新增了一种 token 分发实现,通过新的 ep_dispatch_experts plan 规则选择,现已成为 Qwen3 MoE 和 Mellum 的默认方式,这消除了 EP 大小必须等于 TP 大小的要求。 Trainer 也已适配以支持专家并行,文档现在注明 PEFT 适配器支持张量并行。此外还包含一个针对流水线并行 chart2table 推理的 CI 相关修复。

  • [distributed]: 使 Trainer 支持专家并行 (#48873) by @3outeille in [#48873]
  • [distributed] 添加专家并行 token 分发,Qwen3 MoE 默认启用 (#48865) by @3outeille in [#48865]
  • 修复 pp chart2table 推理 (#49225) by @zucchini-nlp in [#49225]
  • [docs] PEFT 适配器的 TP (#49060) by @stevhliu in [#49060]

缓存

此版本修复了量化缓存处理: generate 不再修改用户的 cache_config,且 QuantizedLayer.reorder_cache 已修复。它还增加了逐层缓存配置,因此 DynamicCache 和 StaticCache 会从各自的配置初始化每一层(滑动窗口、注意力分块大小、卷积状态和注意力头数量),以更好地支持异构模型。另外,掩码和缓存的弃用周期

  • 修复量化缓存 (#48700) by @jiqing-feng in [#48700]
  • [CI] check_bad_commit:使用 EFS 缓存以避免 Xet FUSE OOM(退出码 137)(#49273) by @ydshieh in [#49273]
  • 支持逐层缓存配置 (#48178) by @eladsegal in [#48178]
  • 移除掩码和缓存的弃用周期 (#49231) by @Cyrilvallez in [#49231]

错误修复与改进

  • 回退 "[CI] 暂时禁用 AMD 定时 CI 触发" (#49271) (#49362) by @ydshieh in [#49362]
  • ALM 测试修复... (#49355),由 @zucchini-nlp 提交于 [#49355]
  • 修复 DataCollatorForLanguageModeling 忽略 seed=0 的问题 (#49349),由 @akanyaani 提交于 [#49349]
  • 修复评估模型的显式 kernelization 模式 (#49339),由 @DimensionSTP 提交于 [#49339]
  • fix(cohere_compass): 将 video 添加到 input_modalities (#49320) (#49323),由 @destopianpirate 提交于 [#49323]
  • GPT-OSS: 从 config 中读取被钳制的 SwiGLU 的 alpha 和 limit (#49346),由 @IlyasMoutawwakil 提交于 [#49346]
  • [distributed] 默认 MoE ep_plans 改为 token 分发 (#49160),由 @3outeille 提交于 [#49160]
  • 将 CI 迁移到 Python 3.11,版本在 .python-version 中设置 (#49311),由 @tarekziade 提交于 [#49311]
  • 更新 doc-builder main docs 工作流的 pin (#49350),由 @paulinebm 提交于 [#49350]
  • [distributed] 解耦 tp_plan 和 ep_plan (#48859),由 @3outeille 提交于 [#48859]
  • [distributed] 添加 dense 和 expert device mesh (#48857),由 @3outeille 提交于 [#48857]
  • 更新 doc-builder 工作流的 pin (#49342),由 @paulinebm 提交于 [#49342]
  • 允许注册新的处理后端 (#48984),由 @zucchini-nlp 提交于 [#48984]
  • 修复 WatermarkDetector 的重复 n-gram 计数 (#49315),由 @LE0-Lin 提交于 [#49315]
  • 修复 minicpm 4.6V 视频批处理和 CI (#49259),由 @zucchini-nlp 提交于 [#49259]
  • 移除 DeepseekV4 的 lm_head 的 colwise_gather_output (#49314),由 @3outeille 提交于 [#49314]
  • 修复 labels CLIPSegForImageSegmentation 的 docstring (#49001),由 @qgallouedec 提交于 [#49001]
  • [CI] 暂时禁用 AMD 定时 CI 触发器 (#49271),由 @ydshieh 提交于 [#49271]
  • 从 setup.py 依赖中移除未使用的 pandas 条目 (#49329),由 @tarekziade 提交于 [#49329]
  • 修复 run_glue.py 在 pandas>=3 下标签 id 变成字符串的问题 (#49326),由 @tarekziade 提交于 [#49326]
  • [Fix] 移除包含两个古老测试的旧测试文件 (#49280),由 @remi-or 提交于 [#49280]
  • 修复使用多轴 position id (Qwen3-VL) 时的 chunked prefill (#49319),由 @dacorvo 提交于 [#49319]
  • 能在 Mixin 中修复,为什么要覆盖 (#49105),由 @zucchini-nlp 提交于 [#49105]
  • 用 mul 代替 matmul 来执行 RoPE (#49265),由 @Rocketknight1 提交于 [#49265]
  • 已弃用的 pipeline 应当重定向;已移除的 pipeline 应当报错 (#49308),由 @LysandreJik 提交于 [#49308]
  • 在即将推出的 torch_tpu 后端上启用模型测试 (#49207),由 @tengomucho 提交于 [#49207]
  • 修复批量扩展后编码器重复惩罚的源行 (#49262),由 @gitedmond 提交于 [#49262]
  • 在指数衰减长度惩罚中保留被掩码的 EOS 分数 (#49260),由 @gitedmond 提交于 [#49260]
  • [CI] 在只需要特定产物时避免获取所有产物 (#49282),由 @ydshieh 提交于 [#49282]
  • 回退 "[CI] ssh-runner: 添加可选的 cache_type 输入以在 bucket 和 EFS 运行器之间切换 (#49159)" (#49270),由 @ydshieh 提交于 [#49270]
  • 添加 Trainer.loss_is_scaled_for_ga,用于声明 compute_loss 是否已针对梯度累积进行了缩放 (#49240),由 @qgallouedec 提交于 [#49240]
  • 修复预计算 flash kwargs 冲突的问题 (#47928),由 @IlyasMoutawwakil 提交于 [#47928]
  • 重新应用 modular examples (#49230),由 @Cyrilvallez 提交于 [#49230]
  • 移除一些不存在的内容 (#49232),作者 @Cyrilvallez,见 [#49232]
  • 移除 rotary 的弃用周期 (#49228),作者 @Cyrilvallez,见 [#49228]
  • [GTE] 添加 memory mixin (#49234),作者 @vasqu,见 [#49234]
  • [CB] 让 CB 更不依赖于具体设备并添加对 XPU 的支持 (#49156),作者 @remi-or,见 [#49156]
  • 修正从 checkpoint 恢复后的最终指标 (#49208),作者 @SunMarc,见 [#49208]
  • [ESM/Persimmon/NllbMoe/ESMFold] 使用 safetensors 仓库以修复 bucket CI runner 上的 Xet FUSE SIGBUS/IOError (#49194),作者 @ydshieh,见 [#49194]
  • 开发者更新 (#49212),作者 @vasqu,见 [#49212]

重大社区贡献

以下贡献者在最近一次发布以来对该库做出了重大更改:

  • @vasqu
    • Smthn smthn (#49364)
    • [GTE] 添加 memory mixin (#49234)
    • 开发者更新 (#49212)
  • @remi-or
    • [修复] 移除包含两个陈旧测试的旧测试文件 (#49280)
    • [CB] 让 CB 更不依赖于具体设备并添加对 XPU 的支持 (#49156)
    • 🚨 注意 🚨 弃用 SDPA 和 flash 的 "paged|" 前缀 (#49112)
    • 🚨 注意 🚨 让常规 attention 支持 CB (#49101)
    • 🚨 [CB] 🚨 为 index 和 block table 路径融合更新 (#49088)
    • [重构] 让一些 flash-attention 工具函数更易读 (#49071)
    • 🚨 [CB] 🚨 在移除 "paged" 之前的一些小修复 (#49069)
原始出处

Transformers Releases

内容说明

原始发布及相关权利归来源方。

机器翻译 · 请以原文为准