
from manim import *
class       _lowerCAmelCase  (		__magic_name__							):

 """simple docstring"""

 def      __lowerCAmelCase  (						self			:			Optional[int]   ):






      """simple docstring"""



      UpperCamelCase						    =					Rectangle(height=0.5					, width=0.5   )
      UpperCamelCase						    =					Rectangle(height=0.46					, width=0.46   ).set_stroke(width=0   )

      UpperCamelCase						    =					Rectangle(height=0.25					, width=0.25   )

      UpperCamelCase						    =					[mem.copy() for i in range(6   )]
      UpperCamelCase						    =					[mem.copy() for i in range(6   )]
      UpperCamelCase						    =					VGroup(*SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0   )
      UpperCamelCase						    =					VGroup(*SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0   )
      UpperCamelCase						    =					VGroup(SCREAMING_SNAKE_CASE__					, SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0   )
      UpperCamelCase						    =					Text('CPU'					, font_size=24   )
      UpperCamelCase						    =					Group(SCREAMING_SNAKE_CASE__					, SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0.5					, aligned_edge=SCREAMING_SNAKE_CASE__   )
      cpu.move_to([-2.5, -0.5, 0]   )
      self.add(SCREAMING_SNAKE_CASE__   )

      UpperCamelCase						    =					[mem.copy() for i in range(4   )]
      UpperCamelCase						    =					VGroup(*SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0   )
      UpperCamelCase						    =					Text('GPU'					, font_size=24   )
      UpperCamelCase						    =					Group(SCREAMING_SNAKE_CASE__					, SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0.5					, aligned_edge=SCREAMING_SNAKE_CASE__   )
      gpu.move_to([-1, -1, 0]   )
      self.add(SCREAMING_SNAKE_CASE__   )

      UpperCamelCase						    =					[mem.copy() for i in range(6   )]
      UpperCamelCase						    =					VGroup(*SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0   )

      UpperCamelCase						    =					Text('Model'					, font_size=24   )
      UpperCamelCase						    =					Group(SCREAMING_SNAKE_CASE__					, SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0.5					, aligned_edge=SCREAMING_SNAKE_CASE__   )
      model.move_to([3, -1.0, 0]   )
      self.add(SCREAMING_SNAKE_CASE__   )

      UpperCamelCase						    =					[]
      UpperCamelCase						    =					[]

      for i, rect in enumerate(SCREAMING_SNAKE_CASE__   ):
           UpperCamelCase						    =					fill.copy().set_fill(SCREAMING_SNAKE_CASE__					, opacity=0.8   )
           target.move_to(SCREAMING_SNAKE_CASE__   )
           model_arr.append(SCREAMING_SNAKE_CASE__   )

           UpperCamelCase						    =					Rectangle(height=0.46					, width=0.46   ).set_stroke(width=0.0   ).set_fill(SCREAMING_SNAKE_CASE__					, opacity=0.8   )
           cpu_target.move_to(cpu_left_col_base[i]   )
           model_cpu_arr.append(SCREAMING_SNAKE_CASE__   )

      self.add(*SCREAMING_SNAKE_CASE__					, *SCREAMING_SNAKE_CASE__   )

      UpperCamelCase						    =					[meta_mem.copy() for i in range(6   )]
      UpperCamelCase						    =					[meta_mem.copy() for i in range(6   )]
      UpperCamelCase						    =					VGroup(*SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0   )
      UpperCamelCase						    =					VGroup(*SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0   )
      UpperCamelCase						    =					VGroup(SCREAMING_SNAKE_CASE__					, SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0   )
      UpperCamelCase						    =					Text('Disk'					, font_size=24   )
      UpperCamelCase						    =					Group(SCREAMING_SNAKE_CASE__					, SCREAMING_SNAKE_CASE__   ).arrange(SCREAMING_SNAKE_CASE__					, buff=0.5					, aligned_edge=SCREAMING_SNAKE_CASE__   )
      disk.move_to([-4, -1.25, 0]   )
      self.add(SCREAMING_SNAKE_CASE__					, SCREAMING_SNAKE_CASE__   )

      UpperCamelCase						    =					Square(side_length=2.2   )
      key.move_to([-5, 2, 0]   )

      UpperCamelCase						    =					MarkupText(
          F'<b>Key:</b>\n\n<span fgcolor=\'{YELLOW}\'>●</span> Empty Model'					, font_size=18					, )

      key_text.move_to([-5, 2.4, 0]   )

      self.add(SCREAMING_SNAKE_CASE__					, SCREAMING_SNAKE_CASE__   )

      UpperCamelCase						    =					MarkupText(
          F'<span fgcolor=\'{BLUE}\'>●</span> Checkpoint'					, font_size=18					, )

      blue_text.next_to(SCREAMING_SNAKE_CASE__					, DOWN * 2.4					, aligned_edge=key_text.get_left()   )
      self.add(SCREAMING_SNAKE_CASE__   )

      UpperCamelCase						    =					MarkupText(
          F'Now watch as an input is passed through the model\nand how the memory is utilized and handled.'					, font_size=24					, )
      step_a.move_to([2, 2, 0]   )

      self.play(Write(SCREAMING_SNAKE_CASE__   )   )

      UpperCamelCase						    =					Square(0.3   )
      input.set_fill(SCREAMING_SNAKE_CASE__					, opacity=1.0   )
      input.set_stroke(width=0.0   )
      input.next_to(model_base[0]					, SCREAMING_SNAKE_CASE__					, buff=0.5   )

      self.play(Write(SCREAMING_SNAKE_CASE__   )   )

      input.generate_target()
      input.target.next_to(model_arr[0]					, direction=SCREAMING_SNAKE_CASE__					, buff=0.02   )
      self.play(MoveToTarget(SCREAMING_SNAKE_CASE__   )   )

      self.play(FadeOut(SCREAMING_SNAKE_CASE__   )   )

      UpperCamelCase						    =					Arrow(start=SCREAMING_SNAKE_CASE__					, end=SCREAMING_SNAKE_CASE__					, color=SCREAMING_SNAKE_CASE__					, buff=0.5   )
      a.next_to(model_arr[0].get_left()					, SCREAMING_SNAKE_CASE__					, buff=0.2   )

      model_cpu_arr[0].generate_target()
      model_cpu_arr[0].target.move_to(gpu_rect[0]   )

      UpperCamelCase						    =					MarkupText(
          F'As the input reaches a layer, the hook triggers\nand weights are moved from the CPU\nto the GPU and back.'					, font_size=24					, )
      step_a.move_to([2, 2, 0]   )

      self.play(Write(SCREAMING_SNAKE_CASE__					, run_time=3   )   )

      UpperCamelCase						    =					{'run_time': 1, 'fade_in': True, 'fade_out': True, 'buff': 0.02}

      self.play(
          Write(SCREAMING_SNAKE_CASE__   )					, Circumscribe(model_arr[0]					, color=SCREAMING_SNAKE_CASE__					, **SCREAMING_SNAKE_CASE__   )					, Circumscribe(model_cpu_arr[0]					, color=SCREAMING_SNAKE_CASE__					, **SCREAMING_SNAKE_CASE__   )					, Circumscribe(gpu_rect[0]					, color=SCREAMING_SNAKE_CASE__					, **SCREAMING_SNAKE_CASE__   )					, )
      self.play(MoveToTarget(model_cpu_arr[0]   )   )

      UpperCamelCase						    =					a.copy()
      for i in range(6   ):
           a_c.next_to(model_arr[i].get_right() + 0.02					, SCREAMING_SNAKE_CASE__					, buff=0.2   )

           input.generate_target()
           input.target.move_to(model_arr[i].get_right() + 0.02   )

           UpperCamelCase						    =					AnimationGroup(
               FadeOut(SCREAMING_SNAKE_CASE__					, run_time=0.5   )					, MoveToTarget(SCREAMING_SNAKE_CASE__					, run_time=0.5   )					, FadeIn(SCREAMING_SNAKE_CASE__					, run_time=0.5   )					, lag_ratio=0.2   )

           self.play(SCREAMING_SNAKE_CASE__   )

           model_cpu_arr[i].generate_target()
           model_cpu_arr[i].target.move_to(cpu_left_col_base[i]   )

           if i < 5:
                model_cpu_arr[i + 1].generate_target()
                model_cpu_arr[i + 1].target.move_to(gpu_rect[0]   )
                if i >= 1:
                     UpperCamelCase						    =					0.7

                self.play(
                    Circumscribe(model_arr[i]					, **SCREAMING_SNAKE_CASE__   )					, Circumscribe(cpu_left_col_base[i]					, **SCREAMING_SNAKE_CASE__   )					, Circumscribe(cpu_left_col_base[i + 1]					, color=SCREAMING_SNAKE_CASE__					, **SCREAMING_SNAKE_CASE__   )					, Circumscribe(gpu_rect[0]					, color=SCREAMING_SNAKE_CASE__					, **SCREAMING_SNAKE_CASE__   )					, Circumscribe(model_arr[i + 1]					, color=SCREAMING_SNAKE_CASE__					, **SCREAMING_SNAKE_CASE__   )					, )
                if i < 1:
                     self.play(
                         MoveToTarget(model_cpu_arr[i]   )					, MoveToTarget(model_cpu_arr[i + 1]   )					, )
                else:
                     self.play(
                         MoveToTarget(model_cpu_arr[i]					, run_time=0.7   )					, MoveToTarget(model_cpu_arr[i + 1]					, run_time=0.7   )					, )
           else:
                model_cpu_arr[i].generate_target()
                model_cpu_arr[i].target.move_to(cpu_left_col_base[-1]   )
                input.generate_target()
                input.target.next_to(model_arr[-1].get_right()					, RIGHT + 0.02					, buff=0.2   )

                self.play(
                    Circumscribe(model_arr[-1]					, color=SCREAMING_SNAKE_CASE__					, **SCREAMING_SNAKE_CASE__   )					, Circumscribe(cpu_left_col_base[-1]					, color=SCREAMING_SNAKE_CASE__					, **SCREAMING_SNAKE_CASE__   )					, Circumscribe(gpu_rect[0]					, color=SCREAMING_SNAKE_CASE__					, **SCREAMING_SNAKE_CASE__   )					, )

                self.play(MoveToTarget(model_cpu_arr[i]   )   )

           UpperCamelCase						    =					a_c
           UpperCamelCase						    =					a_c.copy()

      input.generate_target()
      input.target.next_to(model_base[-1]					, RIGHT + 0.02					, buff=0.5   )
      self.play(
          FadeOut(SCREAMING_SNAKE_CASE__   )					, FadeOut(SCREAMING_SNAKE_CASE__					, run_time=0.5   )					, )

      UpperCamelCase						    =					MarkupText(F'Inference on a model too large for GPU memory\nis successfully completed.'					, font_size=24   )
      step_a.move_to([2, 2, 0]   )

      self.play(Write(SCREAMING_SNAKE_CASE__					, run_time=3   )					, MoveToTarget(SCREAMING_SNAKE_CASE__   )   )

      self.wait()




import logging

from transformers import PretrainedConfig


_snake_case      = logging.getLogger(__name__)


_snake_case      = {
    '''bertabs-finetuned-cnndm''': '''https://huggingface.co/remi/bertabs-finetuned-cnndm-extractive-abstractive-summarization/resolve/main/config.json''',
}
class       _lowerCAmelCase  (		__magic_name__							):

 """simple docstring"""
 SCREAMING_SNAKE_CASE_				:					int       						="bertabs"

 def __init__(						self			:			Optional[int]					, SCREAMING_SNAKE_CASE__			:			Union[str, Any]=3_05_22					, SCREAMING_SNAKE_CASE__			:			Union[str, Any]=5_12					, SCREAMING_SNAKE_CASE__			:			List[Any]=6					, SCREAMING_SNAKE_CASE__			:			List[str]=5_12					, SCREAMING_SNAKE_CASE__			:			Union[str, Any]=8					, SCREAMING_SNAKE_CASE__			:			List[str]=5_12					, SCREAMING_SNAKE_CASE__			:			List[Any]=0.2					, SCREAMING_SNAKE_CASE__			:			Tuple=6					, SCREAMING_SNAKE_CASE__			:			Any=7_68					, SCREAMING_SNAKE_CASE__			:			str=8					, SCREAMING_SNAKE_CASE__			:			Dict=20_48					, SCREAMING_SNAKE_CASE__			:			List[str]=0.2					, **SCREAMING_SNAKE_CASE__			:			List[str]					, ):






      """simple docstring"""



      super().__init__(**SCREAMING_SNAKE_CASE__   )

      UpperCamelCase						    =					vocab_size
      UpperCamelCase						    =					max_pos

      UpperCamelCase						    =					enc_layers
      UpperCamelCase						    =					enc_hidden_size
      UpperCamelCase						    =					enc_heads
      UpperCamelCase						    =					enc_ff_size
      UpperCamelCase						    =					enc_dropout

      UpperCamelCase						    =					dec_layers
      UpperCamelCase						    =					dec_hidden_size
      UpperCamelCase						    =					dec_heads
      UpperCamelCase						    =					dec_ff_size
      UpperCamelCase						    =					dec_dropout


