Transformers documentation
SeamlessM4T-v2
Mô hình này được công bố trên HF papers vào ngày 2023-12-08 và được đóng góp cho Hugging Face Transformers vào ngày 2023-11-30.
SeamlessM4T-v2
Tổng quan
Mô hình SeamlessM4T-v2 được đề xuất trong Seamless: Multilingual Expressive and Streaming Speech Translation bởi nhóm Seamless Communication từ Meta AI.
SeamlessM4T-v2 là một bộ sưu tập các mô hình được thiết kế để cung cấp dịch thuật chất lượng cao, cho phép mọi người từ các cộng đồng ngôn ngữ khác nhau giao tiếp một cách dễ dàng thông qua giọng nói và văn bản. Đây là phiên bản cải tiến so với phiên bản trước. Để biết thêm chi tiết về sự khác biệt giữa v1 và v2, hãy tham khảo mục Sự khác biệt với SeamlessM4T-v1.
SeamlessM4T-v2 cho phép thực hiện nhiều tác vụ mà không cần dựa vào các mô hình riêng biệt:
- Dịch giọng nói sang giọng nói (S2ST)
- Dịch văn bản từ giọng nói (S2TT)
- Dịch văn bản thành giọng nói (T2ST)
- Dịch văn bản sang văn bản (T2TT)
- Nhận dạng giọng nói tự động (ASR)
SeamlessM4Tv2Model có thể thực hiện tất cả các tác vụ nêu trên, nhưng mỗi tác vụ cũng có một mô hình con riêng biệt.
Tóm tắt từ bài báo như sau:
Những tiến bộ gần đây trong dịch thuật giọng nói tự động đã mở rộng đáng kể phạm vi ngôn ngữ, cải thiện khả năng đa phương thức và cho phép thực hiện nhiều tác vụ cũng như tính năng đa dạng. Tuy nhiên, so với hội thoại giữa người với người, các hệ thống dịch thuật giọng nói tự động quy mô lớn hiện nay vẫn thiếu những tính năng then chốt giúp giao tiếp qua máy móc trở nên liền mạch. Trong công trình này, chúng tôi giới thiệu một họ các mô hình cho phép dịch thuật đa ngôn ngữ và giàu cảm xúc theo phương thức streaming từ đầu đến cuối. Trước tiên, chúng tôi đóng góp một phiên bản cải tiến của mô hình đa ngôn ngữ và đa phương thức quy mô lớn SeamlessM4T—SeamlessM4T v2. Mô hình mới hơn này, tích hợp khung UnitY2 được cập nhật, đã được huấn luyện trên nhiều dữ liệu ngôn ngữ nguồn thấp hơn. Phiên bản mở rộng của SeamlessAlign bổ sung 114.800 giờ dữ liệu được căn chỉnh tự động, nâng tổng số lên 76 ngôn ngữ. SeamlessM4T v2 cung cấp nền tảng để khởi tạo hai mô hình mới nhất của chúng tôi: SeamlessExpressive và SeamlessStreaming. SeamlessExpressive cho phép dịch thuật bảo toàn phong cách giọng nói và ngữ điệu. So với các nỗ lực trước đây trong nghiên cứu giọng nói giàu cảm xúc, công trình của chúng tôi giải quyết một số khía cạnh của ngữ điệu chưa được khám phá nhiều, chẳng hạn như tốc độ nói và các khoảng dừng, đồng thời bảo toàn phong cách giọng nói của người nói. Về SeamlessStreaming, mô hình của chúng tôi tận dụng cơ chế Efficient Monotonic Multihead Attention (EMMA) để tạo ra bản dịch đích có độ trễ thấp mà không cần chờ câu nguồn hoàn chỉnh. Là mô hình đầu tiên thuộc loại này, SeamlessStreaming cho phép dịch đồng thời giọng nói sang giọng nói/văn bản cho nhiều ngôn ngữ nguồn và đích. Để đánh giá hiệu suất của các mô hình này, chúng tôi kết hợp các chỉ số tự động mới và các phiên bản sửa đổi của các chỉ số hiện có để đánh giá ngữ điệu, độ trễ và độ bền vững. Đối với đánh giá của con người, chúng tôi điều chỉnh các giao thức hiện có để đo lường các thuộc tính liên quan nhất trong việc bảo toàn ý nghĩa, tính tự nhiên và tính biểu cảm. Để đảm bảo các mô hình của chúng tôi có thể được sử dụng một cách an toàn và có trách nhiệm, chúng tôi đã triển khai nỗ lực red-teaming đầu tiên được biết đến cho dịch thuật máy đa phương thức, một hệ thống phát hiện và giảm thiểu độc tính được thêm vào, một đánh giá có hệ thống về thiên kiến giới tính, và một cơ chế đánh dấu nước địa phương không thể nghe thấy được thiết kế để làm giảm tác động của deepfake. Do đó, chúng tôi kết hợp các thành phần chính từ SeamlessExpressive và SeamlessStreaming để tạo thành Seamless, hệ thống công khai đầu tiên mở ra giao tiếp đa ngôn ngữ giàu cảm xúc theo thời gian thực. Tóm lại, Seamless mang đến cho chúng tôi cái nhìn then chốt về nền tảng kỹ thuật cần thiết để biến Universal Speech Translator từ một khái niệm khoa học viễn tưởng thành công nghệ thực tế. Cuối cùng, các đóng góp trong công trình này—including mô hình, mã nguồn và trình phát hiện đánh dấu nước—được công bố công khai và có thể truy cập tại liên kết bên dưới.
Cách sử dụng
Trong ví dụ sau, chúng ta sẽ tải một mẫu âm thanh tiếng Ả Rập và một mẫu văn bản tiếng Anh, sau đó chuyển đổi chúng thành giọng nói tiếng Nga và văn bản tiếng Pháp.
Đầu tiên, tải bộ xử lý và một checkpoint của mô hình:
from transformers import AutoProcessor, SeamlessM4Tv2Model
processor = AutoProcessor.from_pretrained("facebook/seamless-m4t-v2-large")
model = SeamlessM4Tv2Model.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")Bạn có thể sử dụng mô hình này một cách liền mạch trên văn bản hoặc trên âm thanh, để tạo ra văn bản đã dịch hoặc âm thanh đã dịch.
Dưới đây là cách sử dụng bộ xử lý để xử lý văn bản và âm thanh:
# let's load an audio sample from an Arabic speech corpus
from datasets import load_dataset
dataset = load_dataset("halabi2016/arabic_speech_corpus", split="test", streaming=True)
audio_sample = next(iter(dataset))["audio"]
# now, process it
audio_inputs = processor(audio=audio_sample["array"], return_tensors="pt").to(model.device)
# now, process some English text as well
text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt").to(model.device)Xử lý giọng nói
SeamlessM4Tv2Model có thể tạo ra văn bản hoặc giọng nói một cách mượt mà với ít hoặc không có thay đổi nào. Hãy nhắm đến dịch giọng nói tiếng Nga:
audio_array_from_text = model.generate(**text_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
audio_array_from_audio = model.generate(**audio_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()Với về cơ bản cùng một mã, tôi đã dịch văn bản tiếng Anh và giọng nói tiếng Ả Rập thành các mẫu giọng nói tiếng Nga.
Văn bản
Tương tự, bạn có thể tạo văn bản dịch từ tệp âm thanh hoặc từ văn bản bằng cùng một mô hình. Bạn chỉ cần truyền generate_speech=False vào SeamlessM4Tv2Model.generate().
Lần này, hãy dịch sang tiếng Pháp.
# from audio
output_tokens = model.generate(**audio_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_audio = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)
# from text
output_tokens = model.generate(**text_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_text = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)Mẹo
1. Sử dụng các mô hình chuyên dụng
SeamlessM4Tv2Model là model cấp cao nhất của transformers để tạo ra giọng nói và văn bản, nhưng bạn cũng có thể sử dụng các model chuyên dụng thực hiện tác vụ mà không cần các thành phần bổ sung, từ đó giảm bớt bộ nhớ sử dụng. Ví dụ, bạn có thể thay thế đoạn mã tạo audio-to-audio bằng model chuyên dụng cho tác vụ S2ST, phần còn lại là cùng một mã:
from transformers import SeamlessM4Tv2ForSpeechToSpeech
model = SeamlessM4Tv2ForSpeechToSpeech.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")Hoặc bạn có thể thay thế đoạn mã tạo văn bản từ văn bản bằng mô hình dành riêng cho tác vụ T2TT, bạn chỉ cần xóa generate_speech=False.
from transformers import SeamlessM4Tv2ForTextToText
model = SeamlessM4Tv2ForTextToText.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")Hãy thử cả SeamlessM4Tv2ForSpeechToText và SeamlessM4Tv2ForTextToSpeech nhé.
2. Thay đổi danh tính người nói
Bạn có thể thay đổi giọng nói được sử dụng cho tổng hợp giọng nói bằng đối số speaker_id. Một số speaker_id hoạt động tốt hơn những cái khác cho một số ngôn ngữ nhất định!
3. Thay đổi chiến lược sinh
Bạn có thể sử dụng các chiến lược sinh khác nhau cho việc sinh văn bản, ví dụ .generate(input_ids=input_ids, text_num_beams=4, text_do_sample=True) sẽ thực hiện giải mã beam-search đa thức trên mô hình văn bản. Lưu ý rằng việc sinh giọng nói chỉ hỗ trợ greedy - mặc định - hoặc lấy mẫu đa thức, có thể sử dụng với ví dụ .generate(..., speech_do_sample=True, speech_temperature=0.6).
4. Tạo giọng nói và văn bản cùng lúc
Sử dụng return_intermediate_token_ids=True với SeamlessM4Tv2Model để trả về cả giọng nói và văn bản!
Kiến trúc mô hình
SeamlessM4T-v2 có kiến trúc đa năng, xử lý mượt mà việc tạo tuần tự văn bản và giọng nói. Cấu hình này bao gồm hai mô hình sequence-to-sequence (seq2seq). Mô hình đầu tiên dịch phương thức đầu vào thành văn bản đã dịch, trong khi mô hình thứ hai tạo ra các token giọng nói, được gọi là “unit tokens”, từ văn bản đã dịch.
Mỗi phương thức (modality) có một bộ mã hóa (encoder) riêng với kiến trúc độc đáo. Ngoài ra, đối với đầu ra giọng nói, một bộ tổng hợp âm thanh (vocoder) lấy cảm hứng từ kiến trúc HiFi-GAN được đặt phía trên mô hình seq2seq thứ hai.
Sự khác biệt với SeamlessM4T-v1
Kiến trúc của phiên bản mới này khác với phiên bản đầu tiên ở một số khía cạnh:
Cải tiến trên mô hình lượt hai
Mô hình seq2seq thứ hai, có tên là mô hình text-to-unit, hiện không còn tự hồi quy, nghĩa là nó tính toán các đơn vị trong một lần truyền thẳng duy nhất. Thành tựu này được đạt được nhờ:
- việc sử dụng nhúng cấp ký tự, nghĩa là mỗi ký tự của văn bản dịch dự đoán có các vector nhúng riêng, sau đó được dùng để dự đoán các token đơn vị.
- sự sử dụng một bộ dự đoán thời lượng trung gian, dự đoán thời lượng giọng nói ở mức ký tự trên văn bản dịch được dự đoán.
- việc sử dụng bộ giải mã văn bản-sang-đơn vị mới kết hợp giữa tích chập và tự chú ý để xử lý ngữ cảnh dài hơn.
Sự khác biệt trong bộ mã hóa giọng nói
Bộ mã hóa giọng nói, được sử dụng trong quá trình tạo bản dịch lần đầu tiên để dự đoán văn bản đã dịch, khác biệt chủ yếu so với bộ mã hóa giọng nói trước đó thông qua các cơ chế sau:
- việc sử dụng mặt nạ chú ý phân mảnh (chunked attention mask) để ngăn chặn chú ý giữa các phân mảnh, đảm bảo rằng mỗi vị trí chỉ chú ý đến các vị trí trong chính phân mảnh của nó và một số lượng phân mảnh trước đó cố định.
- việc sử dụng nhúng vị trí tương đối, chỉ xem xét khoảng cách giữa các phần tử trong chuỗi thay vì vị trí tuyệt đối. Vui lòng tham khảo Self-Attention with Relative Position Representations (Shaw et al.) để biết thêm chi tiết.
- việc sử dụng một phép tích chập chiều sâu nhân quả thay vì một phép tích chập không nhân quả.
Quy trình tạo
Dưới đây là cách quy trình tạo hoạt động:
- Văn bản hoặc giọng nói đầu vào được xử lý thông qua bộ mã hóa riêng của nó.
- Decoder tạo ra các token văn bản trong ngôn ngữ mong muốn.
- Nếu cần tạo giọng nói, mô hình seq2seq thứ hai sẽ tạo ra các token đơn vị theo cách không tự hồi quy.
- Các token đơn vị này sau đó được truyền qua bộ tổng hợp âm thanh (vocoder) cuối cùng để tạo ra giọng nói thực tế.
Mô hình này được đóng góp bởi ylacombe. Mã gốc có thể được tìm thấy tại đây.
SeamlessM4Tv2Model
lớp transformers.SeamlessM4Tv2Model
< source >( config: SeamlessM4Tv2Configcurrent_modality = 'text' )
Tham số
- config (SeamlessM4Tv2Config) — 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.
- current_modality (
str, tùy chọn, mặc định là"text") — Chế độ nhận thức mặc định. Được dùng để khởi tạo mô hình.
Model transformer gốc của SeamlessM4Tv2, có thể được sử dụng cho mọi tác vụ khả dụng (S2ST, S2TT, T2TT, T2ST).
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.
generate
< source >( input_ids: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0generate_speech: bool | None = True**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]
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ừ vựng. Có thể lấy chỉ số bằng cách sử dụng SeamlessM4TTokenizer hoặc SeamlessM4TProcessor. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết. input IDs là gì?Các chỉ số có thể được lấy bằng cách sử dụng SeamlessM4TTokenizer hoặc SeamlessM4TProcessor. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- input_features (
torch.Tensorcó hình dạng(batch_size, sequence_length, num_banks), tùy chọn) — Đặc trưng âm thanh đầu vào. Giá trị này nên được trả về bởi lớp SeamlessM4TFeatureExtractor hoặc lớp SeamlessM4TProcessor. Xem SeamlessM4TFeatureExtractor.call() để biết thêm chi tiết. - return_intermediate_token_ids (
bool, tùy chọn) — NếuTrue, cũng trả về văn bản và token đơn vị được tạo ở các bước trung gian. Đặt thànhTruenếu bạn cũng muốn nhận văn bản đã dịch cùng với âm thanh. Lưu ý rằng nếugenerate_speech=False, tham số này sẽ bị bỏ qua và các token văn bản sẽ được trả về. - tgt_lang (
str, tùy chọn) — Ngôn ngữ được sử dụng làm ngôn ngữ đích cho việc dịch. - speaker_id (
int, tùy chọn, mặc định là 0) — Id của người nói được sử dụng cho tổng hợp giọng nói. Phải nhỏ hơnconfig.vocoder_num_spkrs. - generate_speech (
bool, tùy chọn, mặc định làTrue) — NếuFalse, chỉ trả về các token văn bản và không tạo giọng nói. - kwargs (tuỳ chọn) —
Từ điển các tham số từ khoá còn lại sẽ được truyền đến GenerationMixin.generate(). Các tham số từ khoá thuộc hai loại:
- Nếu không có tiền tố, chúng sẽ được nhập dưới dạng
**kwargscho phương thứcgeneratecủa từng mô hình con, ngoại trừdecoder_input_idschỉ được truyền qua các thành phần văn bản. - Với tiền tố text_ hoặc speech_, chúng sẽ lần lượt là đầu vào cho phương thức
generatecủa mô hình văn bản và mô hình giọng nói. Chúng có độ ưu tiên cao hơn so với các từ khóa không có tiền tố.
Điều này có nghĩa là bạn có thể, ví dụ, chỉ định một chiến lược sinh cho một lần sinh nhưng không áp dụng cho lần sinh còn lại.
- Nếu không có tiền tố, chúng sẽ được nhập dưới dạng
Trả về
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]
- Nếu
generate_speechvàreturn_intermediate_token_ids, trả vềSeamlessM4Tv2GenerationOutput. - Nếu
generate_speechvà khôngreturn_intermediate_token_ids, trả về một tuple gồm các waveform có shape(batch_size, sequence_length)vàwaveform_lengthscho biết độ dài của từng mẫu. - Nếu
generate_speech=False, nó sẽ trả vềModelOutput.
Tạo ra các id token đã dịch và/hoặc các dạng sóng âm thanh đã dịch.
Phương pháp này lần lượt gọi hàm
.generatecủa hai mô hình con khác nhau. Bạn có thể chỉ định các đối số từ khóa ở hai cấp độ khác nhau: các đối số chung sẽ được truyền cho cả hai mô hình, hoặc các đối số có tiền tố sẽ được truyền cho một trong hai mô hình.Ví dụ, việc gọi
.generate(input_ids=input_ids, num_beams=4, speech_do_sample=True)sẽ lần lượt thực hiện giải mã beam-search trên mô hình văn bản và lấy mẫu beam-search đa thức trên mô hình giọng nói.Để xem tổng quan về các chiến lược sinh và ví dụ mã, hãy xem hướng dẫn sau.
SeamlessM4Tv2ForTextToSpeech
lớp transformers.SeamlessM4Tv2ForTextToSpeech
< source >( config: SeamlessM4Tv2Config )
Tham số
- config (SeamlessM4Tv2Config) — 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.
Model transformer SeamlessM4Tv2 cho text-to-speech, có thể được sử dụng cho T2ST.
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.
generate
< source >( input_ids: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
Tham số
- input_ids (
torch.LongTensorcó dạng(batch_size, sequence_length)) — Chỉ số của các token trong chuỗi đầu vào theo từ vựng. Có thể lấy chỉ số bằng cách sử dụng SeamlessM4TTokenizer hoặc SeamlessM4TProcessor. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết. input IDs là gì?Các chỉ số có thể được lấy bằng cách sử dụng SeamlessM4TTokenizer hoặc SeamlessM4TProcessor. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- return_intermediate_token_ids (
bool, tuỳ chọn) — NếuTrue, đồng thời trả về văn bản và token đơn vị được tạo ở các bước trung gian. Đặt thànhTruenếu bạn cũng muốn nhận văn bản đã dịch cùng với âm thanh. - tgt_lang (
str, tùy chọn) — Ngôn ngữ được sử dụng làm ngôn ngữ đích cho việc dịch. - speaker_id (
int, tùy chọn, mặc định là 0) — Id của người nói được sử dụng cho tổng hợp giọng nói. Phải nhỏ hơnconfig.vocoder_num_spkrs. - kwargs (tuỳ chọn) —
Từ điển các tham số từ khoá còn lại sẽ được truyền đến GenerationMixin.generate(). Các tham số từ khoá thuộc hai loại:
- Nếu không có tiền tố, chúng sẽ được nhập dưới dạng
**kwargscho phương thứcgeneratecủa từng mô hình con, ngoại trừdecoder_input_idschỉ được truyền qua các thành phần văn bản. - Với tiền tố text_ hoặc speech_, chúng sẽ lần lượt là đầu vào cho phương thức
generatecủa mô hình văn bản và mô hình giọng nói. Chúng có độ ưu tiên cao hơn so với các từ khóa không có tiền tố.
Điều này có nghĩa là bạn có thể, ví dụ, chỉ định một chiến lược sinh cho một lần sinh nhưng không áp dụng cho lần sinh còn lại.
- Nếu không có tiền tố, chúng sẽ được nhập dưới dạng
Trả về
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
- Nếu
return_intermediate_token_ids, trả vềSeamlessM4Tv2GenerationOutput. - Nếu không
return_intermediate_token_ids, trả về một tuple gồm các waveform có shape(batch_size, sequence_length)vàwaveform_lengthscho biết độ dài của từng mẫu.
Tạo ra các dạng sóng âm thanh đã được dịch.
Phương pháp này lần lượt gọi hàm
.generatecủa hai mô hình con khác nhau. Bạn có thể chỉ định các đối số từ khóa ở hai cấp độ khác nhau: các đối số chung sẽ được truyền cho cả hai mô hình, hoặc các đối số có tiền tố sẽ được truyền cho một trong hai mô hình.Ví dụ, việc gọi
.generate(input_ids, num_beams=4, speech_do_sample=True)sẽ lần lượt thực hiện giải mã beam-search trên mô hình văn bản và lấy mẫu beam-search đa thức trên mô hình giọng nói.Để xem tổng quan về các chiến lược sinh và ví dụ mã, hãy xem hướng dẫn sau.
SeamlessM4Tv2ForSpeechToSpeech
lớp transformers.SeamlessM4Tv2ForSpeechToSpeech
< source >( config: SeamlessM4Tv2Config )
Tham số
- config (SeamlessM4Tv2Config) — 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.
Model transformer SeamlessM4Tv2 cho speech-to-speech có thể được sử dụng cho S2ST.
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.
generate
< source >( input_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
Tham số
- input_features (
torch.Tensorcó hình dạng(batch_size, sequence_length, num_banks)) — Các đặc trưng âm thanh đầu vào. Giá trị này phải được trả về bởi lớp SeamlessM4TFeatureExtractor hoặc lớp SeamlessM4TProcessor. Xem SeamlessM4TFeatureExtractor.call() để biết thêm chi tiết. - return_intermediate_token_ids (
bool, tuỳ chọn) — NếuTrue, đồng thời trả về văn bản và token đơn vị được tạo ở các bước trung gian. Đặt thànhTruenếu bạn cũng muốn nhận văn bản đã dịch cùng với âm thanh. - tgt_lang (
str, tùy chọn) — Ngôn ngữ được sử dụng làm ngôn ngữ đích cho việc dịch. - speaker_id (
int, tùy chọn, mặc định là 0) — Id của người nói được sử dụng cho tổng hợp giọng nói. Phải nhỏ hơnconfig.vocoder_num_spkrs. - kwargs (tuỳ chọn) —
Từ điển các tham số từ khoá còn lại sẽ được truyền đến GenerationMixin.generate(). Các tham số từ khoá thuộc hai loại:
- Nếu không có tiền tố, chúng sẽ được nhập dưới dạng
**kwargscho phương thứcgeneratecủa từng mô hình con, ngoại trừdecoder_input_idschỉ được truyền qua các thành phần văn bản. - Với tiền tố text_ hoặc speech_, chúng sẽ lần lượt là đầu vào cho phương thức
generatecủa mô hình văn bản và mô hình giọng nói. Chúng có độ ưu tiên cao hơn so với các từ khóa không có tiền tố.
Điều này có nghĩa là bạn có thể, ví dụ, chỉ định một chiến lược sinh cho một lần sinh nhưng không áp dụng cho lần sinh còn lại.
- Nếu không có tiền tố, chúng sẽ được nhập dưới dạng
Trả về
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
- Nếu
return_intermediate_token_ids, trả vềSeamlessM4Tv2GenerationOutput. - Nếu không
return_intermediate_token_ids, trả về một tuple gồm các waveform có shape(batch_size, sequence_length)vàwaveform_lengthscho biết độ dài của từng mẫu.
Tạo ra các dạng sóng âm thanh đã được dịch.
Phương pháp này lần lượt gọi hàm
.generatecủa hai mô hình con khác nhau. Bạn có thể chỉ định các đối số từ khóa ở hai cấp độ khác nhau: các đối số chung sẽ được truyền cho cả hai mô hình, hoặc các đối số có tiền tố sẽ được truyền cho một trong hai mô hình.Ví dụ, việc gọi
.generate(input_features, num_beams=4, speech_do_sample=True)sẽ lần lượt thực hiện giải mã beam-search trên mô hình văn bản và lấy mẫu beam-search đa thức trên mô hình giọng nói.Để xem tổng quan về các chiến lược sinh và ví dụ mã, hãy xem hướng dẫn sau.
SeamlessM4Tv2ForTextToText
lớp transformers.SeamlessM4Tv2ForTextToText
< source >( config: SeamlessM4Tv2Config )
Tham số
- config (SeamlessM4Tv2Config) — 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.
Model transformer SeamlessM4Tv2 từ văn bản sang văn bản có thể được sử dụng cho T2TT.
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] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)
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.
- decoder_input_ids (
torch.LongTensorcó hình dạng(batch_size, target_sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào của decoder trong bảng từ vựng. Có thể lấy chỉ số bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết. decoder input IDs là gì? Bart sử dụng eos_token_id làm token khởi đầu cho việc tạo decoder_input_ids. Nếu sử dụng past_key_values, tùy chọn chỉ cần nhập decoder_input_ids cuối cùng (xem past_key_values). Đối với huấn luyện dịch thuật và tóm tắt, cần cung cấp decoder_input_ids. Nếu không cung cấp decoder_input_ids, mô hình sẽ tạo tensor này bằng cách dịch chuyển input_ids sang bên phải cho tiền huấn luyện khử nhiễu theo bài báo.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.
ID đầu vào của bộ giải mã là gì?
Bart sử dụng
eos_token_idlàm token khởi đầu cho việc tạodecoder_input_ids. Nếu sử dụngpast_key_values, tùy chọn chỉ cần nhậpdecoder_input_idscuối cùng (xempast_key_values).Đối với huấn luyện dịch và tóm tắt, cần cung cấp
decoder_input_ids. Nếu không cung cấpdecoder_input_ids, mô hình sẽ tạo tensor này bằng cách dịch chuyểninput_idssang phải cho tiền huấn luyện khử nhiễu theo bài báo. - decoder_attention_mask (
torch.LongTensorcó hình dạng(batch_size, target_sequence_length), tùy chọn) — Hành vi mặc định: tạo một tensor bỏ qua các token pad trongdecoder_input_ids. Mặt nạ nhân quả (causal mask) cũng sẽ được sử dụng theo mặc định. Nếu bạn muốn thay đổi hành vi đệm (padding), bạn nên đọc modeling_bart._prepare_decoder_attention_mask và chỉnh sửa theo nhu cầu. Xem sơ đồ 1 trong bài báo để biết thêm thông tin về chiến lược mặc định.Nếu bạn muốn thay đổi hành vi đệm, hãy đọc
modeling_bart._prepare_decoder_attention_maskvà chỉnh sửa theo nhu cầu của bạn. Xem sơ đồ 1 trong bài báo để biết thêm thông tin về chiến lược mặc định. - encoder_outputs (
tuple[tuple[torch.Tensor]], tùy chọn) — Tuple bao 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.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. Đ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_idsthành các vector tương ứng so với ma trận tra cứu nhúng nội bộ của mô hình.labels (
torch.LongTensorcó hình dạng(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ó mặt nạ. Chỉ số phải nằm trong[-100, 0, ..., config.vocab_size](xem docstring củainput_ids). Các token có chỉ số được đặt thành-100sẽ bị bỏ qua (mặt nạ), tổn thất chỉ được tính cho các token có nhãn nằm trong[0, ..., config.vocab_size] - decoder_inputs_embeds (
torch.Tensorcó hình dạng(batch_size, target_sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềndecoder_input_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ầndecoder_inputs_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 đổidecoder_input_idschỉ số 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ả
decoder_input_idsvàdecoder_inputs_embedsđều không được đặt,decoder_inputs_embedssẽ nhận giá trị củainputs_embeds. - 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]. - 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ề
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 (SeamlessM4Tv2Config) và đầu vào.
Phương thức forward của SeamlessM4Tv2ForTextToText 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 >( input_ids = Nonetgt_lang = Nonegeneration_config = Nonelogits_processor = Nonestopping_criteria = Noneprefix_allowed_tokens_fn = Nonesynced_gpus = False**kwargs ) → ModelOutput or torch.LongTensor
Tham số
- input_ids (
torch.Tensorcó hình dạng thay đổi tùy theo modality, tùy chọn) — Chỉ số của các token trong chuỗi đầu vào trong từ vựng. Có thể lấy chỉ số bằng cách sử dụng SeamlessM4TTokenizer hoặc SeamlessM4TProcessor. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết. input IDs là gì?Các chỉ số có thể được lấy bằng cách sử dụng SeamlessM4TTokenizer hoặc SeamlessM4TProcessor. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- tgt_lang (
str, tùy chọn) — Ngôn ngữ được sử dụng làm ngôn ngữ đích cho việc dịch. - generation_config (
~generation.GenerationConfig, tùy chọn) — Cấu hình sinh được sử dụng làm tham số hóa cơ sở cho lệnh gọi sinh.**kwargsđược truyền vào generate và khớp với các thuộc tính củageneration_configsẽ ghi đè lên chúng. Nếugeneration_configkhông được cung cấp, giá trị mặc định sẽ được sử dụng, với thứ tự ưu tiên nạp như sau: 1) từ tệp mô hìnhgeneration_config.json, nếu tệp này tồn tại; 2) từ cấu hình của mô hình. Vui lòng lưu ý rằng các tham số không được chỉ định sẽ kế thừa các giá trị mặc định của GenerationConfig, và tài liệu của lớp này nên được kiểm tra để tham số hóa quá trình sinh. - logits_processor (
LogitsProcessorList, tùy chọn) — Các logits processor tùy chỉnh bổ sung cho các logits processor mặc định được tạo từ các đối số và cấu hình sinh. Nếu một logit processor được truyền vào mà đã được tạo từ các đối số hoặc một cấu hình sinh, một lỗi sẽ được ném ra. Tính năng này dành cho người dùng nâng cao. - stopping_criteria (
StoppingCriteriaList, tùy chọn) — Các tiêu chí dừng tùy chỉnh bổ sung cho các tiêu chí dừng mặc định được xây dựng từ các đối số và cấu hình sinh. Nếu một tiêu chí dừng được truyền vào mà đã được tạo từ các đối số hoặc cấu hình sinh, một lỗi sẽ được ném ra. Tính năng này dành cho người dùng nâng cao. - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], tùy chọn) — Nếu được cung cấp, hàm này sẽ ràng buộc beam search chỉ sử dụng các token được phép ở mỗi bước. Nếu không được cung cấp, sẽ không áp dụng ràng buộc nào. Hàm này nhận 2 đối số: ID của batchbatch_idvàinput_ids. Nó phải trả về một danh sách chứa các token được phép cho bước sinh tiếp theo, dựa trên ID của batchbatch_idvà các token đã được sinh trước đóinputs_ids. Đối số này hữu ích cho việc sinh có ràng buộc dựa trên tiền tố, như được mô tả trong Autoregressive Entity Retrieval. - synced_gpus (
bool, tùy chọn, mặc định làFalse) — Có nên tiếp tục chạy vòng lặp while cho đến max_length hay không (cần thiết để tránh deadlock vớiFullyShardedDataParallelvà DeepSpeed ZeRO Stage 3). - kwargs (
dict[str, Any], tùy chọn) — Tham số hóa ad hoc chogenerate_configvà/hoặc các kwargs cụ thể của model bổ sung sẽ được chuyển tiếp đến hàmforwardcủa model.
Trả về
ModelOutput hoặc torch.LongTensor
Một ModelOutput (nếu return_dict_in_generate=True
hoặc khi config.return_dict_in_generate=True) hoặc một torch.Tensor. Các kiểu
ModelOutput có thể là:
Tạo ra các chuỗi id token.
Hầu hết các tham số kiểm soát quá trình sinh được đặt trong
generation_config, nếu không được truyền vào, sẽ được đặt thành cấu hình sinh mặc định của mô hình. Bạn có thể ghi đè bất kỳgeneration_confignào bằng cách truyền các tham số tương ứng vào generate(), ví dụ.generate(inputs, num_beams=4, do_sample=True).Để xem tổng quan về các chiến lược sinh và ví dụ mã, hãy xem hướng dẫn sau.
SeamlessM4Tv2ForSpeechToText
lớp transformers.SeamlessM4Tv2ForSpeechToText
< source >( config: SeamlessM4Tv2Config )
Tham số
- config (SeamlessM4Tv2Config) — 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.
Model transformer SeamlessM4Tv2 cho speech-to-text có thể được sử dụng cho S2TT.
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_features: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)
Tham số
- input_features (
torch.Tensorcó hình dạng(batch_size, sequence_length, num_banks)) — Các đặc trưng âm thanh đầu vào. Giá trị này phải được trả về bởi lớp SeamlessM4TFeatureExtractor hoặc lớp SeamlessM4TProcessor. Xem SeamlessM4TFeatureExtractor.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.
- decoder_input_ids (
torch.LongTensorcó hình dạng(batch_size, target_sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào của decoder trong bảng từ vựng. Có thể lấy chỉ số bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết. decoder input IDs là gì? Bart sử dụng eos_token_id làm token khởi đầu cho việc tạo decoder_input_ids. Nếu sử dụng past_key_values, tùy chọn chỉ cần nhập decoder_input_ids cuối cùng (xem past_key_values). Đối với huấn luyện dịch thuật và tóm tắt, cần cung cấp decoder_input_ids. Nếu không cung cấp decoder_input_ids, mô hình sẽ tạo tensor này bằng cách dịch chuyển input_ids sang bên phải cho tiền huấn luyện khử nhiễu theo bài báo.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.
ID đầu vào của bộ giải mã là gì?
Bart sử dụng
eos_token_idlàm token khởi đầu cho việc tạodecoder_input_ids. Nếu sử dụngpast_key_values, tùy chọn chỉ cần nhậpdecoder_input_idscuối cùng (xempast_key_values).Đối với huấn luyện dịch và tóm tắt, cần cung cấp
decoder_input_ids. Nếu không cung cấpdecoder_input_ids, mô hình sẽ tạo tensor này bằng cách dịch chuyểninput_idssang phải cho tiền huấn luyện khử nhiễu theo bài báo. - decoder_attention_mask (
torch.LongTensorcó hình dạng(batch_size, target_sequence_length), tùy chọn) — Hành vi mặc định: tạo một tensor bỏ qua các token pad trongdecoder_input_ids. Mặt nạ nhân quả (causal mask) cũng sẽ được sử dụng theo mặc định. Nếu bạn muốn thay đổi hành vi đệm (padding), bạn nên đọc modeling_bart._prepare_decoder_attention_mask và chỉnh sửa theo nhu cầu. Xem sơ đồ 1 trong bài báo để biết thêm thông tin về chiến lược mặc định.Nếu bạn muốn thay đổi hành vi đệm, hãy đọc
modeling_bart._prepare_decoder_attention_maskvà chỉnh sửa theo nhu cầu của bạn. Xem sơ đồ 1 trong bài báo để biết thêm thông tin về chiến lược mặc định. - encoder_outputs (
tuple[tuple[torch.Tensor]], tùy chọn) — Tuple bao 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.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. Đ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_idsthành các vector tương ứng so với ma trận tra cứu nhúng nội bộ của mô hình.labels (
torch.LongTensorcó hình dạng(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ó mặt nạ. Chỉ số phải nằm trong[-100, 0, ..., config.vocab_size](xem docstring củainput_ids). Các token có chỉ số được đặt thành-100sẽ bị bỏ qua (mặt nạ), tổn thất chỉ được tính cho các token có nhãn nằm trong[0, ..., config.vocab_size] - decoder_inputs_embeds (
torch.Tensorcó hình dạng(batch_size, target_sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyềndecoder_input_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ầndecoder_inputs_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 đổidecoder_input_idschỉ số 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ả
decoder_input_idsvàdecoder_inputs_embedsđều không được đặt,decoder_inputs_embedssẽ nhận giá trị củainputs_embeds. - 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]. - 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ề
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 (SeamlessM4Tv2Config) và đầu vào.
Phương thức forward của SeamlessM4Tv2ForSpeechToText 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).
Ví dụ:
>>> from transformers import AutoProcessor, SeamlessM4Tv2ForSpeechToText
>>> from datasets import load_dataset
>>> import torch
>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate
>>> processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> model = SeamlessM4Tv2ForSpeechToText.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)
>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...generate
< source >( input_features = Nonetgt_lang = Nonegeneration_config = Nonelogits_processor = Nonestopping_criteria = Noneprefix_allowed_tokens_fn = Nonesynced_gpus = False**kwargs ) → ModelOutput or torch.LongTensor
Tham số
- input_features (
torch.Tensorcó hình dạng(batch_size, sequence_length, num_banks)) — Các đặc trưng âm thanh đầu vào. Giá trị này phải được trả về bởi lớp SeamlessM4TFeatureExtractor hoặc lớp SeamlessM4TProcessor. Xem SeamlessM4TFeatureExtractor.call() để biết thêm chi tiết. - tgt_lang (
str, tùy chọn) — Ngôn ngữ được sử dụng làm ngôn ngữ đích cho việc dịch. - generation_config (
~generation.GenerationConfig, tùy chọn) — Cấu hình sinh được sử dụng làm tham số hóa cơ sở cho lệnh gọi sinh.**kwargsđược truyền vào generate và khớp với các thuộc tính củageneration_configsẽ ghi đè lên chúng. Nếugeneration_configkhông được cung cấp, giá trị mặc định sẽ được sử dụng, với thứ tự ưu tiên nạp như sau: 1) từ tệp mô hìnhgeneration_config.json, nếu tệp này tồn tại; 2) từ cấu hình của mô hình. Vui lòng lưu ý rằng các tham số không được chỉ định sẽ kế thừa các giá trị mặc định của GenerationConfig, và tài liệu của lớp này nên được kiểm tra để tham số hóa quá trình sinh. - logits_processor (
LogitsProcessorList, tùy chọn) — Các logits processor tùy chỉnh bổ sung cho các logits processor mặc định được tạo từ các đối số và cấu hình sinh. Nếu một logit processor được truyền vào mà đã được tạo từ các đối số hoặc một cấu hình sinh, một lỗi sẽ được ném ra. Tính năng này dành cho người dùng nâng cao. - stopping_criteria (
StoppingCriteriaList, tùy chọn) — Các tiêu chí dừng tùy chỉnh bổ sung cho các tiêu chí dừng mặc định được xây dựng từ các đối số và cấu hình sinh. Nếu một tiêu chí dừng được truyền vào mà đã được tạo từ các đối số hoặc cấu hình sinh, một lỗi sẽ được ném ra. Tính năng này dành cho người dùng nâng cao. - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], tùy chọn) — Nếu được cung cấp, hàm này sẽ ràng buộc beam search chỉ sử dụng các token được phép ở mỗi bước. Nếu không được cung cấp, sẽ không áp dụng ràng buộc nào. Hàm này nhận 2 đối số: ID của batchbatch_idvàinput_ids. Nó phải trả về một danh sách chứa các token được phép cho bước sinh tiếp theo, dựa trên ID của batchbatch_idvà các token đã được sinh trước đóinputs_ids. Đối số này hữu ích cho việc sinh có ràng buộc dựa trên tiền tố, như được mô tả trong Autoregressive Entity Retrieval. - synced_gpus (
bool, tùy chọn, mặc định làFalse) — Có nên tiếp tục chạy vòng lặp while cho đến max_length hay không (cần thiết để tránh deadlock vớiFullyShardedDataParallelvà DeepSpeed ZeRO Stage 3). - kwargs (
dict[str, Any], tùy chọn) — Tham số hóa ad hoc chogenerate_configvà/hoặc các kwargs cụ thể của model bổ sung sẽ được chuyển tiếp đến hàmforwardcủa model.
Trả về
ModelOutput hoặc torch.LongTensor
Một ModelOutput (nếu return_dict_in_generate=True
hoặc khi config.return_dict_in_generate=True) hoặc một torch.Tensor. Các kiểu
ModelOutput có thể là:
Tạo ra các chuỗi id token.
Hầu hết các tham số kiểm soát quá trình sinh được đặt trong
generation_config, nếu không được truyền vào, sẽ được đặt thành cấu hình sinh mặc định của mô hình. Bạn có thể ghi đè bất kỳgeneration_confignào bằng cách truyền các tham số tương ứng vào generate(), ví dụ.generate(inputs, num_beams=4, do_sample=True).Để xem tổng quan về các chiến lược sinh và ví dụ mã, hãy xem hướng dẫn sau.
SeamlessM4Tv2Config
lớp transformers.SeamlessM4Tv2Config
< 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 = Truevocab_size: int = 256102t2u_vocab_size: int = 10082char_vocab_size: int = 10943hidden_size: int = 1024initializer_range: float = 0.02layer_norm_eps: float = 1e-05use_cache: bool = Truemax_position_embeddings: int = 4096encoder_layerdrop: float | int = 0.05decoder_layerdrop: float | int = 0.05activation_function: str = 'relu'dropout: float | int = 0.1attention_dropout: float | int = 0.1activation_dropout: float | int = 0.0scale_embedding: bool = Trueencoder_layers: int = 24encoder_ffn_dim: int = 8192encoder_attention_heads: int = 16decoder_layers: int = 24decoder_ffn_dim: int = 8192decoder_attention_heads: int = 16decoder_start_token_id: int = 3max_new_tokens: int | None = 256pad_token_id: int | None = 0bos_token_id: int | None = 2eos_token_id: int | list[int] | None = 3speech_encoder_layers: int = 24speech_encoder_attention_heads: int = 16speech_encoder_intermediate_size: int = 4096speech_encoder_hidden_act: str = 'swish'speech_encoder_dropout: float | int = 0.0add_adapter: bool = Truespeech_encoder_layerdrop: float | int = 0.1feature_projection_input_dim: int = 160adaptor_kernel_size: int = 8adaptor_stride: int = 8adaptor_dropout: float | int = 0.1num_adapter_layers: int = 1position_embeddings_type: str = 'relative_key'conv_depthwise_kernel_size: int = 31left_max_position_embeddings: int = 64right_max_position_embeddings: int = 8speech_encoder_chunk_size: int = 20000speech_encoder_left_chunk_num: int = 128t2u_bos_token_id: int | None = 0t2u_pad_token_id: int | None = 1t2u_eos_token_id: int | list[int] | None = 2t2u_encoder_layers: int = 6t2u_encoder_ffn_dim: int = 8192t2u_encoder_attention_heads: int = 16t2u_decoder_layers: int = 6t2u_decoder_ffn_dim: int = 8192t2u_decoder_attention_heads: int = 16t2u_max_position_embeddings: int = 4096t2u_variance_predictor_embed_dim: int = 1024t2u_variance_predictor_hidden_dim: int = 256t2u_variance_predictor_kernel_size: int = 3t2u_variance_pred_dropout: float | int = 0.5sampling_rate: int = 16000upsample_initial_channel: int = 512upsample_rates: list[int] | tuple[int, ...] = (5, 4, 4, 2, 2)upsample_kernel_sizes: list[int] | tuple[int, ...] = (11, 8, 8, 4, 4)resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 7, 11)resblock_dilation_sizes: list | tuple = ((1, 3, 5), (1, 3, 5), (1, 3, 5))leaky_relu_slope: float = 0.1unit_hifi_gan_vocab_size: int = 10000unit_embed_dim: int = 1280lang_embed_dim: int = 256spkr_embed_dim: int = 256vocoder_num_langs: int = 36vocoder_num_spkrs: int = 200variance_predictor_kernel_size: int = 3var_pred_dropout: float | int = 0.5vocoder_offset: int = 4tie_word_embeddings: 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. - vocab_size (
int, tùy chọn, mặc định là256102) — 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. - t2u_vocab_size (
int, tùy chọn, mặc định là 10082) — Kích thước từ vựng đơn vị của mô hình SeamlessM4Tv2. Xác định số lượng “unit token” khác nhau có thể được biểu diễn bởiinputs_idsđược truyền khi gọi mô hình con Text-To-Units của ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech hoặc ~SeamlessM4Tv2ForTextToSpeech. - char_vocab_size (
int, tuỳ chọn, mặc định là 10943) — Kích thước từ vựng ký tự của mô hình SeamlessM4Tv2. Xác định số lượng các token ký tự khác nhau có thể được biểu diễn bởichar_inputs_idsđược truyền khi gọi mô hình con Text-To-Units của ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech hoặc ~SeamlessM4Tv2ForTextToSpeech. - 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. - 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ố. - layer_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). - 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. - max_position_embeddings (
int, tùy chọn, mặc định là4096) — Chiều dài chuỗi tối đa mà mô hình này có thể được sử dụng. - encoder_layerdrop (
Union[float, int], tùy chọn, mặc định là0.05) — Xác suất LayerDrop cho encoder. Xem [bài báo LayerDrop](xem https://huggingface.co/papers/1909.11556) để biết thêm chi tiết. - decoder_layerdrop (
Union[float, int], tùy chọn, mặc định là0.05) — Xác suất LayerDrop cho bộ giải mã. Xem [bài báo LayerDrop](xem https://huggingface.co/papers/1909.11556) để biết thêm chi tiết. - activation_function (
str, tùy chọn, mặc định làrelu) — 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. - dropout (
Union[float, int], tùy chọn, mặc định là0.1) — Tỷ lệ cho tất cả các lớp dropout. - attention_dropout (
Union[float, int], tùy chọn, mặc định là0.1) — Tỷ lệ dropout cho các xác suất chú ý. - activation_dropout (
Union[float, int], tùy chọn, mặc định là0.0) — Tỷ lệ dropout cho các kích hoạt bên trong lớp liên kết đầy đủ. - scale_embedding (
bool, tùy chọn, mặc định làTrue) — Có nên chia embedding cho sqrt(d_model) để chuẩn hóa hay không. - encoder_layers (
int, tùy chọn, mặc định là24) — Số lượng lớp ẩn trong bộ mã hóa Transformer. Nếu không được đặt, giá trị này sẽ giống vớinum_layers. - encoder_ffn_dim (
int, tùy chọn, mặc định là8192) — Kích thước của lớp “trung gian” (thường được gọi là feed-forward) trong encoder. - encoder_attention_heads (
int, tùy chọn, mặc định là16) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ mã hóa Transformer. - decoder_layers (
int, tuỳ chọn, mặc định là24) — Số lượng lớp ẩn trong bộ giải mã Transformer. Nếu không được đặt, giá trị này sẽ giống vớinum_layers. - decoder_ffn_dim (
int, tùy chọn, mặc định là8192) — Kích thước của lớp “trung gian” (thường được gọi là feed-forward) trong decoder. - decoder_attention_heads (
int, tùy chọn, mặc định là16) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ giải mã Transformer. - decoder_start_token_id (
int, tùy chọn, mặc định là3) — Nếu một mô hình encoder-decoder bắt đầu giải mã bằng một token khác vớibos, đây là id của token đó. - max_new_tokens (
int, tùy chọn, mặc định là 256) — Số lượng token văn bản tối đa cần tạo, không tính số token trong prompt. - pad_token_id (
int, tùy chọn, mặc định là0) — Token id được sử dụng để đệm (padding) trong từ vựng. - bos_token_id (
int, tùy chọn, mặc định là2) — Token id được sử dụng cho beginning-of-stream trong bảng từ vựng. - eos_token_id (
Union[int, list[int]], tuỳ chọn, mặc định là3) — Token id được dùng cho end-of-stream trong bảng từ vựng. - speech_encoder_layers (
int, tùy chọn, mặc định là 24) — Số lượng lớp ẩn trong bộ mã hóa giọng nói Transformer. - speech_encoder_attention_heads (
int, tùy chọn, mặc định là 16) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ mã hóa giọng nói Transformer. - speech_encoder_intermediate_size (
int, tùy chọn, mặc định là 4096) — Kích thước của lớp “trung gian” (tức là lớp feed-forward) trong bộ mã hóa giọng nói Transformer. - speech_encoder_hidden_act (
strhoặcfunction, tùy chọn, mặc định là"swish") — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ mã hóa giọng nói. Nếu là chuỗi,"gelu","relu","selu","swish"và"gelu_new"được hỗ trợ. - speech_encoder_dropout (
float, tùy chọn, mặc định là 0.0) — Xác suất dropout cho tất cả các lớp trong speech encoder. - add_adapter (
bool, tùy chọn, mặc định làTrue) — Thêm một lớp adapter phía trên bộ mã hóa giọng nói. - speech_encoder_layerdrop (
float, tùy chọn, mặc định là 0.1) — Xác suất LayerDrop cho bộ mã hóa giọng nói. Xem [bài báo LayerDrop](xem https://huggingface.co/papers/1909.11556) để biết thêm chi tiết. - feature_projection_input_dim (
int, tùy chọn, mặc định là 160) — Kích thước đầu vào của phép chiếu đặc trưng đầu vào của bộ mã hóa giọng nói, tức là kích thước sau khi xử lý âm thanh đầu vào bằng SeamlessM4TFeatureExtractor. - adaptor_kernel_size (
int, tuỳ chọn, mặc định là 8) — Kích thước kernel của các lớp tích chập trong mạng adapter. Chỉ liên quan nếuadd_adapter is True. - adaptor_stride (
int, tùy chọn, mặc định là 8) — Stride của các lớp convolution trong mạng adapter. Chỉ liên quan nếuadd_adapter is True. - adaptor_dropout (
float, tùy chọn, mặc định là 0.1) — Xác suất dropout cho tất cả các lớp trong bộ thích ứng giọng nói. - num_adapter_layers (
int, tuỳ chọn, mặc định là 1) — Số lượng lớp tích chập cần được sử dụng trong mạng adapter. Chỉ liên quan nếuadd_adapter is True. - position_embeddings_type (
str, tùy chọn, mặc định là"relative_key") — Có thể được chỉ định thànhrelative_key. Nếu để làNone, sẽ không áp dụng nhúng vị trí tương đối. Chỉ áp dụng cho bộ mã hóa giọng nói. Để biết thêm thông tin về"relative_key", vui lòng tham khảo Self-Attention with Relative Position Representations (Shaw et al.). - conv_depthwise_kernel_size (
int, tuỳ chọn, mặc định là 31) — Kích thước kernel của lớp convolution depthwise 1D trong các khối Conformer. Chỉ được áp dụng cho bộ mã hóa giọng nói. - left_max_position_embeddings (
int, tùy chọn, mặc định là 64) — Giá trị cắt phía bên trái cho các vị trí tương đối. - right_max_position_embeddings (
int, tùy chọn, mặc định là 8) — Giá trị cắt bên phải cho các vị trí tương đối. - speech_encoder_chunk_size (
int, tùy chọn, mặc định là 20000) — Kích thước của mỗi khối chú ý (attention chunk). - speech_encoder_left_chunk_num (
int, tùy chọn, mặc định là 128) — Số lượng chunk ở bên trái mà lookahead được phép thực hiện. - t2u_bos_token_id (
int, tuỳ chọn, mặc định là 0) — Id của token đơn vị beginning-of-stream. Chỉ áp dụng cho mô hình seq2seq text-to-unit. - t2u_pad_token_id (
int, tùy chọn, mặc định là 1) — Id của token đơn vị padding. Chỉ áp dụng cho mô hình seq2seq text-to-unit. - t2u_eos_token_id (
int, tùy chọn, mặc định là 2) — Id của token đơn vị kết thúc luồng. Chỉ áp dụng cho mô hình seq2seq text-to-unit. - t2u_encoder_layers (
int, tùy chọn, mặc định là 6) — Số lượng lớp ẩn trong bộ mã hóa text-to-unit của Transformer. - t2u_encoder_ffn_dim (
int, tùy chọn, mặc định là 8192) — Kích thước của lớp “trung gian” (tức là lớp feed-forward) trong bộ mã hóa text-to-unit của Transformer. - t2u_encoder_attention_heads (
int, tùy chọn, mặc định là 16) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ mã hóa văn bản-sang-đơn vị Transformer. - t2u_decoder_layers (
int, tùy chọn, mặc định là 6) — Số lượng lớp ẩn trong bộ giải mã text-to-unit của Transformer. - t2u_decoder_ffn_dim (
int, tùy chọn, mặc định là 8192) — Kích thước của lớp “trung gian” (tức là lớp feed-forward) trong bộ giải mã text-to-unit của Transformer. - t2u_decoder_attention_heads (
int, tùy chọn, mặc định là 16) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ giải mã text-to-unit của Transformer. - t2u_max_position_embeddings (
int, tùy chọn, mặc định là 4096) — Chiều dài chuỗi tối đa mà thành phần text-to-unit của mô hình này có thể được sử dụng. Thông thường, hãy đặt giá trị này ở mức lớn để phòng ngừa (ví dụ: 512 hoặc 1024 hoặc 2048). - t2u_variance_predictor_embed_dim (
int, tùy chọn, mặc định là 1024) — Kích thước chiếu của bộ dự đoán thời lượng của text-to-unit. - t2u_variance_predictor_hidden_dim (
int, tùy chọn, mặc định là 256) — Chiều kích bên trong của bộ dự đoán thời lượng của text-to-unit. - t2u_variance_predictor_kernel_size (
int, tùy chọn, mặc định là 3) — Kích thước kernel của các lớp tích chập của bộ dự đoán thời lượng của text-to-unit. - t2u_variance_pred_dropout (
float, tùy chọn, mặc định là 0.5) — Xác suất dropout của bộ dự đoán thời lượng của text-to-unit. - sampling_rate (
int, tùy chọn, mặc định là16000) — Tần số lấy mẫu (tính bằng hertz (Hz)) mà các tệp âm thanh cần được số hóa. - upsample_initial_channel (
int, tùy chọn, mặc định là 512) — Số lượng kênh đầu vào của mạng upsampling trong hifi-gan. Chỉ áp dụng cho vocoder. - upsample_rates (
tuple[int]hoặclist[int], tùy chọn, mặc định là[5, 4, 4, 2, 2]) — Một tuple các số nguyên xác định stride của mỗi lớp tích chập 1D trong mạng upsampling của vocoder. Độ dài của upsample_rates xác định số lượng lớp tích chập và phải khớp với độ dài của upsample_kernel_sizes. Chỉ áp dụng cho vocoder. - upsample_kernel_sizes (
tuple[int]hoặclist[int], tuỳ chọn, mặc định là[11, 8, 8, 4, 4]) — Một tuple các số nguyên xác định kích thước kernel của từng lớp tích chập 1D trong mạng upsampling của vocoder. Độ dài của upsample_kernel_sizes xác định số lượng lớp tích chập và phải khớp với độ dài của upsample_rates. Chỉ áp dụng cho vocoder. - resblock_kernel_sizes (
tuple[int]hoặclist[int], tùy chọn, mặc định là[3, 7, 11]) — Một tuple các số nguyên xác định kích thước kernel của các lớp tích chập 1D của vocoder trong module multi-receptive field fusion (MRF). Chỉ áp dụng cho vocoder. - resblock_dilation_sizes (
tuple[tuple[int]]hoặclist[list[int]], tuỳ chọn, mặc định là[[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — Một tuple lồng nhau của các số nguyên xác định tỷ lệ giãn nở (dilation rates) của các lớp tích chập 1D giãn nở trong vocoder thuộc module multi-receptive field fusion (MRF). Chỉ áp dụng cho vocoder. - leaky_relu_slope (
float, tùy chọn, mặc định là 0.1) — Góc của độ dốc âm được sử dụng bởi hàm kích hoạt leaky ReLU trong vocoder. Chỉ áp dụng cho vocoder. - unit_hifi_gan_vocab_size (
int, tuỳ chọn, mặc định là 10000) — Kích thước từ vựng của vocoder SeamlessM4Tv2. Xác định số lượng token unit khác nhau có thể được biểu diễn bởiinputs_idsđược truyền khi gọi vocoder của ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech hoặc ~SeamlessM4Tv2ForTextToSpeech. - unit_embed_dim (
int, tùy chọn, mặc định là 1280) — Kích thước chiếu của các id đầu vào được đưa vào bộ tổng hợp âm thanh hifi-gan. Chỉ áp dụng cho bộ tổng hợp âm thanh. - lang_embed_dim (
int, tùy chọn, mặc định là 256) — Kích thước chiếu của ngôn ngữ đích được truyền cho bộ tổng hợp âm thanh hifi-gan. Chỉ áp dụng cho bộ tổng hợp âm thanh. - spkr_embed_dim (
int, tùy chọn, mặc định là 256) — Kích thước chiếu của id người nói được đưa vào bộ tổng hợp âm hifi-gan. Chỉ áp dụng cho bộ tổng hợp âm. - vocoder_num_langs (
int, tùy chọn, mặc định là 36) — Số lượng ngôn ngữ được hỗ trợ bởi vocoder. Có thể khác vớit2u_num_langs. - vocoder_num_spkrs (
int, tùy chọn, mặc định là 200) — Số lượng người nói được hỗ trợ bởi vocoder. - variance_predictor_kernel_size (
int, tuỳ chọn, mặc định là 3) — Kích thước kernel của bộ dự đoán thời lượng. Chỉ áp dụng cho bộ tổng hợp âm thanh. - var_pred_dropout (
float, tùy chọn, mặc định là 0.5) — Xác suất dropout của bộ dự đoán thời lượng. Chỉ áp dụng cho bộ tổng hợp âm thanh. - vocoder_offset (
int, tùy chọn, mặc định là 4) — Dịch chuyển các id token đơn vị bằng số này để tính đến các token ký hiệu. Chỉ áp dụng cho vocoder. - tie_word_embeddings (
bool, tùy chọn, mặc định làTrue) — 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.
Đây là lớp cấu hình để lưu trữ cấu hình của một SeamlessM4Tv2Model. Nó được sử dụng để khởi tạo một mô hình Seamless M4T V2 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 facebook/hf-seamless-m4t-medium
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.
>>> from transformers import SeamlessM4Tv2Model, SeamlessM4Tv2Config
>>> # Initializing a SeamlessM4Tv2 "" style configuration
>>> configuration = SeamlessM4Tv2Config()
>>> # Initializing a model from the "" style configuration
>>> model = SeamlessM4Tv2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config