EmergentTwilight/MMCoT / projects /ThinkMorph-edited /tests /test_eval_packed_forward.py
EmergentTwilight's picture
download
raw
1.87 kB
import pytest
import torch
from modeling.bagel import qwen2_navit
from modeling.bagel.qwen2_navit import (
PackedAttention,
PackedAttentionMoT,
Qwen2DecoderLayer,
Qwen2ForCausalLM,
Qwen2MoEDecoderLayer,
Qwen2Model,
Qwen2MoTDecoderLayer,
)
PACKED_MODULES = [
PackedAttention,
PackedAttentionMoT,
Qwen2DecoderLayer,
Qwen2MoTDecoderLayer,
Qwen2MoEDecoderLayer,
Qwen2Model,
Qwen2ForCausalLM,
]
def test_standard_attention_import_does_not_compile_unused_flex_attention():
assert qwen2_navit._compiled_flex_attention is None
@pytest.mark.parametrize("module_type", PACKED_MODULES)
def test_eval_mode_packed_call_uses_training_forward_contract(module_type):
model = object.__new__(module_type)
torch.nn.Module.__init__(model)
expected = object()
def forward_train(*, packed_sequence):
assert packed_sequence is expected
return "packed"
def forward_inference(*, packed_query_sequence):
raise AssertionError("packed SFT input was routed to inference")
model.forward_train = forward_train
model.forward_inference = forward_inference
model.eval()
assert model(packed_sequence=expected) == "packed"
@pytest.mark.parametrize("module_type", PACKED_MODULES)
def test_query_call_uses_inference_contract_independent_of_mode(module_type):
model = object.__new__(module_type)
torch.nn.Module.__init__(model)
expected = object()
def forward_train(*, packed_sequence):
raise AssertionError("inference input was routed to packed SFT")
def forward_inference(*, packed_query_sequence):
assert packed_query_sequence is expected
return "inference"
model.forward_train = forward_train
model.forward_inference = forward_inference
model.train()
assert model(packed_query_sequence=expected) == "inference"

Xet Storage Details

Size:
1.87 kB
·
Xet hash:
2d76671850238baa708ca91f175077c8f789791322266ad407124ae62e28cc58

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.