code: 
  
  '''simple docstring'''
  
  
  
  
  
  import json
  from typing import List, Optional, Tuple
  
  from tokenizers import normalizers
  
  from ...tokenization_utils_fast import PreTrainedTokenizerFast
  from ...utils import logging
  from .tokenization_layoutlm import LayoutLMTokenizer
  
  
  lowerCamelCase     =      logging.get_logger(__name__)
  
  lowerCamelCase     =      {'''vocab_file''': '''vocab.txt''', '''tokenizer_file''': '''tokenizer.json'''}
  
  lowerCamelCase     =      {
      '''vocab_file''': {
          '''microsoft/layoutlm-base-uncased''': (
              '''https://huggingface.co/microsoft/layoutlm-base-uncased/resolve/main/vocab.txt'''
          ),
          '''microsoft/layoutlm-large-uncased''': (
              '''https://huggingface.co/microsoft/layoutlm-large-uncased/resolve/main/vocab.txt'''
          ),
      },
      '''tokenizer_file''': {
          '''microsoft/layoutlm-base-uncased''': (
              '''https://huggingface.co/microsoft/layoutlm-base-uncased/resolve/main/tokenizer.json'''
          ),
          '''microsoft/layoutlm-large-uncased''': (
              '''https://huggingface.co/microsoft/layoutlm-large-uncased/resolve/main/tokenizer.json'''
          ),
      },
  }
  
  lowerCamelCase     =      {
      '''microsoft/layoutlm-base-uncased''': 512,
      '''microsoft/layoutlm-large-uncased''': 512,
  }
  
  lowerCamelCase     =      {
      '''microsoft/layoutlm-base-uncased''': {'''do_lower_case''': True},
      '''microsoft/layoutlm-large-uncased''': {'''do_lower_case''': True},
  }
  
  
  
  
  
  
  
  class 		__magic_name__    (							lowerCamelCase__							):
  
     '''simple docstring'''
  
  
  
  
     lowerCamelCase__				:			List[str]												=     VOCAB_FILES_NAMES
     lowerCamelCase__				:			Dict												=     PRETRAINED_VOCAB_FILES_MAP
     lowerCamelCase__				:			List[Any]												=     PRETRAINED_INIT_CONFIGURATION
     lowerCamelCase__				:			Tuple												=     PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
     lowerCamelCase__				:			Optional[Any]												=     LayoutLMTokenizer
  
  
  
     def __init__(       self,					lowercase_=None,					lowercase_=None,					lowercase_=True,					lowercase_="[UNK]",					lowercase_="[SEP]",					lowercase_="[PAD]",					lowercase_="[CLS]",					lowercase_="[MASK]",					lowercase_=True,					lowercase_=None,					**lowercase_,					)							->					Tuple:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       super().__init__(
           lowercase_,					tokenizer_file=lowercase_,					do_lower_case=lowercase_,					unk_token=lowercase_,					sep_token=lowercase_,					pad_token=lowercase_,					cls_token=lowercase_,					mask_token=lowercase_,					tokenize_chinese_chars=lowercase_,					strip_accents=lowercase_,					**lowercase_,					)
  
       a__						=json.loads(self.backend_tokenizer.normalizer.__getstate__() )
       if (
           normalizer_state.get('''lowercase''',					lowercase_ ) != do_lower_case
           or normalizer_state.get('''strip_accents''',					lowercase_ ) != strip_accents
           or normalizer_state.get('''handle_chinese_chars''',					lowercase_ ) != tokenize_chinese_chars
       ):
         a__						=getattr(lowercase_,					normalizer_state.pop('''type''' ) )
         a__						=do_lower_case
         a__						=strip_accents
         a__						=tokenize_chinese_chars
         a__						=normalizer_class(**lowercase_ )
  
       a__						=do_lower_case
  
  
  
     def 				_UpperCAmelCase				(       self,					lowercase_,					lowercase_=None )							->					int:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       a__						=[self.cls_token_id] + token_ids_a + [self.sep_token_id]
  
       if token_ids_a:
         output += token_ids_a + [self.sep_token_id]
  
       return output
  
  
  
     def 				_UpperCAmelCase				(       self,					lowercase_,					lowercase_ = None )							->					List[int]:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       a__						=[self.sep_token_id]
       a__						=[self.cls_token_id]
       if token_ids_a is None:
         return len(cls + token_ids_a + sep ) * [0]
       return len(cls + token_ids_a + sep ) * [0] + len(token_ids_a + sep ) * [1]
  
  
  
     def 				_UpperCAmelCase				(       self,					lowercase_,					lowercase_ = None )							->					Tuple[str]:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       a__						=self._tokenizer.model.save(lowercase_,					name=lowercase_ )
       return tuple(lowercase_ )
  
style_context: 
  
  import os
  import random
  from pathlib import Path
  from typing import List
  
  import numpy as np
  import torch
  from torch.cuda.amp import GradScaler
  
  from .utils import (
      MODEL_NAME,
      OPTIMIZER_NAME,
      RNG_STATE_NAME,
      SCALER_NAME,
      SCHEDULER_NAME,
      get_pretty_name,
      is_tpu_available,
      is_xpu_available,
      save,
  )
  
  
  if is_tpu_available(check_device=False):
         import torch_xla.core.xla_model as xm
  
  from .logging import get_logger
  from .state import PartialState
  
  
  lowerCamelCase     =      get_logger(__name__)
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				str			,   _A   :				List[dict]			,   _A   :				list			,   _A   :				list			,   _A   :				int			,   _A   :				GradScaler = None			,   ):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    for i, state in enumerate(_A							):
      a__						=F"""{MODEL_NAME}.bin""" if i == 0 else F"""{MODEL_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      save(_A			,   _A							)
      logger.info(F"""Model weights saved in {output_model_file}"""							)
    # Optimizer states
    for i, opt in enumerate(_A							):
      a__						=opt.state_dict()
      a__						=F"""{OPTIMIZER_NAME}.bin""" if i == 0 else F"""{OPTIMIZER_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      save(_A			,   _A							)
      logger.info(F"""Optimizer state saved in {output_optimizer_file}"""							)
    # Scheduler states
    for i, scheduler in enumerate(_A							):
      a__						=scheduler.state_dict()
      a__						=F"""{SCHEDULER_NAME}.bin""" if i == 0 else F"""{SCHEDULER_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      save(_A			,   _A							)
      logger.info(F"""Scheduler state saved in {output_scheduler_file}"""							)
    # GradScaler state
    if scaler is not None:
      a__						=scaler.state_dict()
      a__						=os.path.join(_A			,   _A							)
      torch.save(_A			,   _A							)
      logger.info(F"""Gradient scaler state saved in {output_scaler_file}"""							)
    # Random number generator states
    a__						={}
    a__						=F"""{RNG_STATE_NAME}_{process_index}.pkl"""
    a__						=random.getstate()
    a__						=np.random.get_state()
    a__						=torch.get_rng_state()
    if is_xpu_available():
      a__						=torch.xpu.get_rng_state_all()
    else:
      a__						=torch.cuda.get_rng_state_all()
    if is_tpu_available():
      a__						=xm.get_rng_state()
    a__						=os.path.join(_A			,   _A							)
    torch.save(_A			,   _A							)
    logger.info(F"""Random states saved in {output_states_file}"""							)
    return output_dir
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				Union[str, Any]			,   _A   :				int			,   _A   :				int			,   _A   :				Union[str, Any]			,   _A   :				Tuple			,   _A   :				Optional[int]=None			,   _A   :				List[Any]=None			,   **_A   :				Dict			,   ):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    if map_location not in [None, "cpu", "on_device"]:
      raise TypeError(
          '''Unsupported optimizer map location passed, please choose one of `None`, `\'cpu\'`, or `\'on_device\'`'''							)
    if map_location is None:
      a__						='''cpu'''
    elif map_location == "on_device":
      a__						=PartialState().device
    # Model states
    for i, model in enumerate(_A							):
      a__						=F"""{MODEL_NAME}.bin""" if i == 0 else F"""{MODEL_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      models[i].load_state_dict(torch.load(_A			,   map_location=_A							)			,   **_A							)
    logger.info('''All model weights loaded successfully'''							)
  
    # Optimizer states
    for i, opt in enumerate(_A							):
      a__						=F"""{OPTIMIZER_NAME}.bin""" if i == 0 else F"""{OPTIMIZER_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      a__						=torch.load(_A			,   map_location=_A							)
      optimizers[i].load_state_dict(_A							)
    logger.info('''All optimizer states loaded successfully'''							)
  
    # Scheduler states
    for i, scheduler in enumerate(_A							):
      a__						=F"""{SCHEDULER_NAME}.bin""" if i == 0 else F"""{SCHEDULER_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      scheduler.load_state_dict(torch.load(_A							)							)
    logger.info('''All scheduler states loaded successfully'''							)
  
    # GradScaler state
    if scaler is not None:
      a__						=os.path.join(_A			,   _A							)
      scaler.load_state_dict(torch.load(_A							)							)
      logger.info('''GradScaler state loaded successfully'''							)
  
    # Random states
    try:
      a__						=torch.load(os.path.join(_A			,   F"""{RNG_STATE_NAME}_{process_index}.pkl"""							)							)
      random.setstate(states['''random_state''']							)
      np.random.set_state(states['''numpy_random_seed''']							)
      torch.set_rng_state(states['''torch_manual_seed''']							)
      if is_xpu_available():
        torch.xpu.set_rng_state_all(states['''torch_xpu_manual_seed''']							)
      else:
        torch.cuda.set_rng_state_all(states['''torch_cuda_manual_seed''']							)
      if is_tpu_available():
        xm.set_rng_state(states['''xm_seed''']							)
      logger.info('''All random states loaded successfully'''							)
    except Exception:
      logger.info('''Could not load random states'''							)
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				Optional[Any]			,   _A   :				Any			,   _A   :				int = 0							):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    a__						=Path(_A							) / F"""custom_checkpoint_{index}.pkl"""
    logger.info(F"""Saving the state of {get_pretty_name(_A							)} to {save_location}"""							)
    torch.save(obj.state_dict()			,   _A							)
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				int			,   _A   :				Any			,   _A   :				int = 0							):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    a__						=F"""{path}/custom_checkpoint_{index}.pkl"""
    logger.info(F"""Loading the state of {get_pretty_name(_A							)} from {load_location}"""							)
    obj.load_state_dict(torch.load(_A			,   map_location='''cpu'''							)							)
  