Ejemplo n.º 1
0
def build_MTLtrainer(args, device_id, model, optims, optims_inner, loss):
    """Builds the trainer class for MTL

    Args:
        device_id (int): the GPU id to be used
        model (models.model_builder.MTLAbsSummarizer')
        optims (list[models.optimizers.Optimizer])
        optims_inner (list[models.optimizer.Optimizer])
        loss (models.loss.NMTLossCompute)

    Returns:
        A object in type pipelines.trainer_abs_mtl.MTLTrainer.
    """

    device = "cpu" if args.visible_gpus == '-1' else "cuda"
    grad_accum_count = args.accum_count
    n_gpu = args.world_size
    if device_id >= 0:
        gpu_rank = int(args.gpu_ranks[device_id])
    else:
        gpu_rank = 0
        n_gpu = 0
    print('gpu_rank %d' % gpu_rank)

    # Prepare tensorborad writer
    writer = SummaryWriter(args.log_path, comment="Unmt")

    # Prepare report manager
    report_manager = ReportMgr(args.report_every,
                               start_time=-1,
                               tensorboard_writer=writer)
    report_inner_manager = ReportMgr(args.report_inner_every,
                                     start_time=-1,
                                     tensorboard_writer=writer)

    # Prepare trainer
    trainer = MTLTrainer(args, model, optims, optims_inner, loss,
                         grad_accum_count, n_gpu, gpu_rank, report_manager,
                         report_inner_manager)

    # Show # of (trainable) parameters
    if (model):
        n_params = _tally_parameters(model)
        trainable_n_params = _tally_trainable_parameters(model)
        logger.info('Number of parameters: %d' % n_params)
        logger.info('Number of trainalbe parameters: %d' % trainable_n_params)

    return trainer
Ejemplo n.º 2
0
def build_trainer(args, device_id, model, optims, tokenizer):
    """
    Simplify `Trainer` creation based on user `opt`s*
    Args:
        opt (:obj:`Namespace`): user options (usually from argument parsing)
        model (:obj:`onmt.models.NMTModel`): the model to train
        fields (dict): dict of fields
        optim (:obj:`onmt.utils.Optimizer`): optimizer used during training
        data_type (str): string describing the type of data
            e.g. "text", "img", "audio"
        model_saver(:obj:`onmt.models.ModelSaverBase`): the utility object
            used to save the model
    """
    device = "cpu" if args.visible_gpus == '-1' else "cuda"

    grad_accum_count = args.accum_count
    n_gpu = args.world_size

    if device_id >= 0:
        gpu_rank = int(args.gpu_ranks[device_id])
    else:
        gpu_rank = 0
        n_gpu = 0

    print('gpu_rank %d' % gpu_rank)

    tensorboard_log_dir = args.model_path

    writer = SummaryWriter(tensorboard_log_dir, comment="Unmt")

    report_manager = ReportMgr(args.report_every,
                               start_time=-1,
                               tensorboard_writer=writer)

    symbols = {
        'BOS': tokenizer.vocab['[unused1]'],
        'EOS': tokenizer.vocab['[unused2]'],
        'PAD': tokenizer.vocab['[PAD]'],
        'SEG': tokenizer.vocab['[unused3]'],
        'UNK': tokenizer.vocab['[UNK]']
    }

    gen_loss = abs_loss(args,
                        model.generator,
                        symbols,
                        tokenizer.vocab,
                        device,
                        train=True)

    pn_loss = CrossEntropyLossCompute().to(device)

    trainer = Trainer(args, model, optims, tokenizer, gen_loss, pn_loss,
                      grad_accum_count, n_gpu, gpu_rank, report_manager)

    # print(tr)
    if (model):
        n_params = _tally_parameters(model)
        logger.info('* number of parameters: %d' % n_params)

    return trainer
Ejemplo n.º 3
0
def build_trainer(args, model, optim):

    gpu_rank = 0
    print('gpu_rank %d' % gpu_rank)
    report_manager = ReportMgr(args.report_every, start_time=-1)
    trainer = Trainer(args, model, optim, report_manager)

    return trainer
Ejemplo n.º 4
0
def build_trainer(args, device_id, model, optims, loss):
    """
    Simplify `Trainer` creation based on user `opt`s*
    Args:
        opt (:obj:`Namespace`): user options (usually from argument parsing)
        model (:obj:`onmt.models.NMTModel`): the model to train
        fields (dict): dict of fields
        optim (:obj:`onmt.utils.Optimizer`): optimizer used during training
        data_type (str): string describing the type of data
            e.g. "text", "img", "audio"
        model_saver(:obj:`onmt.models.ModelSaverBase`): the utility object
            used to save the model
    """
    device = "cpu" if args.visible_gpus == '-1' else "cuda"

    grad_accum_count = args.accum_count
    n_gpu = args.world_size

    if device_id >= 0:
        gpu_rank = int(args.gpu_ranks[device_id])
    else:
        gpu_rank = 0
        n_gpu = 0

    print('gpu_rank %d' % gpu_rank)

    report_manager = None
    if not args.debug:
        tensorboard_log_dir = args.model_path

        writer = SummaryWriter(tensorboard_log_dir, comment="Unmt")

        report_manager = ReportMgr(args.report_every,
                                   start_time=-1,
                                   tensorboard_writer=writer)

    trainer = Trainer(args, model, optims, loss, grad_accum_count, n_gpu,
                      gpu_rank, report_manager)

    # print(tr)
    if (model):
        n_params = _tally_parameters(model)
        logger.info('* number of parameters: %d' % n_params)

    return trainer
Ejemplo n.º 5
0
def build_trainer(args, device_id, model, optims,loss):
    device = "cpu" if args.visible_gpus == '-1' else "cuda"
    grad_accum_count = args.accum_count
    n_gpu = args.world_size
    if device_id >= 0:
        gpu_rank = int(args.gpu_ranks[device_id])
    else:
        gpu_rank = 0
        n_gpu = 0
    print('gpu_rank %d' % gpu_rank)

    tensorboard_log_dir = args.model_path
    writer = SummaryWriter(tensorboard_log_dir, comment="Unmt")
    report_manager = ReportMgr(args.report_every, start_time=-1, tensorboard_writer=writer)
    trainer = Trainer(args, model, optims, loss, grad_accum_count, n_gpu, gpu_rank, report_manager)

    if (model):
        n_params = _tally_parameters(model)
        logger.info('* number of parameters: %d' % n_params)

    return trainer
Ejemplo n.º 6
0
def build_trainer(args, device_id, model,
                  optim):
    grad_accum_count = args.accum_count
    n_gpu = 1
    if device_id < 0:
        n_gpu = 0

    gpu_rank = 0

    tensorboard_log_dir = args.model_path

    writer = SummaryWriter(tensorboard_log_dir, comment="Unmt")

    report_manager = ReportMgr(args.report_every, start_time=-1, tensorboard_writer=writer)

    trainer = Trainer(args, model, optim, grad_accum_count, n_gpu, gpu_rank, report_manager)

    n_params, enc, dec = _tally_parameters(model)
    logger.info('encoder: %d' % enc)
    logger.info('decoder: %d' % dec)
    logger.info('* number of parameters: %d' % n_params)

    return trainer