Example #1
0
 def add_cmdline_args(cls,
                      parser: ParlaiParser,
                      partial_opt: Optional[Opt] = None) -> ParlaiParser:
     """
     Override to add one arg.
     """
     TransformerGeneratorAgent.add_cmdline_args(parser,
                                                partial_opt=partial_opt)
     TorchImageAgent.add_cmdline_args(parser, partial_opt=partial_opt)
     group = parser.add_argument_group('Image Encoder Args')
     group.add_argument(
         '--include-image-token',
         type='bool',
         default=True,
         recommended=True,
         help=
         'if true, include image token (or no image token) for each example',
     )
     group.add_argument(
         '--image-fusion-type',
         type=str,
         default='late',
         choices=[f.value for f in FusionType],
         help='which fusion type to use',
     )
     return group
Example #2
0
 def add_cmdline_args(cls, argparser):
     """
     Add command-line arguments specifically for this agent.
     """
     DistillNarrowTransformerAgentMixin.add_cmdline_args(argparser)
     TransformerGeneratorAgent.add_cmdline_args(argparser)
     return argparser
Example #3
0
 def add_cmdline_args(argparser: ParlaiParser):
     """
     Add command-line arguments specifically for this agent.
     """
     TransformerGeneratorAgent.add_cmdline_args(argparser)
     parser = argparser.add_argument_group(
         'RetNRef Transformer Generator Agent Args')
     parser.add_argument(
         '--use-knowledge',
         type='bool',
         default=False,
         help='Use knowledge to generate response.',
     )
     parser.add_argument(
         '--add-knowledge-to-history',
         type='bool',
         default=False,
         help='using knowledge as temp history if True.',
     )
     parser.add_argument(
         '--chosen-sentence',
         type='bool',
         default=True,
         help='instead of using all knowledge, use gold'
         'label, i.e. the chosen sentence',
     )
Example #4
0
 def add_cmdline_args(
     cls, parser: ParlaiParser, partial_opt: Optional[Opt] = None
 ) -> ParlaiParser:
     """
     Add command-line arguments specifically for this agent.
     """
     DistillTransformerAgentMixin.add_cmdline_args(parser, partial_opt=partial_opt)
     TransformerGeneratorAgent.add_cmdline_args(parser, partial_opt=partial_opt)
     return parser
Example #5
0
 def add_cmdline_args(argparser: ParlaiParser):
     """
     Add command-line arguments specifically for this agent.
     """
     TransformerGeneratorAgent.add_cmdline_args(argparser)
     argparser.add_argument(
         '--nidf',
         type='int',
         default=4,
         help=
         'nidf of weighted decoding , see https://arxiv.org/abs/1902.08654')
Example #6
0
 def add_cmdline_args(cls,
                      parser: ParlaiParser,
                      partial_opt: Optional[Opt] = None) -> ParlaiParser:
     """
     Add command-line arguments specifically for this agent.
     """
     TransformerGeneratorAgent.add_cmdline_args(parser,
                                                partial_opt=partial_opt)
     AbstractGeneratorRerankAgentMixin.add_cmdline_args(parser, partial_opt)
     reranker_class = cls.get_reranker_class() or AbstractReranker
     reranker_class.add_cmdline_args(parser, partial_opt=partial_opt)
     return parser
Example #7
0
 def add_cmdline_args(argparser: ParlaiParser):
     """
     Override to add init-fairseq-model arg.
     """
     TransformerGeneratorAgent.add_cmdline_args(argparser)
     group = argparser.add_argument_group('Bart Args')
     group.add_argument(
         '--init-fairseq-model',
         type=str,
         default=None,
         help='fairseq checkpoint for bart',
     )
     argparser.set_defaults(dict_tokenizer='gpt2')
Example #8
0
 def add_cmdline_args(cls, argparser):
     """
     Override to add one arg.
     """
     TransformerGeneratorAgent.add_cmdline_args(argparser)
     TorchImageAgent.add_cmdline_args(argparser)
     group = argparser.add_argument_group('Image Encoder Args')
     group.add_argument(
         '--include-image-token',
         type='bool',
         default=True,
         recommended=True,
         help='if true, include image token (or no image token) for each example',
     )
Example #9
0
 def add_cmdline_args(cls,
                      parser: ParlaiParser,
                      partial_opt: Optional[Opt] = None) -> ParlaiParser:
     TransformerGeneratorAgent.add_cmdline_args(
         parser, partial_opt=partial_opt)  # add transformer args
     parser.add_argument(
         '--n-positions-init',
         type=int,
         default=None,
         hidden=True,
         help='Number of positional embeddings from the init model. Defaults '
         'to truncate or 1024 if not provided.',
     )
     return parser
Example #10
0
 def add_cmdline_args(argparser: ParlaiParser):
     """
     Add command-line arguments specifically for this agent.
     """
     TransformerGeneratorAgent.add_cmdline_args(argparser)
     argparser.add_argument(
         '--response-num',
         type=int,
         default=1,
         help='response number of when act',
     )
     argparser.add_argument(
         '--response-sep',
         type=str,
         default='__ressep__',
         help='response resperator',
     )
Example #11
0
 def add_cmdline_args(
     cls, parser: ParlaiParser, partial_opt: Optional[Opt] = None
 ) -> ParlaiParser:
     TransformerGeneratorAgent.add_cmdline_args(parser, partial_opt=partial_opt)
     # Add transformer args.
     parser.add_argument(
         '--ladder-size',
         type=int,
         default=1,
         help='Number of ladder steps, default is not to use ladder.',
     )
     parser.add_argument(
         '--hash-size', type=int, default=32, help='Number of hash bins.'
     )
     parser.add_argument(
         '--hash-layer',
         type=int,
         default=7,
         help='Layer number the Hash Layer appears on.',
     )
     return parser
Example #12
0
 def add_cmdline_args(cls, argparser):
     """
     Override to add one arg.
     """
     TransformerGeneratorAgent.add_cmdline_args(argparser)
     TorchImageAgent.add_cmdline_args(argparser)
     group = argparser.add_argument_group('Image Encoder Args')
     group.add_argument(
         '--include-image-token',
         type='bool',
         default=True,
         recommended=True,
         help=
         'if true, include image token (or no image token) for each example',
     )
     group.add_argument(
         '--image-fusion-type',
         type=str,
         default='late',
         choices=[f.value for f in FusionType],
         help='which fusion type to use',
     )
Example #13
0
        def run_conversation(mturk_manager, opt, workers):
            mturk_agent = workers[0]

            model_agent = TransformerGeneratorAgent(opt=opt)

            world = ModelEvaluatorWorld(
                opt=opt,
                model_agent=model_agent,
                task_opt=task_opt,
                mturk_agent=mturk_agent,
            )

            while not world.episode_done():
                world.parley()
            world.shutdown()
            world.review_work()
Example #14
0
def main():
    argparser = ParlaiParser(False, False)
    argparser.add_parlai_data_path()
    argparser.add_mturk_args()

    # The dialog model we want to evaluate
    from parlai.agents.transformer.transformer import TransformerGeneratorAgent
    from parlai.agents.ir_baseline.ir_baseline import IrBaselineAgent

    TransformerGeneratorAgent.add_cmdline_args(argparser)
    opt = argparser.parse_args()
    opt['task'] = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
    opt.update(task_config)

    # The task that we will evaluate the dialog model on
    task_opt = {}
    task_opt['datatype'] = 'test'
    task_opt['datapath'] = opt['datapath']
    task_opt['task'] = 'dailydialog:NoStart'
    opt['dict_file'] = '/home/christian/developer/cs767hw4/models/test.dict'
    opt['model_file'] = '/home/christian/developer/cs767hw4/models/test.checkpoint'
    opt['truncate'] = 64
    opt['inference'] = 'mmi'
    opt['beam_size'] = 32
    opt['no_cuda'] = True

    mturk_agent_id = 'Worker'
    mturk_manager = MTurkManager(opt=opt, mturk_agent_ids=[mturk_agent_id])
    mturk_manager.setup_server()  # task_name="dialo-mturk-eval", exists=True

    try:
        mturk_manager.start_new_run()
        mturk_manager.create_hits()

        def run_onboard(worker):
            world = ModelEvaluatorOnboardWorld(opt=opt, mturk_agent=worker)
            while not world.episode_done():
                world.parley()
            world.shutdown()

        mturk_manager.set_onboard_function(onboard_function=run_onboard)
        mturk_manager.ready_to_accept_workers()

        def check_worker_eligibility(worker):
            return True

        def assign_worker_roles(worker):
            worker[0].id = mturk_agent_id

        global run_conversation

        def run_conversation(mturk_manager, opt, workers):
            mturk_agent = workers[0]

            model_agent = TransformerGeneratorAgent(opt=opt)

            world = ModelEvaluatorWorld(
                opt=opt,
                model_agent=model_agent,
                task_opt=task_opt,
                mturk_agent=mturk_agent,
            )

            while not world.episode_done():
                world.parley()
            world.shutdown()
            world.review_work()

        mturk_manager.start_task(
            eligibility_function=check_worker_eligibility,
            assign_role_function=assign_worker_roles,
            task_function=run_conversation,
        )
    except BaseException:
        raise
    finally:
        mturk_manager.expire_all_unassigned_hits()
        mturk_manager.shutdown()
Example #15
0
    def add_cmdline_args(
        cls, parser: ParlaiParser, partial_opt: Optional[Opt] = None
    ) -> ParlaiParser:
        PolyencoderAgent.add_cmdline_args(parser, partial_opt)
        TransformerGeneratorAgent.add_cmdline_args(parser, partial_opt)
        MultiObjectiveAgentBase.add_cmdline_args(parser, partial_opt)
        agent = parser.add_argument_group('Multi-Objective Generator Arguments')
        agent.add_argument(
            '--character-key',
            type=str,
            default='full_text',
            help='key from which to extract characters',
        )
        agent.add_argument(
            '--character-candidates-key',
            type=str,
            default='full_text',
            help='key from which to extract character candidates (i.e., candidates for ranking)',
        )
        agent.add_argument(
            '--multiobjective-latent-representation',
            type=str,
            default='decoder_final_layer',
            choices=[
                'encoder_final_layer',
                'decoder_final_layer',
                'encoder_and_decoder',
            ],
            help='Which latent representation from the base model to pass to the extra layers',
        )
        agent.add_argument(
            '--multiobjective-loss-ratio',
            type=float,
            default=0.5,
            help='ratio of multiobjective loss to normal loss',
        )
        agent.add_argument(
            '--multiobjective-loss',
            type=str,
            default='full',
            help='Type of Multi-Objective loss to apply to this model, while training: '
            'full ==> use the full teacher-forced output distributions as input to the classifier\n'
            'partial ==> each partial output is classified as its own example. weights of the classifier '
            'are kept constant\n'
            'sliced ==> we arbitrarily slice the full output to compute partial-output losses\n'
            'Can specify multiple via comma-separation.',
        )
        agent.add_argument(
            '--multiobjective-full-loss-backprop',
            type=str,
            default='all',
            choices=['all', 'extra_layers', 'base_model'],
            help='Which parameters to train with the multiobjective full output loss',
        )
        agent.add_argument(
            '--multiobjective-sliced-loss-backprop',
            type=str,
            default='all',
            choices=['all', 'extra_layers', 'base_model'],
            help='Which parameters to train with the multiobjective sliced output loss',
        )
        agent.add_argument(
            '--multiobjective-partial-loss-backprop',
            type=str,
            default='base_model',
            choices=['all', 'extra_layers', 'base_model'],
            help='Which parameters to train with the multiobjective partial output loss',
        )
        agent.add_argument(
            '--partial-output-loss-threshold',
            type=float,
            default=-1,
            help='threshold of full loss at which point partial output loss can be computed'
            'e.g., if set to 10, we dont compute partial loss until full loss reaches 10 or lower',
        )
        agent.add_argument(
            '--sliced-output-loss-threshold',
            type=float,
            default=-1,
            help='threshold of full loss at which point sliced output loss can be computed'
            'e.g., if set to 10, we dont compute sliced loss until full loss reaches 10 or lower',
        )

        return parser
Example #16
0
 def add_cmdline_args(
     cls, parser: ParlaiParser, partial_opt: Optional[Opt] = None
 ) -> ParlaiParser:
     TransformerGeneratorAgent.add_cmdline_args(
         parser, partial_opt=partial_opt
     )  # add transformer args
     expanded_attn = parser.add_argument_group('Expanded Attention Arguments')
     expanded_attn.add_argument(
         '--expanded-attention-init-weights',
         type=str,
         default='random',
         choices=['random', 'encoder_attention'],
         help='how to initialize the expanded attention module.\n'
         'random: initialize weights randomly\n'
         'encoder_attention: initialize weights from encoder_attention weights\n',
     )
     expanded_attn.add_argument(
         '--expanded-attention-share-weights',
         type='bool',
         default=True,
         help='If true, share the weights from the normal encoder attention '
         'with the extra attention (reduce network parameters).',
     )
     expanded_attn.add_argument(
         '--expanded-attention-input-key',
         type=str,
         default='full_text',
         help='Key in observation from which to extract the expanded attn input',
     )
     expanded_attn.add_argument(
         '--expanded-attention-self-character-key',
         type=str,
         default='self_character',
         help='Key in observation with model\'s character',
     )
     expanded_attn.add_argument(
         '--expanded-attention-input-extractor-phrases',
         type=str,
         default='_self_name,_self_persona,_partner_name',
         help='How to extract expanded attention input from the observation\n'
         'Default are phrases from LIGHT',
     )
     expanded_attn.add_argument(
         '--expanded-attention-type',
         type=str,
         choices=['profile', 'automated_classifier', 'automated_trainable_mask'],
         default='profile',
         help='Method of incorporating expanded attention. `profile` manually extracts from '
         'provided context in `--expanded-attention-input-key`, while `automated` uses a separate '
         'classifier to choose the tokens to which we re-attend.',
     )
     expanded_attn.add_argument(
         '--expanded-attention-num-rounds',
         type=int,
         default=1,
         help='how many rounds to re-apply expanded attention',
     )
     ### Classifier Attention
     expanded_attn.add_argument(
         '--automated-expanded-attention-n-tokens',
         type=int,
         default=125,
         help='If using automated attention, how many tokens do we re-attend to.',
     )
     expanded_attn.add_argument(
         '--expanded-attention-classifier-model-file',
         type=str,
         default=None,
         help='specified classifier model if using classifier attention to choose tokens',
     )
     expanded_attn.add_argument(
         '--expanded-attention-classifier-truncate',
         type=int,
         default=510,
         help='Truncation for the classifier.',
     )
     return parser
Example #17
0
def main():
    argparser = ParlaiParser(False, True)
    argparser.add_parlai_data_path()
    argparser.add_mturk_args()

    # The dialog model we want to evaluate
    from parlai.agents.transformer.transformer import TransformerGeneratorAgent as Agent

    Agent.add_cmdline_args(argparser)
    opt = argparser.parse_args()
    opt['task'] = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
    opt.update(task_config)

    opt['interactive_mode'] = True
    opt['interactive_task'] = True

    # The task that we will evaluate the dialog model on
    task_opt = {}
    task_opt['datatype'] = 'test'
    task_opt['datapath'] = opt['datapath']
    task_opt['task'] = 'interactive'

    mturk_agent_id = 'Worker'
    mturk_manager = MTurkManager(opt=opt, mturk_agent_ids=[mturk_agent_id])
    mturk_manager.setup_server()

    try:
        mturk_manager.start_new_run()
        mturk_manager.ready_to_accept_workers()
        mturk_manager.create_hits()

        def run_onboard(worker):
            world = ModelEvaluatorOnboardWorld(opt=opt, mturk_agent=worker)
            while not world.episode_done():
                world.parley()
            world.shutdown()

        mturk_manager.set_onboard_function(onboard_function=run_onboard)

        def check_worker_eligibility(worker):
            return True

        def assign_worker_roles(worker):
            worker[0].id = mturk_agent_id

        global run_conversation

        def run_conversation(mturk_manager, opt, workers):
            mturk_agent = workers[0]
            
            model_agent = create_agent(opt, requireModelExists=True)
            #model_agent = Agent(opt=opt)

            world = ModelEvaluatorWorld(
                opt=opt,
                model_agent=model_agent,
                task_opt=task_opt,
                mturk_agent=mturk_agent,
            )

            while not world.episode_done():
                world.parley()
            world.shutdown()
            world.review_work()

        mturk_manager.start_task(
            eligibility_function=check_worker_eligibility,
            assign_role_function=assign_worker_roles,
            task_function=run_conversation,
        )
    except BaseException:
        raise
    finally:
        mturk_manager.expire_all_unassigned_hits()
        mturk_manager.shutdown()
Example #18
0
 def add_cmdline_args(
     cls, parser: ParlaiParser, partial_opt: Optional[Opt] = None
 ) -> ParlaiParser:
     TransformerGeneratorAgent.add_cmdline_args(parser, partial_opt=partial_opt)
     PacerAgentMixin.add_cmdline_args(parser, partial_opt=partial_opt)
     return parser