跳转到内容

FusionPulse

arti.nn.FusionPulseARTI 1.6.0 新增、并在 1.7.0 继续提供的 Alpha API。它把多个已经紧凑的 Pulse 工作区融合成一个固定容量工作区。它不会替代 Pulse,也不应用于无界原始序列。

Pulse workspaces
→ concat
→ 联合上下文 + feature-wise salience
→ Half survival
→ shared UnFold
→ 固定 [B,K,D] 工作区
import torch
from arti.nn import FusionPulse, Pulse
whole = Pulse(k=8, dim=64)(torch.randn(4, 96, 64))
regions = Pulse(k=12, dim=64)(torch.randn(4, 192, 64))
details = Pulse(k=6, dim=64)(torch.randn(4, 48, 64))
fusion = FusionPulse(k=8, dim=64)
workspace, info = fusion.concat(
whole,
regions,
details,
return_info=True,
)
assert workspace.shape == (4, 8, 64)

来源数量可以在调用间变化,concat() 也接受槽位数不同的来源。等长来源可堆叠为 [B, sources, slots, D],再调用 fusion(stacked)

来源长度不同时,为每路分别提供 [B,Nᵢ] mask。无效槽不会参与 salience、结构损失或共享 UnFold 查询。

任务损失正常训练融合工作区。如果重复观测需要合并,同时保留来源特有证据,可选的无标签结构项会施加三种压力:避免非常相似的候选同时生存、保留每个相似邻域的支持,并留下强代表。

workspace, info = fusion.concat(whole, regions, details, return_info=True)
loss = task_loss(workspace, target) + info["structural_loss"]

诊断包含 survivalsource_index、mask,以及未加权的 redundancy、support、representative 损失分量。它们是工程信号,不是任务指标,也不保证每个来源等量保留。

全局、区域与细节工作区是有用的应用模式,前提是每个视图先由自己的 Pulse 形成紧凑表示,再参与融合。这些标签没有内置语义:ARTI 只接收普通 tensor 与 mask。对齐、坐标、训练数据与任务目标仍由集成方负责。

每个尺度的原始片段 → 独立 Pulse → 紧凑工作区
紧凑工作区 → FusionPulse → 单个固定容量工作区
  • 1.7.0 继续记录 tensor 输入输出契约。
  • FusionPulse 及其结构损失默认值没有获得与 PulseUnFold 相同的冻结承诺。
  • 随机初始化没有任务含义;任何质量 claim 前都必须使用真实目标训练。
  • ARTI 1.7.0 增加由 Python 拥有的可检查导出,并提供 FusionPulse 中间张量的 Python ORT → 浏览器 WASM/WebGPU 锁定 parity fixture。
  • @arti-fit/web 只把 workspace、mask、index 等角色视为元数据,不在 JavaScript 中重新实现 FusionPulse。

可在工作区证据实验室运行官方导出工件并检查真实中间张量。