class_docstr: TorchRankerAgent implementation of the biencoder.
  
  It is a standalone Agent. It might be called by the Both Encoder.
code: def encode_candidates(self, padded_cands):
      token_idx_cands, segment_idx_cands, mask_cands = to_bert_input(
          padded_cands, self.NULL_IDX
      )
      _, embedding_cands = self.model(
          None,
          None,
          None,
          token_idx_cands,
          segment_idx_cands,
          mask_cands,
      )
  
      return embedding_cands.cpu().detach()
  
imports: from typing import Optional
  from parlai.core.params import ParlaiParser
  from parlai.core.opt import Opt
  from parlai.core.torch_ranker_agent import TorchRankerAgent
  from parlai.utils.torch import padded_3d
  from parlai.zoo.bert.build import download
  from parlai.utils.io import PathManager
  from .bert_dictionary import BertDictionaryAgent
  from .helpers import BertWrapper, BertModel, add_common_args, surround, MODEL_PATH
  import os
  import torch
  from tqdm import tqdm
label_desc: Use image node_id 7 for calling the BiEncoderRankerAgent obj's underlying member method code with example usage: obj.encode_candidates(padded_cands) and returns: embedding_cands