





"""simple docstring"""





from manim import *





class 							_lowerCamelCase   (							_lowercase			):


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

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

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

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

								UpperCamelCase =						[]
								UpperCamelCase =						[]

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

										UpperCamelCase =						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		)

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

								UpperCamelCase =						[]

								for i in range(6		):
										UpperCamelCase =						fill.copy().set_fill(__a ,				opacity=0.8		)
										target.move_to(disk_left_col_base[i]		).scale(0.5		)
										cpu_disk_arr.append(__a		)

								self.add(*__a		)

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

								UpperCamelCase =						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		)

								UpperCamelCase =						MarkupText(F"The offloaded weights are all sent to the CPU." ,				font_size=24		)
								step_a.move_to([2, 2, 0]		)

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

								for i in range(6		):
										UpperCamelCase =						cpu_disk_arr[i]
										UpperCamelCase =						rect.copy().set_fill(__a ,				opacity=0.8		).scale(2.0		)
										cpa.generate_target()
										cpa.target.move_to(model_base[i]		)

										if i == 0:
												rect.set_fill(__a ,				opacity=0.8		)
												rect.generate_target()
												rect.target.move_to(cpu_left_col_base[0]		).scale(2.0		)

												self.remove(
												    *__a ,				*__a ,				)

										else:
												rect.generate_target()
												rect.target.move_to(cpu_left_col_base[i]		).scale(2.0		)
										self.play(MoveToTarget(__a		) ,				MoveToTarget(__a		) ,				model_base[i].animate.set_stroke(__a		)		)
								self.play(FadeOut(__a		)		)

								UpperCamelCase =						MarkupText(
								    F"Finally, hooks are added to each weight in the model\nto transfer the weights from CPU to GPU\n\t\tand back when needed." ,				font_size=24 ,				)
								step_a.move_to([2, 2, 0]		)

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

								UpperCamelCase =						[]
								UpperCamelCase =						[]
								for i in range(6		):
										UpperCamelCase =						Arrow(start=__a ,				end=__a ,				color=__a ,				buff=0.5		)
										a.next_to(model_base[i].get_left() ,				__a ,				buff=0.2		)
										arrows.append(__a		)
										animations.append(Write(__a		)		)
								self.play(*__a		)
								self.wait()













"""simple docstring"""





from ..utils import DummyObject, requires_backends





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Union[str, Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Any:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Tuple:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Union[str, Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[int]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Union[str, Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> int:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> List[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Tuple:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Any:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Any:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> List[str]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Tuple:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Tuple:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> int:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> int:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Tuple:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Tuple:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> str:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[int]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Union[str, Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> int:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Any:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[int]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[int]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Union[str, Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> int:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> List[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> List[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[int]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Tuple:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> List[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> List[str]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> str:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> int:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> List[Any]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> List[str]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> int:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Optional[int]:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> int:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> str:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> str:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> int:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)





class 							_lowerCamelCase   (							metaclass=_lowercase			):
						UpperCAmelCase_			=      ["tokenizers"]


						def __init__(self ,				*__a ,				**__a		)			-> Dict:
								requires_backends(self ,				["tokenizers"]		)






