Transformers documentation

MusicGen Melody

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Эта модель была опубликована в HF papers 08.06.2023 и добавлена в Hugging Face Transformers 18.03.2024.

MusicGen Melody

FlashAttention SDPA

Обзор

Модель MusicGen Melody была предложена в работе Simple and Controllable Music Generation авторами Jade Copet, Felix Kreuk, Itai Gat, Tal Remez, David Kant, Gabriel Synnaeve, Yossi Adi и Alexandre Défossez.

MusicGen Melody — это одностадийная авто-регрессивная модель Transformer, способная генерировать музыкальные сэмплы высокого качества на основе текстовых описаний или аудиопромптов. Текстовые описания прогоняются через замороженную модель текстового энкодера для получения последовательности скрытых представлений. Затем MusicGen обучается предсказывать дискретные аудиотокены, или аудиокоды, в условиях этих скрытых представлений. Эти аудиотокены затем декодируются с помощью модели сжатия аудио, такой как EnCodec, для восстановления аудиоволны.

Благодаря эффективному способу чередования токенов, MusicGen не требует самообучаемого семантического представления текстовых или аудиопромптов, что исключает необходимость каскадного применения нескольких моделей для предсказания набора кодовых книг (например, иерархического или с апсемплингом). Вместо этого он способен генерировать все кодовые книги за один прямой проход.

Аннотация из статьи следующая:

Мы рассматриваем задачу условной генерации музыки. Мы представляем MusicGen — единую языковую модель (LM), работающую с несколькими потоками сжатого дискретного представления музыки, то есть токенами. В отличие от предыдущих работ, MusicGen состоит из одностадийного трансформерного LM в сочетании с эффективными паттернами чередования токенов, что исключает необходимость каскадирования нескольких моделей, например, иерархического или с апсемплингом. Используя этот подход, мы показываем, как MusicGen может генерировать образцы высокого качества, управляясь текстовым описанием или мелодическими характеристиками, что позволяет лучше контролировать генерируемый результат. Мы провели обширную эмпирическую оценку, включая как автоматические, так и человеческие исследования, показав, что предложенный подход превосходит оценённые базовые модели на стандартном бенчмарке генерации музыки по тексту. С помощью исследований с абляцией мы раскрываем важность каждого из компонентов, составляющих MusicGen.

Эта модель была предоставлена пользователем ylacombe. Исходный код можно найти здесь. Предобученные контрольные точки доступны на Hugging Face Hub.

Отличие от MusicGen

Существуют два ключевых отличия от MusicGen:

  1. Здесь звуковой промпт используется как условный сигнал для генерируемого звукового сэмпла, тогда как в MusicGen он применяется для продолжения аудио.
  2. Условные текстовые и аудиосигналы конкатенируются со скрытыми состояниями декодера, а не используются как сигнал кросс-внимания, как в MusicGen.

Генерация

MusicGen Melody поддерживает два режима генерации: greedy и sampling. На практике режим sampling даёт значительно лучшие результаты, чем greedy, поэтому мы рекомендуем использовать sampling, где это возможно. Режим sampling включён по умолчанию, его можно явно указать, установив do_sample=True при вызове MusicgenMelodyForConditionalGeneration.generate(), либо переопределив конфигурацию генерации модели (см. ниже).

Transformers поддерживает как моно (1-канальные), так и стерео (2-канальные) варианты MusicGen Melody. Моно-версии генерируют один набор кодовых книг. Стерео-версии генерируют 2 набора кодовых книг, по одному для каждого канала (левый/правый), и каждый набор кодовых книг декодируется независимо через модель сжатия аудио. Аудиопотоки для каждого канала объединяются, чтобы получить итоговый стереовыход.

Условная генерация аудио

Модель может генерировать аудиоприем, используя текстовый и аудиопромпт, при этом входные данные предварительно обрабатываются с помощью MusicgenMelodyProcessor.

В следующих примерах мы загружаем аудиофайл с помощью библиотеки 🤗 Datasets, которую можно установить через pip с помощью следующей команды:

pip install --upgrade pip
pip install datasets[audio]

Аудиофайл, который мы собираемся использовать, загружается следующим образом:

from datasets import load_dataset


dataset = load_dataset("sanchit-gandhi/gtzan", split="train", streaming=True)
sample = next(iter(dataset))["audio"]

Аудиопромпт в идеале должен быть свободен от низкочастотных сигналов, которые обычно генерируются инструментами, такими как барабаны и бас-гитара. Модель Demucs можно использовать для выделения вокала и других сигналов из компонентов барабанов и баса.

Если вы хотите использовать Demucs, сначала выполните шаги по установке, описанные здесь, прежде чем использовать следующий фрагмент кода:

import torch
from demucs import pretrained
from demucs.apply import apply_model
from demucs.audio import convert_audio


wav = torch.tensor(sample["array"]).to(torch.float32)

demucs = pretrained.get_model('htdemucs')

wav = convert_audio(wav[None], sample["sampling_rate"], demucs.samplerate, demucs.audio_channels)
wav = apply_model(demucs, wav[None])

Затем вы можете использовать следующий фрагмент кода для генерации музыки:

from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration


processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

inputs = processor(
    audio=wav,
    sampling_rate=demucs.samplerate,
    text=["80s blues track with groovy saxophone"],
    padding=True,
    return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

Вы также можете передать аудиосигнал напрямую, не используя Demucs, хотя качество генерации, скорее всего, снизится:

from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration


processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

inputs = processor(
    audio=sample["array"],
    sampling_rate=sample["sampling_rate"],
    text=["80s blues track with groovy saxophone"],
    padding=True,
    return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

Аудиовыход представляет собой трёхмерный тензор Torch с формой (batch_size, num_channels, sequence_length). Чтобы прослушать сгенерированные аудиосемплы, вы можете воспроизвести их в ipynb-ноутбуке:

from IPython.display import Audio


sampling_rate = model.config.audio_encoder.sampling_rate
Audio(audio_values[0].numpy(), rate=sampling_rate)

Или сохраните их в файл .wav с помощью сторонней библиотеки, например soundfile:

import soundfile as sf


sampling_rate = model.config.audio_encoder.sampling_rate
sf.write("musicgen_out.wav", audio_values[0].T.numpy(), sampling_rate)

Условная генерация только текста

Тот же MusicgenMelodyProcessor можно использовать для предварительной обработки текстового промпта.

from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration


processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

inputs = processor(
    text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],
    padding=True,
    return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

Параметр guidance_scale используется в classifier free guidance (CFG) для задания веса между условными логитами (предсказанными на основе текстовых промптов) и безусловными логитами (предсказанными на основе безусловного или «нулевого» промпта). Более высокое значение guidance scale побуждает модель генерировать образцы, более тесно связанные с входным промптом, как правило, за счёт ухудшения качества аудио. CFG включается при установке guidance_scale > 1. Для наилучших результатов используйте guidance_scale=3 (значение по умолчанию).

Вы также можете выполнять генерацию пакетом:


from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration


processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

# take the first quarter of the audio sample
sample_1 = sample["array"][: len(sample["array"]) // 4]

# take the first half of the audio sample
sample_2 = sample["array"][: len(sample["array"]) // 2]

inputs = processor(
    audio=[sample_1, sample_2],
    sampling_rate=sample["sampling_rate"],
    text=["80s blues track with groovy saxophone", "90s rock song with loud guitars and heavy drums"],
    padding=True,
    return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

Безусловная генерация

Входные данные для безусловной (или «нулевой») генерации можно получить с помощью метода MusicgenMelodyProcessor.get_unconditional_inputs():

from transformers import MusicgenMelodyForConditionalGeneration, MusicgenMelodyProcessor


model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")
unconditional_inputs = MusicgenMelodyProcessor.from_pretrained("facebook/musicgen-melody").get_unconditional_inputs(num_samples=1)

audio_values = model.generate(**unconditional_inputs, do_sample=True, max_new_tokens=256)

Конфигурация генерации

Параметры по умолчанию, управляющие процессом генерации, такие как выборка, масштаб направляющего сигнала и количество генерируемых токенов, можно найти в конфигурации генерации модели и изменить по необходимости:

from transformers import MusicgenMelodyForConditionalGeneration


model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto")

# inspect the default generation config
model.generation_config

# increase the guidance scale to 4.0
model.generation_config.guidance_scale = 4.0

# decrease the max length to 256 tokens
model.generation_config.max_length = 256

Обратите внимание, что любые аргументы, переданные в метод generate, перекрывают значения из конфигурации генерации, поэтому установка do_sample=False в вызове generate перекроет значение model.generation_config.do_sample в конфигурации генерации.

Структура модели

Модель MusicGen можно разложить на три отдельных этапа:

  1. Текстовый энкодер: преобразует текстовые входные данные в последовательность представлений скрытых состояний. Предобученные модели MusicGen используют замороженный текстовый энкодер из T5 или Flan-T5.
  2. Декодер MusicGen Melody: языковая модель (LM), которая авто-регрессивно генерирует аудио-токены (или коды) с условием на представления скрытых состояний энкодера
  3. Аудио-декодер: используется для восстановления аудиоволны из аудиотокенов, предсказанных декодером.

Таким образом, модель MusicGen может использоваться как автономная модель-декодер, соответствующая классу MusicgenMelodyForCausalLM, или как составная модель, включающая текстовый и аудиоконкодер, соответствующая классу MusicgenMelodyForConditionalGeneration. Если необходимо загрузить только декодер из предварительно обученной контрольной точки, это можно сделать, сначала указав правильный конфиг, либо получить доступ к нему через атрибут .decoder составной модели:

from transformers import AutoConfig, MusicgenMelodyForCausalLM, MusicgenMelodyForConditionalGeneration


# Option 1: get decoder config and pass to `.from_pretrained`
decoder_config = AutoConfig.from_pretrained("facebook/musicgen-melody").decoder
decoder = MusicgenMelodyForCausalLM.from_pretrained("facebook/musicgen-melody", **decoder_config.to_dict(), device_map="auto")

# Option 2: load the entire composite model, but only return the decoder
decoder = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody", device_map="auto").decoder

Поскольку модели текстового и аудиокодировщика заморожены во время обучения, декодер MusicGen MusicgenMelodyForCausalLM можно обучать автономно на датасете скрытых состояний кодировщиков и аудиокодов. Для инференса обученный декодер можно объединить с замороженными текстовым и аудиокодировщиками, чтобы восстановить составную модель MusicgenMelodyForConditionalGeneration.

Конвертация контрольных точек

  • После загрузки исходных контрольных точек с этой страницы вы можете выполнить их конвертацию с помощью скрипта конвертации, доступного по пути src/transformers/models/musicgen_melody/convert_musicgen_melody_transformers.py, следующей командой:
python src/transformers/models/musicgen_melody/convert_musicgen_melody_transformers.py \
    --checkpoint="facebook/musicgen-melody" --pytorch_dump_folder /output/path 

Советы:

  • MusicGen обучен на контрольной точке Encodec с частотой 32 кГц. Убедитесь, что вы используете совместимую версию модели Encodec.
  • Режим сэмплирования, как правило, даёт лучшие результаты, чем жадный алгоритм. Переключить сэмплирование можно с помощью переменной do_sample в вызове MusicgenMelodyForConditionalGeneration.generate().

MusicgenMelodyDecoderConfig

класс transformers.MusicgenMelodyDecoderConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 2048max_position_embeddings: int = 2048num_hidden_layers: int = 24ffn_dim: int = 4096num_attention_heads: int = 16layerdrop: float | int = 0.0use_cache: bool = Trueactivation_function: str = 'gelu'hidden_size: int = 1024dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0initializer_factor: float = 0.02scale_embedding: bool = Falsenum_codebooks: int = 4audio_channels: int = 1pad_token_id: int | None = 2048bos_token_id: int | None = 2048eos_token_id: int | list[int] | None = Nonetie_word_embeddings: bool = Falseis_decoder: bool = Falseadd_cross_attention: bool = False )

Параметры

  • vocab_size (int, необязательный, по умолчанию 2048) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в input_ids.
  • max_position_embeddings (int, необязательный, по умолчанию 2048) — Максимальная длина последовательности, с которой может использоваться эта модель.
  • num_hidden_layers (int, необязательный, по умолчанию 24) — Количество скрытых слоев в декодере Transformer.
  • ffn_dim (int, необязательный, по умолчанию 4096) — Размерность представлений MLP.
  • num_attention_heads (int, необязательный, по умолчанию 16) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • layerdrop (Union[float, int], необязательный, по умолчанию 0.0) — Вероятность LayerDrop. См. [статью о LayerDrop](см. https://huggingface.co/papers/1909.11556) для подробностей.
  • use_cache (bool, необязательный, по умолчанию True) — Указывает, должен ли модель возвращать последние ключи/значения внимания (не используется во всех моделях). Актуально только если config.is_decoder=True или если модель является генеративной моделью только с декодером.
  • activation_function (str, необязательный, по умолчанию gelu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • hidden_size (int, необязательный, по умолчанию 1024) — Размерность скрытых представлений.
  • dropout (Union[float, int], необязательный, по умолчанию 0.1) — Коэффициент для всех слоёв dropout.
  • attention_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания.
  • activation_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для активаций внутри полносвязного слоя.
  • initializer_factor (float, необязательный, по умолчанию 0.02) — Коэффициент для инициализации всех матриц весов (должен быть равен 1, используется внутренне для тестирования инициализации).
  • scale_embedding (bool, необязательный, по умолчанию False) — Указывает, следует ли масштабировать эмбеддинги, деля их на sqrt(d_model).
  • num_codebooks (int, необязательный, по умолчанию 4) — Количество параллельных кодовых книг, используемых моделью.
  • audio_channels (int, необязательный, по умолчанию 1) — Количество аудиоканалов, используемых моделью (моно или стерео). Стерео-модели генерируют отдельные аудиопотоки для левого и правого выходных каналов. Моно-модели генерируют один аудиопоток на выходе.
  • pad_token_id (int, необязательный, по умолчанию 2048) — Идентификатор токена, используемого для выравнивания (padding) в словаре.
  • bos_token_id (int, необязательный, по умолчанию 2048) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • eos_token_id (Union[int, list[int]], необязательный) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • tie_word_embeddings (bool, необязательный, по умолчанию False) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.
  • is_decoder (bool, необязательный, по умолчанию False) — Указывает, используется ли модель в качестве декодера. Если False, модель используется как энкодер.
  • add_cross_attention (bool, необязательный, по умолчанию False) — Указывает, следует ли добавлять слои кросс-внимания в модель.

Это класс конфигурации для хранения настроек модели MusicgenMelodyModel. Он используется для создания модели Musicgen Melody в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/musicgen-melody

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

MusicgenMelodyProcessor

класс transformers.MusicgenMelodyProcessor

< >

( feature_extractortokenizer )

Параметры

  • feature_extractor (MusicgenMelodyFeatureExtractor) — Экстрактор признаков является обязательным входным параметром.
  • tokenizer (T5Tokenizer) — Токенизатор является обязательным входным параметром.

Создаёт MusicgenMelodyProcessor, который объединяет feature extractor и tokenizer в единый processor.

MusicgenMelodyProcessor предоставляет все возможности MusicgenMelodyFeatureExtractor и T5Tokenizer. Подробнее см. в ~MusicgenMelodyFeatureExtractor и ~T5Tokenizer.

__call__

< >

( *args**kwargs )

Параметры

  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты NumPy np.ndarray.

get_unconditional_inputs

< >

( num_samples = 1return_tensors = 'pt' )

Параметры

  • num_samples (int, необязательный) — Количество аудиовыборок, которые нужно сгенерировать без условий.

Вспомогательная функция для получения нулевых входных данных для безусловной генерации, что позволяет использовать модель без feature extractor или tokenizer.

Пример:

>>> from transformers import MusicgenMelodyForConditionalGeneration, MusicgenMelodyProcessor

>>> model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody")

>>> # get the unconditional (or 'null') inputs for the model
>>> processor = MusicgenMelodyProcessor.from_pretrained("facebook/musicgen-melody")
>>> unconditional_inputs = processor.get_unconditional_inputs(num_samples=1)

>>> audio_samples = model.generate(**unconditional_inputs, max_new_tokens=256)

MusicgenMelodyFeatureExtractor

класс transformers.MusicgenMelodyFeatureExtractor

< >

( feature_size = 12sampling_rate = 32000hop_length = 4096chunk_length = 30n_fft = 16384num_chroma = 12padding_value = 0.0return_attention_mask = Falsestem_indices = [3, 2]**kwargs )

Параметры

  • feature_size (int, необязательный, по умолчанию 12) — Размерность признаков извлечённых признаков.
  • sampling_rate (int, необязательный, по умолчанию 32000) — Частота дискретизации, с которой аудиофайлы должны быть оцифрованы, выраженная в герцах (Гц).
  • hop_length (int, необязательный, по умолчанию 4096) — Длина перекрывающихся окон для БПФ, используемой для получения коэффициентов Мель-частот.
  • chunk_length (int, необязательный, по умолчанию 30) — Максимальное количество фрагментов по sampling_rate выборок, используемых для обрезки и дополнения более длинных или более коротких аудиопоследовательностей.
  • n_fft (int, необязательный, по умолчанию 16384) — Размер преобразования Фурье.
  • num_chroma (int, необязательный, по умолчанию 12) — Количество используемых хромовых бинов.
  • padding_value (float, необязательный, по умолчанию 0.0) — Значение, используемое для дополнения аудио.
  • return_attention_mask (bool, необязательный, по умолчанию False) — Возвращать ли attention mask. Может быть переопределено при вызове feature extractor.

    Что такое маски внимания?

    Для моделей Whisper при пакетном выводе всегда следует передавать attention_mask, чтобы избежать тонких ошибок.

  • stem_indices (list[int], необязательный, по умолчанию [3, 2]) — Каналы стемов, которые нужно извлечь, если на вход переданы результаты demucs.

Создаёт экстрактор признаков MusicgenMelody.

Этот экстрактор признаков наследуется от SequenceFeatureExtractor, который содержит большинство основных методов. За дополнительной информацией о них следует обращаться к этому суперклассу.

Этот класс извлекает хроматические признаки из аудио, обработанного Demucs, или непосредственно из исходной звуковой волны.

MusicgenMelodyConfig

класс transformers.MusicgenMelodyConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonetext_encoder: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_encoder: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedecoder: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_chroma: int = 12chroma_length: int = 235initializer_factor: float = 0.02 )

Параметры

  • text_encoder (Union[dict, PretrainedConfig]) — Экземпляр объекта конфигурации, определяющий конфигурацию текстового кодировщика.
  • audio_encoder (Union[dict, PretrainedConfig]) — Объект конфигурации, определяющий конфигурацию аудио-энкодера.
  • decoder (Union[dict, PretrainedConfig]) — Объект конфигурации, определяющий конфигурацию декодера.
  • num_chroma (int, необязательный, по умолчанию 12) — Количество используемых хромовых бинов.
  • chroma_length (int, необязательный, по умолчанию 235) — Максимальная длительность хрома, если аудио используется для обусловливания модели. Соответствует максимальной длительности, использовавшейся при обучении.
  • initializer_factor (float, необязательный, по умолчанию 0.02) — Коэффициент для инициализации всех матриц весов (должен быть равен 1, используется внутренне для тестирования инициализации).

Это класс конфигурации для хранения настроек модели MusicgenMelodyModel. Он используется для создания модели Musicgen Melody в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/musicgen-melody

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

Пример:

>>> from transformers import (
...     MusicgenMelodyConfig,
...     MusicgenMelodyDecoderConfig,
...     T5Config,
...     EncodecConfig,
...     MusicgenMelodyForConditionalGeneration,
... )

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

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

>>> # Initializing a MusicgenMelodyForConditionalGeneration (with random weights) from the facebook/musicgen-melody style configuration
>>> model = MusicgenMelodyForConditionalGeneration(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_melody-model")

>>> # loading model and config from pretrained folder
>>> musicgen_melody_config = MusicgenMelodyConfig.from_pretrained("musicgen_melody-model")
>>> model = MusicgenMelodyForConditionalGeneration.from_pretrained("musicgen_melody-model", config=musicgen_melody_config)

MusicgenMelodyModel

класс transformers.MusicgenMelodyModel

< >

( config: MusicgenMelodyDecoderConfig )

Параметры

  • config (MusicgenMelodyDecoderConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель Musicgen Melody без дополнительных слоёв, выводящая необработанные скрытые состояния.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size * num_codebooks, sequence_length)) — Индексы токенов входной последовательности в словаре, соответствующие последовательности аудиокодов. Индексы можно получить, закодировав аудиопромпт с помощью модели аудиоконкодера для предсказания аудиокодов, например, с помощью EncodecModel. Подробности см. в EncodecModel.encode(). Что такое входные идентификаторы? В ходе прямого прохода input_ids автоматически преобразуются из формы (batch_size * num_codebooks, target_sequence_length) в (batch_size, num_codebooks, target_sequence_length). Если вы получаете аудиокоды из модели аудиоконкодера, такой как EncodecModel, убедитесь, что количество кадров равно 1, и что вы изменяете размерность аудиокодов с (frames, batch_size, num_codebooks, target_sequence_length) до (batch_size * num_codebooks, target_sequence_length) перед передачей их в качестве input_ids.

    Индексы можно получить, закодировав аудиопромпт с помощью аудио-кодерной модели для предсказания аудиокодов, например, с использованием EncodecModel. Подробности см. в EncodecModel.encode().

    Что такое входные идентификаторы?

    input_ids автоматически преобразуются из формы (batch_size * num_codebooks, target_sequence_length) в (batch_size, num_codebooks, target_sequence_length) при прямом проходе. Если вы получаете аудиокоды от модели кодирования аудио, например EncodecModel, убедитесь, что количество кадров равно 1, и что вы изменяете размерность аудиокодов с (frames, batch_size, num_codebooks, target_sequence_length) до (batch_size * num_codebooks, target_sequence_length) перед их передачей в качестве input_ids.

  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • encoder_hidden_states (torch.Tensor формы (batch_size, encoder_sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний, представляющая собой конкатенацию вывода текстового энкодера и обработанного вывода аудиоэнкодера. Используется как условный сигнал, поэтому будет конкатенирована с проецированными decoder_input_ids.
  • encoder_attention_mask (torch.LongTensor формы (batch_size, encoder_sequence_length), , необязательный) — Маска для предотвращения применения механизма внимания к условным скрытым состояниям. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

Возвращает

BaseModelOutputWithPast или tuple(torch.Tensor)

BaseModelOutputWithPast или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (None) и входных данных.

Метод forward модели MusicgenMelodyModel переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

    Если используется past_key_values, выводится только последнее скрытое состояние последовательностей формы (batch_size, 1, hidden_size).

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.

    Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и, при необходимости, если config.is_encoder_decoder=True, в блоках кросс-внимания), которые можно использовать (см. входной параметр past_key_values) для ускорения последовательного декодирования.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

MusicgenMelodyForCausalLM

класс transformers.MusicgenMelodyForCausalLM

< >

( config: MusicgenMelodyDecoderConfig )

Параметры

  • config (MusicgenMelodyDecoderConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель декодера Musicgen Melody с головной частью для моделирования языка.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MusicgenMelodyOutputWithPast or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size * num_codebooks, sequence_length)) — Индексы токенов входной последовательности в словаре, соответствующие последовательности аудиокодов. Индексы можно получить, закодировав аудиопромпт с помощью модели аудиоконкодера для предсказания аудиокодов, например, с помощью EncodecModel. Подробности см. в EncodecModel.encode(). Что такое входные идентификаторы? В ходе прямого прохода input_ids автоматически преобразуются из формы (batch_size * num_codebooks, target_sequence_length) в (batch_size, num_codebooks, target_sequence_length). Если вы получаете аудиокоды из модели аудиоконкодера, такой как EncodecModel, убедитесь, что количество кадров равно 1, и что вы изменяете размерность аудиокодов с (frames, batch_size, num_codebooks, target_sequence_length) до (batch_size * num_codebooks, target_sequence_length) перед передачей их в качестве input_ids.

    Индексы можно получить, закодировав аудиопромпт с помощью аудио-кодерной модели для предсказания аудиокодов, например, с использованием EncodecModel. Подробности см. в EncodecModel.encode().

    Что такое входные идентификаторы?

    input_ids автоматически преобразуются из формы (batch_size * num_codebooks, target_sequence_length) в (batch_size, num_codebooks, target_sequence_length) при прямом проходе. Если вы получаете аудиокоды от модели кодирования аудио, например EncodecModel, убедитесь, что количество кадров равно 1, и что вы изменяете размерность аудиокодов с (frames, batch_size, num_codebooks, target_sequence_length) до (batch_size * num_codebooks, target_sequence_length) перед их передачей в качестве input_ids.

  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • encoder_hidden_states (torch.Tensor формы (batch_size, encoder_sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний, представляющая собой конкатенацию вывода текстового энкодера и обработанного вывода аудиоэнкодера. Используется как условный сигнал, поэтому будет конкатенирована с проецированными decoder_input_ids.
  • encoder_attention_mask (torch.LongTensor формы (batch_size, encoder_sequence_length), , необязательный) — Маска для предотвращения применения механизма внимания к условным скрытым состояниям. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).
  • labels (torch.LongTensor формы (batch_size, sequence_length, num_codebooks), необязательный) — Метки для моделирования языка. Обратите внимание, что метки сдвинуты внутри модели, то есть можно задать labels = input_ids Индексы выбираются из диапазона [-100, 0, ..., config.vocab_size] Все метки, установленные в -100, игнорируются (маскируются); функция потерь вычисляется только для меток из диапазона [0, ..., config.vocab_size]

Возвращает

MusicgenMelodyOutputWithPast или tuple(torch.Tensor)

MusicgenMelodyOutputWithPast или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (MusicgenMelodyConfig) и входных данных.

Метод forward класса MusicgenMelodyForCausalLM переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери языковой модели (для предсказания следующего токена).

  • logits (torch.Tensor формы (batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.

    Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать (см. вход past_key_values) для ускорения последовательного декодирования.

  • hidden_states (tuple[torch.Tensor], необязательный, возвращается при передаче output_hidden_states=True или когда config.output_hidden_states=True) — Кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • encoder_hidden_states (torch.Tensor формы (batch_size, encoder_sequence_length, hidden_size), необязательный) — Последовательность условных скрытых состояний, представляющая собой конкатенацию проекции вывода текстового энкодера и проекции вывода аудиоэнкодера. Используется как условный сигнал.

Пример:

MusicgenMelodyForConditionalGeneration

класс transformers.MusicgenMelodyForConditionalGeneration

< >

( config: MusicgenMelodyConfig = Nonetext_encoder: transformers.modeling_utils.PreTrainedModel | None = Noneaudio_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.models.musicgen_melody.modeling_musicgen_melody.MusicgenMelodyForCausalLM | None = None )

Параметры

  • config (MusicgenMelodyConfig, необязательный) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
  • text_encoder (PreTrainedModel, необязательный) — Модель текстового кодировщика, которая кодирует текст в скрытые состояния для условного формирования.
  • audio_encoder (PreTrainedModel, необязательный) — Модель аудио-энкодера, которая кодирует аудио в скрытые состояния для условного формирования.
  • decoder (MusicgenMelodyForCausalLM, необязательный) — Модель декодера, которая генерирует аудиотокены на основе сигналов обусловливания.

Модель Musicgen Melody для генерации токенов с условием на другие модальности (например, генерация текста из изображения и текста).

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MusicgenMelodyOutputWithPast or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • attention_mask (torch.BoolTensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • input_features (torch.Tensor формы (batch_size, sequence_length, feature_dim), необязательный) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощью MusicgenMelodyFeatureExtractor. Подробности см. в MusicgenMelodyFeatureExtractor.__call__() (MusicgenMelodyProcessor использует MusicgenMelodyFeatureExtractor для обработки аудио).
  • decoder_input_ids (torch.LongTensor формы (batch_size * num_codebooks, target_sequence_length), необязательный) — Индексы токенов входной последовательности декодера в словаре, соответствующие последовательности аудиокодов. Индексы можно получить, закодировав аудиопромпт с помощью модели аудиоконкодера для предсказания аудиокодов, например, с помощью EncodecModel. Подробности см. в EncodecModel.encode(). Что такое decoder input IDs? decoder_input_ids автоматически преобразуются из формы (batch_size * num_codebooks, target_sequence_length) в (batch_size, num_codebooks, target_sequence_length) при прямом проходе. Если вы получаете аудиокоды из модели аудиоконкодера, такой как EncodecModel, убедитесь, что количество кадров равно 1, и что вы изменяете размерность аудиокодов с (frames, batch_size, num_codebooks, target_sequence_length) до (batch_size * num_codebooks, target_sequence_length) перед передачей их в качестве decoder_input_ids.

    Индексы можно получить, закодировав аудиопромпт с помощью аудио-кодерной модели для предсказания аудиокодов, например, с использованием EncodecModel. Подробности см. в EncodecModel.encode().

    Что такое входные идентификаторы декодера?

    decoder_input_ids автоматически преобразуются из формы (batch_size * num_codebooks, target_sequence_length) в (batch_size, num_codebooks, target_sequence_length) при прямом проходе. Если вы получаете аудиокоды от модели кодирования аудио, например EncodecModel, убедитесь, что количество кадров равно 1, и что вы изменяете форму аудиокодов с (frames, batch_size, num_codebooks, target_sequence_length) на (batch_size * num_codebooks, target_sequence_length) перед их передачей в качестве decoder_input_ids.

  • decoder_attention_mask (torch.LongTensor формы (batch_size, target_sequence_length), необязательный) — Поведение по умолчанию: генерировать тензор, игнорирующий токены заполнения в decoder_input_ids. По умолчанию также будет использоваться каузальная маска.
  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • encoder_hidden_states (torch.Tensor формы (batch_size, encoder_sequence_length, hidden_size), необязательный) — Последовательность условных скрытых состояний, представляющая собой конкатенацию проекции вывода текстового энкодера и проекции вывода аудиоэнкодера. Используется как условный сигнал, поэтому будет конкатенирована с проекцией decoder_input_ids.
  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • decoder_inputs_embeds (torch.Tensor формы (batch_size, target_sequence_length, hidden_size), необязательный) — Необязательно, вместо передачи decoder_input_ids можно напрямую передать встроенное представление. Если past_key_values используется, необязательно вводить только последний decoder_inputs_embeds (см. past_key_values). Это полезно, если вы хотите больше контролировать, как индексы decoder_input_ids преобразуются в соответствующие векторы, чем это делает внутренняя матрица эмбеддингов модели.

    Если decoder_input_ids и decoder_inputs_embeds не заданы, decoder_inputs_embeds принимает значение inputs_embeds.

  • labels (torch.LongTensor формы (batch_size, sequence_length, num_codebooks), необязательный) — Метки для моделирования языка. Обратите внимание, что метки сдвинуты внутри модели, то есть можно задать labels = input_ids Индексы выбираются из диапазона [-100, 0, ..., config.vocab_size] Все метки, установленные в -100, игнорируются (маскируются); функция потерь вычисляется только для меток из диапазона [0, ..., config.vocab_size]
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

Возвращает

MusicgenMelodyOutputWithPast или tuple(torch.Tensor)

MusicgenMelodyOutputWithPast или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (MusicgenMelodyConfig) и входных данных.

Метод forward класса MusicgenMelodyForConditionalGeneration переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери языковой модели (для предсказания следующего токена).

  • logits (torch.Tensor формы (batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.

    Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать (см. вход past_key_values) для ускорения последовательного декодирования.

  • hidden_states (tuple[torch.Tensor], необязательный, возвращается при передаче output_hidden_states=True или когда config.output_hidden_states=True) — Кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • encoder_hidden_states (torch.Tensor формы (batch_size, encoder_sequence_length, hidden_size), необязательный) — Последовательность условных скрытых состояний, представляющая собой конкатенацию проекции вывода текстового энкодера и проекции вывода аудиоэнкодера. Используется как условный сигнал.

Примеры:

>>> from transformers import AutoProcessor, MusicgenMelodyForConditionalGeneration
>>> import torch

>>> processor = AutoProcessor.from_pretrained("facebook/musicgen-melody")
>>> model = MusicgenMelodyForConditionalGeneration.from_pretrained("facebook/musicgen-melody")

>>> inputs = processor(
...     text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],
...     padding=True,
...     return_tensors="pt",
... )

>>> pad_token_id = model.generation_config.pad_token_id
>>> decoder_input_ids = (
...     torch.ones((inputs.input_ids.shape[0] * model.decoder.num_codebooks, 1), dtype=torch.long)
...     * pad_token_id
... )

>>> logits = model(**inputs, decoder_input_ids=decoder_input_ids).logits
>>> logits.shape  # (bsz * num_codebooks, encoder_len + tgt_len, vocab_size)
torch.Size([8, 249, 2048])
Update on GitHub