Transformers documentation
MusicGen
Bu model 2023-06-08 tarihinde HF papers'ta yayımlandı ve 2023-06-29 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
MusicGen
Genel Bakış
MusicGen modeli, Jade Copet, Felix Kreuk, Itai Gat, Tal Remez, David Kant, Gabriel Synnaeve, Yossi Adi ve Alexandre Défossez tarafından kaleme alınan Simple and Controllable Music Generation makalesinde önerilmiştir.
MusicGen, metin açıklamalarına veya ses istemlerine koşullu olarak yüksek kaliteli müzik örnekleri üretebilen tek aşamalı otoregresif bir Transformer modelidir. Metin açıklamaları, gizli durum temsilleri dizisini elde etmek için dondurulmuş bir metin kodlayıcı modelinden geçirilir. MusicGen, bu gizli durumlara koşullu olarak ayrık ses tokenlarını, yani ses kodlarını tahmin edecek şekilde eğitilir. Bu ses tokenları, ardından EnCodec gibi bir ses sıkıştırma modeli kullanılarak çözümlenir ve ses dalgası formu geri kazanılır.
Verimli bir jeton iç içe geçirme deseni sayesinde MusicGen, metin/ses istemleri için kendiliğinden denetimli bir semantik temsil gerektirmez; bu da, kod kitaplığı kümesini tahmin etmek için birden fazla modeli kademeli olarak kullanma (örneğin hiyerarşik olarak veya örnekleme artırma yoluyla) ihtiyacını ortadan kaldırır. Bunun yerine, tüm kod kitaplıklarını tek bir ileri geçişte üretebilir.
Makalenin özeti aşağıdaki gibidir:
Koşullu müzik üretimi görevini ele alıyoruz. Sıkıştırılmış ayrık müzik temsili akışları, yani token'lar üzerinde çalışan tek bir Dil Modeli (LM) olan MusicGen'i tanıtıyoruz. Önceki çalışmalardan farklı olarak MusicGen, tek aşamalı bir transformer LM ve verimli token iç içe geçirme desenlerinden oluşmakta olup, hiyerarşik veya örneklem artırma gibi birden fazla modelin kademeli olarak kullanılma ihtiyacını ortadan kaldırmaktadır. Bu yaklaşım doğrultusunda, MusicGen'in metin açıklaması veya melodik özelliklere koşullu olarak yüksek kaliteli örnekler üretebildiğini ve bu sayede üretilen çıktı üzerinde daha iyi kontroller sağlanabildiğini gösteriyoruz. Hem otomatik hem de insan değerlendirmelerini içeren kapsamlı ampirik bir değerlendirme gerçekleştirerek, önerilen yaklaşımın standart bir metinden müziğe dönüştürme kriterinde değerlendirilen baz çizgilerden üstün olduğunu gösteriyoruz. Ablasyon çalışmaları aracılığıyla, MusicGen'i oluşturan her bir bileşenin önemini aydınlatıyoruz.
Bu model sanchit-gandhi tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir. Ön eğitilmiş denetim noktaları Hugging Face Hub'da bulunabilir.
Kullanım ipuçları
- buradan orijinal checkpoint'leri indirdikten sonra,
src/transformers/models/musicgen/convert_musicgen_transformers.pyadresinde bulunan dönüştürme betiğini aşağıdaki komutla kullanarak dönüştürebilirsiniz:
python src/transformers/models/musicgen/convert_musicgen_transformers.py \
--checkpoint small --pytorch_dump_folder /output/pathÜretim
MusicGen, iki üretim moduyla uyumludur: greedy ve sampling. Uygulamada, sampling, greedy'ye kıyasla belirgin şekilde daha iyi sonuçlar verdiğinden, mümkün olan durumlarda sampling modunun kullanılmasını öneriyoruz. Sampling varsayılan olarak etkinleştirilmiştir ve MusicgenForConditionalGeneration.generate() çağrısında do_sample=True olarak ayarlanarak veya modelin üretim yapılandırmasının üzerine yazılarak (aşağıya bakınız) açıkça belirtilebilir.
Üretim, sinüzoidal konumsal gömümeler nedeniyle 30 saniyelik girdilerle sınırlıdır. Bu, MusicGen'in 30 saniyeden (1503 token) fazla ses üretemediği ve Audio-Prompted Generation ile iletilen girdi sesinin bu sınıra dahil olduğu anlamına gelir; dolayısıyla 20 saniyelik bir ses girdisi verildiğinde MusicGen, 10 saniyeden fazla ek ses üretemez.
Transformers, MusicGen'in hem mono (1 kanallı) hem de stereo (2 kanallı) varyantlarını destekler. Mono kanal sürümleri tek bir codebook seti üretir. Stereo sürümleri ise her kanal (sol/sağ) için 1 olmak üzere 2 codebook seti üretir ve her codebook seti, ses sıkıştırma modeli üzerinden bağımsız olarak çözümlenir. Her kanala ait ses akışları birleştirilerek nihai stereo çıktısı elde edilir.
Koşulsuz Üretim
Koşulsuz (veya ‘boş’) üretim için girdiler, MusicgenForConditionalGeneration.get_unconditional_inputs() yöntemi üzerinden elde edilebilir:
from transformers import MusicgenForConditionalGeneration
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small", device_map="auto")
unconditional_inputs = model.get_unconditional_inputs(num_samples=1)
audio_values = model.generate(**unconditional_inputs, do_sample=True, max_new_tokens=256)Ses çıktıları, (batch_size, num_channels, sequence_length) biçiminde üç boyutlu bir Torch tensörüdür. Üretilen ses örneklerini dinlemek için bunları bir ipynb defterinde çalabilirsiniz:
from IPython.display import Audio
sampling_rate = model.config.audio_encoder.sampling_rate
Audio(audio_values[0].numpy(), rate=sampling_rate)Veya üçüncü taraf bir kütüphane kullanarak, örneğin scipy ile, bunları .wav dosyası olarak kaydedin:
import scipy
sampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("musicgen_out.wav", rate=sampling_rate, data=audio_values[0, 0].numpy())Metin Koşullu Üretim
Model, MusicgenProcessor kullanarak girdileri ön işlemeye tabi tutarak bir metin istemine koşullu bir ses örneği üretebilir:
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small", device_map="auto")
inputs = processor(
text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)guidance_scale, sınıflandırıcı serbest yönlendirmede (CFG) kullanılır ve koşullu logitler (metin istemlerinden tahmin edilenler) ile koşulsuz logitler (koşulsuz veya ‘boş’ istemden tahmin edilenler) arasındaki ağırlıklandırmayı belirler. Daha yüksek yönlendirme ölçeği, modelin girdi istemiyle daha yakından ilişkili örnekler üretmesini teşvik eder; bu genellikle daha düşük ses kalitesi pahasına gerçekleşir. CFG, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. En iyi sonuçlar için guidance_scale=3 (varsayılan) kullanın.
Sesle Tetiklenen Üretim
Aynı MusicgenProcessor, ses devamı için kullanılan bir ses istemcisini ön işlemek amacıyla kullanılabilir. Aşağıdaki örnekte, 🤗 Datasets kütüphanesini kullanarak bir ses dosyası yüklenir; bu kütüphane aşağıdaki komutla pip üzerinden kurulabilir:
pip install --upgrade pip pip install datasets[audio]
from datasets import load_dataset
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small", device_map="auto")
dataset = load_dataset("sanchit-gandhi/gtzan", split="train", streaming=True)
sample = next(iter(dataset))["audio"]
# take the first half of the audio sample
sample["array"] = sample["array"][: len(sample["array"]) // 2]
inputs = processor(
audio=sample["array"],
sampling_rate=sample["sampling_rate"],
text=["80s blues track with groovy saxophone"],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)Toplu sesle tetiklenen üretimde, üretilen audio_values, MusicgenProcessor sınıfı kullanılarak dolgu (padding) kaldırılacak şekilde son işleme tabi tutulabilir:
from datasets import load_dataset
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small", device_map="auto")
dataset = load_dataset("sanchit-gandhi/gtzan", split="train", streaming=True)
sample = next(iter(dataset))["audio"]
# take the first quarter of the audio sample
sample_1 = sample["array"][: len(sample["array"]) // 4]
# take the first half of the audio sample
sample_2 = sample["array"][: len(sample["array"]) // 2]
inputs = processor(
audio=[sample_1, sample_2],
sampling_rate=sample["sampling_rate"],
text=["80s blues track with groovy saxophone", "90s rock song with loud guitars and heavy drums"],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)
# post-process to remove padding from the batched audio
audio_values = processor.batch_decode(audio_values, padding_mask=inputs.padding_mask)Üretim Yapılandırması
Örnekleme, yönlendirme ölçeği ve üretilen token sayısı gibi üretim sürecini kontrol eden varsayılan parametreler, modelin üretim yapılandırmasında bulunur ve istenildiği gibi güncellenebilir:
from transformers import MusicgenForConditionalGeneration
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small", device_map="auto")
# inspect the default generation config
model.generation_config
# increase the guidance scale to 4.0
model.generation_config.guidance_scale = 4.0
# decrease the max length to 256 tokens
model.generation_config.max_length = 256generate metoduna iletilen herhangi bir argüman, üretim yapılandırmasındaki (generation config) ilgili ayarları geçersiz kılar; bu nedenle generate çağrısında do_sample=False olarak ayarlanırsa, üretim yapılandırmasındaki model.generation_config.do_sample ayarının yerine geçer.
Model Yapısı
MusicGen modeli üç ayrı aşamaya ayrılabilir:
- Metin kodlayıcı: metin girdilerini gizli durum temsilcileri dizisine eşler. Ön eğitilmiş MusicGen modelleri, T5 veya Flan-T5'ten dondurulmuş bir metin kodlayıcı kullanır.
- MusicGen decoder: encoder gizli durum temsillerine koşullu olarak ses tokenlarını (veya kodlarını) otomatik regresif olarak üreten bir dil modeli (LM)
- Ses kodlayıcı/çözücü: bir ses istemini, istem belirteçleri olarak kullanmak için kodlamak ve çözücünün tahmin ettiği ses belirteçlerinden ses dalgasını geri getirmek için kullanılır
Böylece MusicGen modeli, MusicgenForCausalLM sınıfına karşılık gelen bağımsız bir decoder modeli olarak ya da metin encoder'ı ile ses encoder/decoder'ını içeren, MusicgenForConditionalGeneration sınıfına karşılık gelen bileşik bir model olarak kullanılabilir. Yalnızca decoder'ın önceden eğitilmiş checkpoint'ten yüklenmesi gerekiyorsa, önce doğru config'i belirleyerek yüklenebilir ya da bileşik modelin .decoder özniteliği üzerinden erişilebilir:
from transformers import AutoConfig, MusicgenForCausalLM, MusicgenForConditionalGeneration
# Option 1: get decoder config and pass to `.from_pretrained`
decoder_config = AutoConfig.from_pretrained("facebook/musicgen-small").decoder
decoder = MusicgenForCausalLM.from_pretrained("facebook/musicgen-small", **decoder_config, device_map="auto")
# Option 2: load the entire composite model, but only return the decoder
decoder = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small", device_map="auto").decoderEğitim sırasında metin kodlayıcı ve ses kodlayıcı/çözücü modelleri dondurulduğundan, MusicGen çözücüsü MusicgenForCausalLM, kodlayıcı gizli durumları ve ses kodlarından oluşan bir veri setinde bağımsız olarak eğitilebilir. Çıkarım sırasında, eğitilmiş çözücü, dondurulmuş metin kodlayıcı ve ses kodlayıcı/çözücülerle birleştirilerek bileşik MusicgenForConditionalGeneration modeli elde edilebilir.
İpuçları:
- MusicGen, Encodec'in 32kHz checkpoint'i üzerinde eğitilmiştir. Encodec modelinin uyumlu bir sürümünü kullandığınızdan emin olmalısınız.
- Örnekleme modu, açgözlü (greedy) yöntemden genellikle daha iyi sonuçlar verir;
MusicgenForConditionalGeneration.generate()çağrısındado_sampledeğişkenini değiştirerek örnekleme işlevini açabilirsiniz.
MusicgenDecoderConfig
sınıf transformers.MusicgenDecoderConfig
< 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 = Falsecross_attention_hidden_size: int | None = None )
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ılan1) — Giriş kanal sayısı. - 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. - cross_attention_hidden_size (
int, isteğe bağlı) — Çapraz dikkat (cross-attention) anahtar/değer (key/value) uzayına yansıtılan kodlayıcı (encoder) çıktıları için gizli boyut. Kodlayıcı ve çözücü (decoder) farklı gizli boyutlara sahip olduğunda kullanılır.
Bu, bir MusicgenModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Musicgen modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, facebook/musicgen-small ile benzer bir yapılandırmaya yol açar.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
MusicgenConfig
sınıf transformers.MusicgenConfig
< 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 = Noneinitializer_factor: float = 0.02 )
Parametreler
- text_encoder (
Union[dict,PretrainedConfig]) — Metin kodlayıcı yapılandırmasını tanımlayan bir yapılandırma nesnesi örneği. - audio_encoder (
Union[dict,PretrainedConfig]) — Ses kodlayıcı yapılandırmasını tanımlayan bir yapılandırma nesnesi örneği. - decoder (
Union[dict,PretrainedConfig]) — Decoder yapılandırmasını tanımlayan bir yapılandırma nesnesi örneği. - initializer_factor (
float, isteğe bağlı, varsayı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 MusicgenModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Musicgen modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, facebook/musicgen-small ile benzer bir yapılandırmaya yol açar.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
Örnek:
>>> from transformers import (
... MusicgenConfig,
... MusicgenDecoderConfig,
... T5Config,
... EncodecConfig,
... MusicgenForConditionalGeneration,
... )
>>> # Initializing text encoder, audio encoder, and decoder model configurations
>>> text_encoder_config = T5Config()
>>> audio_encoder_config = EncodecConfig()
>>> decoder_config = MusicgenDecoderConfig()
>>> configuration = MusicgenConfig(
... text_encoder=text_encoder_config,
... audio_encoder=audio_encoder_config,
... decoder=decoder_config,
... )
>>> # Initializing a MusicgenForConditionalGeneration (with random weights) from the facebook/musicgen-small style configuration
>>> model = MusicgenForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> config_text_encoder = model.config.text_encoder
>>> config_audio_encoder = model.config.audio_encoder
>>> config_decoder = model.config.decoder
>>> # Saving the model, including its configuration
>>> model.save_pretrained("musicgen-model")
>>> # loading model and config from pretrained folder
>>> musicgen_config = MusicgenConfig.from_pretrained("musicgen-model")
>>> model = MusicgenForConditionalGeneration.from_pretrained("musicgen-model", config=musicgen_config)MusicgenProcessor
sınıf transformers.MusicgenProcessor
< source >( feature_extractortokenizer )
Bir özellik çıkarıcıyı ve bir belirteçleyiciyi tek bir işlemciye saran bir MusicgenProcessor oluşturur.
MusicgenProcessor, EncodecFeatureExtractor ve T5Tokenizer sınıflarının tüm işlevlerini sunar. Daha fazla bilgi için ~EncodecFeatureExtractor ve ~T5Tokenizer belgelerini inceleyin.
__call__
< 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.
MusicgenModel
sınıf transformers.MusicgenModel
< source >( config: MusicgenDecoderConfig )
Parametreler
- config (MusicgenDecoderConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Üzerinde herhangi bir özel head olmadan ham hidden-states üreten çıplak Musicgen Model.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< 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'> ) → BaseModelOutputWithPastAndCrossAttentions or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size * num_codebooks, sequence_length)) — Sözlükteki girdi dizisi token'larının indeksleri, ses kodları dizisine karşılık gelir. İndeksler, EncodecModel gibi bir ses kodlayıcı modeliyle bir ses istemini kodlayarak ses kodlarını tahmin etmek suretiyle elde edilebilir. Ayrıntılar için EncodecModel.encode() yöntemine bakın. Girdi kimlikleri (input IDs) nedir? input_ids, ileri geçiş sırasında otomatik olarak (batch_size * num_codebooks, target_sequence_length) şeklinden (batch_size, num_codebooks, target_sequence_length) şekline dönüştürülür. EncodecModel gibi bir ses kodlama modelinden ses kodları elde ediyorsanız, kare sayısının 1'e eşit olduğundan ve ses kodlarını input_ids olarak geçirmeden önce (frames, batch_size, num_codebooks, target_sequence_length) şeklinden (batch_size * num_codebooks, target_sequence_length) şekline yeniden boyutlandırdığınızdan emin olun.Endeksler, EncodecModel gibi bir ses kodlayıcı modeli kullanarak ses kodlarını tahmin etmek için bir ses istemini kodlayarak elde edilebilir. Ayrıntılar için EncodecModel.encode() bölümüne bakın.
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ı) — Encoder'ın son katmanının çıktısındaki gizli durumlar dizisi. Decoder'ın çapraz dikkat (cross-attention) mekanizmasında kullanılır. - encoder_attention_mask (
torch.LongTensorşeklinde(batch_size, encoder_sequence_length), isteğe bağlı) — encoder input_ids'inde dolgu tokenlarının indekslerinde çapraz dikkat (cross-attention) işleminin uygulanmasını önlemek için kullanılan maske. Değerler[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- 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
BaseModelOutputWithPastAndCrossAttentions veya tuple(torch.Tensor)
Bir BaseModelOutputWithPastAndCrossAttentions veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (MusicgenConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
MusicgenModel forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.past_key_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.
cross_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Trueveconfig.add_cross_attention=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
MusicgenForCausalLM
sınıf transformers.MusicgenForCausalLM
< source >( config: MusicgenDecoderConfig )
Parametreler
- config (MusicgenDecoderConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Üzerinde bir dil modelleme başlığı bulunan MusicGen çözücü modeli.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< 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] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutputWithCrossAttentions or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size * num_codebooks, sequence_length)) — Sözlükteki girdi dizisi token'larının indeksleri, ses kodları dizisine karşılık gelir. İndeksler, EncodecModel gibi bir ses kodlayıcı modeliyle bir ses istemini kodlayarak ses kodlarını tahmin etmek suretiyle elde edilebilir. Ayrıntılar için EncodecModel.encode() yöntemine bakın. Girdi kimlikleri (input IDs) nedir? input_ids, ileri geçiş sırasında otomatik olarak (batch_size * num_codebooks, target_sequence_length) şeklinden (batch_size, num_codebooks, target_sequence_length) şekline dönüştürülür. EncodecModel gibi bir ses kodlama modelinden ses kodları elde ediyorsanız, kare sayısının 1'e eşit olduğundan ve ses kodlarını input_ids olarak geçirmeden önce (frames, batch_size, num_codebooks, target_sequence_length) şeklinden (batch_size * num_codebooks, target_sequence_length) şekline yeniden boyutlandırdığınızdan emin olun.Endeksler, EncodecModel gibi bir ses kodlayıcı modeli kullanarak ses kodlarını tahmin etmek için bir ses istemini kodlayarak elde edilebilir. Ayrıntılar için EncodecModel.encode() bölümüne bakın.
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ı) — Encoder'ın son katmanının çıktısındaki gizli durumlar dizisi. Decoder'ın çapraz dikkat (cross-attention) mekanizmasında kullanılır. - encoder_attention_mask (
torch.LongTensorşeklinde(batch_size, encoder_sequence_length), isteğe bağlı) — encoder input_ids'inde dolgu tokenlarının indekslerinde çapraz dikkat (cross-attention) işleminin uygulanmasını önlemek için kullanılan maske. Değerler[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- 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. - 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
CausalLMOutputWithCrossAttentions veya tuple(torch.Tensor)
Bir CausalLMOutputWithCrossAttentions veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (MusicgenConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
MusicgenForCausalLM forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli(1,), isteğe bağlı,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).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.
cross_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dikkat softmax'ı sonrası çapraz dikkat ağırlıkları, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
past_key_values (
Cache, isteğe bağlı,use_cache=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ı (dikkat bloklarındaki anahtar ve değerler) içerir.
MusicgenForConditionalGeneration
sınıf transformers.MusicgenForConditionalGeneration
< source >( config: transformers.models.musicgen.configuration_musicgen.MusicgenConfig | None = Nonetext_encoder: transformers.modeling_utils.PreTrainedModel | None = Noneaudio_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.models.musicgen.modeling_musicgen.MusicgenForCausalLM | None = None )
Parametreler
- config (MusicgenConfig, isteğe bağlı) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
- text_encoder (
PreTrainedModel, opsiyonel) — Metni koşullandırma için gizli durumlara kodlayan metin kodlayıcı modeli. - audio_encoder (
PreTrainedModel, isteğe bağlı) — Koşullandırma için sesi gizli durumlara kodlayan ses kodlayıcı modeli. - decoder (
MusicgenForCausalLM, opsiyonel) — Koşullandırma sinyallerine dayanarak ses jetonları üreten decoder modeli.
Metin kodlayıcı, ses kodlayıcı ve Musicgen çözücüye sahip bileşik MusicGen modeli,
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Noneinput_values: typing.Optional[torch.Tensor] = Nonepadding_mask: typing.Optional[torch.BoolTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- 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_values (
torch.Tensorof shape(batch_size, sequence_length), isteğe bağlı) — Giriş ham ses dalgasının kayan değerleri. Değerler, bir.flacveya.wavses dosyasınılist[float]türünde bir diziye,numpy.ndarrayveyatorch.Tensoriçine yükleyerek elde edilebilir, örneğin torchcodec kütüphanesi (pip install torchcodec) veya soundfile kütüphanesi (pip install soundfile) ile. Diziyiinput_valuesiçin hazırlamak için, AutoProcessor dolguyu (padding) vetorch.Tensortüründe bir tensöre dönüştürmeyi gerçekleştirmek üzere kullanılmalıdır. Ayrıntılar için MusicgenProcessor.call() bölümüne bakın. - padding_mask (
torch.BoolTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapılmaması için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- 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. - encoder_outputs (
tuple[torch.Tensor], isteğe bağlı) — (last_hidden_state, isteğe bağlı:hidden_states, isteğe bağlı:attentions) içeren bir tuplelast_hidden_state,(batch_size, sequence_length, hidden_size)biçiminde, isteğe bağlı) kodlayıcının son katmanının çıktısındaki gizli durumlar dizisidir. Dekodlayıcının çapraz dikkat (cross-attention) mekanizmasında kullanılır. - past_key_values (
~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu 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. - 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
Seq2SeqLMOutput veya tuple(torch.Tensor)
Bir Seq2SeqLMOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (MusicgenConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
MusicgenForConditionalGeneration forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Dil modelleme kaybı.logits (
torch.Tensor, şekli(batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).past_key_values (
EncoderDecoderCache, isteğe bağlı,use_cache=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğunda döndürülür) — Bir EncoderDecoderCache örneğidir. Daha fazla ayrıntı için kv önbellek kılavuzumuza bakın.Sıralı çözümlemeyi hızlandırmak için (bkz.
past_key_valuesgirdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.decoder_hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=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 ve başlangıç gömme çıktılarında dekodlayıcının gizli durumları.
decoder_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=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 ağırlıkları, dikkat softmax'ından sonra, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan dekoderin
cross_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
encoder_last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.encoder_hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=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 ve başlangıç gömme çıktılarında kodlayıcının gizli durumları.
encoder_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=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 yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.
Örnekler:
>>> from transformers import AutoProcessor, MusicgenForConditionalGeneration
>>> import torch
>>> processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
>>> model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
>>> inputs = processor(
... text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],
... padding=True,
... return_tensors="pt",
... )
>>> pad_token_id = model.generation_config.pad_token_id
>>> decoder_input_ids = (
... torch.ones((inputs.input_ids.shape[0] * model.decoder.num_codebooks, 1), dtype=torch.long)
... * pad_token_id
... )
>>> logits = model(**inputs, decoder_input_ids=decoder_input_ids).logits
>>> logits.shape # (bsz * num_codebooks, tgt_len, vocab_size)
torch.Size([8, 1, 2048])