code: import unittest
  from unittest import skip
  
  from transformers import is_torch_available
  from transformers.testing_utils import require_torch, slow
  from transformers.trainer_utils import set_seed
  
  
  if is_torch_available():
  				import torch
  
  				from transformers import JukeboxModel, JukeboxPrior, JukeboxTokenizer
  
  
  @require_torch
  class _lowercase					(       unittest.TestCase						):
  
  
  
  
  
  							"""simple docstring"""
  
  
  
  
  							lowerCAmelCase__       =					(JukeboxModel,) if is_torch_available() else ()
  							lowerCAmelCase__       =					'openai/jukebox-1b-lyrics'
  							lowerCAmelCase__       =					{
  							    '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    ',
  							}
  							# fmt: off
  							lowerCAmelCase__       =					[
  							    1_864, 1_536, 1_213, 1_870, 1_357, 1_536, 519, 880, 1_323, 789, 1_082, 534,
  							    1_000, 1_445, 1_105, 1_130, 967, 515, 1_434, 1_620, 534, 1_495, 283, 1_445,
  							    333, 1_307, 539, 1_631, 1_528, 375, 1_434, 673, 627, 710, 778, 1_883,
  							    1_405, 1_276, 1_455, 1_228
  							]
  
  							lowerCAmelCase__       =					[
  							    1_489, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653
  							]
  
  							lowerCAmelCase__       =					[
  							    1_125, 1_751, 697, 1_776, 1_141, 1_476, 391, 697, 1_125, 684, 867, 416,
  							    844, 1_372, 1_274, 717, 1_274, 844, 1_299, 1_419, 697, 1_370, 317, 1_125,
  							    191, 1_440, 1_370, 1_440, 1_370, 282, 1_621, 1_370, 368, 349, 867, 1_872,
  							    1_262, 869, 1_728, 747
  							]
  							lowerCAmelCase__       =					[
  							    416, 416, 1_125, 1_125, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416
  							]
  
  							lowerCAmelCase__       =					[
  							    1_755, 842, 307, 1_843, 1_022, 1_395, 234, 1_554, 806, 739, 1_022, 442,
  							    616, 556, 268, 1_499, 933, 457, 1_440, 1_837, 755, 985, 308, 902,
  							    293, 1_443, 1_671, 1_141, 1_533, 555, 1_562, 1_061, 287, 417, 1_022, 2_008,
  							    1_186, 1_015, 1_777, 268
  							]
  							lowerCAmelCase__       =					[
  							    854, 842, 1_353, 114, 1_353, 842, 185, 842, 185, 114, 591, 842,
  							    185, 417, 185, 842, 307, 842, 591, 842, 185, 842, 307, 842,
  							    591, 842, 1_353, 842, 185, 842, 591, 842, 591, 114, 591, 842,
  							    185, 842, 591, 89
  							]
  
  							lowerCAmelCase__       =					[1_058_304, 0, 786_432, 7_169, 507, 76, 27, 40, 30, 76]
  
  							lowerCAmelCase__       =					[
  							    390, 1_160, 1_002, 1_907, 1_788, 1_788, 1_788, 1_907, 1_002, 1_002, 1_854, 1_002,
  							    1_002, 1_002, 1_002, 1_002, 1_002, 1_160, 1_160, 1_606, 596, 596, 1_160, 1_002,
  							    1_516, 596, 1_002, 1_002, 1_002, 1_907, 1_788, 1_788, 1_788, 1_854, 1_788, 1_907,
  							    1_907, 1_788, 596, 1_626
  							]
  							lowerCAmelCase__       =					[
  							    1_236, 1_668, 1_484, 1_920, 1_848, 1_409, 139, 864, 1_828, 1_272, 1_599, 824,
  							    1_672, 139, 555, 1_484, 824, 1_920, 555, 596, 1_579, 1_599, 1_231, 1_599,
  							    1_637, 1_407, 212, 824, 1_599, 116, 1_433, 824, 258, 1_599, 1_433, 1_895,
  							    1_063, 1_433, 1_433, 1_599
  							]
  							lowerCAmelCase__       =					[
  							    1_684, 1_873, 1_119, 1_189, 395, 611, 1_901, 972, 890, 1_337, 1_392, 1_927,
  							    96, 972, 672, 780, 1_119, 890, 158, 771, 1_073, 1_927, 353, 1_331,
  							    1_269, 1_459, 1_333, 1_645, 812, 1_577, 1_337, 606, 353, 981, 1_466, 619,
  							    197, 391, 302, 1_930
  							]
  							lowerCAmelCase__       =					[
  							    390, 1_160, 1_002, 1_907, 1_788, 1_788, 1_788, 1_907, 1_002, 1_002, 1_854, 1_002,
  							    1_002, 1_002, 1_002, 1_002, 1_002, 1_160, 1_160, 1_606, 596, 596, 1_160, 1_002,
  							    1_516, 596, 1_002, 1_002, 1_002, 1_907, 1_788, 1_788, 1_788, 1_854, 1_788, 1_907,
  							    1_907, 1_788, 596, 1_626
  							]
  							lowerCAmelCase__       =					[
  							    -0.0_4_9_2, -0.0_5_2_4, -0.0_5_6_5, -0.0_6_4_0, -0.0_6_8_6, -0.0_6_8_4, -0.0_6_7_7, -0.0_6_6_4,
  							    -0.0_6_0_5, -0.0_4_9_0, -0.0_3_3_0, -0.0_1_6_8, -0.0_0_8_3, -0.0_0_7_5, -0.0_0_5_1, 0.0_0_2_5,
  							    0.0_1_3_6, 0.0_2_6_1, 0.0_3_8_6, 0.0_4_9_7, 0.0_5_8_0, 0.0_5_9_9, 0.0_5_8_3, 0.0_6_1_4,
  							    0.0_7_4_0, 0.0_8_8_9, 0.1_0_2_3, 0.1_1_6_2, 0.1_2_1_1, 0.1_2_1_2, 0.1_2_5_1, 0.1_3_3_6,
  							    0.1_5_0_2, 0.1_6_8_6, 0.1_8_8_3, 0.2_1_4_8, 0.2_3_6_3, 0.2_4_5_8, 0.2_5_0_7, 0.2_5_3_1
  							]
  							lowerCAmelCase__       =					[
  							    0.0_2_5_6, -0.0_5_4_4, 0.1_6_0_0, -0.0_0_3_2, 0.1_0_6_6, 0.0_8_2_5, -0.0_0_1_3, 0.3_4_4_0,
  							    0.0_2_1_0, 0.0_4_1_2, -0.1_7_7_7, -0.0_8_9_2, -0.0_1_6_4, 0.0_2_8_5, -0.0_6_1_3, -0.0_6_1_7,
  							    -0.0_1_3_7, -0.0_2_0_1, -0.0_1_7_5, 0.0_2_1_5, -0.0_6_2_7, 0.0_5_2_0, -0.0_7_3_0, 0.0_9_7_0,
  							    -0.0_1_0_0, 0.0_4_4_2, -0.0_5_8_6, 0.0_2_0_7, -0.0_0_1_5, -0.0_0_8_2
  							]
  							lowerCAmelCase__       =					[
  							    0.0_4_1_5, 0.0_8_7_7, 0.0_0_2_2, -0.0_0_5_5, 0.0_7_5_1, 0.0_3_3_4, 0.0_3_2_4, -0.0_0_6_8,
  							    0.0_0_1_1, 0.0_0_1_7, -0.0_6_7_6, 0.0_6_5_5, -0.0_1_4_3, 0.0_3_9_9, 0.0_3_0_3, 0.0_7_4_3,
  							    -0.0_1_6_8, -0.0_3_9_4, -0.1_1_1_3, 0.0_1_2_4, 0.0_4_4_2, 0.0_2_6_7, -0.0_0_0_3, -0.1_5_3_6,
  							    -0.0_1_1_6, -0.1_8_3_7, -0.0_1_8_0, -0.1_0_2_6, -0.0_7_7_7, -0.0_4_5_6
  							]
  							lowerCAmelCase__       =					[
  							    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
  							]
  
  
  
  							def     _UpperCAmelCase       (    self  ):
  
  
  
  
  
  
  
  														'''simple docstring'''
  
  
  
  
  
  
  														_lowercase				=	JukeboxTokenizer.from_pretrained(self.model_id  )
  														_lowercase				=	tokenizer(**self.metas  )["""input_ids"""]
  														return tokens
  
  
  
  							@slow
  							def     _UpperCAmelCase       (    self  ):
  
  
  
  
  
  
  
  														'''simple docstring'''
  
  
  
  
  
  
  														_lowercase				=	JukeboxModel.from_pretrained(self.model_id     ,   min_duration=0  ).eval()
  														_lowercase				=	self.prepare_inputs()
  
  														set_seed(0  )
  														_lowercase				=	[torch.zeros(1     ,   0     ,   dtype=torch.long  ).cpu() for _ in range(3  )]
  														_lowercase				=	model._sample(UpperCAmelCase     ,   UpperCAmelCase     ,   [0]     ,   sample_length=40 * model.priors[0].raw_to_tokens     ,   save_results=UpperCAmelCase  )
  														self.assertIn(zs[0][0].detach().cpu().tolist()     ,   [self.EXPECTED_OUTPUT_2, self.EXPECTED_OUTPUT_2_PT_2]  )
  
  														set_seed(0  )
  														_lowercase				=	model._sample(UpperCAmelCase     ,   UpperCAmelCase     ,   [1]     ,   sample_length=40 * model.priors[1].raw_to_tokens     ,   save_results=UpperCAmelCase  )
  														self.assertIn(zs[1][0].detach().cpu().tolist()     ,   [self.EXPECTED_OUTPUT_1, self.EXPECTED_OUTPUT_1_PT_2]  )
  
  														set_seed(0  )
  														_lowercase				=	model._sample(UpperCAmelCase     ,   UpperCAmelCase     ,   [2]     ,   sample_length=40 * model.priors[2].raw_to_tokens     ,   save_results=UpperCAmelCase  )
  														self.assertIn(zs[2][0].detach().cpu().tolist()     ,   [self.EXPECTED_OUTPUT_0, self.EXPECTED_OUTPUT_0_PT_2]  )
  
  
  
  							@slow
  							def     _UpperCAmelCase       (    self  ):
  
  
  
  
  
  
  
  														'''simple docstring'''
  
  
  
  
  
  
  														_lowercase				=	False
  														_lowercase				=	JukeboxModel.from_pretrained(self.model_id     ,   min_duration=0  ).eval()
  
  														_lowercase				=	self.prepare_inputs()
  														set_seed(0  )
  														_lowercase				=	[torch.zeros(1     ,   0     ,   dtype=torch.long  ) for _ in range(3  )]
  
  														_lowercase				=	model.priors[0]
  														_lowercase				=	0
  														_lowercase				=	top_prior.get_music_tokens_conds(UpperCAmelCase     ,   start=UpperCAmelCase     ,   end=start + top_prior.n_ctx  )
  														_lowercase				=	top_prior.get_metadata(labels[0].clone()     ,   UpperCAmelCase     ,   1058304     ,   0  )
  
  														self.assertIsNone(UpperCAmelCase  )
  														self.assertListEqual(metadata.numpy()[0][:10].tolist()     ,   self.EXPECTED_Y_COND  )
  
  														_lowercase				,       _lowercase				,       _lowercase				=	top_prior.get_cond(UpperCAmelCase     ,   UpperCAmelCase  )
  														torch.testing.assert_allclose(
  														    audio_conditioning[0][0][:30].detach()     ,   torch.tensor(self.EXPECTED_AUDIO_COND  )     ,   atol=1e-4     ,   rtol=1e-4  )
  														torch.testing.assert_allclose(
  														    metadata_conditioning[0][0][:30].detach()     ,   torch.tensor(self.EXPECTED_META_COND  )     ,   atol=1e-4     ,   rtol=1e-4  )
  														torch.testing.assert_allclose(
  														    lyric_tokens[0, :30].detach()     ,   torch.tensor(self.EXPECTED_LYRIC_COND  )     ,   atol=1e-4     ,   rtol=1e-4  )
  
  
  
  							@slow
  							def     _UpperCAmelCase       (    self  ):
  
  
  
  
  
  
  
  														'''simple docstring'''
  
  
  
  
  
  
  														_lowercase				=	False
  
  														_lowercase				=	JukeboxModel.from_pretrained(self.model_id     ,   min_duration=0  ).eval()
  														set_seed(0  )
  														_lowercase				=	torch.rand((1, 5120, 1)  )
  														_lowercase				=	list(self.prepare_inputs()  )
  
  														_lowercase				=	[model.vqvae.encode(UpperCAmelCase     ,   start_level=2     ,   bs_chunks=waveform.shape[0]  )[0], None, None]
  														_lowercase				=	model._sample(
  														    UpperCAmelCase     ,   UpperCAmelCase     ,   sample_levels=[0]     ,   save_results=UpperCAmelCase     ,   sample_length=40 * model.priors[0].raw_to_tokens  )
  														torch.testing.assert_allclose(zs[0][0][:40]     ,   torch.tensor(self.EXPECTED_PRIMED_0  )  )
  
  														_lowercase				=	torch.cat((zs[0], torch.zeros(1     ,   2048 - zs[0].shape[-1]  ))     ,   dim=-1  ).long()
  														_lowercase				=	[upper_a, model.vqvae.encode(UpperCAmelCase     ,   start_level=1     ,   bs_chunks=waveform.shape[0]  )[0], None]
  														_lowercase				=	model._sample(
  														    UpperCAmelCase     ,   UpperCAmelCase     ,   sample_levels=[1]     ,   save_results=UpperCAmelCase     ,   sample_length=40 * model.priors[1].raw_to_tokens  )
  														torch.testing.assert_allclose(zs[1][0][:40]     ,   torch.tensor(self.EXPECTED_PRIMED_1  )  )
  
  														_lowercase				=	torch.cat((zs[1], torch.zeros(1     ,   2048 - zs[1].shape[-1]  ))     ,   dim=-1  ).long()
  														_lowercase				=	[upper_a, upper_a, model.vqvae.encode(UpperCAmelCase     ,   start_level=0     ,   bs_chunks=waveform.shape[0]  )[0]]
  														_lowercase				=	model._sample(
  														    UpperCAmelCase     ,   UpperCAmelCase     ,   sample_levels=[2]     ,   save_results=UpperCAmelCase     ,   sample_length=40 * model.priors[2].raw_to_tokens  )
  														torch.testing.assert_allclose(zs[2][0][:40].cpu()     ,   torch.tensor(self.EXPECTED_PRIMED_2  )  )
  
  
  
  							@slow
  							def     _UpperCAmelCase       (    self  ):
  
  
  
  
  
  
  
  														'''simple docstring'''
  
  
  
  
  
  
  														_lowercase				=	JukeboxModel.from_pretrained(self.model_id     ,   min_duration=0  ).eval()
  														set_seed(0  )
  														_lowercase				=	torch.rand((1, 5120, 1)  )
  														with torch.no_grad():
  																					_lowercase				=	model.vqvae.encode(UpperCAmelCase     ,   start_level=2     ,   bs_chunks=x.shape[0]  )
  														torch.testing.assert_allclose(zs[0][0]     ,   torch.tensor(self.EXPECTED_VQVAE_ENCODE  )  )
  
  														with torch.no_grad():
  																					_lowercase				=	model.vqvae.decode(UpperCAmelCase     ,   start_level=2     ,   bs_chunks=x.shape[0]  )
  														torch.testing.assert_allclose(x[0, :40, 0]     ,   torch.tensor(self.EXPECTED_VQVAE_DECODE  )     ,   atol=1e-4     ,   rtol=1e-4  )
  
  
  
  
  
  
  @require_torch
  class _lowercase					(       unittest.TestCase						):
  
  
  
  
  
  							"""simple docstring"""
  
  
  
  
  							lowerCAmelCase__       =					(JukeboxModel,) if is_torch_available() else ()
  							lowerCAmelCase__       =					'openai/jukebox-5b-lyrics'
  							lowerCAmelCase__       =					{
  							    '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    ',
  							}
  
  							# fmt: off
  							lowerCAmelCase__       =					[
  							    1_489, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    1_489, 1_489, 1_489, 1_489, 1_150, 1_853, 1_509, 1_150, 1_357, 1_509, 6, 1_272
  							]
  							lowerCAmelCase__       =					[
  							    1_489, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653
  							]
  
  							lowerCAmelCase__       =					[
  							    1_125, 416, 1_125, 1_125, 1_125, 1_125, 1_125, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416
  							]
  							lowerCAmelCase__       =					[
  							    416, 416, 1_125, 1_125, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416
  							]
  
  							lowerCAmelCase__       =					[
  							    1_755, 1_061, 234, 1_755, 1_061, 1_755, 185, 290, 307, 307, 616, 616,
  							    616, 616, 616, 616, 307, 290, 417, 1_755, 234, 1_755, 185, 290,
  							    290, 290, 307, 616, 616, 616, 616, 616, 290, 234, 234, 1_755,
  							    234, 234, 1_755, 234, 185, 185, 307, 616, 616, 616, 616, 290,
  							    1_755, 1_755, 1_755, 234, 234, 1_755, 1_572, 290, 307, 616, 34, 616
  							]
  							lowerCAmelCase__       =					[
  							    854, 842, 1_353, 114, 1_353, 842, 185, 842, 185, 114, 591, 842, 185,
  							    417, 185, 842, 307, 842, 591, 842, 185, 842, 185, 842, 591, 842,
  							    1_353, 842, 185, 842, 591, 842, 591, 114, 591, 842, 185, 842, 591,
  							    89, 591, 842, 591, 842, 591, 417, 1_372, 842, 1_372, 842, 34, 842,
  							    185, 89, 591, 842, 185, 842, 591, 632
  							]
  
  							lowerCAmelCase__       =					[
  							    1_489, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653
  							]
  							lowerCAmelCase__       =					[
  							    1_489, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, 653,
  							    653, 653, 653, 653, 653, 653, 653, 1_853, 1_177, 1_536, 1_228,
  							    710, 475, 1_489, 1_229, 1_224, 231, 1_224, 252, 1_434, 653, 475,
  							    1_106, 1_877, 1_599, 1_228, 1_600, 1_683, 1_182, 1_853, 475, 1_864,
  							    252, 1_229, 1_434, 2_001
  							]
  
  							lowerCAmelCase__       =					[
  							    1_125, 1_125, 416, 1_125, 1_125, 416, 1_125, 1_125, 416, 416, 1_125, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
  							    416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416
  							]
  							lowerCAmelCase__       =					[
  							    491, 1_755, 34, 1_613, 1_755, 417, 992, 1_613, 222, 842, 1_353, 1_613,
  							    844, 632, 185, 1_613, 844, 632, 185, 1_613, 185, 842, 677, 1_613,
  							    185, 114, 1_353, 1_613, 307, 89, 844, 1_613, 307, 1_332, 234, 1_979,
  							    307, 89, 1_353, 616, 34, 842, 185, 842, 34, 842, 185, 842,
  							    307, 114, 185, 89, 34, 1_268, 185, 89, 34, 842, 185, 89
  							]
  
  
  
  							def     _UpperCAmelCase       (    self     ,   UpperCAmelCase  ):
  
  
  
  
  
  
  
  														'''simple docstring'''
  
  
  
  
  
  
  														_lowercase				=	JukeboxTokenizer.from_pretrained(UpperCAmelCase  )
  														_lowercase				=	tokenizer(**self.metas  )["""input_ids"""]
  														return tokens
  
  
  
  							@slow
  							def     _UpperCAmelCase       (    self  ):
  
  
  
  
  
  
  
  														'''simple docstring'''
  
  
  
  
  
  
  														_lowercase				=	JukeboxModel.from_pretrained(self.model_id     ,   min_duration=0  ).eval()
  														_lowercase				=	self.prepare_inputs(self.model_id  )
  
  														set_seed(0  )
  														_lowercase				=	[torch.zeros(1     ,   0     ,   dtype=torch.long  ).cpu() for _ in range(3  )]
  														_lowercase				=	model._sample(UpperCAmelCase     ,   UpperCAmelCase     ,   [0]     ,   sample_length=60 * model.priors[0].raw_to_tokens     ,   save_results=UpperCAmelCase  )
  														self.assertIn(zs[0][0].detach().cpu().tolist()     ,   [self.EXPECTED_OUTPUT_2, self.EXPECTED_OUTPUT_2_PT_2]  )
  
  														set_seed(0  )
  														_lowercase				=	model._sample(UpperCAmelCase     ,   UpperCAmelCase     ,   [1]     ,   sample_length=60 * model.priors[1].raw_to_tokens     ,   save_results=UpperCAmelCase  )
  														self.assertIn(zs[1][0].detach().cpu().tolist()     ,   [self.EXPECTED_OUTPUT_1, self.EXPECTED_OUTPUT_1_PT_2]  )
  
  														set_seed(0  )
  														_lowercase				=	model._sample(UpperCAmelCase     ,   UpperCAmelCase     ,   [2]     ,   sample_length=60 * model.priors[2].raw_to_tokens     ,   save_results=UpperCAmelCase  )
  														self.assertIn(zs[2][0].detach().cpu().tolist()     ,   [self.EXPECTED_OUTPUT_0, self.EXPECTED_OUTPUT_0_PT_2]  )
  
  
  
  							@slow
  							@skip("""Not enough GPU memory on CI runners"""  )
  							def     _UpperCAmelCase       (    self  ):
  
  
  
  
  
  
  
  														'''simple docstring'''
  
  
  
  
  
  
  														_lowercase				=	JukeboxModel.from_pretrained(self.model_id     ,   min_duration=0  ).eval()
  														_lowercase				=	[i.cuda() for i in self.prepare_inputs(self.model_id  )]
  
  														set_seed(0  )
  														model.priors[0].cuda()
  														_lowercase				=	[torch.zeros(1     ,   0     ,   dtype=torch.long  ).cuda() for _ in range(3  )]
  														_lowercase				=	model._sample(UpperCAmelCase     ,   UpperCAmelCase     ,   [0]     ,   sample_length=60 * model.priors[0].raw_to_tokens     ,   save_results=UpperCAmelCase  )
  														torch.testing.assert_allclose(zs[0][0].cpu()     ,   torch.tensor(self.EXPECTED_GPU_OUTPUTS_2  )  )
  														model.priors[0].cpu()
  
  														set_seed(0  )
  														model.priors[1].cuda()
  														_lowercase				=	model._sample(UpperCAmelCase     ,   UpperCAmelCase     ,   [1]     ,   sample_length=60 * model.priors[1].raw_to_tokens     ,   save_results=UpperCAmelCase  )
  														torch.testing.assert_allclose(zs[1][0].cpu()     ,   torch.tensor(self.EXPECTED_GPU_OUTPUTS_1  )  )
  														model.priors[1].cpu()
  
  														set_seed(0  )
  														model.priors[2].cuda()
  														_lowercase				=	model._sample(UpperCAmelCase     ,   UpperCAmelCase     ,   [2]     ,   sample_length=60 * model.priors[2].raw_to_tokens     ,   save_results=UpperCAmelCase  )
  														torch.testing.assert_allclose(zs[2][0].cpu()     ,   torch.tensor(self.EXPECTED_GPU_OUTPUTS_0  )  )
  
  
  
  							@slow
  							def     _UpperCAmelCase       (    self  ):
  
  
  
  
  
  
  
  														'''simple docstring'''
  
  
  
  
  
  
  														_lowercase				=	"""ArthurZ/jukebox_prior_0"""
  														_lowercase				=	JukeboxPrior.from_pretrained(UpperCAmelCase     ,   min_duration=0  ).eval().half().to("""cuda"""  )
  
  														_lowercase				=	self.prepare_inputs(UpperCAmelCase  )[0].cuda()
  														_lowercase				=	model.get_metadata(UpperCAmelCase     ,   0     ,   7680     ,   0  )
  														set_seed(0  )
  														_lowercase				=	model.sample(1     ,   metadata=UpperCAmelCase     ,   sample_tokens=60  )
  														self.assertIn(outputs[0].cpu().tolist()     ,   [self.EXPECTED_GPU_OUTPUTS_2, self.EXPECTED_GPU_OUTPUTS_2_PT_2]  )
  
  
  
style_context: def 					__lowerCAmelCase			(  _A = 998_001					):
  
  
  
  							"""simple docstring"""
  
  
  							_lowercase				=	0
  							for i in range(999 ,99 ,-1					):  # 3 digit numbers range from 999 down to 100
  														for j in range(999 ,99 ,-1					):
  																					_lowercase				=	str(i * j					)
  																					if product_string == product_string[::-1] and i * j < n:
  																												_lowercase				=	max(_A ,i * j					)
  							return answer
  
  
  if __name__ == "__main__":
  				print(F'''{solution() = }''')
  
  
  