Transformers documentation
Moshi
Mô hình này được công bố trên HF papers vào ngày 17-09-2024 và được đóng góp cho Hugging Face Transformers vào ngày 16-10-2024.
Moshi
Tổng quan
Mô hình Moshi được đề xuất trong Moshi: a speech-text foundation model for real-time dialogue bởi Alexandre Défossez, Laurent Mazaré, Manu Orsini, Amélie Royer, Patrick Pérez, Hervé Jégou, Edouard Grave và Neil Zeghidour.
Moshi là một mô hình nền tảng cho giọng nói và văn bản, xem xét đối thoại bằng lời nói như một bài toán sinh giọng nói từ giọng nói. Bắt đầu từ một khung xương sống của mô hình ngôn ngữ văn bản, Moshi tạo ra giọng nói dưới dạng các token từ bộ lượng tử hóa phần dư của một codec âm thanh neural, trong khi mô hình hóa riêng biệt giọng nói của chính nó và giọng nói của người dùng trong các luồng song song. Điều này cho phép loại bỏ các lượt nói người nói rõ ràng và mô hình hóa các động lực hội thoại tùy ý. Moshi cũng dự đoán các token văn bản được căn chỉnh theo thời gian như một tiền tố cho các token âm thanh. Phương pháp “Inner Monologue” này cải thiện đáng kể chất lượng ngôn ngữ của giọng nói được tạo ra và cung cấp nhận dạng giọng nói theo luồng và chuyển đổi văn bản thành giọng nói. Kết quả là, Moshi là mô hình ngôn ngữ lớn bằng lời nói full-duplex thời gian thực đầu tiên, với độ trễ lý thuyết là 160ms, và 200ms trong thực tế.

Tóm tắt từ bài báo như sau:
Chúng tôi giới thiệu Moshi, một mô hình nền tảng cho giọng nói-văn bản và một khung đối thoại giọng nói full-duplex. Các hệ thống hiện tại cho đối thoại giọng nói dựa vào các pipeline gồm các thành phần độc lập, cụ thể là phát hiện hoạt động giọng nói, nhận dạng giọng nói, đối thoại văn bản và tổng hợp giọng nói từ văn bản. Những khung như vậy không thể mô phỏng trải nghiệm của các cuộc trò chuyện thực. Thứ nhất, độ phức tạp của chúng gây ra độ trễ vài giây giữa các tương tác. Thứ hai, vì văn bản là phương thức trung gian cho đối thoại, thông tin phi ngôn ngữ làm thay đổi ý nghĩa— chẳng hạn như cảm xúc hoặc âm thanh không phải giọng nói— bị mất trong tương tác. Cuối cùng, chúng dựa vào việc phân đoạn theo lượt nói của người nói, điều này không tính đến giọng nói chồng chéo, sự ngắt lời và các từ chêm. Moshi giải quyết toàn bộ những vấn đề độc lập này bằng cách xem đối thoại giọng nói như bài toán sinh giọng nói từ giọng nói. Bắt đầu từ một khung xương mô hình ngôn ngữ văn bản, Moshi sinh giọng nói dưới dạng các token từ bộ lượng tử hóa phần dư của một codec âm thanh neural, trong khi mô hình hóa riêng biệt giọng nói của chính nó và của người dùng trong các luồng song song. Điều này cho phép loại bỏ các lượt nói người nói tường minh và mô hình hóa các động lực hội thoại tùy ý. Hơn nữa, chúng tôi mở rộng việc sinh token từ ngữ nghĩa đến âm thanh theo phân cấp của các công trình trước đó để trước tiên dự đoán các token văn bản căn chỉnh theo thời gian như một tiền tố cho các token âm thanh. Không chỉ phương pháp “Inner Monologue” này cải thiện đáng kể chất lượng ngôn ngữ của giọng nói được sinh ra, mà chúng tôi còn minh họa cách nó có thể cung cấp nhận dạng giọng nói streaming và tổng hợp giọng nói từ văn bản. Mô hình kết quả của chúng tôi là mô hình ngôn ngữ lớn đối thoại giọng nói full-duplex thời gian thực đầu tiên, với độ trễ lý thuyết là 160ms, 200ms trong thực tế, và có sẵn tại github.com/kyutai-labs/moshi.
Moshi xử lý 3 luồng thông tin:
- Âm thanh của người dùng
- Âm thanh của Moshi
- Đầu ra văn bản của Moshi
Tương tự như ~MusicgenModel, âm thanh được biểu diễn bằng các audio codebook, có thể được hiểu như các token. Sự khác biệt chính giữa text token và audio codebook là audio codebook đưa vào một chiều thông tin bổ sung.
Text token thường có kích thước (batch_size, sequence_length) nhưng audio token có kích thước (batch_size, num_codebooks, sequence_length).
Moshi được tạo thành từ 3 thành phần:
1. Bộ giải mã chính (Helium trong bài báo)
Nó tương ứng với MoshiForCausalLM. Đây là một LLM văn bản cổ điển, sử dụng kiến trúc tương tự như ~GemmaForCausalLM. Nói cách khác, nó nhận các token văn bản, nhúng chúng, đưa chúng qua bộ giải mã và một đầu ngôn ngữ, để lấy ra các logits văn bản.
2. Bộ giải mã độ sâu
Tự thân, nó cũng là một LLM kinh điển, nhưng lần này, thay vì tạo ra theo chiều thời gian, nó tạo ra theo chiều codebook.
Điều này cũng có nghĩa là độ dài ngữ cảnh của nó là num_codebooks, do đó nó không thể tạo ra nhiều hơn num_codebooks.
Lưu ý rằng mỗi timestamp - tức là mỗi codebook - có một bộ Linear Layers và Embeddings riêng.
3. MimiModel
Đây là bộ mã hóa âm thanh từ Kyutai, gần đây đã được tích hợp vào transformers, dùng để “token hóa” âm thanh. Nó có cùng vai trò mà ~EncodecModel đảm nhận trong ~MusicgenModel.
Mẹo
Các checkpoint gốc có thể được chuyển đổi bằng script chuyển đổi src/transformers/models/moshi/convert_moshi_transformers.py
Cách sử dụng mô hình
Cài đặt này có hai mục tiêu chính:
- nhanh chóng kiểm tra việc tạo mô hình bằng cách đơn giản hóa API gốc
- đơn giản hóa quá trình huấn luyện. Hướng dẫn huấn luyện sẽ sớm được công bố, nhưng chúng tôi rất hoan nghênh sự đóng góp từ người dùng!
Sản phẩm này được thiết kế cho mục đích sử dụng ở mức trung gian. Chúng tôi khuyến nghị mạnh mẽ việc sử dụng implementation gốc để suy luận mô hình trong streaming thời gian thực.
1. Tạo mô hình
Moshi là một mô hình tự hồi quy dạng streaming với hai luồng âm thanh. Nói cách khác, một luồng âm thanh tương ứng với những gì mô hình đã nói/sẽ nói và luồng âm thanh còn lại tương ứng với những gì người dùng đã nói/sẽ nói.
Do đó, MoshiForConditionalGeneration.generate() cần 3 đầu vào:
input_ids- tương ứng với lịch sử token của văn bảnmoshi_input_valueshoặcmoshi_audio_codes- tương ứng với lịch sử âm thanh của mô hìnhuser_input_valueshoặcuser_audio_codes- tương ứng với lịch sử âm thanh của người dùng
Ba đầu vào này phải được đồng bộ hóa. Nghĩa là độ dài của chúng phải tương ứng với cùng một số lượng token.
Bạn có thể sử dụng động 3 đầu vào tùy thuộc vào những gì bạn muốn kiểm tra:
- Chỉ cần kiểm tra phản hồi của mô hình đối với một prompt của người dùng - trong trường hợp đó,
input_idscó thể được điền bằng các token pad vàuser_input_valuescó thể là một tensor bằng 0 có cùng hình dạng với prompt của người dùng. - Kiểm tra hành vi phức tạp hơn - trong trường hợp đó, bạn phải cẩn thận về cách các token đầu vào được đồng bộ hóa với các tệp âm thanh.
Mô hình gốc đồng bộ hóa văn bản với âm thanh bằng cách đệm văn bản giữa mỗi lần phát âm token.
Để làm theo ví dụ trong hình ảnh dưới đây,
"Hello, I'm Moshi"có thể được chuyển đổi thành"Hello,<pad><unk>I'm Moshi".

MoshiForConditionalGeneration.generate() sau đó tự động hồi quy (auto-regressively) đưa vào chính nó luồng âm thanh của nó, nhưng vì không có quyền truy cập vào luồng đầu vào của người dùng khi sử dụng transformers, nên nó sẽ giả định rằng người dùng đang tạo ra âm thanh trống.
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_sequences2. Huấn luyện mô hình
Phần lớn công việc phải được thực hiện trong quá trình tạo tiền xử lý dữ liệu, do yêu cầu phải căn chỉnh đồng bộ hóa các luồng.
Khi hoàn tất, bạn chỉ cần truyền text_labels và audio_labels vào MoshiForConditionalGeneration.forward(), cùng với các đầu vào thông thường, để lấy loss của mô hình.
Hướng dẫn huấn luyện sẽ sớm được cập nhật, nhưng chúng tôi luôn hoan nghênh sự đóng góp từ người dùng!
Mô hình truyền các đầu vào / tạo ra
Các luồng đầu vào được nhúng và kết hợp thành
inputs_embeds.inputs_embedsđược truyền qua bộ giải mã chính, nơi nó được xử lý giống như một LLM thông thường.Bộ giải mã chính xuất ra
text logitsnhưng cũng xuất ralast hidden statecủa nó, được gọi làtemporal contexttrong bài báo.Bộ giải mã chiều sâu chuyển đổi chiều mà chúng ta truyền / tạo ra (các codebook thay vì thời gian). Nó sử dụng token được tạo từ
text logitsvàtemporal contextđể tự hồi quy tạo ra các codebook âm thanh.
Mô hình này được đóng góp bởi Yoach Lacombe (ylacombe).
Mã nguồn gốc có thể được tìm thấy tại đây.
MoshiConfig
lớp transformers.MoshiConfig
< 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 = 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 )
Tham số
- vocab_size (
int, tùy chọn, mặc định là32000) — Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởiinput_ids. - hidden_size (
int, tùy chọn, mặc định là4096) — Kích thước của các biểu diễn ẩn. - num_hidden_layers (
int, tùy chọn, mặc định là32) — Số lượng lớp ẩn trong bộ giải mã Transformer. - num_attention_heads (
int, tùy chọn, mặc định là32) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer. - num_key_value_heads (
int, tùy chọn) — Đây là số lượng key_value heads cần được sử dụng để triển khai Grouped Query Attention. Nếunum_key_value_heads=num_attention_heads, mô hình sẽ sử dụng Multi Head Attention (MHA), nếunum_key_value_heads=1mô hình sẽ sử dụng Multi Query Attention (MQA), ngược lại sẽ sử dụng GQA. Khi chuyển đổi checkpoint multi-head sang checkpoint GQA, mỗi nhóm key và value head nên được xây dựng bằng cách meanpooling tất cả các head gốc trong nhóm đó. Để biết thêm chi tiết, hãy xem bài báo này. Nếu không được chỉ định, giá trị mặc định sẽ lànum_attention_heads. - audio_vocab_size (
int, tùy chọn) — Kích thước từ vựng của phần audio trong model. Xác định số lượng token khác nhau có thể được biểu diễn bởiaudio_codesđược truyền khi gọi các model Moshi. - max_position_embeddings (
int, tùy chọn, mặc định là3000) — Chiều dài tối đa của chuỗi mà mô hình này có thể được sử dụng. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], tùy chọn) — Từ điển chứa các tham số cấu hình cho các embedding RoPE. Từ điển phải chứa một giá trị chorope_thetavà tùy chọn các tham số được sử dụng để mở rộng trong trường hợp bạn muốn sử dụng RoPE vớimax_position_embeddingsdài hơn. - hidden_act (
str, tùy chọn, mặc định làsilu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - head_dim (
int, tùy chọn) — Kích thước chiều của đầu chú ý. Nếu là None, giá trị mặc định sẽ là hidden_size // num_attention_heads - initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - use_cache (
bool, tùy chọn, mặc định làTrue) — Xác định xem mô hình có nên trả về các chú ý key/values cuối cùng hay không (không được sử dụng bởi tất cả các mô hình). Chỉ liên quan nếuconfig.is_decoder=Truehoặc khi mô hình là mô hình sinh chỉ có decoder. - sliding_window (
int, tùy chọn, mặc định là3000) — Kích thước cửa sổ cho chú ý cửa sổ trượt. Nếu làNone, sẽ không áp dụng cửa sổ trượt. - attention_dropout (
Union[float, int], tùy chọn, mặc định là0.0) — Tỷ lệ dropout cho các xác suất chú ý. - ffn_dim (
int, tùy chọn, mặc định là 22528) — Kích thước chiều của lớp “trung gian” (thường được gọi là lớp feed-forward) trong khối decoder chính. Phải là số chẵn. - rms_norm_eps (
float, tùy chọn, mặc định là1e-08) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa rms. - num_codebooks (
int, tùy chọn, mặc định là8) — Số lượng codebook song song được mô hình sử dụng. - tie_word_embeddings (
bool, tùy chọn, mặc định làFalse) — Có nên gắn kết các trọng số nhúng theo ánh xạtied_weights_keyscủa mô hình hay không. - pad_token_id (
int, tùy chọn) — Token id được sử dụng để đệm trong từ vựng. - bos_token_id (
int, tùy chọn) — Token id được sử dụng cho beginning-of-stream trong bảng từ vựng. - eos_token_id (
Union[int, list[int]], tùy chọn) — Token id được sử dụng cho end-of-stream trong bảng từ vựng. - audio_encoder_config (
PreTrainedConfig | dict, tùy chọn) — Cấu hình cho bộ mã hóa âm thanh. - depth_decoder_config (
PreTrainedConfig | dict, tùy chọn) — Cấu hình cho bộ giải mã độ sâu.
Đây là lớp cấu hình để lưu trữ cấu hình của một MoshiModel. Nó được sử dụng để khởi tạo một mô hình Moshi theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như của kmhf/hf-moshika
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> 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
< source >( audio_encoder_config: PreTrainedConfig**kwargs ) → MoshiConfig
Trả về
Một đối tượng cấu hình
Tạo một MoshiConfig (hoặc một lớp kế thừa) từ cấu hình bộ mã hóa âm thanh.
MoshiDepthConfig
lớp transformers.MoshiDepthConfig
< 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 = 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 )
Tham số
- vocab_size (
int, tùy chọn, mặc định là32000) — Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởiinput_ids. - hidden_size (
int, tùy chọn, mặc định là1024) — Kích thước của các biểu diễn ẩn. - input_size (
int, tùy chọn, mặc định là 4096) — Kích thước chiều của các trạng thái ẩn đầu vào. Được sử dụng để kết nối bộ giải mã chính với bộ giải mã chiều sâu. - num_hidden_layers (
int, tùy chọn, mặc định là6) — Số lượng lớp ẩn trong bộ giải mã Transformer. - num_attention_heads (
int, tùy chọn, mặc định là16) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer. - num_key_value_heads (
int, tùy chọn) — Đây là số lượng key_value heads cần được sử dụng để triển khai Grouped Query Attention. Nếunum_key_value_heads=num_attention_heads, mô hình sẽ sử dụng Multi Head Attention (MHA), nếunum_key_value_heads=1mô hình sẽ sử dụng Multi Query Attention (MQA), ngược lại sẽ sử dụng GQA. Khi chuyển đổi checkpoint multi-head sang checkpoint GQA, mỗi nhóm key và value head nên được xây dựng bằng cách meanpooling tất cả các head gốc trong nhóm đó. Để biết thêm chi tiết, hãy xem bài báo này. Nếu không được chỉ định, giá trị mặc định sẽ lànum_attention_heads. - audio_vocab_size (
int, tùy chọn, mặc định là 2048) — Kích thước từ vựng của phần audio trong model. Xác định số lượng token khác nhau có thể được biểu diễn bởiaudio_codesđược truyền khi gọi các model Moshi. - max_position_embeddings (
int, tùy chọn, mặc định là9) — Chiều dài chuỗi tối đa mà mô hình này có thể được sử dụng. - hidden_act (
str, tùy chọn, mặc định làsilu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - head_dim (
int, tùy chọn) — Kích thước chiều của đầu chú ý. Nếu là None, giá trị mặc định sẽ là hidden_size // num_attention_heads - initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - use_cache (
bool, tùy chọn, mặc định làTrue) — Xác định xem mô hình có nên trả về các chú ý key/values cuối cùng hay không (không được sử dụng bởi tất cả các mô hình). Chỉ liên quan nếuconfig.is_decoder=Truehoặc khi mô hình là mô hình sinh chỉ có decoder. - sliding_window (
int, tùy chọn, mặc định là8) — Kích thước cửa sổ của cơ chế chú ý cửa sổ trượt. Nếu làNone, sẽ không áp dụng cửa sổ trượt. - attention_dropout (
Union[float, int], tùy chọn, mặc định là0.0) — Tỷ lệ dropout cho các xác suất chú ý. - ffn_dim (
int, tùy chọn, mặc định là 5632) — Kích thước của lớp “trung gian” (thường được gọi là lớp feed-forward) trong khối depth decoder. Phải là số chẵn. - rms_norm_eps (
float, tùy chọn, mặc định là1e-08) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa rms. - num_codebooks (
int, tùy chọn, mặc định là8) — Số lượng codebook song song được mô hình sử dụng. - tie_word_embeddings (
bool, tùy chọn, mặc định làFalse) — Có nên gắn kết các trọng số nhúng theo ánh xạtied_weights_keyscủa mô hình hay không. - pad_token_id (
int, tùy chọn) — Token id được sử dụng để đệm trong từ vựng. - bos_token_id (
int, tùy chọn) — Token id được sử dụng cho beginning-of-stream trong bảng từ vựng. - eos_token_id (
Union[int, list[int]], tùy chọn) — Token id được sử dụng cho end-of-stream trong bảng từ vựng.
Đây là lớp cấu hình để lưu trữ cấu hình của một MoshiModel. Nó được sử dụng để khởi tạo một mô hình Moshi theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như của kmhf/hf-moshika
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> 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.configMoshiModel
lớp transformers.MoshiModel
< source >( config: MoshiConfig )
Tham số
- config (MoshiConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Moshi Model cơ bản, xuất ra các hidden-states thô mà không có head cụ thể nào ở phía trên.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
forward
< source >( 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)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- position_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồmpast_key_valuesđược trả về bởi mô hình ở một giai đoạn giải mã trước đó, khiuse_cache=Truehoặcconfig.use_cache=True.Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền
past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.
Nếu
past_key_valuesđược sử dụng, người dùng được kỳ vọng chỉ nhậpinput_idschưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng(batch_size, unprocessed_length)thay vì toàn bộinput_idscó hình dạng(batch_size, sequence_length). - inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - use_cache (
bool, tùy chọn) — Nếu đặt thànhTrue, các trạng thái key value củapast_key_valuessẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xempast_key_values).
Trả về
BaseModelOutputWithPast hoặc tuple(torch.Tensor)
Một BaseModelOutputWithPast hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (MoshiConfig) và đầu vào.
Phương thức forward của MoshiModel ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.Nếu
past_key_valuesđược sử dụng, chỉ có hidden-state cuối cùng của các chuỗi có shape(batch_size, 1, hidden_size)được xuất ra.past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và tùy chọn nếu
config.is_encoder_decoder=Truetrong các khối cross-attention) có thể được sử dụng (xem đầu vàopast_key_values) để tăng tốc độ giải mã tuần tự.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
MoshiForCausalLM
lớp transformers.MoshiForCausalLM
< source >( config: MoshiConfig )
Tham số
- config (MoshiConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Mô hình giải mã Moshi có đầu mô hình hóa ngôn ngữ văn bản ở trên. Chỉ có thể sử dụng cho văn bản.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
forward
< source >( 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)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- attention_mask (
torch.Tensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- position_ids (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồmpast_key_valuesđược trả về bởi mô hình ở một giai đoạn giải mã trước đó, khiuse_cache=Truehoặcconfig.use_cache=True.Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền
past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.
Nếu
past_key_valuesđược sử dụng, người dùng được kỳ vọng chỉ nhậpinput_idschưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng(batch_size, unprocessed_length)thay vì toàn bộinput_idscó hình dạng(batch_size, sequence_length). - inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ sốinput_idsthành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - use_cache (
bool, tùy chọn) — Nếu đặt thànhTrue, các trạng thái key value củapast_key_valuessẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xempast_key_values). - labels (
torch.LongTensorcó shape(batch_size, sequence_length), tùy chọn) — Nhãn để tính toán tổn thất mô hình hóa ngôn ngữ có che (masked language modeling loss). Chỉ số phải nằm trong[0, ..., config.vocab_size]hoặc -100 (xem docstring củainput_ids). Các token có chỉ số được đặt thành-100sẽ bị bỏ qua (che), tổn thất chỉ được tính cho các token có nhãn nằm trong[0, ..., config.vocab_size]. - logits_to_keep (
Union[int, torch.Tensor], tùy chọn, mặc định là0) — Nếu làint, tính logits chologits_to_keeptoken cuối. Nếu là0, tính logits cho tất cảinput_ids(trường hợp đặc biệt). Chỉ cần logits của token cuối cho quá trình sinh, và việc chỉ tính cho token đó có thể tiết kiệm bộ nhớ, điều này trở nên khá đáng kể với các chuỗi dài hoặc kích thước từ vựng lớn. Nếu làtorch.Tensor, phải là 1 chiều tương ứng với các chỉ số cần giữ trong chiều độ dài chuỗi. Điều này hữu ích khi sử dụng định dạng tensor đóng gói (một chiều duy nhất cho batch và độ dài chuỗi).
Trả về
MoshiCausalLMOutputWithPast hoặc tuple(torch.Tensor)
Một MoshiCausalLMOutputWithPast hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (MoshiConfig) và đầu vào.
Phương thức forward của MoshiForCausalLM ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
loss (
torch.Tensorcó shape(1,), tùy chọn, được trả về khilabelsđược cung cấp) — Loss của language modeling (cho next-token prediction).logits (
torch.Tensorcó hình dạng(batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token trong từ vựng trước SoftMax).last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các trạng thái ẩn (hidden-states) tại đầu ra của lớp cuối cùng của mô hình.past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention) có thể được sử dụng (xem đầu vào
past_key_values) để tăng tốc độ giải mã tuần tự.hidden_states (
tuple[torch.Tensor, ...], tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple[torch.Tensor, ...], tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Ví dụ:
>>> 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
lớp transformers.MoshiForConditionalGeneration
< source >( config: MoshiConfig )
Tham số
- config (MoshiConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Mô hình Moshi gốc với bộ mã hóa âm thanh, bộ giải mã chiều sâu Moshi và bộ giải mã Moshi, dành cho chuyển đổi giọng nói sang giọng nói.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
forward
< source >( 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)
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- attention_mask (
torch.BoolTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện attention trên các chỉ số token padding. Các giá trị mặt nạ được chọn trong[0, 1]:- 1 cho các token không bị che,
- 0 cho các token bị che.
- user_input_values (
torch.Tensorcó hình dạng `(batch_size, 1, audio_sequence_length), tùy chọn) — Các dạng sóng âm thanh được sử dụng làm lời nhắc người dùng dạng âm thanh cho quá trình tạo. - user_audio_codes (
torch.Tensorof shape(batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio user prompt for the generation. Has priority overuser_input_valuesand represents the audio "tokens" ofuser_input_values` once passed through the audio encoder. - moshi_input_values (
torch.Tensorcó hình dạng `(batch_size, 1, audio_sequence_length), tùy chọn) — Các dạng sóng âm thanh được sử dụng làm prompt âm thanh Moshi cho quá trình sinh. - moshi_audio_codes (
torch.Tensorof shape(batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio Moshi prompt for the generation. Has priority overmoshi_input_valuesand represents the audio "tokens" ofmoshi_input_values` once passed through the audio encoder. - past_key_values (
~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồmpast_key_valuesđược trả về bởi mô hình ở một giai đoạn giải mã trước đó, khiuse_cache=Truehoặcconfig.use_cache=True.Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền
past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.
Nếu
past_key_valuesđược sử dụng, người dùng được kỳ vọng chỉ nhậpinput_idschưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng(batch_size, unprocessed_length)thay vì toàn bộinput_idscó hình dạng(batch_size, sequence_length). - inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_idsbạn có thể chọn trực tiếp truyền một biểu diễn nhúng. Nếupast_key_valuesđược sử dụng, tùy chọn chỉ cầninputs_embedscuối cùng phải được nhập (xempast_key_values). Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổiinput_idschỉ mục thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.Nếu cả
input_idsvàinputs_embedsđều không được đặt,inputs_embedssẽ nhận giá trị củainputs_embeds. - text_labels (
torch.LongTensorcó hình dạng(batch_size, sequence_length), tùy chọn) — Nhãn cho mô hình hóa ngôn ngữ văn bản. Lưu ý rằng các nhãn được dịch chuyển bên trong mô hình, tức là bạn có thể đặtlabels = input_idsCác chỉ số được chọn trong[-100, 0, ..., config.vocab_size]Tất cả các nhãn được đặt thành-100sẽ bị bỏ qua (che), tổn thất chỉ được tính cho các nhãn trong[0, ..., config.vocab_size] - audio_labels (
torch.LongTensorcó shape(batch_size, num_codebooks, sequence_length), tùy chọn) — Nhãn cho mô hình hóa ngôn ngữ. Lưu ý rằng các nhãn được dịch chuyển bên trong mô hình, tức là bạn có thể đặtlabels = input_idsCác chỉ số được chọn trong[-100, 0, ..., config.vocab_size]Tất cả các nhãn được đặt thành-100sẽ bị bỏ qua (che), loss chỉ được tính cho các nhãn trong[0, ..., config.audio_vocab_size] - use_cache (
bool, tùy chọn) — Nếu đặt thànhTrue, các trạng thái key value củapast_key_valuessẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xempast_key_values).
Trả về
MoshiConditionalGenerationOutputWithPast hoặc tuple(torch.Tensor)
Một MoshiConditionalGenerationOutputWithPast hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (MoshiConfig) và đầu vào.
Phương thức forward của MoshiForConditionalGeneration ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
loss (
torch.Tensorcó shape(1,), optional, được trả về khitext_labelsđược cung cấp) — Loss của text language modeling (cho next-token prediction).logits (
torch.Tensorcó hình dạng(batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình ngôn ngữ văn bản (điểm cho mỗi token trong từ vựng trước SoftMax).last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các trạng thái ẩn (hidden-states) tại đầu ra của lớp cuối cùng của mô hình.past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention) có thể được sử dụng (xem đầu vào
past_key_values) để tăng tốc độ giải mã tuần tự.hidden_states (
tuple[torch.Tensor, ...], tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple[torch.Tensor, ...], tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
depth_loss (
torch.Tensorcó hình dạng(1,), tùy chọn, được trả về khiaudio_labelsđược cung cấp) — Mất mô hình hóa ngôn ngữ âm thanh (cho dự đoán token tiếp theo).audio_logits (
torch.Tensorcó hình dạng(batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của các đầu mô hình ngôn ngữ âm thanh.depth_past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Các key-value quá khứ của bộ giải mã chiều sâu.depth_hidden_states (
tuple(torch.Tensor), tùy chọn, được trả về khi truyềnoutput_hidden_states=Truehoặc khiconfig.output_hidden_states=True) — Trạng thái ẩn của bộ giải mã chiều sâudepth_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Trọng số Attentions của bộ giải mã chiều sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Ví dụ:
>>> 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
< source >( 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 )
Tham số
- input_ids (
torch.Tensorcó hình dạng `(batch_size, sequence_length), tùy chọn) — Chuỗi được sử dụng làm lời nhắc văn bản cho quá trình sinh. - user_input_values (
torch.Tensorcó hình dạng `(batch_size, 1, audio_sequence_length), tùy chọn) — Các dạng sóng âm thanh được sử dụng làm lời nhắc người dùng dạng âm thanh cho quá trình tạo. - user_audio_codes (
torch.Tensorof shape(batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio user prompt for the generation. Has priority overuser_input_valuesand represents the audio "tokens" ofuser_input_values` once passed through the audio encoder. - moshi_input_values (
torch.Tensorcó hình dạng `(batch_size, 1, audio_sequence_length), tùy chọn) — Các dạng sóng âm thanh được sử dụng làm prompt âm thanh Moshi cho quá trình sinh. - moshi_audio_codes (
torch.Tensorof shape(batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio Moshi prompt for the generation. Has priority overmoshi_input_valuesand represents the audio "tokens" ofmoshi_input_values` once passed through the audio encoder. - inputs_embeds (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềninput_idsvà các đầu vào âm thanh, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các đầu vào thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. - return_audio_waveforms (
bool, tùy chọn, mặc định làTrue) — NếuFalse, sẽ không tạo ra các dạng sóng âm thanh. - return_audio_codes (
bool, tùy chọn) — NếuTrue, sẽ trả về cả các mã âm thanh đã tạo, tức là các “token” âm thanh trung gian được chuyển đổi thànhaudio_sequencessau khi đi qua bộ giải mã âm thanh. - concat_unconditional_inputs (
bool, tùy chọn, mặc định làTrue) — NếuFalse, sẽ không nối các token âm thanh và văn bản ban đầu. - kwargs (
dict[str, Any], tùy chọn) — Từ điển các đối số từ khóa còn lại được truyền cho phương thứcgenerate. Tham khảo chuỗi tài liệu gốc củagenerateđể biết thêm thông tin về cách sử dụng chúng. Lưu ý rằng các từ khóa có tiền tố depth_ sẽ là đầu vào cho phương thứcgeneratecủa bộ giải mã chiều sâu. Ngược lại, bộ giải mã chiều sâu sẽ sử dụng cấu hình sinh mặc định của nó.
Tạo ra các chuỗi id token văn bản và id token âm thanh.
get_unconditional_inputs
< source >( num_samples = 1 )
Tham số
- num_samples (int, tùy chọn) — Số lượng mẫu âm thanh cần tạo ra một cách vô điều kiện.
- max_new_tokens (int, tùy chọn) — Số lượng token cần tạo cho mỗi mẫu. Số token nhiều hơn đồng nghĩa với các mẫu âm thanh dài hơn, nhưng đổi lại là thời gian suy luận lâu hơn (vì cần tạo nhiều token âm thanh hơn cho mỗi mẫu).
Hàm phụ trợ để lấy các đầu vào null cho việc tạo không điều kiện, cho phép mô hình được sử dụng mà không cần bộ trích xuất đặc trưng hoặc bộ phân từ.
Ví dụ:
>>> 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)