def METHOD_NAME(placement_config: dict, model_name: str, model_init_func: Callable):
    set_seed(19360226)
    get_components_func = non_distributed_component_funcs.get_callable(model_name)
    model_builder, train_dataloader, test_dataloader, optimizer_class, criterion = get_components_func()
    torch_model = model_builder().cuda()
    amp_config = dict(opt_level='O2', keep_batchnorm_fp32=False, loss_scale=128)
    torch_optim = torch.optim.Adam(torch_model.parameters(), lr=1e-3)
    torch_model, torch_optim = convert_to_apex_amp(torch_model, torch_optim, amp_config)
    torch_model = DDP(torch_model, device_ids=[dist.get_rank()])
    init_dev = get_current_device()
    model = model_builder().to(init_dev)
    for torch_p, p in zip(torch_model.parameters(), model.parameters()):
        p.data.copy_(torch_p.data)
    model = model_init_func(model, placement_config)
    optimizer = HybridAdam(model.parameters(), lr=1e-3)
    zero_optim = GeminiOptimizer(optimizer, model, initial_scale=128)
    model.eval()
    torch_model.eval()
    set_seed(dist.get_rank() * 3 + 128)
    train_dataloader = iter(train_dataloader)
    def train_iter():
        input_ids, label = next(train_dataloader)
        input_ids, label = input_ids.cuda(), label.cuda()
        zero_optim.zero_grad()
        torch_optim.zero_grad()
        torch_loss = run_fwd_bwd(torch_model, input_ids, label, criterion, torch_optim)
        loss = run_fwd_bwd(model, input_ids, label, criterion, zero_optim)
        assert_close(torch_loss, loss, rtol=1e-5, atol=1e-5)
        zero_optim.step()
        torch_optim.step()
        check_param(model, torch_model)
    def inference_iter():
        input_ids, label = next(train_dataloader)
        input_ids, label = input_ids.cuda(), label.cuda()
        with torch.no_grad():
            torch_output = torch_model(input_ids)
            torch_loss = criterion(torch_output.float(), label)
            zero_output = model(input_ids)
            zero_loss = criterion(zero_output.float(), label)
        assert_close(torch_loss, zero_loss)
    train_iter()
    inference_iter()
    train_iter()