
    i                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
  ed	
      e G d de                    Z ed	
      e G d de                    ZddgZy)zMusicGen model configuration    )ClassVar)strict   )PreTrainedConfig)auto_docstring   )
AutoConfigzfacebook/musicgen-small)
checkpointc                      e Zd ZU dZdZdgZdZeed<   dZ	eed<   dZ
eed<   d	Zeed
<   dZeed<   dZeez  ed<   dZeed<   dZeed<   dZeed<   dZeez  ed<   dZeez  ed<   dZeez  ed<   dZeed<   dZeed<   dZeed<   dZeed <   dZed!z  ed"<   dZed!z  ed#<   d!Zeee   z  d!z  ed$<   dZeed%<   dZ eed&<   dZ!eed'<   d!Z"ed!z  ed(<   d) Z#y!)*MusicgenDecoderConfigmusicgen_decoderdecoder_configpast_key_valuesi   
vocab_sizemax_position_embeddings   num_hidden_layersi   ffn_dim   num_attention_headsg        	layerdropT	use_cachegeluactivation_functioni   hidden_sizeg?dropoutattention_dropoutactivation_dropout{Gz?initializer_factorFscale_embedding   num_codebooks   audio_channelsNpad_token_idbos_token_ideos_token_idtie_word_embeddings
is_decoderadd_cross_attentioncross_attention_hidden_sizec                 R    | j                   dvrt        d| j                    d      y)zOPart of `@strict`-powered validation. Validates the architecture of the config.)r$   r   z4Expected 1 (mono) or 2 (stereo) audio channels, got z
 channels.N)r%   
ValueErrorselfs    /var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/transformers/models/musicgen/configuration_musicgen.pyvalidate_architecturez+MusicgenDecoderConfig.validate_architecture8   s3    f,STXTgTgShhrstt -    )$__name__
__module____qualname__
model_typebase_config_keykeys_to_ignore_at_inferencer   int__annotations__r   r   r   r   r   floatr   boolr   strr   r   r   r   r    r!   r#   r%   r&   r'   r(   listr)   r*   r+   r,   r2    r3   r1   r   r      s6    $J&O#4"5J#'S'sGS!! Ius{ It%%KGUS[%(us{(&)) $$!OT!M3NC#L#*##L#*#+/L#S	/D(/ %%J %%.2t2ur3   r   c                        e Zd ZU dZdZee   ed<   eee	dZ
eeeee   f      ed<   dZee   ed<   dZeez  ed	<   dZeez  ed
<   dZeez  ed<   dZeed<    fdZed        Z xZS )MusicgenConfiga,  
    text_encoder (`Union[dict, `PretrainedConfig`]`):
        An instance of a configuration object that defines the text encoder config.
    audio_encoder (`Union[dict, `PretrainedConfig`]`):
        An instance of a configuration object that defines the audio encoder config.
    decoder (`Union[dict, `PretrainedConfig`]`):
        An instance of a configuration object that defines the decoder config.

    Example:

    ```python
    >>> from transformers import (
    ...     MusicgenConfig,
    ...     MusicgenDecoderConfig,
    ...     T5Config,
    ...     EncodecConfig,
    ...     MusicgenForConditionalGeneration,
    ... )

    >>> # Initializing text encoder, audio encoder, and decoder model configurations
    >>> text_encoder_config = T5Config()
    >>> audio_encoder_config = EncodecConfig()
    >>> decoder_config = MusicgenDecoderConfig()

    >>> configuration = MusicgenConfig(
    ...     text_encoder=text_encoder_config,
    ...     audio_encoder=audio_encoder_config,
    ...     decoder=decoder_config,
    ... )

    >>> # Initializing a MusicgenForConditionalGeneration (with random weights) from the facebook/musicgen-small style configuration
    >>> model = MusicgenForConditionalGeneration(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    >>> config_text_encoder = model.config.text_encoder
    >>> config_audio_encoder = model.config.audio_encoder
    >>> config_decoder = model.config.decoder

    >>> # Saving the model, including its configuration
    >>> model.save_pretrained("musicgen-model")

    >>> # loading model and config from pretrained folder
    >>> musicgen_config = MusicgenConfig.from_pretrained("musicgen-model")
    >>> model = MusicgenForConditionalGeneration.from_pretrained("musicgen-model", config=musicgen_config)
    ```musicgenr7   )text_encoderaudio_encoderdecodersub_configsThas_no_defaults_at_initNrD   rE   rF   r   r    c                    t        | j                  t              rA| j                  j                  d      }t	        j
                  |fi | j                  | _        n%| j                  t        d| j                   d      t        | j                  t              rA| j                  j                  d      }t	        j
                  |fi | j                  | _        n%| j                  t        d| j                   d      t        | j                  t              rt        di | j                  | _	        n| j                  t               | _	        d| _        t        | 4  di | y )Nr7   zA configuration of type z: cannot be instantiated because text_encoder is not passedz; cannot be instantiated because audio_encoder is not passedTr@   )
isinstancerD   dictpopr	   	for_modelr.   r7   rE   rF   r   is_encoder_decodersuper__post_init__)r0   kwargstext_encoder_model_typeaudio_encoder_model_type	__class__s       r1   rP   zMusicgenConfig.__post_init__}   s8   d''.&*&7&7&;&;L&I# * 4 45L bPTPaPa bD&*4??*;;uv  d(($/'+'9'9'='=l'K$!+!5!56N!eRVRdRd!eD'*4??*;;vw  dllD)0@4<<@DL\\!02DL"&''r3   c                 .    | j                   j                  S )N)rE   sampling_rater/   s    r1   rV   zMusicgenConfig.sampling_rate   s     !!///r3   )r4   r5   r6   __doc__r7   r   r>   r;   r	   r   rG   rK   typer   rH   r=   rD   rE   rF   r    r<   rP   propertyrV   __classcell__)rT   s   @r1   rB   rB   >   s    -^ !+J*"#(@K$sD)9$::;< 
 /3Xd^2,0L$))0-1M4**1'+GT$$+ $$(2 0 0r3   rB   N)rW   typingr   huggingface_hub.dataclassesr   configuration_utilsr   utilsr   auto.configuration_autor	   r   rB   __all__r@   r3   r1   <module>ra      s    #  . 3 # 0 45 u,  u  6 uF 45Y0% Y0  6Y0x 4
5r3   