class_docstr: ## Evaluation Harness Adapter
  
  This is based on the [adapter from EleutherAI/gpt-neox](https://github.com/EleutherAI/gpt-neox/blob/main/eval_tasks/eval_adapter.py)
docstr: :param tokenizer: is the [Huggingface Tokenizer](huggingface/tokenizers)
  :param vocab_size: is the size of the vocabulary
   (this differs from the tokenizer vocab size since neox adds some extra to make the embedding layer
   model parallel.)
  :param batch_size: is the batch size
docstr_tok: [":","param","tokenizer",":","is","the","[","Huggingface","Tokenizer","]","(","huggingface\/tokenizers",")",":","param","vocab_size",":","is","the","size","of","the","vocabulary","(","this","differs","from","the","tokenizer","vocab","size","since","neox","adds","some","extra","to","make","the","embedding","layer","model","parallel",".",")",":","param","batch_size",":","is","the","batch","size"]
code: def __init__(
      self, tokenizer: Tokenizer, vocab_size: int, batch_size: int
  ):
      """
      :param tokenizer: is the [Huggingface Tokenizer](huggingface/tokenizers)
      :param vocab_size: is the size of the vocabulary
       (this differs from the tokenizer vocab size since neox adds some extra to make the embedding layer
       model parallel.)
      :param batch_size: is the batch size
      """
      super().__init__()
      self.tokenizer = tokenizer
      self._eot_token_id = self.tokenizer.token_to_id("<|endoftext|>")
      self._vocab_size = vocab_size
  
      self._batch_size = batch_size
  
imports: import math
  from typing import List
  import torch
  import torch.nn.functional
  from lm_eval import tasks, evaluator, utils
  from lm_eval.base import BaseLM
  from tokenizers import Tokenizer
  from torch import nn
  from tqdm import tqdm
  from labml import monit
  from labml_nn.neox.tokenizer import get_tokenizer
label_desc: Use image node_id 1 to create a new EvalHarnessAdapter object from inherited base classes: BaseLM with example: obj = EvalHarnessAdapter(tokenizer, vocab_size, batch_size)