Transformers documentation

MusicGen

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

Bu model 2023-06-08 tarihinde HF papers'ta yayımlandı ve 2023-06-29 tarihinde Hugging Face Transformers'a katkıda bulunuldu.

MusicGen

FlashAttention SDPA

Genel Bakış

MusicGen modeli, Jade Copet, Felix Kreuk, Itai Gat, Tal Remez, David Kant, Gabriel Synnaeve, Yossi Adi ve Alexandre Défossez tarafından kaleme alınan Simple and Controllable Music Generation makalesinde önerilmiştir.

MusicGen, metin açıklamalarına veya ses istemlerine koşullu olarak yüksek kaliteli müzik örnekleri üretebilen tek aşamalı otoregresif bir Transformer modelidir. Metin açıklamaları, gizli durum temsilleri dizisini elde etmek için dondurulmuş bir metin kodlayıcı modelinden geçirilir. MusicGen, bu gizli durumlara koşullu olarak ayrık ses tokenlarını, yani ses kodlarını tahmin edecek şekilde eğitilir. Bu ses tokenları, ardından EnCodec gibi bir ses sıkıştırma modeli kullanılarak çözümlenir ve ses dalgası formu geri kazanılır.

Verimli bir jeton iç içe geçirme deseni sayesinde MusicGen, metin/ses istemleri için kendiliğinden denetimli bir semantik temsil gerektirmez; bu da, kod kitaplığı kümesini tahmin etmek için birden fazla modeli kademeli olarak kullanma (örneğin hiyerarşik olarak veya örnekleme artırma yoluyla) ihtiyacını ortadan kaldırır. Bunun yerine, tüm kod kitaplıklarını tek bir ileri geçişte üretebilir.

Makalenin özeti aşağıdaki gibidir:

Koşullu müzik üretimi görevini ele alıyoruz. Sıkıştırılmış ayrık müzik temsili akışları, yani token'lar üzerinde çalışan tek bir Dil Modeli (LM) olan MusicGen'i tanıtıyoruz. Önceki çalışmalardan farklı olarak MusicGen, tek aşamalı bir transformer LM ve verimli token iç içe geçirme desenlerinden oluşmakta olup, hiyerarşik veya örneklem artırma gibi birden fazla modelin kademeli olarak kullanılma ihtiyacını ortadan kaldırmaktadır. Bu yaklaşım doğrultusunda, MusicGen'in metin açıklaması veya melodik özelliklere koşullu olarak yüksek kaliteli örnekler üretebildiğini ve bu sayede üretilen çıktı üzerinde daha iyi kontroller sağlanabildiğini gösteriyoruz. Hem otomatik hem de insan değerlendirmelerini içeren kapsamlı ampirik bir değerlendirme gerçekleştirerek, önerilen yaklaşımın standart bir metinden müziğe dönüştürme kriterinde değerlendirilen baz çizgilerden üstün olduğunu gösteriyoruz. Ablasyon çalışmaları aracılığıyla, MusicGen'i oluşturan her bir bileşenin önemini aydınlatıyoruz.

Bu model sanchit-gandhi tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir. Ön eğitilmiş denetim noktaları Hugging Face Hub'da bulunabilir.

Kullanım ipuçları

  • buradan orijinal checkpoint'leri indirdikten sonra, src/transformers/models/musicgen/convert_musicgen_transformers.py adresinde bulunan dönüştürme betiğini aşağıdaki komutla kullanarak dönüştürebilirsiniz:
python src/transformers/models/musicgen/convert_musicgen_transformers.py \
    --checkpoint small --pytorch_dump_folder /output/path

Üretim

MusicGen, iki üretim moduyla uyumludur: greedy ve sampling. Uygulamada, sampling, greedy'ye kıyasla belirgin şekilde daha iyi sonuçlar verdiğinden, mümkün olan durumlarda sampling modunun kullanılmasını öneriyoruz. Sampling varsayılan olarak etkinleştirilmiştir ve MusicgenForConditionalGeneration.generate() çağrısında do_sample=True olarak ayarlanarak veya modelin üretim yapılandırmasının üzerine yazılarak (aşağıya bakınız) açıkça belirtilebilir.

Üretim, sinüzoidal konumsal gömümeler nedeniyle 30 saniyelik girdilerle sınırlıdır. Bu, MusicGen'in 30 saniyeden (1503 token) fazla ses üretemediği ve Audio-Prompted Generation ile iletilen girdi sesinin bu sınıra dahil olduğu anlamına gelir; dolayısıyla 20 saniyelik bir ses girdisi verildiğinde MusicGen, 10 saniyeden fazla ek ses üretemez.

Transformers, MusicGen'in hem mono (1 kanallı) hem de stereo (2 kanallı) varyantlarını destekler. Mono kanal sürümleri tek bir codebook seti üretir. Stereo sürümleri ise her kanal (sol/sağ) için 1 olmak üzere 2 codebook seti üretir ve her codebook seti, ses sıkıştırma modeli üzerinden bağımsız olarak çözümlenir. Her kanala ait ses akışları birleştirilerek nihai stereo çıktısı elde edilir.

Koşulsuz Üretim

Koşulsuz (veya ‘boş’) üretim için girdiler, MusicgenForConditionalGeneration.get_unconditional_inputs() yöntemi üzerinden elde edilebilir:

from transformers import MusicgenForConditionalGeneration


model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small", device_map="auto")
unconditional_inputs = model.get_unconditional_inputs(num_samples=1)

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

Ses çıktıları, (batch_size, num_channels, sequence_length) biçiminde üç boyutlu bir Torch tensörüdür. Üretilen ses örneklerini dinlemek için bunları bir ipynb defterinde çalabilirsiniz:

from IPython.display import Audio


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

Veya üçüncü taraf bir kütüphane kullanarak, örneğin scipy ile, bunları .wav dosyası olarak kaydedin:

import scipy


sampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("musicgen_out.wav", rate=sampling_rate, data=audio_values[0, 0].numpy())

Metin Koşullu Üretim

Model, MusicgenProcessor kullanarak girdileri ön işlemeye tabi tutarak bir metin istemine koşullu bir ses örneği üretebilir:

from transformers import AutoProcessor, MusicgenForConditionalGeneration


processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small", 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, sınıflandırıcı serbest yönlendirmede (CFG) kullanılır ve koşullu logitler (metin istemlerinden tahmin edilenler) ile koşulsuz logitler (koşulsuz veya ‘boş’ istemden tahmin edilenler) arasındaki ağırlıklandırmayı belirler. Daha yüksek yönlendirme ölçeği, modelin girdi istemiyle daha yakından ilişkili örnekler üretmesini teşvik eder; bu genellikle daha düşük ses kalitesi pahasına gerçekleşir. CFG, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. En iyi sonuçlar için guidance_scale=3 (varsayılan) kullanın.

Sesle Tetiklenen Üretim

Aynı MusicgenProcessor, ses devamı için kullanılan bir ses istemcisini ön işlemek amacıyla kullanılabilir. Aşağıdaki örnekte, 🤗 Datasets kütüphanesini kullanarak bir ses dosyası yüklenir; bu kütüphane aşağıdaki komutla pip üzerinden kurulabilir:

pip install --upgrade pip
pip install datasets[audio]
from datasets import load_dataset

from transformers import AutoProcessor, MusicgenForConditionalGeneration


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

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

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

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)

Toplu sesle tetiklenen üretimde, üretilen audio_values, MusicgenProcessor sınıfı kullanılarak dolgu (padding) kaldırılacak şekilde son işleme tabi tutulabilir:

from datasets import load_dataset

from transformers import AutoProcessor, MusicgenForConditionalGeneration


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

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

# 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)

# post-process to remove padding from the batched audio
audio_values = processor.batch_decode(audio_values, padding_mask=inputs.padding_mask)

Üretim Yapılandırması

Örnekleme, yönlendirme ölçeği ve üretilen token sayısı gibi üretim sürecini kontrol eden varsayılan parametreler, modelin üretim yapılandırmasında bulunur ve istenildiği gibi güncellenebilir:

from transformers import MusicgenForConditionalGeneration


model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small", 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 metoduna iletilen herhangi bir argüman, üretim yapılandırmasındaki (generation config) ilgili ayarları geçersiz kılar; bu nedenle generate çağrısında do_sample=False olarak ayarlanırsa, üretim yapılandırmasındaki model.generation_config.do_sample ayarının yerine geçer.

Model Yapısı

MusicGen modeli üç ayrı aşamaya ayrılabilir:

  1. Metin kodlayıcı: metin girdilerini gizli durum temsilcileri dizisine eşler. Ön eğitilmiş MusicGen modelleri, T5 veya Flan-T5'ten dondurulmuş bir metin kodlayıcı kullanır.
  2. MusicGen decoder: encoder gizli durum temsillerine koşullu olarak ses tokenlarını (veya kodlarını) otomatik regresif olarak üreten bir dil modeli (LM)
  3. Ses kodlayıcı/çözücü: bir ses istemini, istem belirteçleri olarak kullanmak için kodlamak ve çözücünün tahmin ettiği ses belirteçlerinden ses dalgasını geri getirmek için kullanılır

Böylece MusicGen modeli, MusicgenForCausalLM sınıfına karşılık gelen bağımsız bir decoder modeli olarak ya da metin encoder'ı ile ses encoder/decoder'ını içeren, MusicgenForConditionalGeneration sınıfına karşılık gelen bileşik bir model olarak kullanılabilir. Yalnızca decoder'ın önceden eğitilmiş checkpoint'ten yüklenmesi gerekiyorsa, önce doğru config'i belirleyerek yüklenebilir ya da bileşik modelin .decoder özniteliği üzerinden erişilebilir:

from transformers import AutoConfig, MusicgenForCausalLM, MusicgenForConditionalGeneration


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

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

Eğitim sırasında metin kodlayıcı ve ses kodlayıcı/çözücü modelleri dondurulduğundan, MusicGen çözücüsü MusicgenForCausalLM, kodlayıcı gizli durumları ve ses kodlarından oluşan bir veri setinde bağımsız olarak eğitilebilir. Çıkarım sırasında, eğitilmiş çözücü, dondurulmuş metin kodlayıcı ve ses kodlayıcı/çözücülerle birleştirilerek bileşik MusicgenForConditionalGeneration modeli elde edilebilir.

İpuçları:

  • MusicGen, Encodec'in 32kHz checkpoint'i üzerinde eğitilmiştir. Encodec modelinin uyumlu bir sürümünü kullandığınızdan emin olmalısınız.
  • Örnekleme modu, açgözlü (greedy) yöntemden genellikle daha iyi sonuçlar verir; MusicgenForConditionalGeneration.generate() çağrısında do_sample değişkenini değiştirerek örnekleme işlevini açabilirsiniz.

MusicgenDecoderConfig

sınıf transformers.MusicgenDecoderConfig

< >

( 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 = Falsecross_attention_hidden_size: int | None = None )

Parametreler

  • vocab_size (int, isteğe bağlı, varsayılan 2048) — Modelin sözlük boyutu. input_ids ile temsil edilebilecek farklı token sayısını tanımlar.
  • max_position_embeddings (int, isteğe bağlı, varsayılan 2048) — Bu modelin kullanılabileceği en uzun dizi uzunluğu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 24) — Transformer çözücüdeki gizli katman sayısı.
  • ffn_dim (int, isteğe bağlı, varsayılan 4096) — MLP temsillerinin boyutu.
  • num_attention_heads (int, isteğe bağlı, varsayılan 16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • layerdrop (Union[float, int], isteğe bağlı, varsayılan 0.0) — LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](bkz. https://huggingface.co/papers/1909.11556) bakın.
  • use_cache (bool, isteğe bağlı, varsayılan True) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızca config.is_decoder=True olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.
  • activation_function (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • hidden_size (int, isteğe bağlı, varsayılan 1024) — Gizli temsillerin boyutu.
  • dropout (Union[float, int], isteğe bağlı, varsayılan 0.1) — Tüm dropout katmanları için oran.
  • attention_dropout (Union[float, int], isteğe bağlı, varsayılan 0.0) — Dikkat olasılıkları için dropout oranı.
  • activation_dropout (Union[float, int], isteğe bağlı, varsayılan 0.0) — Tamamen bağlı katmandaki aktivasyonlar için dropout oranı.
  • initializer_factor (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan bir çarpan (1 olarak tutulmalıdır, başlatma testleri için dahili olarak kullanılır).
  • scale_embedding (bool, isteğe bağlı, varsayılan False) — Gömme değerlerinin sqrt(d_model) ile bölünerek ölçeklendirilip ölçeklendirilmeyeceğini belirtir.
  • num_codebooks (int, isteğe bağlı, varsayılan 4) — Modelin kullandığı paralel kod kitaplarının sayısı.
  • audio_channels (int, isteğe bağlı, varsayılan 1) — Giriş kanal sayısı.
  • pad_token_id (int, isteğe bağlı, varsayılan 2048) — Sözlükte dolgu için kullanılan token kimliği.
  • bos_token_id (int, isteğe bağlı, varsayılan 2048) — Sözlükte akış başlangıcı için kullanılan token kimliği.
  • eos_token_id (Union[int, list[int]], isteğe bağlı) — Sözlükte akış sonu için kullanılan token kimliği.
  • tie_word_embeddings (bool, isteğe bağlı, varsayılan False) — Modelin tied_weights_keys eşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı.
  • is_decoder (bool, isteğe bağlı, varsayılan False) — Modelin bir decoder olarak kullanılıp kullanılmadığı. False ise model bir encoder olarak kullanılır.
  • add_cross_attention (bool, isteğe bağlı, varsayılan False) — Modelde çapraz dikkat katmanlarının eklenip eklenmeyeceğini belirtir.
  • cross_attention_hidden_size (int, isteğe bağlı) — Çapraz dikkat (cross-attention) anahtar/değer (key/value) uzayına yansıtılan kodlayıcı (encoder) çıktıları için gizli boyut. Kodlayıcı ve çözücü (decoder) farklı gizli boyutlara sahip olduğunda kullanılır.

Bu, bir MusicgenModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Musicgen modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, facebook/musicgen-small ile benzer bir yapılandırmaya yol açar.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

MusicgenConfig

sınıf transformers.MusicgenConfig

< >

( 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 = Noneinitializer_factor: float = 0.02 )

Parametreler

  • text_encoder (Union[dict, PretrainedConfig]) — Metin kodlayıcı yapılandırmasını tanımlayan bir yapılandırma nesnesi örneği.
  • audio_encoder (Union[dict, PretrainedConfig]) — Ses kodlayıcı yapılandırmasını tanımlayan bir yapılandırma nesnesi örneği.
  • decoder (Union[dict, PretrainedConfig]) — Decoder yapılandırmasını tanımlayan bir yapılandırma nesnesi örneği.
  • initializer_factor (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan bir çarpan (1 olarak tutulmalıdır, başlatma testleri için dahili olarak kullanılır).

Bu, bir MusicgenModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Musicgen modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, facebook/musicgen-small ile benzer bir yapılandırmaya yol açar.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Örnek:

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

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

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

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

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

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

>>> # loading model and config from pretrained folder
>>> musicgen_config = MusicgenConfig.from_pretrained("musicgen-model")
>>> model = MusicgenForConditionalGeneration.from_pretrained("musicgen-model", config=musicgen_config)

MusicgenProcessor

sınıf transformers.MusicgenProcessor

< >

( feature_extractortokenizer )

Parametreler

  • feature_extractor (EncodecFeatureExtractor) — Özellik çıkarıcı zorunlu bir girdidir.
  • tokenizer (T5Tokenizer) — Tokenizer zorunlu bir girdidir.

Bir özellik çıkarıcıyı ve bir belirteçleyiciyi tek bir işlemciye saran bir MusicgenProcessor oluşturur.

MusicgenProcessor, EncodecFeatureExtractor ve T5Tokenizer sınıflarının tüm işlevlerini sunar. Daha fazla bilgi için ~EncodecFeatureExtractor ve ~T5Tokenizer belgelerini inceleyin.

__call__

< >

( *args**kwargs )

Parametreler

  • return_tensors (str veya TensorType, isteğe bağlı) — Belirlenirse, belirli bir çerçeveye ait tensörler döndürülür. Kabul edilen değerler şunlardır:
    • 'pt': PyTorch torch.Tensor nesnelerini döndürür.
    • 'np': NumPy np.ndarray nesnelerini döndürür.

MusicgenModel

sınıf transformers.MusicgenModel

< >

( config: MusicgenDecoderConfig )

Parametreler

  • config (MusicgenDecoderConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üzerinde herhangi bir özel head olmadan ham hidden-states üreten çıplak Musicgen Model.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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'> ) → BaseModelOutputWithPastAndCrossAttentions or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor şeklinde (batch_size * num_codebooks, sequence_length)) — Sözlükteki girdi dizisi token'larının indeksleri, ses kodları dizisine karşılık gelir. İndeksler, EncodecModel gibi bir ses kodlayıcı modeliyle bir ses istemini kodlayarak ses kodlarını tahmin etmek suretiyle elde edilebilir. Ayrıntılar için EncodecModel.encode() yöntemine bakın. Girdi kimlikleri (input IDs) nedir? input_ids, ileri geçiş sırasında otomatik olarak (batch_size * num_codebooks, target_sequence_length) şeklinden (batch_size, num_codebooks, target_sequence_length) şekline dönüştürülür. EncodecModel gibi bir ses kodlama modelinden ses kodları elde ediyorsanız, kare sayısının 1'e eşit olduğundan ve ses kodlarını input_ids olarak geçirmeden önce (frames, batch_size, num_codebooks, target_sequence_length) şeklinden (batch_size * num_codebooks, target_sequence_length) şekline yeniden boyutlandırdığınızdan emin olun.

    Endeksler, EncodecModel gibi bir ses kodlayıcı modeli kullanarak ses kodlarını tahmin etmek için bir ses istemini kodlayarak elde edilebilir. Ayrıntılar için EncodecModel.encode() bölümüne bakın.

    Girdi kimlikleri nelerdir?

    input_ids, forward pass sırasında otomatik olarak (batch_size * num_codebooks, target_sequence_length) şeklinden (batch_size, num_codebooks, target_sequence_length) şekline dönüştürülür. EncodecModel gibi bir ses kodlama modelinden ses kodlarını alıyorsanız, kare sayısının 1'e eşit olduğundan ve ses kodlarını input_ids olarak geçirmeden önce (frames, batch_size, num_codebooks, target_sequence_length) şeklinden (batch_size * num_codebooks, target_sequence_length) şekline yeniden boyutlandırdığınızdan emin olun.

  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • encoder_hidden_states (torch.Tensor, şekli (batch_size, encoder_sequence_length, hidden_size), isteğe bağlı) — Encoder'ın son katmanının çıktısındaki gizli durumlar dizisi. Decoder'ın çapraz dikkat (cross-attention) mekanizmasında kullanılır.
  • encoder_attention_mask (torch.LongTensor şeklinde (batch_size, encoder_sequence_length), isteğe bağlı) — encoder input_ids'inde dolgu tokenlarının indekslerinde çapraz dikkat (cross-attention) işleminin uygulanmasını önlemek için kullanılan maske. Değerler [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • past_key_values (~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.
  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. past_key_values).

Dönüş değeri

BaseModelOutputWithPastAndCrossAttentions veya tuple(torch.Tensor)

Bir BaseModelOutputWithPastAndCrossAttentions veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (MusicgenConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

MusicgenModel forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.

    past_key_values kullanılırsa, yalnızca (batch_size, 1, hidden_size) biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.

  • past_key_values (Cache, isteğe bağlı, use_cache=True geçirildiğinde veya config.use_cache=True olduğunda döndürülür) — Bir Cache örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza bakın.

    Sıralı çözümlemeyi hızlandırmak için (bkz. past_key_values girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ve isteğe bağlı olarak config.is_encoder_decoder=True ise cross-attention bloklarındaki anahtar ve değerler) içerir.

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • cross_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True ve config.add_cross_attention=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — (batch_size, num_heads, sequence_length, sequence_length) biçiminde, her katman için bir adet içeren torch.Tensor demeti.

    Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

MusicgenForCausalLM

sınıf transformers.MusicgenForCausalLM

< >

( config: MusicgenDecoderConfig )

Parametreler

  • config (MusicgenDecoderConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üzerinde bir dil modelleme başlığı bulunan MusicGen çözücü modeli.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutputWithCrossAttentions or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor şeklinde (batch_size * num_codebooks, sequence_length)) — Sözlükteki girdi dizisi token'larının indeksleri, ses kodları dizisine karşılık gelir. İndeksler, EncodecModel gibi bir ses kodlayıcı modeliyle bir ses istemini kodlayarak ses kodlarını tahmin etmek suretiyle elde edilebilir. Ayrıntılar için EncodecModel.encode() yöntemine bakın. Girdi kimlikleri (input IDs) nedir? input_ids, ileri geçiş sırasında otomatik olarak (batch_size * num_codebooks, target_sequence_length) şeklinden (batch_size, num_codebooks, target_sequence_length) şekline dönüştürülür. EncodecModel gibi bir ses kodlama modelinden ses kodları elde ediyorsanız, kare sayısının 1'e eşit olduğundan ve ses kodlarını input_ids olarak geçirmeden önce (frames, batch_size, num_codebooks, target_sequence_length) şeklinden (batch_size * num_codebooks, target_sequence_length) şekline yeniden boyutlandırdığınızdan emin olun.

    Endeksler, EncodecModel gibi bir ses kodlayıcı modeli kullanarak ses kodlarını tahmin etmek için bir ses istemini kodlayarak elde edilebilir. Ayrıntılar için EncodecModel.encode() bölümüne bakın.

    Girdi kimlikleri nelerdir?

    input_ids, forward pass sırasında otomatik olarak (batch_size * num_codebooks, target_sequence_length) şeklinden (batch_size, num_codebooks, target_sequence_length) şekline dönüştürülür. EncodecModel gibi bir ses kodlama modelinden ses kodlarını alıyorsanız, kare sayısının 1'e eşit olduğundan ve ses kodlarını input_ids olarak geçirmeden önce (frames, batch_size, num_codebooks, target_sequence_length) şeklinden (batch_size * num_codebooks, target_sequence_length) şekline yeniden boyutlandırdığınızdan emin olun.

  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • encoder_hidden_states (torch.Tensor, şekli (batch_size, encoder_sequence_length, hidden_size), isteğe bağlı) — Encoder'ın son katmanının çıktısındaki gizli durumlar dizisi. Decoder'ın çapraz dikkat (cross-attention) mekanizmasında kullanılır.
  • encoder_attention_mask (torch.LongTensor şeklinde (batch_size, encoder_sequence_length), isteğe bağlı) — encoder input_ids'inde dolgu tokenlarının indekslerinde çapraz dikkat (cross-attention) işleminin uygulanmasını önlemek için kullanılan maske. Değerler [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • past_key_values (~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.
  • labels (torch.LongTensor, şekli (batch_size, sequence_length, num_codebooks), isteğe bağlı) — Dil modelleme için etiketler. Model içinde etiketlerin kaydırıldığına dikkat edin, yani labels = input_ids olarak ayarlayabilirsiniz. [-100, 0, ..., config.vocab_size] aralığından indeksler seçilir. -100 olarak ayarlanan tüm etiketler yoksayılır (maske uygulanır), kayıp yalnızca [0, ..., config.vocab_size] aralığındaki etiketler için hesaplanır.
  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. past_key_values).

Dönüş değeri

CausalLMOutputWithCrossAttentions veya tuple(torch.Tensor)

Bir CausalLMOutputWithCrossAttentions veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (MusicgenConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

MusicgenForCausalLM forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Dil modelleme kaybı (sonraki token tahmini için).

  • logits (torch.Tensor, şekli (batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • cross_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — (batch_size, num_heads, sequence_length, sequence_length) biçiminde, her katman için bir adet içeren torch.Tensor demeti.

    Dikkat softmax'ı sonrası çapraz dikkat ağırlıkları, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • past_key_values (Cache, isteğe bağlı, use_cache=True geçirildiğinde veya config.use_cache=True olduğunda döndürülür) — Bir Cache örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza bakın.

    Sıralı çözümlemeyi hızlandırmak için (bkz. past_key_values girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (dikkat bloklarındaki anahtar ve değerler) içerir.

Örnek:

MusicgenForConditionalGeneration

sınıf transformers.MusicgenForConditionalGeneration

< >

( config: transformers.models.musicgen.configuration_musicgen.MusicgenConfig | None = Nonetext_encoder: transformers.modeling_utils.PreTrainedModel | None = Noneaudio_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.models.musicgen.modeling_musicgen.MusicgenForCausalLM | None = None )

Parametreler

  • config (MusicgenConfig, isteğe bağlı) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
  • text_encoder (PreTrainedModel, opsiyonel) — Metni koşullandırma için gizli durumlara kodlayan metin kodlayıcı modeli.
  • audio_encoder (PreTrainedModel, isteğe bağlı) — Koşullandırma için sesi gizli durumlara kodlayan ses kodlayıcı modeli.
  • decoder (MusicgenForCausalLM, opsiyonel) — Koşullandırma sinyallerine dayanarak ses jetonları üreten decoder modeli.

Metin kodlayıcı, ses kodlayıcı ve Musicgen çözücüye sahip bileşik MusicGen modeli,

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Noneinput_values: typing.Optional[torch.Tensor] = Nonepadding_mask: typing.Optional[torch.BoolTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = 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'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.

    Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.

    Girdi kimlikleri nelerdir?

  • attention_mask (torch.BoolTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işleminin uygulanmaması için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • input_values (torch.Tensor of shape (batch_size, sequence_length), isteğe bağlı) — Giriş ham ses dalgasının kayan değerleri. Değerler, bir .flac veya .wav ses dosyasını list[float] türünde bir diziye, numpy.ndarray veya torch.Tensor içine yükleyerek elde edilebilir, örneğin torchcodec kütüphanesi (pip install torchcodec) veya soundfile kütüphanesi (pip install soundfile) ile. Diziyi input_values için hazırlamak için, AutoProcessor dolguyu (padding) ve torch.Tensor türünde bir tensöre dönüştürmeyi gerçekleştirmek üzere kullanılmalıdır. Ayrıntılar için MusicgenProcessor.call() bölümüne bakın.
  • padding_mask (torch.BoolTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapılmaması için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • decoder_input_ids (torch.LongTensor şeklinde (batch_size * num_codebooks, target_sequence_length), isteğe bağlı) — Sözlükte decoder giriş dizisi token'larının indeksleri, ses kodları dizisine karşılık gelir. İndeksler, EncodecModel gibi bir ses kodu tahmin etmek için ses kodlayıcı modeliyle bir ses istemini kodlayarak elde edilebilir. Ayrıntılar için EncodecModel.encode() yöntemine bakın. Decoder giriş kimlikleri nedir? decoder_input_ids, forward geçişinde otomatik olarak (batch_size * num_codebooks, target_sequence_length) şeklinden (batch_size, num_codebooks, target_sequence_length) şekline dönüştürülür. EncodecModel gibi bir ses kodlama modelinden ses kodları elde ediyorsanız, çerçeve sayısının 1'e eşit olduğundan ve ses kodlarını decoder_input_ids olarak geçirmeden önce (frames, batch_size, num_codebooks, target_sequence_length) şeklinden (batch_size * num_codebooks, target_sequence_length) şekline yeniden boyutlandırdığınızdan emin olun.

    Endeksler, EncodecModel gibi bir ses kodlayıcı modeli kullanarak ses kodlarını tahmin etmek için bir ses istemini kodlayarak elde edilebilir. Ayrıntılar için EncodecModel.encode() bölümüne bakın.

    Çözücü girdi kimlikleri nelerdir?

    decoder_input_ids, forward geçişinde otomatik olarak (batch_size * num_codebooks, target_sequence_length) şeklinden (batch_size, num_codebooks, target_sequence_length) şekline dönüştürülür. EncodecModel gibi bir ses kodlama modelinden ses kodları elde ediyorsanız, kare sayısının 1'e eşit olduğundan ve ses kodlarını decoder_input_ids olarak geçirmeden önce (frames, batch_size, num_codebooks, target_sequence_length) şeklinden (batch_size * num_codebooks, target_sequence_length) şekline yeniden boyutlandırdığınızdan emin olun.

  • decoder_attention_mask (torch.LongTensor, şekli (batch_size, target_sequence_length), isteğe bağlı) — Varsayılan davranış: decoder_input_ids içindeki pad tokenlarını yok sayan bir tensör oluşturur. Varsayılan olarak nedensel maske de kullanılır.
  • encoder_outputs (tuple[torch.Tensor], isteğe bağlı) — (last_hidden_state, isteğe bağlı: hidden_states, isteğe bağlı: attentions) içeren bir tuple last_hidden_state, (batch_size, sequence_length, hidden_size) biçiminde, isteğe bağlı) kodlayıcının son katmanının çıktısındaki gizli durumlar dizisidir. Dekodlayıcının çapraz dikkat (cross-attention) mekanizmasında kullanılır.
  • past_key_values (~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.
  • decoder_inputs_embeds (torch.Tensor şeklinde (batch_size, target_sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, decoder_input_ids geçirmek yerine gömülü bir temsil doğrudan geçirebilirsiniz. Eğer past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son decoder_inputs_embeds girdi olarak verilmelidir (bkz. past_key_values). Bu, modelin dahili gömme arama matrisine kıyasla decoder_input_ids endekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol sağlamak istiyorsanız faydalıdır.

    decoder_input_ids ve decoder_inputs_embeds her ikisi de ayarlanmamışsa, decoder_inputs_embeds inputs_embeds değerini alır.

  • labels (torch.LongTensor, şekli (batch_size, sequence_length, num_codebooks), isteğe bağlı) — Dil modelleme için etiketler. Model içinde etiketlerin kaydırıldığına dikkat edin, yani labels = input_ids olarak ayarlayabilirsiniz. [-100, 0, ..., config.vocab_size] aralığından indeksler seçilir. -100 olarak ayarlanan tüm etiketler yoksayılır (maske uygulanır), kayıp yalnızca [0, ..., config.vocab_size] aralığındaki etiketler için hesaplanır.
  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. past_key_values).

Dönüş değeri

Seq2SeqLMOutput veya tuple(torch.Tensor)

Bir Seq2SeqLMOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (MusicgenConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

MusicgenForConditionalGeneration forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Dil modelleme kaybı.

  • logits (torch.Tensor, şekli (batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).

  • past_key_values (EncoderDecoderCache, isteğe bağlı, use_cache=True geçirildiğinde veya config.use_cache=True olduğunda döndürülür) — Bir EncoderDecoderCache örneğidir. Daha fazla ayrıntı için kv önbellek kılavuzumuza bakın.

    Sıralı çözümlemeyi hızlandırmak için (bkz. past_key_values girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.

  • decoder_hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında ve başlangıç gömme çıktılarında dekodlayıcının gizli durumları.

  • decoder_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat ağırlıkları, dikkat softmax'ından sonra, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan dekoderin

  • cross_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — (batch_size, num_heads, sequence_length, sequence_length) biçiminde, her katman için bir adet içeren torch.Tensor demeti.

    Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • encoder_last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.

  • encoder_hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında ve başlangıç gömme çıktılarında kodlayıcının gizli durumları.

  • encoder_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.

Örnekler:

>>> from transformers import AutoProcessor, MusicgenForConditionalGeneration
>>> import torch

>>> processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
>>> model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")

>>> 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, tgt_len, vocab_size)
torch.Size([8, 1, 2048])
Update on GitHub