
from manim import *







class     lowercase		( _lowerCAmelCase		):




					def 			A__				(    self):
										lowercase						     =						Rectangle(height=0.5       ,width=0.5)
										lowercase						     =						Rectangle(height=0.25       ,width=0.25)
										lowercase						     =						Rectangle(height=0.46       ,width=0.46).set_stroke(width=0)

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

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

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

										lowercase						     =						Text('''Model'''       ,font_size=2_4)
										lowercase						     =						Group(_lowercase       ,_lowercase).arrange(_lowercase       ,buff=0.5       ,aligned_edge=_lowercase)
										model.move_to([3, -1.0, 0])
										self.add(_lowercase)

										lowercase						     =						[]
										lowercase						     =						[]
										lowercase						     =						[]

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

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

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

										self.add(*_lowercase       ,*_lowercase       ,*_lowercase)

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

										lowercase						     =						Text('''Loaded Checkpoint'''       ,font_size=2_4)
										lowercase						     =						Group(_lowercase       ,_lowercase).arrange(_lowercase       ,buff=0.5       ,aligned_edge=_lowercase)
										checkpoint.move_to([3, 0.5, 0])

										self.add(_lowercase)

										lowercase						     =						[]
										lowercase						     =						[]

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

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

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

										lowercase						     =						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(_lowercase       ,_lowercase)

										lowercase						     =						MarkupText(
										    f'<span fgcolor=\'{BLUE}\'>●</span> Checkpoint'       ,font_size=1_8       ,)

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

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

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

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

										self.play(FadeOut(_lowercase))

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

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

										self.wait()






from typing import TYPE_CHECKING

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


lowercase__		:Any			  =   {
    "configuration_distilbert": [
        "DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "DistilBertConfig",
        "DistilBertOnnxConfig",
    ],
    "tokenization_distilbert": ["DistilBertTokenizer"],
}

try:
							if not is_tokenizers_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase__		:Tuple			  =   ["DistilBertTokenizerFast"]

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase__		:Union[str, Any]			  =   [
							    "DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
							    "DistilBertForMaskedLM",
							    "DistilBertForMultipleChoice",
							    "DistilBertForQuestionAnswering",
							    "DistilBertForSequenceClassification",
							    "DistilBertForTokenClassification",
							    "DistilBertModel",
							    "DistilBertPreTrainedModel",
							]

try:
							if not is_tf_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase__		:Optional[int]			  =   [
							    "TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
							    "TFDistilBertForMaskedLM",
							    "TFDistilBertForMultipleChoice",
							    "TFDistilBertForQuestionAnswering",
							    "TFDistilBertForSequenceClassification",
							    "TFDistilBertForTokenClassification",
							    "TFDistilBertMainLayer",
							    "TFDistilBertModel",
							    "TFDistilBertPreTrainedModel",
							]

try:
							if not is_flax_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase__		:Union[str, Any]			  =   [
							    "FlaxDistilBertForMaskedLM",
							    "FlaxDistilBertForMultipleChoice",
							    "FlaxDistilBertForQuestionAnswering",
							    "FlaxDistilBertForSequenceClassification",
							    "FlaxDistilBertForTokenClassification",
							    "FlaxDistilBertModel",
							    "FlaxDistilBertPreTrainedModel",
							]


if TYPE_CHECKING:
							from .configuration_distilbert import (
							    DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
							    DistilBertConfig,
							    DistilBertOnnxConfig,
							)
							from .tokenization_distilbert import DistilBertTokenizer

							try:
														if not is_tokenizers_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .tokenization_distilbert_fast import DistilBertTokenizerFast

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_distilbert import (
														    DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
														    DistilBertForMaskedLM,
														    DistilBertForMultipleChoice,
														    DistilBertForQuestionAnswering,
														    DistilBertForSequenceClassification,
														    DistilBertForTokenClassification,
														    DistilBertModel,
														    DistilBertPreTrainedModel,
														)

							try:
														if not is_tf_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_tf_distilbert import (
														    TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
														    TFDistilBertForMaskedLM,
														    TFDistilBertForMultipleChoice,
														    TFDistilBertForQuestionAnswering,
														    TFDistilBertForSequenceClassification,
														    TFDistilBertForTokenClassification,
														    TFDistilBertMainLayer,
														    TFDistilBertModel,
														    TFDistilBertPreTrainedModel,
														)

							try:
														if not is_flax_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_flax_distilbert import (
														    FlaxDistilBertForMaskedLM,
														    FlaxDistilBertForMultipleChoice,
														    FlaxDistilBertForQuestionAnswering,
														    FlaxDistilBertForSequenceClassification,
														    FlaxDistilBertForTokenClassification,
														    FlaxDistilBertModel,
														    FlaxDistilBertPreTrainedModel,
														)

else:
							import sys

							lowercase__		:List[str]			  =   _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)




