Module neuralops.tests.test_part1_hierarchical_dedup

Part 1 Verification: Hierarchical Prefix Deduplication (RCA-1).

Functions

def set_seed()
Expand source code
@pytest.fixture(autouse=True)
def set_seed():
    torch.manual_seed(42)
def test_gpt2_dedup()
Expand source code
def test_gpt2_dedup():
    cfg = GPT2Config(n_layer=4, n_head=4, n_embd=64, vocab_size=100)
    model = GPT2ForSequenceClassification(cfg)
    attns = get_attention_modules(model)
    assert len(attns) == 4
    for name, mod in attns:
        assert name.endswith(".attn")
def test_nested_container_prefix_drop()
Expand source code
def test_nested_container_prefix_drop():
    class DeepLeaf(nn.Module):
        def __init__(self):
            super().__init__()
            self.q_proj = nn.Linear(32, 32)
    class Middle(nn.Module):
        def __init__(self):
            super().__init__()
            self.self_attn = DeepLeaf()
    class Outer(nn.Module):
        def __init__(self):
            super().__init__()
            self.middle = Middle()
            self.dense = nn.Linear(32, 32)
    class Model(nn.Module):
        def __init__(self):
            super().__init__()
            self.layers = nn.ModuleList([Outer() for _ in range(3)])

    m = Model()
    leaves = get_attention_modules(m)
    assert len(leaves) == 3
    for name, mod in leaves:
        assert name.endswith(".middle.self_attn")
def test_roberta_leaf_only()
Expand source code
def test_roberta_leaf_only():
    cfg = RobertaConfig(num_hidden_layers=4, num_attention_heads=4, hidden_size=64, vocab_size=100)
    model = RobertaForSequenceClassification(cfg)
    attns = get_attention_modules(model)
    assert len(attns) == 4
    for name, mod in attns:
        assert name.endswith(".attention.self")
def test_t5_encoder_decoder_counts()
Expand source code
def test_t5_encoder_decoder_counts():
    cfg = T5Config(num_layers=2, num_decoder_layers=2, num_heads=2, d_model=32, d_kv=16, d_ff=64, vocab_size=100)
    model = T5ForConditionalGeneration(cfg)
    attns = get_attention_modules(model)
    # 2 self in encoder + 2 self + 2 cross in decoder = 6
    assert len(attns) == 6