def METHOD_NAME(cls, args, task):
    """Build a new model instance."""
    if not has_megatron_submodule:
        raise ImportError(
            "\n\nPlease install the megatron submodule:"
            "\n\n  git submodule update --init "
            "fairseq/model_parallel/megatron"
        )
    # make sure all arguments are present in older models
    base_lm_architecture(args)
    task.source_dictionary.pad_to_multiple_(args.model_parallel_size * 8)
    task.target_dictionary.pad_to_multiple_(args.model_parallel_size * 8)
    if args.decoder_layers_to_keep:
        args.decoder_layers = len(args.decoder_layers_to_keep.split(","))
    if getattr(args, "max_target_positions", None) is None:
        args.max_target_positions = getattr(
            args, "tokens_per_sample", DEFAULT_MAX_TARGET_POSITIONS
        )
    if args.character_embeddings:
        raise NotImplementedError(
            "Character embeddings is not supported for model parallel"
        )
    elif args.adaptive_input:
        raise NotImplementedError(
            "Adaptive input is not supported for model parallel"
        )
    else:
        embed_tokens = cls.build_embedding(
            args, task.source_dictionary, args.decoder_input_dim
        )
    decoder = ModelParallelTransformerDecoder(
        args,
        task.target_dictionary,
        embed_tokens,
        no_encoder_attn=True,
    )
    return cls(decoder)