|
|
|
from typing import List, Tuple
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
import torch
|
|
|
|
|
|
|
|
try:
|
|
|
|
from timm.models.vision_transformer import vit_large_patch16_384 as vit
|
|
|
|
|
|
|
|
MODELS = [vit]
|
|
|
|
HAS_REPO = True
|
|
|
|
except:
|
|
|
|
MODELS = []
|
|
|
|
HAS_REPO = False
|
|
|
|
|
|
|
|
from test_autochunk_vit_utils import run_test
|
|
|
|
|
|
|
|
from colossalai.autochunk.autochunk_codegen import AUTOCHUNK_AVAILABLE
|
|
|
|
from colossalai.testing import clear_cache_before_run, parameterize, spawn
|
|
|
|
|
|
|
|
|
|
|
|
def get_data() -> Tuple[List, List]:
|
|
|
|
data = torch.rand(1, 3, 384, 384)
|
|
|
|
meta_args = {"x": data}
|
|
|
|
return data, meta_args
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.skipif(
|
|
|
|
not (AUTOCHUNK_AVAILABLE and HAS_REPO),
|
|
|
|
reason="torch version is lower than 1.12.0",
|
|
|
|
)
|
|
|
|
@clear_cache_before_run()
|
|
|
|
@parameterize("model", MODELS)
|
|
|
|
@parameterize("max_memory", [None, 32, 40])
|
|
|
|
def test_evoformer_block(model, max_memory):
|
|
|
|
spawn(
|
|
|
|
run_test,
|
|
|
|
1,
|
|
|
|
max_memory=max_memory,
|
|
|
|
model=model,
|
|
|
|
data=get_data(),
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
run_test(
|
|
|
|
rank=0,
|
|
|
|
data=get_data(),
|
|
|
|
max_memory=None,
|
|
|
|
model=vit,
|
|
|
|
print_code=False,
|
|
|
|
print_mem=False,
|
|
|
|
print_est_mem=False,
|
|
|
|
print_progress=False,
|
|
|
|
)
|