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"