fusion-llm-demo / tests /test_sbla_integration.py
zhan1206
Fix tests: FusionMiniLayer Q/K/V reshape + logging import + pytest compat
83efc18
Raw
History Blame
1.96 kB
def test_sbla_integration():
"""测试 SBLA 注意力集成"""
import sys
import torch
sys.path.insert(0, '.')
from models.fusion_mini import FusionMini, FusionMiniConfig
print("测试 SBLA 注意力集成...")
print()
# 1. 创建配置
print("[1] 创建配置...")
config = FusionMiniConfig(
vocab_size=1000,
hidden_size=128,
num_hidden_layers=2,
num_attention_heads=4,
)
print(" 配置创建成功")
print(f" 隐层大小:{config.hidden_size}")
print(f" 层数:{config.num_hidden_layers}")
print()
# 2. 创建模型
print("[2] 创建模型(包含 SBLA 注意力)...")
model = FusionMini(config)
print(" 模型创建成功")
param_count = sum(p.numel() for p in model.parameters()) / 1e3
print(f" 参数量:{param_count:.1f}K")
print()
# 3. 测试前向传播
print("[3] 测试前向传播...")
input_ids = torch.randint(0, 1000, (2, 64))
print(f" 输入形状:{input_ids.shape}")
outputs = model.forward(input_ids=input_ids, labels=input_ids)
loss_value = outputs.loss.item()
print(f" 前向传播成功")
print(f" Loss:{loss_value:.4f}")
print()
# 4. 验证 SBLA 是否使用
print("[4] 验证 SBLA 注意力...")
has_sbla = any("SBLAttention" in str(module) for module in model.modules())
if has_sbla:
print(" SBLA 注意力已集成到模型中")
else:
print(" 未检测到 SBLA 注意力(可能使用了标准注意力)")
print()
print("所有测试通过!")
print()
print("下一步:")
print(" 1. 重新训练模型(使用 SBLA 注意力)")
print(" 2. 对比标准注意力和 SBLA 的性能")
print(" 3. 推送代码到 GitHub")
assert has_sbla, "SBLA attention not found in model"
assert loss_value > 0, "Loss should be positive"