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
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
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', )
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
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')
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
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')
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', )
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
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', )
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
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', )
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()
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()
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
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
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()
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