'''simple docstring'''

from manim import *
class   SCREAMING_SNAKE_CASE			(						_A):







		"""simple docstring"""






		def 		UpperCamelCase__       (   self				) ->     Union[str, Any]:
								_lowerCAmelCase										=Rectangle(height=0.5		,						width=0.5				)
								_lowerCAmelCase										=Rectangle(height=0.25		,						width=0.25				)
								_lowerCAmelCase										=Rectangle(height=0.46		,						width=0.46				).set_stroke(width=0				)

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

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

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

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

								_lowerCAmelCase										=[]
								_lowerCAmelCase										=[]
								_lowerCAmelCase										=[]

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

														_lowerCAmelCase										=Rectangle(height=0.46 / 4		,						width=0.46 / 3				).set_stroke(width=0.0				).set_fill(UpperCamelCase__		,						opacity=0.7				)

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

								self.add(*UpperCamelCase__		,						*UpperCamelCase__		,						*UpperCamelCase__				)

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

								_lowerCAmelCase										=Text('Loaded Checkpoint'		,						font_size=24				)
								_lowerCAmelCase										=Group(UpperCamelCase__		,						UpperCamelCase__				).arrange(UpperCamelCase__		,						buff=0.5		,						aligned_edge=UpperCamelCase__				)
								checkpoint.move_to([3, 0.5, 0]				)

								self.add(UpperCamelCase__				)

								_lowerCAmelCase										=[]
								_lowerCAmelCase										=[]

								for i, rect in enumerate(UpperCamelCase__				):
														_lowerCAmelCase										=fill.copy().set_fill(UpperCamelCase__		,						opacity=0.7				)
														target.move_to(UpperCamelCase__				)
														ckpt_arr.append(UpperCamelCase__				)

														_lowerCAmelCase										=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(UpperCamelCase__				)
								self.add(*UpperCamelCase__		,						*UpperCamelCase__				)

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

								_lowerCAmelCase										=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(UpperCamelCase__		,						UpperCamelCase__				)

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

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

								_lowerCAmelCase										=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=24		,						)
								step_a.move_to([2, 2, 0]				)

								_lowerCAmelCase										=[meta_mem.copy() for i in range(6				)]
								_lowerCAmelCase										=[meta_mem.copy() for i in range(6				)]
								_lowerCAmelCase										=VGroup(*UpperCamelCase__				).arrange(UpperCamelCase__		,						buff=0				)
								_lowerCAmelCase										=VGroup(*UpperCamelCase__				).arrange(UpperCamelCase__		,						buff=0				)
								_lowerCAmelCase										=VGroup(UpperCamelCase__		,						UpperCamelCase__				).arrange(UpperCamelCase__		,						buff=0				)
								_lowerCAmelCase										=Text('Disk'		,						font_size=24				)
								_lowerCAmelCase										=Group(UpperCamelCase__		,						UpperCamelCase__				).arrange(UpperCamelCase__		,						buff=0.5		,						aligned_edge=UpperCamelCase__				)
								disk.move_to([-4.0, -1.25, 0]				)
								self.play(Write(UpperCamelCase__		,						run_time=3				)		,						Write(UpperCamelCase__		,						run_time=1				)		,						Create(UpperCamelCase__		,						run_time=1				)				)

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

								self.play(FadeOut(UpperCamelCase__				)				)

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

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

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

								self.wait()






'''simple docstring'''

from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_torch_available,
)


lowercase_     		= {'''configuration_vit_mae''': ['''VIT_MAE_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''ViTMAEConfig''']}

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase_     		= [
							    '''VIT_MAE_PRETRAINED_MODEL_ARCHIVE_LIST''',
							    '''ViTMAEForPreTraining''',
							    '''ViTMAELayer''',
							    '''ViTMAEModel''',
							    '''ViTMAEPreTrainedModel''',
							]

try:
							if not is_tf_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase_     		= [
							    '''TFViTMAEForPreTraining''',
							    '''TFViTMAEModel''',
							    '''TFViTMAEPreTrainedModel''',
							]

if TYPE_CHECKING:
							from .configuration_vit_mae import VIT_MAE_PRETRAINED_CONFIG_ARCHIVE_MAP, ViTMAEConfig

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_vit_mae import (
														    VIT_MAE_PRETRAINED_MODEL_ARCHIVE_LIST,
														    ViTMAEForPreTraining,
														    ViTMAELayer,
														    ViTMAEModel,
														    ViTMAEPreTrainedModel,
														)

							try:
														if not is_tf_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_tf_vit_mae import TFViTMAEForPreTraining, TFViTMAEModel, TFViTMAEPreTrainedModel


else:
							import sys

							lowercase_     		= _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)





