
"""simple docstring"""

from manim import *
class      _UpperCAmelCase							(		__UpperCAmelCase							):




						def     a_      (							self							)						->					Tuple:
										UpperCAmelCase									=					Rectangle(height=0.5   ,       width=0.5							)
										UpperCAmelCase									=					Rectangle(height=0.2_5   ,       width=0.2_5							)
										UpperCAmelCase									=					Rectangle(height=0.4_6   ,       width=0.4_6							).set_stroke(width=0							)

										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=2_4							)
										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=2_4							)
										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=2_4							)
										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									=					[]
										UpperCAmelCase									=					[]

										for i, rect in enumerate(__SCREAMING_SNAKE_CASE							):
														rect.set_stroke(__SCREAMING_SNAKE_CASE							)

														UpperCAmelCase									=					Rectangle(height=0.4_6 / 4   ,       width=0.4_6 / 3							).set_stroke(width=0.0							).set_fill(__SCREAMING_SNAKE_CASE   ,       opacity=0.7							)

														if i == 0:
																		cpu_target.next_to(cpu_left_col_base[0].get_corner(DOWN + LEFT							)   ,       buff=0.0_2   ,       direction=__SCREAMING_SNAKE_CASE							)
																		cpu_target.set_x(cpu_target.get_x() + 0.1							)
														elif i == 3:
																		cpu_target.next_to(model_cpu_arr[0]   ,       direction=__SCREAMING_SNAKE_CASE   ,       buff=0.0							)
														else:
																		cpu_target.next_to(model_cpu_arr[i - 1]   ,       direction=__SCREAMING_SNAKE_CASE   ,       buff=0.0							)
														self.add(__SCREAMING_SNAKE_CASE							)
														model_cpu_arr.append(__SCREAMING_SNAKE_CASE							)

										self.add(*__SCREAMING_SNAKE_CASE   ,       *__SCREAMING_SNAKE_CASE   ,       *__SCREAMING_SNAKE_CASE							)

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

										UpperCAmelCase									=					Text('Loaded Checkpoint'   ,       font_size=2_4							)
										UpperCAmelCase									=					Group(__SCREAMING_SNAKE_CASE   ,       __SCREAMING_SNAKE_CASE							).arrange(__SCREAMING_SNAKE_CASE   ,       buff=0.5   ,       aligned_edge=__SCREAMING_SNAKE_CASE							)
										checkpoint.move_to([3, 0.5, 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.7							)
														target.move_to(__SCREAMING_SNAKE_CASE							)
														ckpt_arr.append(__SCREAMING_SNAKE_CASE							)

														UpperCAmelCase									=					target.copy()
														if i < 5:
																		cpu_target.move_to(cpu_left_col_base[i + 1]							)
														else:
																		cpu_target.move_to(cpu_right_col_base[i - 5]							)
														ckpt_cpu_arr.append(__SCREAMING_SNAKE_CASE							)
										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=1_8   ,       )

										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=1_8   ,       )

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

										UpperCAmelCase									=					MarkupText(
										    F"Based on the passed in configuration, weights are stored in\na variety of np.memmaps on disk or to a particular device."   ,       font_size=2_4   ,       )
										step_a.move_to([2, 2, 0]							)

										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=2_4							)
										UpperCAmelCase									=					Group(__SCREAMING_SNAKE_CASE   ,       __SCREAMING_SNAKE_CASE							).arrange(__SCREAMING_SNAKE_CASE   ,       buff=0.5   ,       aligned_edge=__SCREAMING_SNAKE_CASE							)
										disk.move_to([-4.0, -1.2_5, 0]							)
										self.play(Write(__SCREAMING_SNAKE_CASE   ,       run_time=3							)   ,       Write(__SCREAMING_SNAKE_CASE   ,       run_time=1							)   ,       Create(__SCREAMING_SNAKE_CASE   ,       run_time=1							)							)

										UpperCAmelCase									=					[]
										for i, rect in enumerate(__SCREAMING_SNAKE_CASE							):
														UpperCAmelCase									=					rect.copy()
														target.generate_target()
														target.target.move_to(disk_left_col_base[i]							).scale(0.5							)
														animations.append(MoveToTarget(__SCREAMING_SNAKE_CASE   ,       run_time=1.5							)							)
										self.play(*__SCREAMING_SNAKE_CASE							)

										self.play(FadeOut(__SCREAMING_SNAKE_CASE							)							)

										UpperCAmelCase									=					MarkupText(F"Then, the checkpoint is removed from memory\nthrough garbage collection."   ,       font_size=2_4							)
										step_a.move_to([2, 2, 0]							)

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

										self.play(
										    FadeOut(__SCREAMING_SNAKE_CASE   ,       __SCREAMING_SNAKE_CASE   ,       *__SCREAMING_SNAKE_CASE   ,       *__SCREAMING_SNAKE_CASE							)   ,       )

										self.wait()





"""simple docstring"""

from abc import ABC, abstractmethod
from argparse import ArgumentParser
class      _UpperCAmelCase							(		SCREAMING_SNAKE_CASE_							):




      @staticmethod
      @abstractmethod
      def     a_      (							lowercase_							)						->					Optional[Any]:
          raise NotImplementedError()




      @abstractmethod
      def     a_      (							self							)						->					Any:
          raise NotImplementedError()



