Transformers documentation
MusicGen Melody
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
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:
- 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.
- 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 = 256generate 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:
- 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.
- 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)
- 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").decoderEğ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.pyadresinde 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ındado_sampledeğişkenini değiştirerek örnekleme işlevini aç veya kapatabilirsiniz.
MusicgenMelodyDecoderConfig
sınıf transformers.MusicgenMelodyDecoderConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 2048max_position_embeddings: int = 2048num_hidden_layers: int = 24ffn_dim: int = 4096num_attention_heads: int = 16layerdrop: float | int = 0.0use_cache: bool = Trueactivation_function: str = 'gelu'hidden_size: int = 1024dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0initializer_factor: float = 0.02scale_embedding: bool = Falsenum_codebooks: int = 4audio_channels: int = 1pad_token_id: int | None = 2048bos_token_id: int | None = 2048eos_token_id: int | list[int] | None = Nonetie_word_embeddings: bool = Falseis_decoder: bool = Falseadd_cross_attention: bool = False )
Parametreler
- vocab_size (
int, isteğe bağlı, varsayılan2048) — Modelin sözlük boyutu.input_idsile temsil edilebilecek farklı token sayısını tanımlar. - max_position_embeddings (
int, isteğe bağlı, varsayılan2048) — Bu modelin kullanılabileceği en uzun dizi uzunluğu. - num_hidden_layers (
int, isteğe bağlı, varsayılan24) — Transformer çözücüdeki gizli katman sayısı. - ffn_dim (
int, isteğe bağlı, varsayılan4096) — MLP temsillerinin boyutu. - num_attention_heads (
int, isteğe bağlı, varsayılan16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - layerdrop (
Union[float, int], isteğe bağlı, varsayılan0.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ılanTrue) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızcaconfig.is_decoder=Trueolduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir. - activation_function (
str, isteğe bağlı, varsayılangelu) — Çö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ılan1024) — Gizli temsillerin boyutu. - dropout (
Union[float, int], isteğe bağlı, varsayılan0.1) — Tüm dropout katmanları için oran. - attention_dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Dikkat olasılıkları için dropout oranı. - activation_dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Tamamen bağlı katmandaki aktivasyonlar için dropout oranı. - initializer_factor (
float, isteğe bağlı, varsayılan0.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ılanFalse) — 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ılan4) — 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ılan2048) — Sözlükte dolgu için kullanılan token kimliği. - bos_token_id (
int, isteğe bağlı, varsayılan2048) — 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ılanFalse) — Modelintied_weights_keyseş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ılanFalse) — Modelin bir decoder olarak kullanılıp kullanılmadığı.Falseise model bir encoder olarak kullanılır. - add_cross_attention (
bool, isteğe bağlı, varsayılanFalse) — 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
< source >( feature_extractortokenizer )
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__
< source >( *args**kwargs )
Parametreler
- return_tensors (
strveya 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': PyTorchtorch.Tensornesnelerini döndürür.'np': NumPynp.ndarraynesnelerini döndürür.
get_unconditional_inputs
< source >( num_samples = 1return_tensors = 'pt' )
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
< source >( 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ılansampling_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 olarakFalse) — 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.Whisper modelleri için, ince hatalardan kaçınmak amacıyla toplu çıkarım sırasında
attention_maskher 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
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonetext_encoder: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_encoder: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedecoder: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_chroma: int = 12chroma_length: int = 235initializer_factor: float = 0.02 )
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ılan0.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
< source >( 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
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)
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.
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_idsolarak 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.
- 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 projeksiyonludecoder_input_idsile 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.
- 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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini 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ı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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_valueskullanı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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ve isteğe bağlı olarakconfig.is_encoder_decoder=Trueise cross-attention bloklarındaki anahtar ve değerler) içerir.hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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
< source >( 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
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MusicgenMelodyOutputWithPast or tuple(torch.Tensor)
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.
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_idsolarak 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.
- 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 projeksiyonludecoder_input_idsile 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.
- 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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini 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ı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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, yanilabels = input_idsolarak ayarlayabilirsiniz.[-100, 0, ..., config.vocab_size]aralığından indeksler seçilir.-100olarak 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ı,labelssağ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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) 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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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.
MusicgenMelodyForConditionalGeneration
sınıf transformers.MusicgenMelodyForConditionalGeneration
< source >( config: MusicgenMelodyConfig = Nonetext_encoder: transformers.modeling_utils.PreTrainedModel | None = Noneaudio_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.models.musicgen_melody.modeling_musicgen_melody.MusicgenMelodyForCausalLM | None = None )
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
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MusicgenMelodyOutputWithPast or tuple(torch.Tensor)
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.
- 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.
- 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çinMusicgenMelodyFeatureExtractor.__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_idsolarak 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_idsiç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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsile birleştirilir. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini 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_idsgeçirmek yerine gömülü bir temsil doğrudan geçirebilirsiniz. Eğerpast_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_inputs_embedsgirdi olarak verilmelidir (bkz.past_key_values). Bu, modelin dahili gömme arama matrisine kıyasladecoder_input_idsendekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol sağlamak istiyorsanız faydalıdır.decoder_input_idsvedecoder_inputs_embedsher ikisi de ayarlanmamışsa,decoder_inputs_embedsinputs_embedsdeğ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, yanilabels = input_idsolarak ayarlayabilirsiniz.[-100, 0, ..., config.vocab_size]aralığından indeksler seçilir.-100olarak 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ı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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ı,labelssağ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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) 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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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])