

from manim import *






class 	UpperCAmelCase__		(	A__	):






		"""simple docstring"""


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

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

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

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

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

							SCREAMING_SNAKE_CASE__   =   []
							SCREAMING_SNAKE_CASE__   =   []
							SCREAMING_SNAKE_CASE__   =   []

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

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

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

							self.add(*__lowerCamelCase     ,       *__lowerCamelCase     ,       *__lowerCamelCase )

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

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

							self.add(__lowerCamelCase )

							SCREAMING_SNAKE_CASE__   =   []
							SCREAMING_SNAKE_CASE__   =   []

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

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

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

							SCREAMING_SNAKE_CASE__   =   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(__lowerCamelCase     ,       __lowerCamelCase )

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

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

							SCREAMING_SNAKE_CASE__   =   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] )

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

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

							self.play(FadeOut(__lowerCamelCase ) )

							SCREAMING_SNAKE_CASE__   =   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(__lowerCamelCase     ,       run_time=3 ) )

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

							self.wait()





from ...utils import is_torch_available, is_transformers_available


if is_transformers_available() and is_torch_available():
       from .pipeline_vq_diffusion import LearnedClassifierFreeSamplingEmbeddings, VQDiffusionPipeline


