Transformers documentation

Moshi

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

and get access to the augmented documentation experience

to get started

Bu model 2024-09-17 tarihinde HF papers'ta yayımlandı ve 2024-10-16 tarihinde Hugging Face Transformers'a katkıda bulunuldu.

Moshi

FlashAttention SDPA

Genel Bakış

Moshi modeli, Alexandre Défossez, Laurent Mazaré, Manu Orsini, Amélie Royer, Patrick Pérez, Hervé Jégou, Edouard Grave ve Neil Zeghidour tarafından Moshi: a speech-text foundation model for real-time dialogue adlı çalışmada önerilmiştir.

Moshi, konuşulan diyaloğu konuşmadan konuşmaya üretim olarak ele alan bir konuşma-metin temel modelidir. Metin dil modeli omurgasından yola çıkan Moshi, sinirsel ses kodlayıcısının artıksal kuantizatöründen token'lar olarak ses üretirken, kendi sesini ve kullanıcının sesini ayrı ayrı paralel akışlarda modeler. Bu, açık konuşmacı sıralarının kaldırılmasına ve keyfi konuşma dinamiklerinin modellenmesine olanak tanır. Moshi ayrıca, ses token'larının bir öneki olarak zamanla hizalı metin token'larını tahmin eder. Bu “Inner Monologue” yöntemi, üretilen sesin dilbilimsel kalitesini önemli ölçüde artırır ve akışkan ses tanıma ile metinden sese çevirisi sağlar. Sonuç olarak Moshi, teorik gecikmesi 160 ms, pratikte 200 ms olan ilk gerçek zamanlı tam çift yönlü konuşan büyük dil modelidir.

Makalenin özeti aşağıdaki gibidir:

Moshi'yi tanıtıyoruz; bu, bir konuşma-metin temel modeli ve tam çift yönlü (full-duplex) sözlü diyalog çerçevesidir. Sözlü diyalog için mevcut sistemler, bağımsız bileşenlerden oluşan hatlara dayanır: ses aktivitesi algılama, konuşma tanıma, metin tabanlı diyalog ve metinden sese dönüştürme. Bu tür çerçeveler gerçek bir sohbet deneyimini taklit edemez. Birincisi, karmaşıklıkları etkileşimler arasında birkaç saniyelik bir gecikmeye yol açar. İkincisi, diyalog için ara modül metin olduğu için, anlamı değiştiren dil dışı bilgiler—duygu veya konuşma dışı sesler gibi—etkileşimde kaybolur. Son olarak, bu sistemler konuşmacı sıralarına dayalı bir segmentasyona dayanır; bu yaklaşım üst üste binen konuşmaları, kesintileri ve araya giren sesleri göz önüne almaz. Moshi, sözlü diyaloğu konuşmadan konuşmaya üretime dönüştürerek bu bağımsız sorunların tümünü bir arada çözer. Bir metin dil modeli omurgasından yola çıkan Moshi, sinirsel bir ses kodlayıcısının (neural audio codec) artımsal kuantizatöründen (residual quantizer) token'lar olarak ses üretirken, kendi sesini ve kullanıcının sesini paralel akışlarda ayrı ayrı modeler. Bu, açık konuşmacı sıralarının kaldırılmasına ve keyfi konuşma dinamiklerinin modellenmesine olanak tanır. Ayrıca, önceki çalışmalardaki hiyerarşik semantikten akustik token üretimini genişleterek, ses token'larından önce zamanla hizalı metin token'larını bir önek (prefix) olarak tahmin ediyoruz. Bu “Inner Monologue” yöntemi yalnızca üretilen sesin dil kalitesini önemli ölçüde artırmakla kalmıyor, aynı zamanda akışkan konuşma tanıma ve metinden sese dönüştürme sağlayabileceğini de gösteriyoruz. Sonuç olarak ortaya çıkan modelimiz, teorik gecikmesi 160 ms, pratikte 200 ms olan ve github.com/kyutai-labs/moshi adresinde erişilebilir olan, gerçek zamanlı tam çift yönlü sözlü büyük dil modelidir.

Moshi, 3 bilgi akışıyla ilgilenir:

  1. Kullanıcının sesi
  2. Moshi'nin sesi
  3. Moshi'nin metinsel çıktısı

~MusicgenModel'de olduğu gibi, ses, token'lar gibi yorumlanabilen ses kod kitaplarıyla temsil edilir. Metin token'ları ile ses kod kitapları arasındaki temel fark, ses kod kitaplarının ek bir bilgi boyutu tanıtmış olmasıdır. Metin token'ları genellikle (batch_size, sequence_length) boyutludur ancak ses token'ları (batch_size, num_codebooks, sequence_length) boyutludur.

Moshi, 3 bileşenden oluşur:

1. Ana çözücü (makalede Helium)

MoshiForCausalLM sınıfına karşılık gelir. Kesinlikle klasik bir metin LLM'idir ve ~GemmaForCausalLM ile benzer bir mimari kullanır. Başka bir deyişle, metin tokenlarını alır, bunları gömme (embedding) yapar, decoder ve bir dil başlığından geçirerek metin logitlerini elde eder.

2. Derinlik çözücü

Kendi başına klasik bir LLM'dir, ancak bu sefer zaman boyutu üzerinde değil, codebook boyutu üzerinde üretim yapar.

Bu, bağlam uzunluğunun num_codebooks olduğu ve bu nedenle num_codebooks'ten fazlasını üretemediği anlamına da gelir.

Her zaman damgasının - yani her kod kitabının - kendi Linear Layers ve Embeddings setine sahip olduğunu unutmayın.

3. MimiModel

Kyutai'nin, ~MusicgenModel içinde ~EncodecModel'in sahip olduğu aynı işlevi gören ve sesleri "tokenize" etmek için kullanılan, son zamanlarda transformers'a entegre edilmiş ses kodlayıcısıdır.

İpuçları

Orijinal kontrol noktaları, src/transformers/models/moshi/convert_moshi_transformers.py dönüştürme betiği kullanılarak dönüştürülebilir.

Modeli nasıl kullanılır

Bu uygulamanın iki ana amacı vardır:

  1. orijinal API'yi basitleştirerek model üretimini hızlıca test edin
  2. eğitimi basitleştirir. Bir eğitim kılavuzu yakında eklenecek, ancak kullanıcı katkıları memnuniyetle karşılanır!

Ara kullanım için tasarlanmıştır. Modeli gerçek zamanlı akışta çıkarım yapmak için orijinal uygulamayı kullanmanızı şiddetle öneririz.

1. Model üretimi

Moshi, iki ses akışına sahip bir akışkan oto-gerçeklemeli modeldir. Başka bir deyişle, bir ses akışı modelin söylediği/söyleyeceği içeriğe, diğer ses akışı ise kullanıcının söylediği/söyleyeceği içeriğe karşılık gelir.

MoshiForConditionalGeneration.generate() bu nedenle 3 girdiye ihtiyaç duyar:

  1. input_ids - metin token geçmişine karşılık gelir
  2. moshi_input_values veya moshi_audio_codes - modelin ses geçmişine karşılık gelen
  3. user_input_values veya user_audio_codes - kullanıcı ses geçmişine karşılık gelen

Bu üç girdi senkronize olmalıdır. Yani uzunlukları aynı sayıda token'a karşılık gelmelidir.

Test etmek istediğinize bağlı olarak 3 girdiyi dinamik olarak kullanabilirsiniz:

  1. Sadece kullanıcı istemine verilen model yanıtını kontrol edin - bu durumda, input_ids dolgu (pad) jetonlarıyla doldurulabilir ve user_input_values, kullanıcı istemiyle aynı şekle sahip sıfır bir tensör olabilir.
  2. Daha karmaşık davranışları test edin - bu durumda, girdi token'larının seslerle nasıl senkronize edildiğine dikkat etmeniz gerekir.

Orijinal model, her token telaffuzu arasındaki metni dolgu (padding) ile doldurarak metni sesle senkronize eder.

Aşağıdaki görseldeki örneği takip etmek için, "Hello, I'm Moshi" ifadesi "Hello,<pad><unk>I'm Moshi" biçimine dönüştürülebilir.

MoshiForConditionalGeneration.generate() ardından kendi ses akışını otomatik regresif olarak kendisine besler; ancak transformers kullanılırken kullanıcı girdi akışına erişimi olmadığından, kullanıcının boş ses ürettiğini varsayar.

import math

import torch
from datasets import Audio, load_dataset

from transformers import AutoFeatureExtractor, AutoTokenizer


librispeech_dummy = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
feature_extractor = AutoFeatureExtractor.from_pretrained("kyutai/moshiko-pytorch-bf16")
tokenizer = AutoTokenizer.from_pretrained("kyutai/moshiko-pytorch-bf16")
dtype = torch.bfloat16

# prepare user input audio
librispeech_dummy = librispeech_dummy.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
audio_sample = librispeech_dummy[-1]["audio"]["array"]
user_input_values = feature_extractor(raw_audio=audio_sample, sampling_rate=feature_extractor.sampling_rate, return_tensors="pt").to(device=device, dtype=dtype)

# prepare moshi input values - we suppose moshi didn't say anything while the user spoke
moshi_input_values = torch.zeros_like(user_input_values.input_values)

# prepare moshi input ids - we suppose moshi didn't say anything while the user spoke
num_tokens = math.ceil(moshi_input_values.shape[-1] * waveform_to_token_ratio)
input_ids = torch.ones((1, num_tokens), device=device, dtype=torch.int64) * tokenizer.encode("<pad>")[0]

# generate 25 new tokens (around 2s of audio)
output = model.generate(input_ids=input_ids, user_input_values=user_input_values.input_values, moshi_input_values=moshi_input_values, max_new_tokens=25)

text_tokens = output.sequences
audio_waveforms = output.audio_sequences

2. Model eğitimi

Çoğu iş, akışların hizalanması/senkronize edilmesi gerekliliği nedeniyle veri oluşturma/ön işleme sırasında yapılmalıdır.

Tamamlandığında, model kaybını almak için text_labels ve audio_labels değerlerini, standart girdilerin yanı sıra MoshiForConditionalGeneration.forward() fonksiyonuna iletebilirsiniz.

Eğitim kılavuzu yakında paylaşılacak, ancak kullanıcı katkıları memnuniyetle karşılanır!

Model girdileri nasıl iletir / üretir

  1. Girdi akışları gömülür ve inputs_embeds içinde birleştirilir.

  2. inputs_embeds, ana decoder üzerinden geçirilir ve normal bir LLM tarafından işlenir.

  3. Ana decoder text logits çıktısı üretir ancak makalede temporal context olarak adlandırılan last hidden state çıktısını da üretir.

  4. Derinlik çözücü, ileriye aktarma / üretim yapılan boyutu değiştirir (zaman yerine kod kitapları). text logits ile üretilen token'ı ve temporal context'i kullanarak ses kod kitaplarını otoregresif olarak üretir.

Bu model Yoach Lacombe (ylacombe) tarafından katkıda bulunmuştur.

Orijinal kod burada bulunabilir.

MoshiConfig

sınıf transformers.MoshiConfig

< >

( 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 = 32000hidden_size: int = 4096num_hidden_layers: int = 32num_attention_heads: int = 32num_key_value_heads: int | None = Noneaudio_vocab_size: int | None = Nonemax_position_embeddings: int = 3000rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonehidden_act: str = 'silu'head_dim: int | None = Noneinitializer_range: float = 0.02use_cache: bool = Truesliding_window: int = 3000attention_dropout: float | int = 0.0ffn_dim: int = 22528rms_norm_eps: float = 1e-08num_codebooks: int = 8tie_word_embeddings: bool = Falsepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Noneaudio_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedepth_decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None )

Parametreler

  • vocab_size (int, isteğe bağlı, varsayılan 32000) — Modelin sözlük boyutu. input_ids tarafından temsil edilebilecek farklı token sayısını tanımlar.
  • hidden_size (int, isteğe bağlı, varsayılan 4096) — Gizli temsillerin boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 32) — Transformer çözücüdeki gizli katman sayısı.
  • num_attention_heads (int, isteğe bağlı, varsayılan 32) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • num_key_value_heads (int, isteğe bağlı) — Bu, Grouped Query Attention uygulamasında kullanılacak key_value başlarının sayısıdır. num_key_value_heads=num_attention_heads ise model Multi Head Attention (MHA) kullanır, num_key_value_heads=1 ise model Multi Query Attention (MQA) kullanır, aksi halde GQA kullanılır. Çok başlı bir checkpoint'i GQA checkpoint'ine dönüştürürken, her grup key ve value başı, o gruptaki tüm orijinal başların ortalama havuzlanması (meanpooling) ile oluşturulmalıdır. Daha fazla ayrıntı için bu makaleye göz atın. Belirtilmezse, varsayılan olarak num_attention_heads kullanılır.
  • audio_vocab_size (int, isteğe bağlı) — Modelin ses kısmının sözlük boyutu. Moshi modelleri çağrılırken geçirilen audio_codes ile temsil edilebilecek farklı token sayısını tanımlar.
  • max_position_embeddings (int, isteğe bağlı, varsayılan 3000) — Bu modelin kullanılabileceği en uzun dizi uzunluğu.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], isteğe bağlı) — RoPE gömme yapılandırma parametrelerini içeren sözlük. Sözlük, rope_theta için bir değer ve daha uzun max_position_embeddings ile RoPE kullanmak istiyorsanız ölçekleme için kullanılan isteğe bağlı parametreleri içermelidir.
  • hidden_act (str, isteğe bağlı, varsayılan silu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • head_dim (int, isteğe bağlı) — Dikkat başı boyutu. None ise, varsayılan olarak hidden_size // num_attention_heads değerini alır.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.
  • use_cache (bool, isteğe bağlı, varsayılan True) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızca config.is_decoder=True olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.
  • sliding_window (int, isteğe bağlı, varsayılan 3000) — Kayan pencere dikkatinde pencere boyutu. None ise kayan pencere uygulanmaz.
  • attention_dropout (Union[float, int], isteğe bağlı, varsayılan 0.0) — Dikkat olasılıkları için dropout oranı.
  • ffn_dim (int, isteğe bağlı, varsayılan 22528) — Ana decoder bloğundaki “ara” (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu. Çift sayı olmalıdır.
  • rms_norm_eps (float, isteğe bağlı, varsayılan 1e-08) — rms normalizasyon katmanlarında kullanılan epsilon.
  • num_codebooks (int, isteğe bağlı, varsayılan 8) — Modelin kullandığı paralel kod kitaplarının sayısı.
  • tie_word_embeddings (bool, isteğe bağlı, varsayılan False) — Modelin tied_weights_keys eşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı.
  • pad_token_id (int, isteğe bağlı) — Sözlükte dolgu için kullanılan token kimliği.
  • bos_token_id (int, isteğe bağlı) — 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.
  • audio_encoder_config (PreTrainedConfig | dict, isteğe bağlı) — Ses kodlayıcı yapılandırması.
  • depth_decoder_config (PreTrainedConfig | dict, isteğe bağlı) — Derinlik çözücü yapılandırması.

Bu, bir MoshiModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Moshi modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, kmhf/hf-moshika 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 (
...     MoshiConfig,
...     MoshiForConditionalGeneration,
... )

>>> configuration = MoshiConfig()

>>> # Initializing a MoshiForConditionalGeneration (with random weights) from the kmhf/hf-moshika style configuration
>>> model = MoshiForConditionalGeneration(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

>>> # Saving the model, including its configuration
>>> model.save_pretrained("kmhf/hf-moshika")

>>> # loading model and config from pretrained folder
>>> moshi_config = MoshiConfig.from_pretrained("kmhf/hf-moshika")
>>> model = MoshiForConditionalGeneration.from_pretrained("kmhf/hf-moshika", config=moshi_config)

from_audio_encoder_config

< >

( audio_encoder_config: PreTrainedConfig**kwargs ) → MoshiConfig

Dönüş değeri

MoshiConfig

Bir yapılandırma nesnesi örneği

Bir ses kodlayıcı yapılandırmasından MoshiConfig (veya türetilmiş bir sınıf) örneği oluşturun.

MoshiDepthConfig

sınıf transformers.MoshiDepthConfig

< >

( 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 = 32000hidden_size: int = 1024input_size: int = 4096num_hidden_layers: int = 6num_attention_heads: int = 16num_key_value_heads: int | None = Noneaudio_vocab_size: int = 2048max_position_embeddings: int = 9hidden_act: str = 'silu'head_dim: int | None = Noneinitializer_range: float = 0.02use_cache: bool = Truesliding_window: int = 8attention_dropout: float | int = 0.0ffn_dim: int = 5632rms_norm_eps: float = 1e-08num_codebooks: int = 8tie_word_embeddings: bool = Falsepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = None )

Parametreler

  • vocab_size (int, isteğe bağlı, varsayılan 32000) — Modelin sözlük boyutu. input_ids tarafından temsil edilebilecek farklı token sayısını tanımlar.
  • hidden_size (int, isteğe bağlı, varsayılan 1024) — Gizli temsillerin boyutu.
  • input_size (int, isteğe bağlı, varsayılan 4096) — Girdi gizli durumlarının boyutluluğu. Ana çözücü ile derinlik çözücüsünü bağlamak için kullanılır.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 6) — Transformer çözücüdeki gizli katman sayısı.
  • num_attention_heads (int, isteğe bağlı, varsayılan 16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • num_key_value_heads (int, isteğe bağlı) — Bu, Grouped Query Attention uygulamasında kullanılacak key_value başlarının sayısıdır. num_key_value_heads=num_attention_heads ise model Multi Head Attention (MHA) kullanır, num_key_value_heads=1 ise model Multi Query Attention (MQA) kullanır, aksi halde GQA kullanılır. Çok başlı bir checkpoint'i GQA checkpoint'ine dönüştürürken, her grup key ve value başı, o gruptaki tüm orijinal başların ortalama havuzlanması (meanpooling) ile oluşturulmalıdır. Daha fazla ayrıntı için bu makaleye göz atın. Belirtilmezse, varsayılan olarak num_attention_heads kullanılır.
  • audio_vocab_size (int, isteğe bağlı, varsayılan 2048) — Modelin ses bölümünün sözlük boyutu. Moshi modelleri çağrılırken geçirilen audio_codes ile temsil edilebilecek farklı token sayısını tanımlar.
  • max_position_embeddings (int, isteğe bağlı, varsayılan 9) — Bu modelin kullanılabileceği maksimum dizi uzunluğu.
  • hidden_act (str, isteğe bağlı, varsayılan silu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • head_dim (int, isteğe bağlı) — Dikkat başı boyutu. None ise, varsayılan olarak hidden_size // num_attention_heads değerini alır.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.
  • use_cache (bool, isteğe bağlı, varsayılan True) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızca config.is_decoder=True olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.
  • sliding_window (int, isteğe bağlı, varsayılan 8) — Kayan pencere dikkat penceresi boyutu. None ise kayan pencere uygulanmaz.
  • attention_dropout (Union[float, int], isteğe bağlı, varsayılan 0.0) — Dikkat olasılıkları için dropout oranı.
  • ffn_dim (int, isteğe bağlı, varsayılan 5632) — Derinlik çözücü bloğundaki “ara” (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu. Çift sayı olmalıdır.
  • rms_norm_eps (float, isteğe bağlı, varsayılan 1e-08) — rms normalizasyon katmanlarında kullanılan epsilon.
  • num_codebooks (int, isteğe bağlı, varsayılan 8) — Modelin kullandığı paralel kod kitaplarının sayısı.
  • tie_word_embeddings (bool, isteğe bağlı, varsayılan False) — Modelin tied_weights_keys eşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı.
  • pad_token_id (int, isteğe bağlı) — Sözlükte dolgu için kullanılan token kimliği.
  • bos_token_id (int, isteğe bağlı) — 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.

Bu, bir MoshiModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Moshi modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, kmhf/hf-moshika 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 (
...     MoshiDepthConfig,
...     MoshiDepthDecoder,
... )

>>> configuration = MoshiDepthConfig()

>>> # Initializing a MoshiDepthDecoder (with random weights) from the kmhf/hf-moshika style configuration
>>> model = MoshiDepthDecoder(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

MoshiModel

sınıf transformers.MoshiModel

< >

( config: MoshiConfig )

Parametreler

  • config (MoshiConfig) — 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-state çıktısı üreten çıplak Moshi Model.

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: 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, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.

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

    Girdi kimlikleri nelerdir?

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

    Dikkat maskeleri nedir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

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

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

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

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

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

Dönüş değeri

BaseModelOutputWithPast veya tuple(torch.Tensor)

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

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

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

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

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

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

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

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

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

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

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

MoshiForCausalLM

sınıf transformers.MoshiForCausalLM

< >

( config: MoshiConfig )

Parametreler

  • config (MoshiConfig) — 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.

Üstünde bir metin dil modelleme başlığı bulunan Moshi decoder modeli. Yalnızca metin için kullanılabilir.

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: 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] = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoshiCausalLMOutputWithPast or tuple(torch.Tensor)

Parametreler

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

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

    Girdi kimlikleri nelerdir?

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

    Dikkat maskeleri nedir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

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

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

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

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

  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.
  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. past_key_values).
  • labels (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) — Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler [0, ..., config.vocab_size] aralığında olmalı ya da -100 olmalı (input_ids docstring'ine bakın). Endeksleri -100 olarak ayarlanan tokenlar yok sayılır (maskelenir), kayıp yalnızca etiketleri [0, ..., config.vocab_size] aralığında olan tokenlar için hesaplanır.
  • logits_to_keep (Union[int, torch.Tensor], isteğe bağlı, varsayılan 0) — int ise, son logits_to_keep token için logits hesaplanır. 0 ise, tüm input_ids için logits hesaplanır (özel durum). Üretim için yalnızca son token logits'leri gereklidir ve bunların yalnızca o token için hesaplanması bellek tasarrufu sağlar; bu, uzun diziler veya büyük sözlük boyutu için oldukça önemli hale gelir. torch.Tensor ise, dizi uzunluğu boyutundaki korunacak indekslere karşılık gelen 1B olmalıdır. Bu, paketlenmiş tensor biçimini (batch ve dizi uzunluğu için tek boyut) kullanırken faydalıdır.

Dönüş değeri

MoshiCausalLMOutputWithPast veya tuple(torch.Tensor)

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

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

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

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

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

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

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

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

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

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

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

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

Örnek:

>>> from transformers import AutoTokenizer, MoshiForCausalLM

>>> model = MoshiForCausalLM.from_pretrained("kmhf/hf-moshika")
>>> tokenizer = AutoTokenizer.from_pretrained("kmhf/hf-moshika")

>>> prompt = "What is your favorite condiment?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"What is your favorite condiment?"

MoshiForConditionalGeneration

sınıf transformers.MoshiForConditionalGeneration

< >

( config: MoshiConfig )

Parametreler

  • config (MoshiConfig) — 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.

Ses-sese dönüştürme için ses kodlayıcıya, Moshi derinlik çözücüye ve Moshi çözücüye sahip orijinal Moshi modeli.

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Noneuser_input_values: typing.Optional[torch.Tensor] = Noneuser_audio_codes: typing.Optional[torch.Tensor] = Nonemoshi_input_values: typing.Optional[torch.Tensor] = Nonemoshi_audio_codes: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonetext_labels: typing.Optional[torch.LongTensor] = Noneaudio_labels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs ) → MoshiConditionalGenerationOutputWithPast or tuple(torch.Tensor)

Parametreler

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

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

    Girdi kimlikleri nelerdir?

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

    Dikkat maskeleri nedir?

  • user_input_values (şekli `(batch_size, 1, audio_sequence_length)` olan torch.Tensor , isteğe bağlı) — Üretim için sesli kullanıcı komutu olarak kullanılan ses dalgaları.
  • user_audio_codes (torch.Tensor of shape (batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio user prompt for the generation. Has priority over user_input_valuesand represents the audio "tokens" ofuser_input_values` once passed through the audio encoder.
  • moshi_input_values (şekli `(batch_size, 1, audio_sequence_length)` olan torch.Tensor , isteğe bağlı) — Üretim için ses Moshi komutu olarak kullanılan ses dalgaları.
  • moshi_audio_codes (torch.Tensor of shape (batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio Moshi prompt for the generation. Has priority over moshi_input_valuesand represents the audio "tokens" ofmoshi_input_values` once passed through the audio encoder.
  • past_key_values (~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

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

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

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

  • inputs_embeds (torch.Tensor şeklinde (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids geçirmek yerine gömülü bir temsil doğrudan geçirmeyi seçebilirsiniz. Eğer past_key_values kullanılıyorsa, isteğe bağlı olarak yalnızca son inputs_embeds girdi olarak girilmelidir (bkz. past_key_values). Bu, modelin dahili gömme arama matrisine kıyasla input_ids endekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol istiyorsanız faydalıdır.

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

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

Dönüş değeri

MoshiConditionalGenerationOutputWithPast veya tuple(torch.Tensor)

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

MoshiForConditionalGeneration 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ı, text_labels sağlandığında döndürülür) — Metin dil modelleme kaybı (sonraki token tahmini için).

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

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

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

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

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

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

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

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

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

  • audio_logits (torch.Tensor, şekli (batch_size, sequence_length, config.vocab_size)) — Ses dil modelleme başlıklarının tahmin puanları.

  • depth_past_key_values (Cache, isteğe bağlı, use_cache=True geçirildiğinde veya config.use_cache=True olduğunda döndürülür) — Derinlik çözücü geçmiş anahtar-değerleri.

  • depth_hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — Derinlik çözücü gizli durumları

  • depth_attentions (tuple(torch.Tensor), opsiyonel, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — Self-attention başlıklarında ağırlıklı ortalama hesaplamak için kullanılan, attention softmax sonrası derinlik decoder'ının Attentions ağırlıkları.

Örnekler:

>>> from transformers import MoshiForConditionalGeneration
>>> import torch

>>> model = MoshiForConditionalGeneration.from_pretrained("kmhf/hf-moshika")
>>> inputs = moshi.get_unconditional_inputs()

>>> logits = model(**inputs, ).logits
>>> logits.shape  # (bsz, seq_len, text_vocab_size)
torch.Size([1, 1, 32000])

generate

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneuser_input_values: typing.Optional[torch.Tensor] = Noneuser_audio_codes: typing.Optional[torch.Tensor] = Nonemoshi_input_values: typing.Optional[torch.Tensor] = Nonemoshi_audio_codes: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonereturn_audio_waveforms: bool | None = Truereturn_audio_codes: bool | None = Noneconcat_unconditional_inputs: bool | None = True**kwargs )

Parametreler

  • input_ids (şekli `(batch_size, sequence_length)` olan torch.Tensor , isteğe bağlı) — Üretim için metin komutu olarak kullanılan dizi.
  • user_input_values (şekli `(batch_size, 1, audio_sequence_length)` olan torch.Tensor , isteğe bağlı) — Üretim için sesli kullanıcı komutu olarak kullanılan ses dalgaları.
  • user_audio_codes (torch.Tensor of shape (batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio user prompt for the generation. Has priority over user_input_valuesand represents the audio "tokens" ofuser_input_values` once passed through the audio encoder.
  • moshi_input_values (şekli `(batch_size, 1, audio_sequence_length)` olan torch.Tensor , isteğe bağlı) — Üretim için ses Moshi komutu olarak kullanılan ses dalgaları.
  • moshi_audio_codes (torch.Tensor of shape (batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio Moshi prompt for the generation. Has priority over moshi_input_valuesand represents the audio "tokens" ofmoshi_input_values` once passed through the audio encoder.
  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids ve ses girişlerini iletmek yerine doğrudan gömülü bir temsil iletebilirsiniz. Bu, modelin dahili gömme arama matrisine kıyasla girişlerin ilgili vektörlere nasıl dönüştürüleceği üzerinde daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.
  • return_audio_waveforms (bool, isteğe bağlı, varsayılan True) — False ise ses dalgaları üretilmez.
  • return_audio_codes (bool, isteğe bağlı) — True ise, ses kodlarını da döndürür; bunlar, ses kodlayıcıdan geçirildiğinde audio_sequences olarak dönüştürülen ara ses “token”leridir.
  • concat_unconditional_inputs (bool, isteğe bağlı, varsayılan True) — False ise, başlangıç ses ve metin jetonları birleştirilmez.
  • kwargs (dict[str, Any], isteğe bağlı) — generate metoduna iletilen anahtar kelime argümanlarının kalan sözlüğü. Bunların nasıl kullanılacağına dair daha fazla bilgi için orijinal generate dokümantasyonuna bakınız. depth_ önekiyle başlayan anahtar kelimelerin, derinlik çözücü (depth decoder) için generate metodunun girdisi olacağını unutmayın. Aksi takdirde, derinlik çözücü varsayılan üretim yapılandırmasını kullanır.

Metin token kimlikleri ve ses token kimlikleri dizileri üretir.

get_unconditional_inputs

< >

( num_samples = 1 )

Parametreler

  • num_samples (int, isteğe bağlı) — Koşulsuz olarak üretilecek ses örneklerinin sayısı.
  • max_new_tokens (int, isteğe bağlı) — Her örnek için üretilecek token sayısı. Daha fazla token, daha uzun ses örnekleri anlamına gelir; bunun bedeli, çıkarımın daha uzun sürmesidir (çünkü her örnek için daha fazla ses token'ı üretilmelidir).

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 MoshiForConditionalGeneration

>>> model = MoshiForConditionalGeneration.from_pretrained("kmhf/hf-moshika")

>>> # get the unconditional (or 'null') inputs for the model
>>> unconditional_inputs = model.get_unconditional_inputs(num_samples=1)
>>> audio_samples = model.generate(**unconditional_inputs, max_new_tokens=256)
Update on GitHub