Transformers documentation
Dia
Mô hình này đã được đóng góp cho Hugging Face Transformers vào ngày 2025-06-26.
Dia
Tổng quan
Dia là một mô hình text-to-speech (TTS) mã nguồn mở (1.6B tham số) do Nari Labs phát triển. Nó có thể tạo ra các đoạn hội thoại cực kỳ chân thực từ bản ghi chép, bao gồm cả các giao tiếp phi ngôn ngữ như tiếng cười và tiếng ho. Hơn nữa, việc kiểm soát cảm xúc và giọng điệu cũng có thể thực hiện được thông qua điều kiện hóa âm thanh (voice cloning).
Kiến trúc mô hình: Dia là một transformer encoder-decoder dựa trên kiến trúc transformer gốc. Tuy nhiên, một số tính năng hiện đại hơn như rotational positional embeddings (RoPE) cũng được tích hợp. Đối với phần văn bản (encoder), một byte tokenizer được sử dụng, trong khi đối với phần âm thanh (decoder), một mô hình codec được huấn luyện trước DAC được sử dụng - DAC mã hóa giọng nói thành các token codebook rời rạc và giải mã chúng trở lại thành âm thanh.
Mẹo sử dụng
Sinh văn bản
from transformers import AutoProcessor, DiaForConditionalGeneration
model_checkpoint = "nari-labs/Dia-1.6B-0626"
text = ["[S1] Dia is an open weights text to dialogue model."]
model = DiaForConditionalGeneration.from_pretrained(model_checkpoint, device_map="auto")
processor = AutoProcessor.from_pretrained(model_checkpoint)
inputs = processor(text=text, padding=True, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=256) # corresponds to around ~2s
# save audio to a file
outputs = processor.batch_decode(outputs)
processor.save_audio(outputs, "example.wav")Sinh nội dung bằng văn bản và âm thanh (Nhân bản giọng nói)
from datasets import Audio, load_dataset
from transformers import AutoProcessor, DiaForConditionalGeneration
model_checkpoint = "nari-labs/Dia-1.6B-0626"
ds = load_dataset("hf-internal-testing/dailytalk-dummy", split="train")
ds = ds.cast_column("audio", Audio(sampling_rate=44100))
audio = ds[-1]["audio"]["array"]
# text is a transcript of the audio + additional text you want as new audio
text = ["[S1] I know. It's going to save me a lot of money, I hope. [S2] I sure hope so for you."]
processor = AutoProcessor.from_pretrained(model_checkpoint)
model = DiaForConditionalGeneration.from_pretrained(model_checkpoint, device_map="auto")
inputs = processor(text=text, audio=audio, padding=True, return_tensors="pt").to(model.device)
prompt_len = processor.get_audio_prompt_len(inputs["decoder_attention_mask"])
outputs = model.generate(**inputs, max_new_tokens=256) # corresponds to around ~2s
# retrieve actually generated audio and save to a file
outputs = processor.batch_decode(outputs, audio_prompt_len=prompt_len)
processor.save_audio(outputs, "example_with_audio.wav")Huấn luyện
from datasets import Audio, load_dataset
from transformers import AutoProcessor, DiaForConditionalGeneration
model_checkpoint = "nari-labs/Dia-1.6B-0626"
ds = load_dataset("hf-internal-testing/dailytalk-dummy", split="train")
ds = ds.cast_column("audio", Audio(sampling_rate=44100))
audio = ds[-1]["audio"]["array"]
# text is a transcript of the audio
text = ["[S1] I know. It's going to save me a lot of money, I hope."]
model = DiaForConditionalGeneration.from_pretrained(model_checkpoint, device_map="auto")
processor = AutoProcessor.from_pretrained(model_checkpoint)
inputs = processor(
text=text,
audio=audio,
generation=False,
output_labels=True,
padding=True,
return_tensors="pt"
).to(model.device)
out = model(**inputs)
out.loss.backward()Mô hình này được đóng góp bởi Jaeyong Sung, Arthur Zucker và Anton Vlasjuk. Mã gốc có thể được tìm thấy tại đây.
DiaConfig
lớp transformers.DiaConfig
< 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Trueencoder_config: transformers.models.dia.configuration_dia.DiaEncoderConfig | dict | None = Nonedecoder_config: transformers.models.dia.configuration_dia.DiaDecoderConfig | dict | None = Nonenorm_eps: float = 1e-05pad_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonebos_token_id: int | None = Nonedelay_pattern: list[int] | None = Noneinitializer_range: float = 0.02use_cache: bool = True )
Tham số
- is_encoder_decoder (
bool, tùy chọn, mặc định làTrue) — Xác định xem mô hình có được sử dụng như một encoder/decoder hay không. - encoder_config (
Union[~models.dia.configuration_dia.DiaEncoderConfig, dict], tùy chọn) — Đối tượng cấu hình hoặc từ điển của bộ khung encoder. - decoder_config (
Union[~models.dia.configuration_dia.DiaDecoderConfig, dict], tùy chọn) — Đối tượng cấu hình hoặc từ điển của bộ khung decoder. - norm_eps (
float, tùy chọn, mặc định là1e-05) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa lớp (layer normalization). - pad_token_id (
int, tùy chọn) — Token id được sử dụng để đệm trong 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. - bos_token_id (
int, tùy chọn) — Token id được sử dụng cho beginning-of-stream trong bảng từ vựng. - delay_pattern (
list[int], tùy chọn, mặc định là[0, 8, 9, 10, 11, 12, 13, 14, 15]) — Mẫu độ trễ cho bộ giải mã. Độ dài của danh sách này phải khớp vớidecoder_config.num_channels. - 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.
Đây là lớp cấu hình để lưu trữ cấu hình của một DiaModel. Nó được sử dụng để khởi tạo một mô hình Dia 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ấu hình của nari-labs/Dia-1.6B
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 DiaConfig, DiaModel
>>> # Initializing a DiaConfig with default values
>>> configuration = DiaConfig()
>>> # Initializing a DiaModel (with random weights) from the configuration
>>> model = DiaModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configMặc định sử dụng cấu hình âm thanh vì trong trường hợp này, bộ giải mã thường là bộ khung văn bản
DiaDecoderConfig
lớp transformers.DiaDecoderConfig
< 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truemax_position_embeddings: int = 3072num_hidden_layers: int = 18hidden_size: int = 2048intermediate_size: int = 8192num_attention_heads: int = 16num_key_value_heads: int = 4head_dim: int = 128cross_num_attention_heads: int = 16cross_head_dim: int = 128cross_num_key_value_heads: int = 16cross_hidden_size: int = 1024norm_eps: float = 1e-05vocab_size: int = 1028hidden_act: str = 'silu'num_channels: int = 9rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneinitializer_range: float = 0.02use_cache: bool = Truepad_token_id: int | None = 1025eos_token_id: int | list[int] | None = 1024bos_token_id: int | None = 1026 )
Tham số
- is_encoder_decoder (
bool, tùy chọn, mặc định làTrue) — Xác định xem mô hình có được sử dụng như một encoder/decoder hay không. - max_position_embeddings (
int, tùy chọn, mặc định là3072) — Chiều dài chuỗi tối đa mà mô hình này có thể được sử dụng. - num_hidden_layers (
int, tùy chọn, mặc định là18) — Số lượng lớp ẩn trong bộ giải mã Transformer. - hidden_size (
int, tùy chọn, mặc định là2048) — Kích thước của các biểu diễn ẩn. - intermediate_size (
int, tùy chọn, mặc định là8192) — Kích thước của các biểu diễn MLP. - 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, mặc định là4) — Đâ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. - head_dim (
int, tùy chọn, mặc định là128) — 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 - cross_num_attention_heads (
int, tùy chọn, mặc định là 16) — Số lượng đầu chú ý cho mỗi lớp cross-attention trong bộ giải mã Transformer. - cross_head_dim (
int, tùy chọn, mặc định là 128) — Kích thước của đầu chú ý chéo (cross-attention head). - cross_num_key_value_heads (
int, tùy chọn, mặc định là 16) — Số lượng đầu key và value cho mỗi lớp cross-attention trong bộ giải mã Transformer. - cross_hidden_size (
int, tùy chọn, mặc định là 1024) — Kích thước chiều của các lớp cross-attention. - norm_eps (
float, tùy chọn, mặc định là1e-05) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa lớp (layer normalization). - vocab_size (
int, tuỳ chọn, mặc định là1028) — 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_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. - num_channels (
int, tùy chọn, mặc định là9) — Số lượng kênh đầu vào. - 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. - 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. - pad_token_id (
int, tùy chọn, mặc định là1025) — Token id được sử dụng để đệm (padding) trong từ vựng. - eos_token_id (
Union[int, list[int]], tùy chọn, mặc định là1024) — Token id được sử dụng cho end-of-stream trong bảng từ vựng. - bos_token_id (
int, tùy chọn, mặc định là1026) — Token id được sử dụng cho beginning-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 DiaModel. Nó được sử dụng để khởi tạo một mô hình Dia 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ấu hình của nari-labs/Dia-1.6B
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.
DiaEncoderConfig
lớp transformers.DiaEncoderConfig
< 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 = Nonemax_position_embeddings: int = 1024num_hidden_layers: int = 12hidden_size: int = 1024num_attention_heads: int = 16num_key_value_heads: int = 16head_dim: int = 128intermediate_size: int = 4096norm_eps: float = 1e-05vocab_size: int = 256hidden_act: str = 'silu'rope_parameters: dict | None = Noneinitializer_range: float = 0.02 )
Tham số
- max_position_embeddings (
int, tùy chọn, mặc định là1024) — Chiều dài chuỗi tối đa mà mô hình này có thể được sử dụng. - num_hidden_layers (
int, tùy chọn, mặc định là12) — Số lượng lớp ẩn trong bộ giải mã Transformer. - 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. - 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, mặc định là16) — Đâ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. - head_dim (
int, tùy chọn, mặc định là128) — 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 - intermediate_size (
int, tùy chọn, mặc định là4096) — Kích thước của các biểu diễn MLP. - norm_eps (
float, tùy chọn, mặc định là1e-05) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa lớp (layer normalization). - vocab_size (
int, tùy chọn, mặc định là256) — 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_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. - rope_parameters (
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. - 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ố.
Đây là lớp cấu hình để lưu trữ cấu hình của một DiaModel. Nó được sử dụng để khởi tạo một mô hình Dia 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ấu hình của nari-labs/Dia-1.6B
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.
DiaTokenizer
lớp transformers.DiaTokenizer
< source >( pad_token: str | None = '<pad>'unk_token: str | None = '<pad>'max_length: int | None = 1024offset: int = 0**kwargs )
Tham số
- pad_token (
str, tùy chọn, mặc định là"<pad>") — Token được sử dụng để đệm, chẳng hạn khi xử lý các lô (batch) gồm các chuỗi có độ dài khác nhau. - unk_token (
str, tùy chọn, mặc định là"<pad>") — Token không xác định. Một token không có trong từ vựng sẽ không thể được chuyển đổi thành ID và sẽ được gán thành token này thay thế. - max_length (
int, tùy chọn, mặc định là 1024) — Độ dài tối đa của các chuỗi khi mã hóa. Các chuỗi dài hơn giá trị này sẽ bị cắt bớt. - offset (
int, tuỳ chọn, mặc định là 0) — Độ lệch của tokenizer.
Xây dựng một tokenizer Dia. Dia đơn giản chỉ sử dụng mã hóa utf-8 của các byte thô, ngoại trừ các token đặc biệt [S1] và [S2].
Tokenizer này kế thừa từ PreTrainedTokenizerFast, lớp chứa hầu hết các phương thức chính. Người dùng nên tham khảo siêu lớp này để biết thêm thông tin về các phương thức đó.
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
Tham số
- text (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tiền mã hóa). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (tiền mã hóa), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - text_pair (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token trước), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - text_target (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã tách token). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - text_pair_target (
str,list[str],list[list[str]], tùy chọn) — Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã tách token). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token), bạn phải đặtis_split_into_words=True(để loại bỏ sự mơ hồ với một lô các chuỗi). - tokenizer_kwargs (
dict[str, Any], tùy chọn) — Các kwargs bổ sung để truyền cho tokenizer. Chúng sẽ được gộp với các tham số tường minh và các kwargs khác, trong đó các tham số tường minh có độ ưu tiên cao hơn. - add_special_tokens (
bool, tùy chọn, mặc định làTrue) — Có thêm các token đặc biệt khi mã hóa các chuỗi hay không. Điều này sẽ sử dụng hàmPretrainedTokenizerBase.build_inputs_with_special_tokensbên dưới, hàm này xác định các token nào được thêm tự động vào các id đầu vào. Điều này hữu ích nếu bạn muốn thêm các tokenboshoặceosmột cách tự động. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát padding. Chấp nhận các giá trị sau:Truehoặc'longest': Lấp đầy (pad) đến độ dài của chuỗi dài nhất trong batch (hoặc không lấp đầy nếu chỉ cung cấp một chuỗi duy nhất).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.Falsehoặc'do_not_pad'(mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
- truncation (
bool,strhoặc TruncationStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát việc cắt ngắn. Chấp nhận các giá trị sau:Truehoặc'longest_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa chấp nhận được của mô hình nếu tham số đó không được cung cấp. Thao tác này sẽ cắt ngắn theo từng token, loại bỏ một token từ chuỗi dài nhất trong cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi đầu tiên của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.'only_second': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi thứ hai của một cặp nếu một cặp chuỗi (hoặc một lô các cặp) được cung cấp.Falsehoặc'do_not_truncate'(mặc định): Không cắt bớt (tức là có thể xuất ra batch với độ dài chuỗi lớn hơn kích thước đầu vào tối đa cho phép của mô hình).
- max_length (
int, tuỳ chọn) — Kiểm soát độ dài tối đa được sử dụng bởi một trong các tham số cắt/giữ chỗ (truncation/padding).Nếu không được đặt hoặc được đặt thành
None, tham số này sẽ sử dụng độ dài tối đa định trước của mô hình nếu một trong các tham số cắt/giữ chỗ yêu cầu độ dài tối đa. Nếu mô hình không có độ dài đầu vào tối đa cụ thể (như XLNet), việc cắt/giữ chỗ đến độ dài tối đa sẽ bị vô hiệu hóa. - stride (
int, tùy chọn, mặc định là 0) — Nếu được đặt thành một số cùng vớimax_length, các token tràn ra được trả về khireturn_overflowing_tokens=Truesẽ chứa một số token từ cuối của chuỗi bị cắt ngắn được trả về để tạo ra một phần chồng lấn giữa các chuỗi bị cắt ngắn và các chuỗi tràn ra. Giá trị của đối số này xác định số lượng token chồng lấn. - is_split_into_words (
bool, tùy chọn, mặc định làFalse) — Cho biết đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã tách thành các từ). Nếu đặt thànhTrue, bộ phân tích token sẽ giả định rằng đầu vào đã được tách thành các từ (chẳng hạn, bằng cách tách theo khoảng trắng) và sẽ tiến hành phân tích token cho chúng. Điều này hữu ích cho NER hoặc phân loại token. - pad_to_multiple_of (
int, tùy chọn) — Nếu được đặt, chuỗi sẽ được đệm đến một bội số của giá trị được cung cấp. Yêu cầupaddingphải được kích hoạt. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán>= 7.5(Volta). - padding_side (
str, tùy chọn) — Bên mà mô hình cần được áp dụng padding. Nên chọn giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - return_tensors (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor thay vì danh sách các số nguyên Python. Các giá trị chấp nhận được là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượng Numpynp.ndarray.
- return_token_type_ids (
bool, tuỳ chọn) — Có trả về token type IDs hay không. Nếu để mặc định, sẽ trả về token type IDs theo mặc định của tokenizer cụ thể, được xác định bởi thuộc tínhreturn_outputs. - return_attention_mask (
bool, tuỳ chọn) — Có trả về attention mask hay không. Nếu để mặc định, sẽ trả về attention mask theo mặc định của tokenizer cụ thể, được xác định bởi thuộc tínhreturn_outputs. - return_overflowing_tokens (
bool, tùy chọn, mặc định làFalse) — Có trả về các chuỗi token tràn hay không. Nếu một cặp chuỗi input ids (hoặc một batch các cặp) được cung cấp vớitruncation_strategy = longest_firsthoặcTrue, một lỗi sẽ được ném thay vì trả về các token tràn. - return_special_tokens_mask (
bool, tùy chọn, mặc định làFalse) — Có trả về thông tin mặt nạ (mask) cho các token đặc biệt hay không. - return_offsets_mapping (
bool, tuỳ chọn, mặc định làFalse) — Có trả về(char_start, char_end)cho từng token hay không.Tính năng này chỉ khả dụng trên các bộ phân từ nhanh kế thừa từ PreTrainedTokenizerFast; nếu sử dụng bộ phân từ của Python, phương thức này sẽ gây ra
NotImplementedError. - return_length (
bool, tùy chọn, mặc định làFalse) — Có trả về độ dài của các đầu vào đã mã hóa hay không. - verbose (
bool, tùy chọn, mặc định làTrue) — Có in thêm thông tin và cảnh báo hay không. - **kwargs — được truyền đến phương thức
self.tokenize()
Trả về
Một BatchEncoding với các trường sau:
-
input_ids — Danh sách các id token để đưa vào mô hình.
-
token_type_ids — Danh sách các id loại token để đưa vào mô hình (khi
return_token_type_ids=Truehoặc nếu “token_type_ids” nằm trongself.model_input_names). -
attention_mask — Danh sách các chỉ số chỉ định những token nào nên được mô hình chú ý đến (khi
return_attention_mask=Truehoặc nếu “attention_mask” nằm trongself.model_input_names). -
overflowing_tokens — Danh sách các chuỗi token bị tràn (khi
max_lengthđược chỉ định vàreturn_overflowing_tokens=True). -
num_truncated_tokens — Số lượng token bị cắt bỏ (khi có chỉ định
max_lengthvàreturn_overflowing_tokens=True). -
special_tokens_mask — Danh sách các số 0 và 1, trong đó 1 chỉ định các token đặc biệt được thêm vào và 0 chỉ định các token chuỗi thông thường (khi
add_special_tokens=Truevàreturn_special_tokens_mask=True). -
length — Độ dài của các đầu vào (khi
return_length=True)
Phương thức chính để mã hóa token và chuẩn bị cho mô hình một hoặc nhiều chuỗi, hoặc một hoặc nhiều cặp chuỗi.
DiaFeatureExtractor
lớp transformers.DiaFeatureExtractor
< source >( feature_size: int = 1sampling_rate: int = 16000padding_value: float = 0.0hop_length: int = 512**kwargs )
Tham số
- feature_size (
int, tuỳ chọn, mặc định là 1) — Kích thước chiều của các đặc trưng đã trích xuất. Dùng 1 cho âm đơn, 2 cho âm stereo. - sampling_rate (
int, tùy chọn, mặc định là 16000) — Tần số lấy mẫu mà tại đó dạng sóng âm thanh cần được số hóa, được biểu diễn bằng hertz (Hz). - padding_value (
float, tùy chọn, mặc định là 0.0) — Giá trị được sử dụng để đệm. - hop_length (
int, tùy chọn, mặc định là 512) — Chiều dài chồng lấp giữa các cửa sổ liên tiếp.
Tạo một bộ trích xuất đặc trưng Dia.
Feature extractor này kế thừa từ SequenceFeatureExtractor, bao gồm hầu hết các phương thức chính. Người dùng nên tham khảo lớp cha này để biết thêm thông tin về các phương thức đó.
__call__
< source >( raw_audio: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]padding: bool | str | transformers.utils.generic.PaddingStrategy | None = Nonetruncation: bool | None = Falsemax_length: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonesampling_rate: int | None = None )
Tham số
- raw_audio (
np.ndarray,list[float],list[np.ndarray],list[list[float]]) — Chuỗi hoặc lô các chuỗi cần được xử lý. Mỗi chuỗi có thể là một mảng numpy, một danh sách các giá trị float, một danh sách các mảng numpy hoặc một danh sách các danh sách giá trị float. Mảng numpy phải có hình dạng(num_samples,)cho âm thanh mono (feature_size = 1), hoặc(2, num_samples)cho âm thanh stereo (feature_size = 2). - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làTrue) — Chọn một chiến lược để đệm các chuỗi trả về (theo phía đệm và chỉ số đệm của mô hình) trong số các lựa chọn sau:Truehoặc'longest': Lấp đầy đến trình tự dài nhất trong lô (hoặc không lấp đầy nếu chỉ có một trình tự được cung cấp).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp.Falsehoặc'do_not_pad'(mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).
- truncation (
bool, tùy chọn, mặc định làFalse) — Bật tính năng cắt ngắn để giảm các chuỗi đầu vào dài hơnmax_lengthxuống cònmax_length. - max_length (
int, tùy chọn) — Độ dài tối đa của danh sách trả về và tùy chọn độ dài padding (xem bên trên). - return_tensors (
strhoặc TensorType, tùy chọn, mặc định là ‘pt’) — Nếu được đặt, sẽ trả về tensors thay vì danh sách các số nguyên Python. Các giá trị chấp nhận được là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượng Numpynp.ndarray.
- sampling_rate (
int, tùy chọn) — Tần số lấy mẫu mà đầu vàoaudiođược lấy mẫu. Rất khuyến nghị truyềnsampling_ratetrong lời gọi forward để ngăn các lỗi âm thầm.
Phương thức chính để tạo đặc trưng và chuẩn bị một hoặc nhiều chuỗi cho mô hình.
DiaProcessor
lớp transformers.DiaProcessor
< source >( feature_extractortokenizeraudio_tokenizer )
Tham số
- feature_extractor (
DiaFeatureExtractor) — Bộ trích xuất đặc trưng là một đầu vào bắt buộc. - tokenizer (
DiaTokenizer) — Tokenizer là đầu vào bắt buộc. - audio_tokenizer (
DacModel) — Một instance của DacModel được dùng để mã hóa/giải mã audio vào/từ codebooks. Đây là một đầu vào bắt buộc.
Tạo một DiaProcessor đóng gói một bộ trích xuất đặc trưng và một bộ phân từ thành một bộ xử lý duy nhất.
DiaProcessor cung cấp đầy đủ các chức năng của DiaFeatureExtractor và DiaTokenizer. Xem ~DiaFeatureExtractor và ~DiaTokenizer để biết thêm thông tin.
__call__
< source >( text: str | list[str]audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = Noneoutput_labels: bool | None = False**kwargs: *<class 'transformers.models.dia.processing_dia.DiaProcessorKwargs'> )
Tham số
- text (
Union[str, list[str]]) — Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu bạn truyền vào dữ liệu đầu vào đã được tách token trước, hãy đặtis_split_into_words=Trueđể tránh nhầm lẫn với các đầu vào dạng lô. - audio (
Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]], optional) — Âm thanh hoặc lô âm thanh cần được chuẩn bị. Mỗi âm thanh có thể là một mảng NumPy hoặc tensor PyTorch. Trong trường hợp là mảng NumPy/tensor PyTorch, mỗi âm thanh nên có hình dạng (C, T), trong đó C là số kênh và T là độ dài mẫu của âm thanh. - output_labels (
bool, tùy chọn, mặc định làFalse) — Có trả về nhãn cho quá trình huấn luyện hay không. KhiTrue, bộ xử lý sẽ tạo nhãn từ chuỗi đầu vào của bộ giải mã bằng cách dịch chuyển nó một vị trí. Nhãn sử dụng các giá trị đặc biệt:-100cho các token cần bỏ qua trong tính toán loss (token padding và token BOS), và-101cho các khung âm thanh chỉ được dùng cho mô hình backbone (khidepth_decoder_labels_ratio < 1.0). Không thể sử dụng cùng lúc vớigeneration=True. - bos_token_id (
int, kwargs, optional, mặc định là1026) — ID của token được dùng làm token bắt đầu chuỗi cho các audio codebook. Token này được thêm vào đầu mỗi chuỗi âm thanh trong quá trình mã hóa. - eos_token_id (
int, kwargs, optional, mặc định là1024) — ID của token được dùng làm token kết thúc chuỗi cho các codebook âm thanh. Token này được thêm vào các chuỗi âm thanh trong quá trình huấn luyện (khigeneration=False) để đánh dấu kết thúc của âm thanh. - pad_token_id (
int, kwargs, tuỳ chọn, mặc định là1025) — ID của token được dùng để đệm các chuỗi codebook âm thanh. Token này được dùng để lấp đầy các vị trí trong mẫu trễ (delay pattern) mà không có token âm thanh hợp lệ. - delay_pattern (
list[int], kwargs, optional, mặc định là[0, 8, 9, 10, 11, 12, 13, 14, 15]) — Một danh sách các giá trị độ trễ (tính bằng frame) cho từng kênh codebook. Mẫu độ trễ tạo ra các độ lệch thời gian giữa các kênh codebook khác nhau, cho phép mô hình nắm bắt các phụ thuộc giữa các kênh. Mỗi giá trị đại diện cho số frame cần trễ cho kênh cụ thể đó. - generation (
bool, kwargs, optional, mặc định làTrue) — Xác định xem bộ xử lý đang được sử dụng cho việc tạo (chuyển văn bản thành giọng nói) hay huấn luyện. KhiTrue, bộ xử lý chuẩn bị các đầu vào cho chế độ tạo, trong đó âm thanh được tạo ra từ văn bản. KhiFalse, nó chuẩn bị các đầu vào cho việc huấn luyện, trong đó cả văn bản và âm thanh đều được cung cấp. - return_tensors (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về tensor của một framework cụ thể. Các giá trị chấp nhận được là:'pt': Trả về các đối tượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượngnp.ndarraycủa NumPy.
- **kwargs (ProcessingKwargs, optional) — Các tùy chọn xử lý bổ sung cho từng modality (text, images, videos, audio). Các tham số cụ thể của model được liệt kê ở trên; xem lớp TypedDict để biết danh sách đầy đủ các đối số được hỗ trợ.
batch_decode
< source >( decoder_input_ids: torch.Tensoraudio_prompt_len: int | None = None**kwargs: *<class 'transformers.models.dia.processing_dia.DiaProcessorKwargs'> )
Giải mã một lô các chuỗi codebook âm thanh thành các dạng sóng âm tương ứng thông qua audio_tokenizer. Xem decode() để biết thêm thông tin.
decode
< source >( decoder_input_ids: torch.Tensoraudio_prompt_len: int | None = None**kwargs: *<class 'transformers.models.dia.processing_dia.DiaProcessorKwargs'> )
Giải mã một chuỗi mã hóa âm thanh đơn lẻ thành dạng sóng âm tương ứng thông qua audio_tokenizer. Xem decode() và batch_decode() để biết thêm thông tin.
DiaModel
lớp transformers.DiaModel
< source >( config: DiaConfig )
Tham số
- config (DiaConfig) — 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 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 Dia thuần túy, xuất ra các hidden-state thô mà không có bất kỳ 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.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_position_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: transformers.modeling_outputs.BaseModelOutput | tuple | None = Nonepast_key_values: transformers.cache_utils.EncoderDecoderCache | None = Noneuse_cache: bool | None = None**kwargs ) → Seq2SeqModelOutput 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.LongTensorcó 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.
- decoder_input_ids (
torch.LongTensorcó hình dạng `(batch_size * num_codebooks, target_sequence_length) — - or (batch_size, target_sequence_length, num_codebooks)", tùy chọn) —
-
(batch_size * num_codebooks, target_sequence_length): tương ứng với trường hợp sử dụng phổ biến, trong đó các codebook của đầu vào âm thanh được làm phẳng (flatten) vào chiều batch. Điều này cũng phù hợp với các logits âm thanh đã được làm phẳng, được sử dụng để tính toán loss.
-
(batch_size, sequence_length, num_codebooks): tương ứng với hình dạng được sử dụng bên trong của Dia để tính toán các embedding và các bước tiếp theo một cách hiệu quả hơn.
Nếu không cung cấp
decoder_input_ids, hệ thống sẽ tạo một tensor củabos_token_idvới hình dạng(batch_size, 1, num_codebooks). Các chỉ số có thể được lấy bằng cách sử dụng DiaProcessor. Xem DiaProcessor.call() để biết thêm chi tiết. -
- decoder_position_ids (
torch.LongTensorcó hình dạng(batch_size, target_sequence_length)) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Dùng để tính toán position embeddings đếnconfig.decoder_config.max_position_embeddings. - decoder_attention_mask (
torch.LongTensorcó shape(batch_size, target_sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên một số chỉ số token nhất định. Mặc định, một mặt nạ nhân quả sẽ được sử dụng để đảm bảo mô hình chỉ có thể nhìn vào các đầu vào trước đó nhằm dự đoán tương lai. - encoder_outputs (
Union[~modeling_outputs.BaseModelOutput, tuple], tùy chọn) — Tuple gồm (last_hidden_state, tùy chọn:hidden_states, tùy chọn:attentions)last_hidden_statecó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) là một chuỗi các hidden-states tại đầu ra của lớp cuối cùng của encoder. Được sử dụng trong cross-attention của decoder. - past_key_values (
~cache_utils.EncoderDecoderCache, 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). - 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ề
Seq2SeqModelOutput hoặc tuple(torch.Tensor)
Một Seq2SeqModelOutput 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 (None) và đầu vào.
Phương thức forward của DiaModel ghi đè 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 bộ giải mã (decoder) 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 (
EncoderDecoderCache, 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 EncoderDecoderCache. Để 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à trong các khối cross-attention) có thể được sử dụng (xem đầu vào
past_key_values) để tăng tốc độ giải mã tuần tự.decoder_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 bộ giải mã tại đầu ra của mỗi lớp cùng với các đầu ra nhúng ban đầu tùy chọn.
decoder_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khi truyềnoutput_attentions=Truehoặ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ú ý của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
cross_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ 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ú ý của lớp cross-attention của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý chéo.
encoder_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 tại đầu ra của lớp cuối cùng của bộ mã hóa trong mô hình.encoder_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 bộ mã hóa tại đầu ra của mỗi lớp cùng với các đầu ra nhúng ban đầu tùy chọn.
encoder_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khi truyềnoutput_attentions=Truehoặ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ú ý của bộ mã hóa, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
DiaForConditionalGeneration
lớp transformers.DiaForConditionalGeneration
< source >( config: DiaConfig )
Tham số
- config (DiaConfig) — 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 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 Dia bao gồm một bộ mã hóa văn bản (byte) và bộ giải mã âm thanh với một đầu dự đoán 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.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_position_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: transformers.modeling_outputs.BaseModelOutput | tuple | None = Nonepast_key_values: transformers.cache_utils.EncoderDecoderCache | None = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → Seq2SeqLMOutput 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.LongTensorcó 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.
- decoder_input_ids (
torch.LongTensorcó hình dạng `(batch_size * num_codebooks, target_sequence_length) — - or (batch_size, target_sequence_length, num_codebooks)", tùy chọn) —
-
(batch_size * num_codebooks, target_sequence_length): tương ứng với trường hợp sử dụng phổ biến, trong đó các codebook của đầu vào âm thanh được làm phẳng (flatten) vào chiều batch. Điều này cũng phù hợp với các logits âm thanh đã được làm phẳng, được sử dụng để tính toán loss.
-
(batch_size, sequence_length, num_codebooks): tương ứng với hình dạng được sử dụng bên trong của Dia để tính toán các embedding và các bước tiếp theo một cách hiệu quả hơn.
Nếu không cung cấp
decoder_input_ids, hệ thống sẽ tạo một tensor củabos_token_idvới hình dạng(batch_size, 1, num_codebooks). Các chỉ số có thể được lấy bằng cách sử dụng DiaProcessor. Xem DiaProcessor.call() để biết thêm chi tiết. -
- decoder_position_ids (
torch.LongTensorcó hình dạng(batch_size, target_sequence_length)) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Dùng để tính toán position embeddings đếnconfig.decoder_config.max_position_embeddings. - decoder_attention_mask (
torch.LongTensorcó shape(batch_size, target_sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên một số chỉ số token nhất định. Mặc định, một mặt nạ nhân quả sẽ được sử dụng để đảm bảo mô hình chỉ có thể nhìn vào các đầu vào trước đó nhằm dự đoán tương lai. - encoder_outputs (
Union[~modeling_outputs.BaseModelOutput, tuple], tùy chọn) — Tuple gồm (last_hidden_state, tùy chọn:hidden_states, tùy chọn:attentions)last_hidden_statecó hình dạng(batch_size, sequence_length, hidden_size), tùy chọn) là một chuỗi các hidden-states tại đầu ra của lớp cuối cùng của encoder. Được sử dụng trong cross-attention của decoder. - past_key_values (
~cache_utils.EncoderDecoderCache, 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). - 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 * num_codebooks,), 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.decoder_config.vocab_size - 1]hoặc -100. Các token có chỉ số được đặt thành-100sẽ bị bỏ qua (che).
Trả về
Seq2SeqLMOutput hoặc tuple(torch.Tensor)
Một Seq2SeqLMOutput 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 (None) và đầu vào.
Phương thức forward của DiaForConditionalGeneration 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.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).past_key_values (
EncoderDecoderCache, 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 EncoderDecoderCache. Để 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à trong các khối cross-attention) có thể được sử dụng (xem đầu vào
past_key_values) để tăng tốc độ giải mã tuần tự.decoder_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 bộ giải mã tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
decoder_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khi truyềnoutput_attentions=Truehoặ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ú ý của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
cross_attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Bộ 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ú ý của lớp cross-attention của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý chéo.
encoder_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 tại đầu ra của lớp cuối cùng của bộ mã hóa trong mô hình.encoder_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 bộ mã hóa tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
encoder_attentions (
tuple(torch.Tensor), tùy chọn, được trả về khi truyềnoutput_attentions=Truehoặ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ú ý của bộ mã hóa, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
generate
< source >( inputs: typing.Optional[torch.Tensor] = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonesynced_gpus: bool | None = Noneassistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = Nonestreamer: typing.Optional[ForwardRef('BaseStreamer')] = Nonenegative_prompt_ids: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonecustom_generate: str | None = None**kwargs )