Transformers documentation
MusicGen Melody
Эта модель была опубликована в HF papers 08.06.2023 и добавлена в Hugging Face Transformers 18.03.2024.
MusicGen Melody
Обзор
Модель 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:
- Здесь звуковой промпт используется как условный сигнал для генерируемого звукового сэмпла, тогда как в MusicGen он применяется для продолжения аудио.
- Условные текстовые и аудиосигналы конкатенируются со скрытыми состояниями декодера, а не используются как сигнал кросс-внимания, как в 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 можно разложить на три отдельных этапа:
- Текстовый энкодер: преобразует текстовые входные данные в последовательность представлений скрытых состояний. Предобученные модели MusicGen используют замороженный текстовый энкодер из T5 или Flan-T5.
- Декодер MusicGen Melody: языковая модель (LM), которая авто-регрессивно генерирует аудио-токены (или коды) с условием на представления скрытых состояний энкодера
- Аудио-декодер: используется для восстановления аудиоволны из аудиотокенов, предсказанных декодером.
Таким образом, модель 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
< source >( 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
< source >( feature_extractortokenizer )
Создаёт MusicgenMelodyProcessor, который объединяет feature extractor и tokenizer в единый processor.
MusicgenMelodyProcessor предоставляет все возможности MusicgenMelodyFeatureExtractor и T5Tokenizer. Подробнее см. в ~MusicgenMelodyFeatureExtractor и ~T5Tokenizer.
__call__
< source >( *args**kwargs )
Параметры
- return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты NumPynp.ndarray.
get_unconditional_inputs
< source >( num_samples = 1return_tensors = 'pt' )
Вспомогательная функция для получения нулевых входных данных для безусловной генерации, что позволяет использовать модель без 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
< source >( 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
< source >( 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
< source >( config: MusicgenMelodyDecoderConfig )
Параметры
- config (MusicgenMelodyDecoderConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Musicgen Melody без дополнительных слоёв, выводящая необработанные скрытые состояния.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
< source >( config: MusicgenMelodyDecoderConfig )
Параметры
- config (MusicgenMelodyDecoderConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель декодера Musicgen Melody с головной частью для моделирования языка.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
< source >( 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
< source >( 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])