def build_model(self, args):
        from fairseq import models
        model = models.build_model(args, self)

        model.register_classification_head(
            'sentence_classification_head',
            num_classes=1,
        )

        return model
Exemple #2
0
    def build_model(self, args):
        from fairseq import models
        model = models.build_model(args, self)

        model.register_classification_head(
            getattr(args, 'classification_head_name', 'sentence_classification_head'),
            num_classes=self.args.num_classes,
        )

        return model
 def build_model(self, args):
     from fairseq import models
     model = models.build_model(args, self)
     if args.multiple_encoders == 'False' and not isinstance(model, FairseqFactoredOneEncoderModel):
         raise ValueError('FactoredTranslationTask with one encoder requires a '
                          'FairseqFactoredOneEncoderModel architecture')
     if not args.multiple_encoders == 'False' and (not isinstance(model, FairseqFactoredMultiModel) and not isinstance(model, FairseqFactoredMultiSumModel)):
         raise ValueError('FactoredTranslationTask with multiple encoders requires a '
                          'FairseqFactoredMultiModel or FairseqFactoredMultiSumModel architecture')
     return model
Exemple #4
0
    def build_model(self, args):
        from fairseq import models
        model = models.build_model(args, self)

        model.register_classification_list(
            'funcbound',
            num_classes=self.args.num_classes,
        )

        return model
Exemple #5
0
    def _test_full_ensemble_export(self, test_args):
        samples, src_dict, tgt_dict = test_utils.prepare_inputs(test_args)

        num_models = 3
        model_list = []
        for _ in range(num_models):
            model_list.append(models.build_model(test_args, src_dict,
                                                 tgt_dict))
        encoder_ensemble = EncoderEnsemble(model_list)

        # test equivalence
        # The discrepancy in types here is a temporary expedient.
        # PyTorch indexing requires int64 while support for tracing
        # pack_padded_sequence() requires int32.
        sample = next(samples)
        src_tokens = sample["net_input"]["src_tokens"][0:1].t()
        src_lengths = sample["net_input"]["src_lengths"][0:1].int()

        pytorch_encoder_outputs = encoder_ensemble(src_tokens, src_lengths)

        decoder_step_ensemble = DecoderStepEnsemble(model_list, beam_size=5)

        tmp_dir = tempfile.mkdtemp()
        decoder_step_pb_path = os.path.join(tmp_dir, "decoder_step.pb")
        decoder_step_ensemble.onnx_export(decoder_step_pb_path,
                                          pytorch_encoder_outputs)

        # single EOS
        input_token = torch.LongTensor(
            np.array([[model_list[0].dst_dict.eos()]]))
        timestep = torch.LongTensor(np.array([[0]]))

        pytorch_decoder_outputs = decoder_step_ensemble(
            input_token, timestep, *pytorch_encoder_outputs)

        onnx_decoder = caffe2_backend.prepare_zip_archive(decoder_step_pb_path)

        decoder_inputs_numpy = [input_token.numpy(), timestep.numpy()]
        for tensor in pytorch_encoder_outputs:
            decoder_inputs_numpy.append(tensor.detach().numpy())

        caffe2_decoder_outputs = onnx_decoder.run(tuple(decoder_inputs_numpy))

        for i in range(len(pytorch_decoder_outputs)):
            caffe2_out_value = caffe2_decoder_outputs[i]
            pytorch_out_value = pytorch_decoder_outputs[i].detach().numpy()
            np.testing.assert_allclose(caffe2_out_value,
                                       pytorch_out_value,
                                       rtol=1e-4,
                                       atol=1e-6)

        decoder_step_ensemble.save_to_db(
            os.path.join(tmp_dir, "decoder_step.predictor_export"),
            pytorch_encoder_outputs,
        )
Exemple #6
0
    def build_model(self, args):
        from fairseq import models

        model = models.build_model(args, self)

        model.register_classification_head(
            getattr(args, "ranking_head_name", "sentence_classification_head"),
            num_classes=1,
        )

        return model
    def build_model(self, args):
        from fairseq import models
        model = models.build_model(args, self)
        xml_estimator = None
        estimator = None

        if not self.uniform_prior and not hasattr(model, 'gating_network'):
            if self.args.mean_pool_gating_network:
                if getattr(args, 'mean_pool_gating_network_encoder_dim', None):
                    encoder_dim = args.mean_pool_gating_network_encoder_dim
                elif getattr(args, 'encoder_embed_dim', None):
                    # assume that encoder_embed_dim is the encoder's output dimension
                    encoder_dim = args.encoder_embed_dim
                else:
                    raise ValueError('Must specify --mean-pool-gating-network-encoder-dim')

                if getattr(args, 'mean_pool_gating_network_dropout', None):
                    dropout = args.mean_pool_gating_network_dropout
                elif getattr(args, 'dropout', None):
                    dropout = args.dropout
                else:
                    raise ValueError('Must specify --mean-pool-gating-network-dropout')

                model.gating_network = modules.MeanPoolGatingNetwork(
                    encoder_dim, args.num_experts, dropout,
                )
            else:
                raise ValueError(
                    'translation_moe task with learned prior requires the model to '
                    'have a gating network; try using --mean-pool-gating-network'
                )
        if self.share_xml_dict:
            estimator = Estimator(self.estimator_hidden_dim, args.estimator_xml_dim + args.estimator_transformer_dim,
                                  dropout, topk_time_step=self.topk_time_step)
        elif self.estimator_xml_only:
            estimator = Estimator(self.estimator_hidden_dim, args.estimator_xml_dim, dropout,
                                  topk_time_step=self.topk_time_step)
        elif args.estimator_transformer_dim != 0:
            if self.share_estimator:
                estimator = Estimator(self.estimator_hidden_dim, args.estimator_transformer_dim, dropout,
                                      share_estimator=True, topk_time_step=self.topk_time_step)
            else:
                estimator = Estimator(self.estimator_hidden_dim, args.estimator_transformer_dim, dropout,
                                      topk_time_step=self.topk_time_step)
            if args.estimator_xml_dim != 0:
                xml_estimator = Estimator(self.estimator_hidden_dim, args.estimator_xml_dim, dropout,
                                          topk_time_step=self.topk_time_step)
        else:
            raise ValueError(
                'translation_moe task with learned prior requires the model to '
                'have a gating network; try using --mean-pool-gating-network'
            )

        return model, estimator, xml_estimator
    def build_model(self, args):
        from fairseq import models, quantization_utils
        
        model = models.build_model(args, self)

        model.register_classification_head(
            getattr(args, "classification_head_name", "sentence_classification_head"),
            num_classes=self.args.num_classes,
        )
        model = quantization_utils.quantize_model_scalar(model, args)
        return model
Exemple #9
0
    def build_model(self, args):
        from fairseq import models
        model = models.build_model(args, self)

        model.register_classification_head(
            'sentence_classification_head',
            num_classes=self.args.num_classes,
        )
        #print(model,"sentece_prediction.py")

        return model
Exemple #10
0
    def build_model(self, args):
        # Check if task args are consistant with model args
        if len(set(self.args.lang_pairs).symmetric_difference(args.lang_pairs)) != 0:
            raise ValueError('--lang-pairs should include all the language pairs {}.'.format(args.lang_pairs))

        from fairseq import models
        model = models.build_model(args, self)
        from .laser_lstm import LaserModel
        if not isinstance(model, LaserModel):
            raise ValueError('TranslationLaserTask requires a LaserModel architecture')
        return model
Exemple #11
0
    def build_model(self, args, from_checkpoint=False):
        from fairseq import models

        model = models.build_model(args, self)

        model.register_classification_head(
            "sentence_classification_head",
            num_classes=1,
        )

        return model
 def test_basic_generate(self):
     test_args = test_utils.ModelParamsDict()
     _, src_dict, tgt_dict = test_utils.prepare_inputs(test_args)
     model = models.build_model(test_args, src_dict, tgt_dict)
     translator = beam_decode.SequenceGenerator([model])
     src_tokens = torch.LongTensor([[0, 0, 0], [0, 0, 0]])
     src_lengths = torch.LongTensor([3, 3])
     translator.generate(
         src_tokens=src_tokens,
         src_lengths=src_lengths,
     )
 def build_model(self, args):
     model = models.build_model(args, self)
     self.model = model
     if not isinstance(model, FairseqMultiModel):
         raise ValueError(
             "PytorchTranslateSemiSupervised task requires a FairseqMultiModel "
             "architecture")
     forward_pair = "-".join([self.source_lang, self.target_lang])
     backward_pair = "-".join([self.target_lang, self.source_lang])
     self.forward_model = model.models[forward_pair]
     self.backward_model = model.models[backward_pair]
     return model
Exemple #14
0
    def build_model(self, args):
        if self.retrieve_fn is None:
            from fairseq import models
            model = models.build_model(args, self)

            def retrieve_fn(samples, split, model_=model):
                return model_.classifier(samples, split)

            self.retrieve_fn = retrieve_fn
            self.model = model

        return self.model
    def build_model(self, args):
        from fairseq import models
        model = models.build_model(args, self)

        for mp in model.parameters():
            mp.requires_grad = False

        model.register_lm_head(
            'lm_head_probe',
            num_embeddings=len(args.probe_features.split(",")) + 1)

        return model
Exemple #16
0
    def test_char_rnn_equivalent(self):
        """Ensure that the CharRNNEncoder.onnx_export_model path does not
        change computation"""
        test_args = test_utils.ModelParamsDict(encoder_bidirectional=True,
                                               sequence_lstm=True)
        lexical_dictionaries = test_utils.create_lexical_dictionaries()
        test_args.vocab_reduction_params = {
            "lexical_dictionaries": lexical_dictionaries,
            "num_top_words": 5,
            "max_translation_candidates_per_word": 1,
        }

        test_args.arch = "char_source"
        test_args.char_source_dict_size = 126
        test_args.char_embed_dim = 8
        test_args.char_rnn_units = 12
        test_args.char_rnn_layers = 2

        _, src_dict, tgt_dict = test_utils.prepare_inputs(test_args)

        num_models = 3
        model_list = []
        for _ in range(num_models):
            model_list.append(models.build_model(test_args, src_dict,
                                                 tgt_dict))
        encoder_ensemble = CharSourceEncoderEnsemble(model_list)

        length = 5
        src_tokens = torch.LongTensor(
            np.random.randint(0, len(src_dict), (length, 1), dtype="int64"))
        src_lengths = torch.IntTensor(np.array([length], dtype="int32"))
        word_length = 3
        char_inds = torch.LongTensor(
            np.random.randint(0, 126, (1, length, word_length), dtype="int64"))
        word_lengths = torch.IntTensor(
            np.array([word_length] * length, dtype="int32")).reshape(
                (1, length))

        onnx_path_outputs = encoder_ensemble(src_tokens, src_lengths,
                                             char_inds, word_lengths)

        for model in encoder_ensemble.models:
            model.encoder.onnx_export_model = False

        original_path_outputs = encoder_ensemble(src_tokens, src_lengths,
                                                 char_inds, word_lengths)

        for (onnx_out, original_out) in zip(onnx_path_outputs,
                                            original_path_outputs):
            onnx_array = onnx_out.detach().numpy()
            original_array = original_out.detach().numpy()
            assert onnx_array.shape == original_array.shape
            np.testing.assert_allclose(onnx_array, original_array)
Exemple #17
0
    def build_model(self, args):
        """
        Build the :class:`~fairseq.models.BaseFairseqModel` instance for this
        task.

        Args:
            args (argparse.Namespace): parsed command-line arguments

        Returns:
            a :class:`~fairseq.models.BaseFairseqModel` instance
        """
        from fairseq import models
        return models.build_model(args, self)
    def build_model(self, args):
        from fairseq import models
        model = models.build_model(args, self)

        for mp in model.parameters():
            mp.requires_grad = False

        model.register_classification_head(
            'sentence_classification_head_probe',
            num_classes=self.args.num_classes,
        )

        return model
Exemple #19
0
    def build_model(self, args):
        """
        Build the :class:`~fairseq.models.BaseFairseqModel` instance for this
        task.

        Args:
            args (argparse.Namespace): parsed command-line arguments

        Returns:
            a :class:`~fairseq.models.BaseFairseqModel` instance
        """
        from fairseq import models
        return models.build_model(args, self)
    def build_model(self, args):
        from fairseq import models

        model = models.build_model(args, self)

        # register a SpanPredictionHead
        register_span_prediction_head(
            model,
            args,
            "span_prediction_head",
            num_classes=2,
        )
        assert "span_prediction_head" in model.classification_heads
        return model
Exemple #21
0
    def build_model(self, args):
        from fairseq import models

        model = models.build_model(args, self)

        register_dependency_parse_head(
            model,
            args,
            "dependency_parse_head",
            num_classes0=args.num_classes0,
        )
        assert "dependency_parse_head" in model.classification_heads

        return model
    def build_model(self, args):
        from fairseq import models

        model = models.build_model(args, self)

        register_sequence_tagging_head(
            model,
            args,
            "sequence_tagging_head",
            num_classes=args.num_classes,
        )
        assert "sequence_tagging_head" in model.classification_heads

        return model
Exemple #23
0
    def build_model(self, args):
        from fairseq import models
        model = models.build_model(args, self)

        model.register_classification_head(
            'classification_head',
            num_classes=self.args.num_classes,
        )
        
        model.remove_momentum_encoder()
        model.remove_lm_head()
        if args.no_state:
            model.remove_state()

        return model
Exemple #24
0
    def build_model(self, cfg):
        from fairseq import models

        with open_dict(cfg) if OmegaConf.is_config(
                cfg) else contextlib.ExitStack():
            cfg.max_positions = self.cfg.max_positions

        model = models.build_model(cfg, self)

        model.register_classification_head(
            self.cfg.classification_head_name,
            num_classes=self.cfg.num_classes,
        )

        return model
    def build_model(self, args):

        from fairseq import models

        model = models.build_model(
            args, self
        )  #/home/gsir059/Documents/PhD/MulFie/fairseq/fairseq/models/__init__.py'
        print("Model Initialization Done")
        model.register_classification_head(
            'emotion_classification_head_old',
            num_classes=self.args.num_classes,
        )
        #print(model,"sentece_prediction.py")

        return model
Exemple #26
0
    def build_model(self, args):
        """
        Build the :class:`~fairseq.models.BaseFairseqModel` instance for this
        task.

        Args:
            args (argparse.Namespace): parsed command-line arguments

        Returns:
            a :class:`~fairseq.models.BaseFairseqModel` instance
        """
        from fairseq import models, quantization_utils

        model = models.build_model(args, self)
        return quantization_utils.quantize_model_scalar(model, args)
Exemple #27
0
 def build_model(self, args):
     model = models.build_model(args, self)
     if not isinstance(model, SemiSupervisedModel):
         raise ValueError(
             "PytorchTranslateDenoisingAutoencoder task requires a "
             "SemiSupervisedModel architecture")
     # TODO(T35539829): implement a Noising registry so this can be built
     # with any noising class as long as it has a @register_noising decorator
     self.noiser = noising.UnsupervisedMTNoising(
         dictionary=self.source_dictionary,
         max_word_shuffle_distance=args.max_word_shuffle_distance,
         word_dropout_prob=args.word_dropout_prob,
         word_blanking_prob=args.word_blanking_prob,
     )
     return model
Exemple #28
0
    def build_model(self, args):
        #  from .modeling import BertMultiwayMatch
        #  model = BertMultiwayMatch.from_pretrained(args.bert_model,
        #                                        cache_dir=PYTORCH_PRETRAINED_BERT_CACHE / 'distributed_{}'.format(
        #                                            args.local_rank),
        #                                     num_choices=args.num_labels)
        from fairseq import models
        model = models.build_model(args, self)

        model.register_classification_head(
          'sentence_classification_head',
           num_classes=1,
        )

        return model
Exemple #29
0
    def build_model(self, args):
        from fairseq import models
        model = models.build_model(args, self)
        model.register_ke_head(
            args.ke_head_name,
            gamma=args.gamma,
            nrelations=args.nrelation
        )
        if self.args.double_ke:
            model.register_ke_head(
                args.ke_head_name2,
                gamma=args.gamma2,
                nrelations=args.nrelation2
            )

        return model
Exemple #30
0
    def build_model(self, cfg: FairseqDataclass):
        """
        Build the :class:`~fairseq.models.BaseFairseqModel` instance for this
        task.

        Args:
            cfg (FairseqDataclass): configuration object

        Returns:
            a :class:`~fairseq.models.BaseFairseqModel` instance
        """
        from fairseq import models, quantization_utils

        model = models.build_model(cfg, self)
        model = quantization_utils.quantize_model_scalar(model, cfg)
        return model
Exemple #31
0
    def _test_forced_decoder_export(self, test_args):
        _, src_dict, tgt_dict = test_utils.prepare_inputs(test_args)

        num_models = 3
        model_list = []
        for _ in range(num_models):
            model_list.append(models.build_model(test_args, src_dict,
                                                 tgt_dict))

        forced_decoder_ensemble = ForcedDecoder(model_list,
                                                word_reward=0.25,
                                                unk_reward=-0.5)

        tmp_dir = tempfile.mkdtemp()
        forced_decoder_pb_path = os.path.join(tmp_dir, "forced_decoder.pb")
        forced_decoder_ensemble.onnx_export(forced_decoder_pb_path)