Transformers documentation

MusicGen Melody

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

and get access to the augmented documentation experience

to get started

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

MusicGen Melody

FlashAttention SDPA

Genel Bakış

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

MusicGen Melody, 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 ses dalgası formunu geri getirmek için çözümlenir.

Verimli bir token iç içe geçirme deseni sayesinde MusicGen, metin/ses istemleri için kendiliğinden denetimli bir semantik temsil gerektirmez; bu da kod kitapları kümesinin (örneğin hiyerarşik olarak veya örnekleme artırma yoluyla) tahmin edilmesi için birden fazla modelin ardışık olarak kullanılma ihtiyacını ortadan kaldırır. Bunun yerine, tüm kod kitapları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 olarak veya örneklemeyi artırarak birden fazla modeli kademeli olarak kullanma ihtiyacını ortadan kaldırı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 çalışmaları dikkate alınarak kapsamlı bir ampirik değerlendirme yapılmış ve önerilen yaklaşımın standart bir metinden müziğe dönüştürme kriterinde değerlendirilen baz çizgilerden üstün olduğu gösterilmiştir. Ablasyon çalışmaları aracılığıyla, MusicGen'i oluşturan her bir bileşenin önemini aydınlatıyoruz.

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

MusicGen ile fark

MusicGen ile iki temel fark vardır:

  1. Ses istemi, burada üretilen ses örneği için koşullu sinyal olarak kullanılırken, MusicGen’de ses devamı için kullanılır.
  2. Koşullu metin ve ses sinyalleri, MusicGen'de olduğu gibi çapraz dikkat sinyali olarak kullanılmak yerine, decoder'ın gizli durumlarına birleştirilir.

Üretim

MusicGen Melody, 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 her yerde sampling modunun kullanılmasını öneririz. Sampling varsayılan olarak etkinleştirilmiştir ve MusicgenMelodyForConditionalGeneration.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.

Transformers, MusicGen Melody'nin 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 kanalın ses akışları birleştirilerek nihai stereo çıktısı elde edilir.

Ses Koşullu Üretim

Model, girdileri ön işlemek için MusicgenMelodyProcessor kullanılarak bir metin ve ses istemine koşullu bir ses örneği üretebilir.

Aşağıdaki örneklerde, pip ile aşağıdaki komutla yüklenebilen 🤗 Datasets kütüphanesini kullanarak bir ses dosyası yükleriz:

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

Kullanacağımız ses dosyası aşağıdaki gibi yüklenir:

from datasets import load_dataset


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

Ses promptu, ideal olarak davul ve bas gibi enstrümanların ürettiği düşük frekanslı sinyallerden arınmış olmalıdır. Davul ve bas bileşenlerinden vokaller ile diğer sinyalleri ayırmak için Demucs modeli kullanılabilir.

Demucs kullanmak istiyorsanız, aşağıdaki kod parçasını kullanmadan önce buradaki kurulum adımlarını izlemeniz gerekir:

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

Ardından müzik üretmek için aşağıdaki kod parçasını kullanabilirsiniz:

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 kullanmadan ses sinyalini doğrudan da iletebilirsiniz, ancak üretimin kalitesi muhtemelen düşecektir:

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)

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 oynatabilirsiniz:

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 soundfile ile, .wav dosyası olarak kaydedin:

import soundfile as sf


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

Sadece Metin Koşullu Üretim

Aynı MusicgenMelodyProcessor, yalnızca metin içeren bir istem için ön işleme yapmak üzere kullanılabilir.

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, sınıflandırıcı serbest yönlendirme (CFG) içinde 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.

Ayrıca toplu olarak üretebilirsiniz:


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)

Koşulsuz Üretim

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

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)

Ü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 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 metoduna iletilen herhangi bir argümanın, generation config içindeki ilgili ayarları geçersiz kılacağını unutmayın; bu nedenle generate çağrısında do_sample=False olarak ayarlanırsa, bu değer generation config içindeki model.generation_config.do_sample ayarını geçersiz kılar.

Model Yapısı

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

  1. Metin kodlayıcı: metin girdilerini gizli durum temsilleri dizisine eşler. Ön eğitilmiş MusicGen modelleri, T5 veya Flan-T5'ten dondurulmuş bir metin kodlayıcı kullanır.
  2. MusicGen Melody decoder: kodlayıcının gizli durum temsillerine koşullu olarak, otomatik regresif bir şekilde ses tokenlarını (veya kodlarını) üreten bir dil modeli (LM)
  3. Ses çözücü: Çözücü tarafından tahmin edilen ses token'larından ses dalgasını geri kazanmak için kullanılır.

Böylece MusicGen modeli, MusicgenMelodyForCausalLM sınıfına karşılık gelen bağımsız bir decoder modeli olarak ya da metin encoder'ı ve ses encoder'ını içeren, MusicgenMelodyForConditionalGeneration 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 veya bileşik modelin .decoder özniteliği üzerinden erişilebilir:

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

Eğitim sırasında metin kodlayıcı ve ses kodlayıcı modelleri dondurulduğundan, MusicGen kodlayıcı MusicgenMelodyForCausalLM, 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ş kodlayıcı, dondurulmuş metin kodlayıcı ve ses kodlayıcıyla birleştirilerek bileşik MusicgenMelodyForConditionalGeneration modeli elde edilebilir.

Kontrol Noktası Dönüştürme

  • buradan orijinal checkpoint'leri indirdikten sonra, src/transformers/models/musicgen_melody/convert_musicgen_melody_transformers.py adresinde bulunan dönüştürme betiğini aşağıdaki komutla kullanabilirsiniz:
python src/transformers/models/musicgen_melody/convert_musicgen_melody_transformers.py \
    --checkpoint="facebook/musicgen-melody" --pytorch_dump_folder /output/path 

İ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; MusicgenMelodyForConditionalGeneration.generate() çağrısında do_sample değişkenini değiştirerek örnekleme işlevini aç veya kapatabilirsiniz.

MusicgenMelodyDecoderConfig

sınıf transformers.MusicgenMelodyDecoderConfig

< >

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

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) — Modelin kullandığı ses kanalı sayısı (mono veya stereo). Stereo modeller, sol/sağ çıkış kanalları için ayrı bir ses akışı üretir. Mono modeller ise tek bir ses akışı çıktısı üretir.
  • 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.

Bu, bir MusicgenMelodyModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Musicgen Melody modelinin mimarisini tanımlayarak örneklenmesi için kullanılır. Varsayılan değerlerle bir yapılandırma örneklemek, facebook/musicgen-melody ile benzer bir yapılandırmayı oluşturur.

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.

MusicgenMelodyProcessor

sınıf transformers.MusicgenMelodyProcessor

< >

( feature_extractortokenizer )

Parametreler

  • feature_extractor (MusicgenMelodyFeatureExtractor) — Ö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 MusicgenMelodyProcessor oluşturur.

MusicgenMelodyProcessor, MusicgenMelodyFeatureExtractor ve T5Tokenizer sınıflarının tüm işlevlerini sunar. Daha fazla bilgi için ~MusicgenMelodyFeatureExtractor 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.

get_unconditional_inputs

< >

( num_samples = 1return_tensors = 'pt' )

Parametreler

  • num_samples (int, isteğe bağlı) — Koşulsuz olarak üretilecek ses örneklerinin sayısı.

Koşulsuz üretim için null girdileri almak üzere yardımcı işlev; modelin özellik çıkarıcısı veya belirteçleyici olmadan kullanılmasını sağlar.

Örnek:

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

sınıf transformers.MusicgenMelodyFeatureExtractor

< >

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

Parametreler

  • feature_size (int, isteğe bağlı, varsayılan 12) — Çıkarılan özelliklerin boyutu.
  • sampling_rate (int, isteğe bağlı, varsayılan 32000) — Ses dosyalarının dijitalleştirileceği örnekleme hızı, hertz (Hz) cinsinden ifade edilir.
  • hop_length (int, isteğe bağlı, varsayılan 4096) — Mel Frekans katsayılarını elde etmek için kullanılan STFT'de üst üste binen pencerelerin uzunluğu.
  • chunk_length (int, isteğe bağlı, varsayılan 30) — Daha uzun veya daha kısa ses dizilerini kırpıp doldurmak için kullanılan sampling_rate örneklikteki parçaların maksimum sayısı.
  • n_fft (int, isteğe bağlı, varsayılan 16384) — Fourier dönüşümünün boyutu.
  • num_chroma (int, isteğe bağlı, varsayılan 12) — Kullanılacak chroma kutucuğu sayısı.
  • padding_value (float, isteğe bağlı, varsayılan 0.0) — Sesin dolgu işlemi için kullanılan dolgu değeri.
  • return_attention_mask (bool, isteğe bağlı, varsayılan olarak False) — Dikkat maskesinin döndürülüp döndürülmeyeceğini belirtir. Özellik çıkarıcısı çağrılırken bu değer üzerine yazılabilir.

    Dikkat maskeleri nedir?

    Whisper modelleri için, ince hatalardan kaçınmak amacıyla toplu çıkarım sırasında attention_mask her zaman iletilmelidir.

  • stem_indices (list[int], opsiyonel, varsayılan [3, 2]) — Demucs çıktıları geçirildiğinde çıkarılacak gövde kanalları.

MusicgenMelody özellik çıkarıcısı oluşturur.

Bu özellik çıkarıcı, ana yöntemlerin çoğunu içeren SequenceFeatureExtractor sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir.

Bu sınıf, Demucs ile işlenmiş seslerden veya doğrudan ham ses dalgasından kroma özelliklerini çıkarır.

MusicgenMelodyConfig

sınıf transformers.MusicgenMelodyConfig

< >

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

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.
  • num_chroma (int, isteğe bağlı, varsayılan 12) — Kullanılacak chroma kutucuğu sayısı.
  • chroma_length (int, isteğe bağlı, varsayılan 235) — Ses, modeli koşullandırmak için kullanılıyorsa maksimum kroma süresi. Eğitim sırasında kullanılan maksimum süreye karşılık gelir.
  • 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 MusicgenMelodyModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Musicgen Melody modelinin mimarisini tanımlayarak örneklenmesi için kullanılır. Varsayılan değerlerle bir yapılandırma örneklemek, facebook/musicgen-melody ile benzer bir yapılandırmayı oluşturur.

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 (
...     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

sınıf transformers.MusicgenMelodyModel

< >

( config: MusicgenMelodyDecoderConfig )

Parametreler

  • config (MusicgenMelodyDecoderConfig) — 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 Melody 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'> ) → BaseModelOutputWithPast 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ı) — Metin kodlayıcı çıktısı ile işlenmiş ses kodlayıcı çıktısının birleştirilmesini temsil eden gizli durumlar dizisi. Koşullu sinyal olarak kullanılır ve bu nedenle projeksiyonlu decoder_input_ids ile birleştirilir.
  • encoder_attention_mask (torch.LongTensor şeklinde (batch_size, encoder_sequence_length), isteğe bağlı) — Koşullu gizli durumlarda dikkat işleminin uygulanmasını önlemek için maske. Maske değerleri [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

BaseModelOutputWithPast veya tuple(torch.Tensor)

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

MusicgenMelodyModel 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.

MusicgenMelodyForCausalLM

sınıf transformers.MusicgenMelodyForCausalLM

< >

( config: MusicgenMelodyDecoderConfig )

Parametreler

  • config (MusicgenMelodyDecoderConfig) — 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 Melody decoder 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] = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MusicgenMelodyOutputWithPast 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ı) — Metin kodlayıcı çıktısı ile işlenmiş ses kodlayıcı çıktısının birleştirilmesini temsil eden gizli durumlar dizisi. Koşullu sinyal olarak kullanılır ve bu nedenle projeksiyonlu decoder_input_ids ile birleştirilir.
  • encoder_attention_mask (torch.LongTensor şeklinde (batch_size, encoder_sequence_length), isteğe bağlı) — Koşullu gizli durumlarda dikkat işleminin uygulanmasını önlemek için maske. Maske değerleri [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).
  • 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.

Dönüş değeri

MusicgenMelodyOutputWithPast veya tuple(torch.Tensor)

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

MusicgenMelodyForCausalLM 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).

  • 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) 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 (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir 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.

  • encoder_hidden_states (torch.Tensor, şekli (batch_size, encoder_sequence_length, hidden_size), isteğe bağlı) — Projelendirilmiş metin kodlayıcı çıktısının ve projelendirilmiş ses kodlayıcı çıktısının birleştirilmesini temsil eden koşullu gizli durumlar dizisi. Koşullu sinyal olarak kullanılır.

Örnek:

MusicgenMelodyForConditionalGeneration

sınıf transformers.MusicgenMelodyForConditionalGeneration

< >

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

Parametreler

  • config (MusicgenMelodyConfig, 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 (MusicgenMelodyForCausalLM, opsiyonel) — Koşullandırma sinyallerine dayanarak ses token'ları üreten decoder modeli.

Diğer modallere (ör. görüntü-metinden metne üretim) koşullu jeton üretimi için Musicgen Melody 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_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)

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_features (torch.Tensor, şekli (batch_size, sequence_length, feature_dim), isteğe bağlı) — Giriş ses özelliklerine karşılık gelen tensörler. Ses özellikleri MusicgenMelodyFeatureExtractor kullanılarak elde edilebilir. Ayrıntılar için MusicgenMelodyFeatureExtractor.__call__() bölümüne bakın (MusicgenMelodyProcessor, sesleri işlemek için MusicgenMelodyFeatureExtractor kullanır).
  • 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.
  • 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.

  • encoder_hidden_states (torch.Tensor, şekli (batch_size, encoder_sequence_length, hidden_size), isteğe bağlı) — Projelendirilmiş metin kodlayıcı çıktısının ve projelendirilmiş ses kodlayıcı çıktısının birleştirilmesini temsil eden koşullu gizli durumlar dizisi. Koşullu sinyal olarak kullanılır ve bu nedenle projelendirilmiş decoder_input_ids ile birleştirilir.
  • 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

MusicgenMelodyOutputWithPast veya tuple(torch.Tensor)

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

MusicgenMelodyForConditionalGeneration 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).

  • 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) 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 (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir 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.

  • encoder_hidden_states (torch.Tensor, şekli (batch_size, encoder_sequence_length, hidden_size), isteğe bağlı) — Projelendirilmiş metin kodlayıcı çıktısının ve projelendirilmiş ses kodlayıcı çıktısının birleştirilmesini temsil eden koşullu gizli durumlar dizisi. Koşullu sinyal olarak kullanılır.

Örnekler:

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

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

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

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

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