


from manim import *



class 			a       (	_a ):


     """simple docstring"""






     def 				lowerCamelCase__				(       self  :	str    )		->							Any:
          __UpperCAmelCase			:				Tuple													=    Rectangle(height=0.5							,				width=0.5    )
          __UpperCAmelCase			:				List[str]													=    Rectangle(height=0.25							,				width=0.25    )
          __UpperCAmelCase			:				Optional[int]													=    Rectangle(height=0.46							,				width=0.46    ).set_stroke(width=0    )

          __UpperCAmelCase			:				List[str]													=    [mem.copy() for i in range(6    )]
          __UpperCAmelCase			:				List[str]													=    [mem.copy() for i in range(6    )]
          __UpperCAmelCase			:				Dict													=    VGroup(*snake_case    ).arrange(snake_case							,				buff=0    )
          __UpperCAmelCase			:				int													=    VGroup(*snake_case    ).arrange(snake_case							,				buff=0    )
          __UpperCAmelCase			:				str													=    VGroup(snake_case							,				snake_case    ).arrange(snake_case							,				buff=0    )
          __UpperCAmelCase			:				Union[str, Any]													=    Text('''CPU'''							,				font_size=24    )
          __UpperCAmelCase			:				Dict													=    Group(snake_case							,				snake_case    ).arrange(snake_case							,				buff=0.5							,				aligned_edge=snake_case    )
          cpu.move_to([-2.5, -0.5, 0]    )
          self.add(snake_case    )

          __UpperCAmelCase			:				Dict													=    [mem.copy() for i in range(4    )]
          __UpperCAmelCase			:				Tuple													=    VGroup(*snake_case    ).arrange(snake_case							,				buff=0    )
          __UpperCAmelCase			:				Optional[Any]													=    Text('''GPU'''							,				font_size=24    )
          __UpperCAmelCase			:				Any													=    Group(snake_case							,				snake_case    ).arrange(snake_case							,				buff=0.5							,				aligned_edge=snake_case    )
          gpu.move_to([-1, -1, 0]    )
          self.add(snake_case    )

          __UpperCAmelCase			:				List[Any]													=    [mem.copy() for i in range(6    )]
          __UpperCAmelCase			:				Tuple													=    VGroup(*snake_case    ).arrange(snake_case							,				buff=0    )

          __UpperCAmelCase			:				Optional[Any]													=    Text('''Model'''							,				font_size=24    )
          __UpperCAmelCase			:				str													=    Group(snake_case							,				snake_case    ).arrange(snake_case							,				buff=0.5							,				aligned_edge=snake_case    )
          model.move_to([3, -1.0, 0]    )
          self.add(snake_case    )

          __UpperCAmelCase			:				Any													=    []
          __UpperCAmelCase			:				Union[str, Any]													=    []
          __UpperCAmelCase			:				Any													=    []

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

               __UpperCAmelCase			:				Union[str, Any]													=    Rectangle(height=0.46 / 4							,				width=0.46 / 3    ).set_stroke(width=0.0    ).set_fill(snake_case							,				opacity=0.7    )

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

          self.add(*snake_case							,				*snake_case							,				*snake_case    )

          __UpperCAmelCase			:				Tuple													=    [mem.copy() for i in range(6    )]
          __UpperCAmelCase			:				Any													=    VGroup(*snake_case    ).arrange(snake_case							,				buff=0    )

          __UpperCAmelCase			:				Dict													=    Text('''Loaded Checkpoint'''							,				font_size=24    )
          __UpperCAmelCase			:				Tuple													=    Group(snake_case							,				snake_case    ).arrange(snake_case							,				buff=0.5							,				aligned_edge=snake_case    )
          checkpoint.move_to([3, 0.5, 0]    )

          self.add(snake_case    )

          __UpperCAmelCase			:				Union[str, Any]													=    []
          __UpperCAmelCase			:				int													=    []

          for i, rect in enumerate(snake_case    ):
               __UpperCAmelCase			:				List[Any]													=    fill.copy().set_fill(snake_case							,				opacity=0.7    )
               target.move_to(snake_case    )
               ckpt_arr.append(snake_case    )

               __UpperCAmelCase			:				int													=    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(snake_case    )
          self.add(*snake_case							,				*snake_case    )

          __UpperCAmelCase			:				Optional[Any]													=    Square(side_length=2.2    )
          key.move_to([-5, 2, 0]    )

          __UpperCAmelCase			:				Tuple													=    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(snake_case							,				snake_case    )

          __UpperCAmelCase			:				Optional[Any]													=    MarkupText(
              f'<span fgcolor=\'{BLUE}\'>●</span> Checkpoint'							,				font_size=18							,				)

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

          __UpperCAmelCase			:				List[str]													=    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]    )

          __UpperCAmelCase			:				Tuple													=    [meta_mem.copy() for i in range(6    )]
          __UpperCAmelCase			:				Dict													=    [meta_mem.copy() for i in range(6    )]
          __UpperCAmelCase			:				Optional[int]													=    VGroup(*snake_case    ).arrange(snake_case							,				buff=0    )
          __UpperCAmelCase			:				Union[str, Any]													=    VGroup(*snake_case    ).arrange(snake_case							,				buff=0    )
          __UpperCAmelCase			:				Optional[Any]													=    VGroup(snake_case							,				snake_case    ).arrange(snake_case							,				buff=0    )
          __UpperCAmelCase			:				Any													=    Text('''Disk'''							,				font_size=24    )
          __UpperCAmelCase			:				Tuple													=    Group(snake_case							,				snake_case    ).arrange(snake_case							,				buff=0.5							,				aligned_edge=snake_case    )
          disk.move_to([-4.0, -1.25, 0]    )
          self.play(Write(snake_case							,				run_time=3    )							,				Write(snake_case							,				run_time=1    )							,				Create(snake_case							,				run_time=1    )    )

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

          self.play(FadeOut(snake_case    )    )

          __UpperCAmelCase			:				Union[str, Any]													=    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(snake_case							,				run_time=3    )    )

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

          self.wait()



'''simple docstring'''



import unittest

from transformers import JukeboxTokenizer
from transformers.testing_utils import require_torch



class 			a       (	unittest.TestCase ):


     """simple docstring"""






     SCREAMING_SNAKE_CASE :				Any							     =     JukeboxTokenizer
     SCREAMING_SNAKE_CASE :				Tuple							     =     {
         "artist": "Zac Brown Band",
         "genres": "Country",
         "lyrics": "I met a traveller from an antique land,\n        Who said \"Two vast and trunkless legs of stone\n        Stand in the desert. . . . Near them, on the sand,\n        Half sunk a shattered visage lies, whose frown,\n        And wrinkled lip, and sneer of cold command,\n        Tell that its sculptor well those passions read\n        Which yet survive, stamped on these lifeless things,\n        The hand that mocked them, and the heart that fed;\n        And on the pedestal, these words appear:\n        My name is Ozymandias, King of Kings;\n        Look on my Works, ye Mighty, and despair!\n        Nothing beside remains. Round the decay\n        Of that colossal Wreck, boundless and bare\n        The lone and level sands stretch far away\n        ",
     }

     @require_torch
     def 				lowerCamelCase__				(       self  :	Optional[int]    )		->							Optional[Any]:
          import torch

          __UpperCAmelCase			:				List[str]													=    JukeboxTokenizer.from_pretrained('''openai/jukebox-1b-lyrics'''    )
          __UpperCAmelCase			:				int													=    tokenizer(**self.metas    )['''input_ids''']
          # fmt: off
          __UpperCAmelCase			:				List[str]													=    [
              torch.tensor([[
                  0, 0, 0, 7169, 507, 9, 76, 39, 31, 46, 76, 27,
                  76, 46, 44, 27, 48, 31, 38, 38, 31, 44, 76, 32,
                  44, 41, 39, 76, 27, 40, 76, 27, 40, 46, 35, 43,
                  47, 31, 76, 38, 27, 40, 30, 64, 78, 76, 76, 76,
                  76, 76, 76, 76, 76, 23, 34, 41, 76, 45, 27, 35,
                  30, 76, 71, 20, 49, 41, 76, 48, 27, 45, 46, 76,
                  27, 40, 30, 76, 46, 44, 47, 40, 37, 38, 31, 45,
                  45, 76, 38, 31, 33, 45, 76, 41, 32, 76, 45, 46,
                  41, 40, 31, 78, 76, 76, 76, 76, 76, 76, 76, 76,
                  19, 46, 27, 40, 30, 76, 35, 40, 76, 46, 34, 31,
                  76, 30, 31, 45, 31, 44, 46, 63, 76, 63, 76, 63,
                  76, 63, 76, 14, 31, 27, 44, 76, 46, 34, 31, 39,
                  64, 76, 41, 40, 76, 46, 34, 31, 76, 45, 27, 40,
                  30, 64, 78, 76, 76, 76, 76, 76, 76, 76, 76, 8,
                  27, 38, 32, 76, 45, 47, 40, 37, 76, 27, 76, 45,
                  34, 27, 46, 46, 31, 44, 31, 30, 76, 48, 35, 45,
                  27, 33, 31, 76, 38, 35, 31, 45, 64, 76, 49, 34,
                  41, 45, 31, 76, 32, 44, 41, 49, 40, 64, 78, 76,
                  76, 76, 76, 76, 76, 76, 76, 1, 40, 30, 76, 49,
                  44, 35, 40, 37, 38, 31, 30, 76, 38, 35, 42, 64,
                  76, 27, 40, 30, 76, 45, 40, 31, 31, 44, 76, 41,
                  32, 76, 29, 41, 38, 30, 76, 29, 41, 39, 39, 27,
                  40, 30, 64, 78, 76, 76, 76, 76, 76, 76, 76, 76,
                  20, 31, 38, 38, 76, 46, 34, 27, 46, 76, 35, 46,
                  45, 76, 45, 29, 47, 38, 42, 46, 41, 44, 76, 49,
                  31, 38, 38, 76, 46, 34, 41, 45, 31, 76, 42, 27,
                  45, 45, 35, 41, 40, 45, 76, 44, 31, 27, 30, 78,
                  76, 76, 76, 76, 76, 76, 76, 76, 23, 34, 35, 29,
                  34, 76, 51, 31, 46, 76, 45, 47, 44, 48, 35, 48,
                  31, 64, 76, 45, 46, 27, 39, 42, 31, 30, 76, 41,
                  40, 76, 46, 34, 31, 45, 31, 76, 38, 35, 32, 31,
                  38, 31, 45, 45, 76, 46, 34, 35, 40, 33, 45, 64,
                  78, 76, 76, 76, 76, 76, 76, 76, 76, 20, 34, 31,
                  76, 34, 27, 40, 30, 76, 46, 34, 27, 46, 76, 39,
                  41, 29, 37, 31, 30, 76, 46, 34, 31, 39, 64, 76,
                  27, 40, 30, 76, 46, 34, 31, 76, 34, 31, 27, 44,
                  46, 76, 46, 34, 27, 46, 76, 32, 31, 30, 66, 78,
                  76, 76, 76, 76, 76, 76, 76, 76, 1, 40, 30, 76,
                  41, 40, 76, 46, 34, 31, 76, 42, 31, 30, 31, 45,
                  46, 27, 38, 64, 76, 46, 34, 31, 45, 31, 76, 49,
                  41, 44, 30, 45, 76, 27, 42, 42, 31, 27, 44, 65,
                  78, 76, 76, 76, 76, 76, 76, 76, 76, 13, 51, 76,
                  40, 27, 39, 31, 76, 35, 45, 76, 15, 52, 51, 39,
                  27, 40, 30, 35, 27, 45, 64, 76, 11, 35, 40, 33,
                  76, 41, 32, 76, 11, 35, 40, 33, 45, 66, 78, 76,
                  76, 76, 76, 76, 76, 76, 76, 12, 41, 41, 37, 76,
                  41, 40, 76, 39, 51, 76, 23, 41, 44, 37, 45, 64,
                  76, 51, 31, 76, 13, 35, 33, 34, 46, 51, 64, 76,
                  27, 40, 30, 76, 30, 31, 45, 42, 27, 35, 44, 67,
                  78, 76, 76, 76, 76, 76, 76, 76, 76, 14, 41, 46,
                  34, 35, 40, 33, 76, 28, 31, 45, 35, 30, 31, 76,
                  44, 31, 39, 27, 35, 40, 45, 63, 76, 18, 41, 47,
                  40, 30, 76, 46, 34, 31, 76, 30, 31, 29, 27, 51,
                  78, 76, 76, 76, 76, 76, 76, 76, 76, 15, 32, 76,
                  46, 34, 27, 46, 76, 29, 41, 38, 41, 45, 45, 27,
                  38, 76, 23, 44, 31, 29, 37, 64, 76, 28, 41, 47,
                  40, 30, 38, 31, 45, 45, 76, 27, 40, 30, 76, 28,
                  27, 44, 31, 78, 76, 76, 76, 76, 76, 76, 76, 76,
                  20, 34, 31, 76, 38, 41, 40, 31, 76, 27, 40, 30,
                  76, 38, 31, 48, 31, 38, 76, 45, 27, 40, 30, 45,
                  76, 45, 46, 44, 31, 46, 29, 34, 76, 32, 27, 44,
                  76, 27, 49, 27, 51, 78, 76, 76, 76, 76, 76, 76,
                  76, 76]]    ),
              torch.tensor([[0, 0, 0, 1069, 11]]    ),
              torch.tensor([[0, 0, 0, 1069, 11]]    ),
          ]
          # fmt: on
          self.assertTrue(torch.allclose(tokens[0]							,				EXPECTED_OUTPUT[0]    )    )
          self.assertTrue(torch.allclose(tokens[1]							,				EXPECTED_OUTPUT[1]    )    )
          self.assertTrue(torch.allclose(tokens[2]							,				EXPECTED_OUTPUT[2]    )    )






     @require_torch
     def 				lowerCamelCase__				(       self  :	Union[str, Any]    )		->							Union[str, Any]:
          import torch

          __UpperCAmelCase			:				Optional[int]													=    JukeboxTokenizer.from_pretrained('''openai/jukebox-5b-lyrics'''    )
          __UpperCAmelCase			:				List[Any]													=    tokenizer(**self.metas    )['''input_ids''']
          # fmt: off
          __UpperCAmelCase			:				List[str]													=    [
              torch.tensor([[
                  0, 0, 0, 1069, 11, -1, -1, -1, -1, 9, 77, 39,
                  31, 46, 77, 27, 77, 46, 44, 27, 48, 31, 38, 38,
                  31, 44, 77, 32, 44, 41, 39, 77, 27, 40, 77, 27,
                  40, 46, 35, 43, 47, 31, 77, 38, 27, 40, 30, 64,
                  79, 77, 77, 77, 77, 77, 77, 77, 77, 23, 34, 41,
                  77, 45, 27, 35, 30, 77, 72, 20, 49, 41, 77, 48,
                  27, 45, 46, 77, 27, 40, 30, 77, 46, 44, 47, 40,
                  37, 38, 31, 45, 45, 77, 38, 31, 33, 45, 77, 41,
                  32, 77, 45, 46, 41, 40, 31, 79, 77, 77, 77, 77,
                  77, 77, 77, 77, 19, 46, 27, 40, 30, 77, 35, 40,
                  77, 46, 34, 31, 77, 30, 31, 45, 31, 44, 46, 63,
                  77, 63, 77, 63, 77, 63, 77, 14, 31, 27, 44, 77,
                  46, 34, 31, 39, 64, 77, 41, 40, 77, 46, 34, 31,
                  77, 45, 27, 40, 30, 64, 79, 77, 77, 77, 77, 77,
                  77, 77, 77, 8, 27, 38, 32, 77, 45, 47, 40, 37,
                  77, 27, 77, 45, 34, 27, 46, 46, 31, 44, 31, 30,
                  77, 48, 35, 45, 27, 33, 31, 77, 38, 35, 31, 45,
                  64, 77, 49, 34, 41, 45, 31, 77, 32, 44, 41, 49,
                  40, 64, 79, 77, 77, 77, 77, 77, 77, 77, 77, 1,
                  40, 30, 77, 49, 44, 35, 40, 37, 38, 31, 30, 77,
                  38, 35, 42, 64, 77, 27, 40, 30, 77, 45, 40, 31,
                  31, 44, 77, 41, 32, 77, 29, 41, 38, 30, 77, 29,
                  41, 39, 39, 27, 40, 30, 64, 79, 77, 77, 77, 77,
                  77, 77, 77, 77, 20, 31, 38, 38, 77, 46, 34, 27,
                  46, 77, 35, 46, 45, 77, 45, 29, 47, 38, 42, 46,
                  41, 44, 77, 49, 31, 38, 38, 77, 46, 34, 41, 45,
                  31, 77, 42, 27, 45, 45, 35, 41, 40, 45, 77, 44,
                  31, 27, 30, 79, 77, 77, 77, 77, 77, 77, 77, 77,
                  23, 34, 35, 29, 34, 77, 51, 31, 46, 77, 45, 47,
                  44, 48, 35, 48, 31, 64, 77, 45, 46, 27, 39, 42,
                  31, 30, 77, 41, 40, 77, 46, 34, 31, 45, 31, 77,
                  38, 35, 32, 31, 38, 31, 45, 45, 77, 46, 34, 35,
                  40, 33, 45, 64, 79, 77, 77, 77, 77, 77, 77, 77,
                  77, 20, 34, 31, 77, 34, 27, 40, 30, 77, 46, 34,
                  27, 46, 77, 39, 41, 29, 37, 31, 30, 77, 46, 34,
                  31, 39, 64, 77, 27, 40, 30, 77, 46, 34, 31, 77,
                  34, 31, 27, 44, 46, 77, 46, 34, 27, 46, 77, 32,
                  31, 30, 66, 79, 77, 77, 77, 77, 77, 77, 77, 77,
                  1, 40, 30, 77, 41, 40, 77, 46, 34, 31, 77, 42,
                  31, 30, 31, 45, 46, 27, 38, 64, 77, 46, 34, 31,
                  45, 31, 77, 49, 41, 44, 30, 45, 77, 27, 42, 42,
                  31, 27, 44, 65, 79, 77, 77, 77, 77, 77, 77, 77,
                  77, 13, 51, 77, 40, 27, 39, 31, 77, 35, 45, 77,
                  15, 52, 51, 39, 27, 40, 30, 35, 27, 45, 64, 77,
                  11, 35, 40, 33, 77, 41, 32, 77, 11, 35, 40, 33,
                  45, 66, 79, 77, 77, 77, 77, 77, 77, 77, 77, 12,
                  41, 41, 37, 77, 41, 40, 77, 39, 51, 77, 23, 41,
                  44, 37, 45, 64, 77, 51, 31, 77, 13, 35, 33, 34,
                  46, 51, 64, 77, 27, 40, 30, 77, 30, 31, 45, 42,
                  27, 35, 44, 67, 79, 77, 77, 77, 77, 77, 77, 77,
                  77, 14, 41, 46, 34, 35, 40, 33, 77, 28, 31, 45,
                  35, 30, 31, 77, 44, 31, 39, 27, 35, 40, 45, 63,
                  77, 18, 41, 47, 40, 30, 77, 46, 34, 31, 77, 30,
                  31, 29, 27, 51, 79, 77, 77, 77, 77, 77, 77, 77,
                  77, 15, 32, 77, 46, 34, 27, 46, 77, 29, 41, 38,
                  41, 45, 45, 27, 38, 77, 23, 44, 31, 29, 37, 64,
                  77, 28, 41, 47, 40, 30, 38, 31, 45, 45, 77, 27,
                  40, 30, 77, 28, 27, 44, 31, 79, 77, 77, 77, 77,
                  77, 77, 77, 77, 20, 34, 31, 77, 38, 41, 40, 31,
                  77, 27, 40, 30, 77, 38, 31, 48, 31, 38, 77, 45,
                  27, 40, 30, 45, 77, 45, 46, 44, 31, 46, 29, 34,
                  77, 32, 27, 44, 77, 27, 49, 27, 51, 79, 77, 77,
                  77, 77, 77, 77, 77, 77]]    ),
              torch.tensor([[0, 0, 0, 1069, 11, -1, -1, -1, -1]]    ),
              torch.tensor([[0, 0, 0, 1069, 11, -1, -1, -1, -1]]    ),
          ]
          # fmt: on
          self.assertTrue(torch.allclose(tokens[0]							,				EXPECTED_OUTPUT[0]    )    )
          self.assertTrue(torch.allclose(tokens[1]							,				EXPECTED_OUTPUT[1]    )    )
          self.assertTrue(torch.allclose(tokens[2]							,				EXPECTED_OUTPUT[2]    )    )