





'''simple docstring'''





from manim import *

class SCREAMING_SNAKE_CASE_ (					__snake_case   ):





					"""simple docstring"""


					def 					__magic_name__ ( self	):
										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(*A_	).arrange(A_	,  buff=0	)
										lowerCamelCase__       =       VGroup(*A_	).arrange(A_	,  buff=0	)
										lowerCamelCase__       =       VGroup(A_	,  A_	).arrange(A_	,  buff=0	)
										lowerCamelCase__       =       Text("CPU"	,  font_size=24	)
										lowerCamelCase__       =       Group(A_	,  A_	).arrange(A_	,  buff=0.5	,  aligned_edge=A_	)
										cpu.move_to([-2.5, -0.5, 0]	)
										self.add(A_	)

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

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

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

										lowerCamelCase__       =       []
										lowerCamelCase__       =       []
										lowerCamelCase__       =       []

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

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

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

										self.add(*A_	,  *A_	,  *A_	)

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

										lowerCamelCase__       =       Text("Loaded Checkpoint"	,  font_size=24	)
										lowerCamelCase__       =       Group(A_	,  A_	).arrange(A_	,  buff=0.5	,  aligned_edge=A_	)
										checkpoint.move_to([3, 0.5, 0]	)

										self.add(A_	)

										lowerCamelCase__       =       []
										lowerCamelCase__       =       []

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

															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(A_	)
										self.add(*A_	,  *A_	)

										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(A_	,  A_	)

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

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

										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(*A_	).arrange(A_	,  buff=0	)
										lowerCamelCase__       =       VGroup(*A_	).arrange(A_	,  buff=0	)
										lowerCamelCase__       =       VGroup(A_	,  A_	).arrange(A_	,  buff=0	)
										lowerCamelCase__       =       Text("Disk"	,  font_size=24	)
										lowerCamelCase__       =       Group(A_	,  A_	).arrange(A_	,  buff=0.5	,  aligned_edge=A_	)
										disk.move_to([-4.0, -1.25, 0]	)
										self.play(Write(A_	,  run_time=3	)	,  Write(A_	,  run_time=1	)	,  Create(A_	,  run_time=1	)	)

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

										self.play(FadeOut(A_	)	)

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

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

										self.wait()








def    __UpperCamelCase      (    a) ->str:

					if isinstance(a,     a):
										raise TypeError("'float' object cannot be interpreted as an integer")
					if isinstance(a,     a):
										raise TypeError("'str' object cannot be interpreted as an integer")

					if num == 0:
										return "0b0"

					lowerCamelCase__       =       False

					if num < 0:
										lowerCamelCase__       =       True
										lowerCamelCase__       =       -num

					lowerCamelCase__       =       []
					while num > 0:
										binary.insert(0,     num % 2)
										num >>= 1

					if negative:
										return "-0b" + "".join(str(a) for e in binary)

					return "0b" + "".join(str(a) for e in binary)


if __name__ == "__main__":
						import doctest

						doctest.testmod()

