Transformers documentation
Canary
Model ini dipublikasikan di HF papers pada 2025-09-17 dan disumbangkan ke Hugging Face Transformers pada 2026-08-31.
Canary
Ikhtisar
Canary-1B-v2 diusulkan dalam Canary-1B-v2 & Parakeet-TDT-0.6B-v3: Efficient and High-Performance Models for Multilingual ASR and AST oleh Monica Sekoyan, Nithin Rao Koluguri, Nune Tadevosyan, Piotr Zelasko, Travis Bartley, Nikolay Karpov, Jagadeesh Balam, dan Boris Ginsburg.
Abstrak dari makalah tersebut adalah sebagai berikut:
Laporan ini memperkenalkan Canary-1B-v2, model multibahasa yang cepat dan tangguh untuk Automatic Speech Recognition (ASR) dan Speech-to-Text Translation (AST). Dibangun dengan encoder FastConformer dan decoder Transformer, model ini mendukung 25 bahasa Eropa. Model ini dilatih pada total 1,7 juta jam sampel data, termasuk Granary dan NeMo ASR Set 3.0, dengan penambahan audio non-bicara untuk mengurangi halusinasi pada ASR dan AST. Kami menjelaskan proses pra-pelatihan dua tahap dan fine-tuning-nya dengan penyeimbangan data dinamis, serta eksperimen dengan encoder nGPT. Hasil menunjukkan bahwa nGPT berskala dengan baik pada data masif, sementara FastConformer unggul setelah fine-tuning. Untuk timestamp, Canary-1B-v2 menggunakan NeMo Forced Aligner (NFA) dengan model CTC tambahan, menyediakan timestamp tingkat segmen yang andal untuk ASR dan AST. Evaluasi menunjukkan Canary-1B-v2 melampaui Whisper-large-v3 pada ASR bahasa Inggris sekaligus 10× lebih cepat, dan memberikan kinerja ASR dan AST multibahasa yang kompetitif melawan model yang lebih besar seperti Seamless-M4T-v2-large dan sistem berbasis LLM. Kami juga merilis Parakeet-TDT-0.6B-v3, penerus dari v2, yang menawarkan ASR multibahasa di 25 bahasa yang sama dengan hanya 600 juta parameter.
Canary menggunakan ulang encoder Fast Conformer dari Parakeet (dimuat melalui ParakeetEncoder / ParakeetEncoderConfig) dan memasangkannya dengan decoder Transformer yang menggunakan positional embeddings sinusoidal tetap, cross-attention ke output encoder, serta input/output embeddings yang diikat. Tugas dipilih melalui prefix prompt decoder yang dibangun oleh CanaryProcessor dengan bentuk <|startofcontext|> <|startoftranscript|> <|emo:undefined|> <source_lang> <target_lang> <pnc|nopnc> <|noitn|> <|notimestamp|> <|nodiarize|>, di mana source_lang == target_lang memilih transkripsi, dan sebaliknya memilih terjemahan.
Implementasi asli dapat ditemukan di NVIDIA NeMo. Checkpoint model tersedia di nvidia/canary-1b-v2.
Model ini disumbangkan oleh Harshal Janjani.
Timestamp pada tingkat segmen untuk Canary-1B-v2 dihasilkan oleh NeMo Forced Aligner (NFA) eksternal dengan model CTC tambahan, bukan oleh decoder, sehingga tidak menjadi bagian dari output
generate.
Penggunaan
Transkripsi
Cara termudah untuk mentranskripsi audio adalah dengan apply_transcription_request, yang membangun prompt dekoder multitask untuk Anda (ini adalah pembungkus kenyamanan untuk apply_chat_template).
from datasets import load_dataset, Audio
from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq
processor = AutoProcessor.from_pretrained("nvidia/canary-1b-v2")
model = AutoModelForSpeechSeq2Seq.from_pretrained("nvidia/canary-1b-v2", device_map="auto")
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
inputs = processor.apply_transcription_request(audio=ds[0]["audio"]["array"], source_language="en").to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=128)
print(processor.decode(generated_ids, skip_special_tokens=True)[0])Terjemahan
Setel target_language ke bahasa yang berbeda dari source_language untuk terjemahan ucapan-ke-teks.
...
inputs = processor.apply_transcription_request(
audio=ds[0]["audio"]["array"], source_language="en", target_language="de"
).to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=128)
print(processor.decode(generated_ids, skip_special_tokens=True)[0])Inferensi batch
Lewatkan daftar audio dan, secara opsional, daftar source_language / target_language.
...
audios = [ds[0]["audio"]["array"], ds[1]["audio"]["array"]]
# single entries get broadcasted to list
inputs = processor.apply_transcription_request(
audio=audios, source_language="en", target_language=["en", "de"]
).to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=128)
for text in processor.decode(generated_ids, skip_special_tokens=True):
print(text)Torch compile
Untuk transkripsi autoregresif, torch.compile mempercepat langkah maju per token di dalam generate dengan menyediakan objek CompileConfig.
...
from transformers import CompileConfig
inputs = processor.apply_transcription_request(audio=ds[0]["audio"]["array"], source_language="en").to(model.device)
compile_config = CompileConfig()
# Warmup
for _ in range(3):
_ = model.generate(**inputs, max_new_tokens=128, cache_implementation="static", compile_config=compile_config)
# Apply model
generated_ids = model.generate(**inputs, max_new_tokens=128, cache_implementation="static", compile_config=compile_config)
print(processor.decode(generated_ids, skip_special_tokens=True)[0])Pelatihan
Lewatkan transkrip target ke apply_transcription_request dengan transcription, dan labels yang dikembalikan digunakan untuk menghitung loss.
from datasets import Audio, load_dataset
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
model_id = "nvidia/canary-1b-v2"
NUM_SAMPLES = 2
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")
model.train()
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
speech_samples = [el["array"] for el in ds["audio"][:NUM_SAMPLES]]
text_samples = ds["text"][:NUM_SAMPLES]
inputs = processor.apply_transcription_request(speech_samples, source_language="en", transcription=text_samples)
inputs.to(model.device, dtype=model.dtype)
loss = model(**inputs).loss
print("Loss:", loss.item())
loss.backward()CanaryConfig
kelas transformers.CanaryConfig
< 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: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedecoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneuse_cache: bool = Truetie_word_embeddings: bool = Truepad_token_id: int | None = 2bos_token_id: int | None = 4eos_token_id: int | None = 3decoder_start_token_id: int | None = 7initializer_range: float = 0.02vocab_size: int = 16384 )
Parameter
- is_encoder_decoder (
bool, opsional, defaultnyaTrue) — Apakah model digunakan sebagai encoder/decoder atau tidak. - encoder_config (
Union[dict, ParakeetEncoderConfig], opsional) — Objek konfigurasi atau kamus dari encoder FastConformer (ParakeetEncoderConfig). - decoder_config (
Union[dict, CanaryDecoderConfig], opsional) — Objek konfigurasi atau kamus dari decoder Transformer (CanaryDecoderConfig). - use_cache (
bool, opsional, defaultnyaTrue) — Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jikaconfig.is_decoder=Trueatau ketika model adalah model generatif yang hanya decoder. - tie_word_embeddings (
bool, opsional, defaultTrue) — Apakah akan mengikat bobot embedding sesuai dengan pemetaantied_weights_keysmodel. - pad_token_id (
int, opsional, default2) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional, default4) — ID token yang digunakan untuk awal-stream dalam kosakata. - eos_token_id (
int, opsional, default3) — ID token yang digunakan untuk end-of-stream dalam kosakata. - decoder_start_token_id (
int, opsional, default 7) — ID token yang memulai decoding (<|startofcontext|>, token pertama dari prompt multitask). - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - vocab_size (
int, opsional, default16384) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari CanaryModel. Kelas ini digunakan untuk menginstansiasi model Canary sesuai dengan argumen yang ditentukan, yang mendefinisikan arsitektur model. Menginstansiasi konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari nvidia/canary-1b-v2
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import CanaryForConditionalGeneration, CanaryConfig
>>> # Initializing a Canary configuration
>>> configuration = CanaryConfig()
>>> # Initializing a model from the configuration
>>> model = CanaryForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configCanaryDecoderConfig
kelas transformers.CanaryDecoderConfig
< 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 = 16384hidden_size: int = 1024intermediate_size: int = 4096num_hidden_layers: int = 8num_attention_heads: int = 8num_key_value_heads: int = 8hidden_act: str = 'relu'max_position_embeddings: int = 1024initializer_range: float = 0.02use_cache: bool = Truepad_token_id: int | None = 2bos_token_id: int | None = 4eos_token_id: int | None = 3attention_bias: bool = Trueattention_dropout: int | float | None = 0.0head_dim: int = 128 )
Parameter
- is_encoder_decoder (
bool, opsional, defaultnyaTrue) — Apakah model digunakan sebagai encoder/decoder atau tidak. - vocab_size (
int, opsional, default16384) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default1024) — Dimensi dari representasi tersembunyi. - intermediate_size (
int, opsional, default4096) — Dimensi representasi MLP. - num_hidden_layers (
int, opsional, default8) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default8) — Jumlah attention heads untuk setiap lapisan attention di decoder Transformer. - num_key_value_heads (
int, opsional, default8) — Ini adalah jumlah key_value heads yang harus digunakan untuk mengimplementasikan Grouped Query Attention. Jikanum_key_value_heads=num_attention_heads, model akan menggunakan Multi Head Attention (MHA), jikanum_key_value_heads=1model akan menggunakan Multi Query Attention (MQA), selain itu GQA yang digunakan. Saat mengkonversi checkpoint multi-head menjadi checkpoint GQA, setiap group key dan value head harus dibangun dengan meanpooling semua head asli di dalam grup tersebut. Untuk detail lebih lanjut, lihat paper ini. Jika tidak ditentukan, akan default kenum_attention_heads. - hidden_act (
str, opsional, defaultnyarelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - max_position_embeddings (
int, opsional, default1024) — Panjang maksimum urutan yang mungkin digunakan dengan model ini. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - use_cache (
bool, opsional, defaultnyaTrue) — Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jikaconfig.is_decoder=Trueatau ketika model adalah model generatif yang hanya decoder. - pad_token_id (
int, opsional, default2) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional, default4) — ID token yang digunakan untuk awal-stream dalam kosakata. - eos_token_id (
int, opsional, default3) — ID token yang digunakan untuk end-of-stream dalam kosakata. - attention_bias (
bool, opsional, defaultTrue) — Apakah akan menggunakan bias pada lapisan proyeksi query, key, value, dan output selama self-attention. - attention_dropout (
Union[int, float], opsional, default0.0) — Rasio dropout untuk probabilitas perhatian. - head_dim (
int, opsional, default128) — Dimensi head perhatian. Jika None, nilainya akan default ke hidden_size // num_attention_heads
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari CanaryModel. Kelas ini digunakan untuk menginstansiasi model Canary sesuai dengan argumen yang ditentukan, yang mendefinisikan arsitektur model. Menginstansiasi konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari nvidia/canary-1b-v2
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
>>> from transformers import CanaryDecoderModel, CanaryDecoderConfig
>>> # Initializing a CanaryDecoder canary_decoder-7b style configuration
>>> configuration = CanaryDecoderConfig()
>>> # Initializing a model from the canary_decoder-7b style configuration
>>> model = CanaryDecoderModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configCanaryProcessor
kelas transformers.CanaryProcessor
< source >( feature_extractor = Nonetokenizer = Nonechat_template = None )
Membangun CanaryProcessor yang membungkus feature extractor dan tokenizer menjadi satu processor.
CanaryProcessor menyediakan semua fungsionalitas dari ParakeetFeatureExtractor dan TokenizersBackend. Lihat ~ParakeetFeatureExtractor dan ~TokenizersBackend untuk informasi lebih lanjut.
apply_transcription_request
< source >( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], list[typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]]]source_language: str | list[str] = 'en'target_language: str | list[str] | None = Nonepunctuation: bool = Truetranscription: str | list[str] | None = Nonetokenize: bool = True**kwargs: *<class 'transformers.models.canary.processing_canary.CanaryProcessorKwargs'> ) → BatchFeature or list[str]
Parameter
- audio (
AudioInputataulist[AudioInput]) — Audio yang akan ditranskripsi atau diterjemahkan. Bisa berupa string URL, path lokal, array numpy, atau daftar dari item-item tersebut. - source_language (
strataulist[str], opsional, default"en") — Bahasa dari ucapan input. Menerima kode ISO (mis."en","de","fr") atau nama lengkap (mis."English","German","French"). - target_language (
strataulist[str], opsional) — Bahasa dari teks keluaran. Menerima kode ISO atau nama lengkap. Bawaan adalahsource_language(transkripsi); atur ke bahasa lain untuk terjemahan ucapan-ke-teks. - punctuation (
bool, opsional, defaultTrue) — Apakah akan meminta tanda baca dan kapitalisasi dalam output. - transcription (
strataulist[str], opsional) — Transkrip target (atau terjemahan) untuk pelatihan, satu per audio. Jika diberikan, setiap transkrip ditulis sebagai giliran asisten danlabelsdikembalikan (lihatoutput_labelsdi__call__()). - tokenize (
bool, opsional, defaultTrue) — Apakah akan melakukan tokenisasi pada prompt dan memproses audio. JikaFalse, audio tidak dimuat dan prompt dikembalikan sebagai string dengan placeholder audio yang belum diperluas. Melewatkan prompt tersebut bersama audio ke processor,processor(text=prompts, audio=audio), menghasilkan output yang sama sepertitokenize=True. - **kwargs —
Argumen kata kunci tambahan yang diteruskan ke apply_chat_template().
Kwargs prosesor (misalnya
text_kwargs,audio_kwargs, …) harus diteruskan sebagaiprocessor_kwargs={...}.
Mengembalikan
BatchFeature atau list[str]
Satu prompt per audio saat tokenize=False, selain itu processor
menghasilkan output yang siap diteruskan ke
CanaryForConditionalGeneration.generate(), atau ke CanaryForConditionalGeneration.forward() untuk menghitung
loss ketika transcription diberikan.
Siapkan input untuk transkripsi atau terjemahan tanpa menulis template chat secara manual, baik untuk
inferensi maupun, ketika transcription diberikan, untuk pelatihan.
CanaryModel
kelas transformers.CanaryModel
< source >( config: CanaryConfig )
Parameter
- config (CanaryConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Canary polos (encoder FastConformer + decoder Transformer) yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = 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.EncoderDecoderCache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqModelOutput or tuple(torch.Tensor)
Parameter
- input_features (
torch.Tensordengan bentuk(batch_size, audio_length)) — Nilai float dari waveform ucapan mentah. Waveform ucapan mentah dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarray, atautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_features, gunakan AutoFeatureExtractor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. - attention_mask (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- decoder_input_ids (
torch.LongTensordengan bentuk(batch_size, target_sequence_length), opsional) — Indeks token dari urutan input decoder dalam kosakata. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu decoder input IDs?Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- decoder_attention_mask (
torch.LongTensordengan bentuk(batch_size, target_sequence_length), opsional) — Mask untuk menghindari pelaksanaan attention pada indeks token tertentu. Secara default, mask kausal akan digunakan, untuk memastikan model hanya dapat melihat input sebelumnya guna memprediksi masa depan. - encoder_outputs (
tuple[tuple[torch.Tensor]], opsional) — Tuple terdiri dari (last_hidden_state, opsional:hidden_states, opsional:attentions)last_hidden_statedengan bentuk(batch_size, sequence_length, hidden_size), opsional) adalah rangkaian hidden-states pada keluaran lapisan terakhir encoder. Digunakan dalam cross-attention decoder. - past_key_values (
~cache_utils.EncoderDecoderCache, opsional) — Hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - decoder_inputs_embeds (
tuple[torch.Tensor]dengan bentuk(batch_size, target_sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskandecoder_input_idsAnda dapat memilih untuk langsung meneruskan representasi tertanam. Jikapast_key_valuesdigunakan, secara opsional hanyadecoder_inputs_embedsyang perlu dimasukkan (lihatpast_key_values). Ini berguna jika Anda ingin lebih banyak kendali atas cara mengonversidecoder_input_idsindeks menjadi vektor terkait daripada matriks pencarian embedding internal model.Jika
decoder_input_idsdandecoder_inputs_embedskeduanya tidak disetel,decoder_inputs_embedsmengambil nilai dariinputs_embeds. - decoder_position_ids (
torch.LongTensordengan bentuk(batch_size, target_sequence_length)) — Indeks posisi setiap token dalam urutan input pada position embeddings. Digunakan untuk menghitung position embeddings hinggaconfig.decoder_config.max_position_embeddings - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
Seq2SeqModelOutput atau tuple(torch.Tensor)
A Seq2SeqModelOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (CanaryConfig) dan input.
Metode forward dari CanaryModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir dari decoder model.Jika
past_key_valuesdigunakan, hanya hidden-state terakhir dari sekuens dengan bentuk(batch_size, 1, hidden_size)yang dioutput.past_key_values (
EncoderDecoderCache, opsional, dikembalikan ketikause_cache=Truediteruskan atau ketikaconfig.use_cache=True) — Ini adalah instance EncoderDecoderCache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Mengandung hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan (lihat input
past_key_values) untuk mempercepat decoding berurutan.decoder_hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states dari decoder pada output setiap layer ditambah output embedding awal yang opsional.
decoder_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
cross_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari lapisan cross-attention decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.
encoder_last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir dari encoder model.encoder_hidden_states (
tuple(torch.Tensor), opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states dari encoder pada output setiap layer ditambah output embedding awal yang opsional.
encoder_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari encoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
Contoh:
>>> import torch
>>> from transformers import AutoFeatureExtractor, CanaryModel
>>> from datasets import load_dataset
>>> model = CanaryModel.from_pretrained("UsefulSensors/canary-tiny")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("UsefulSensors/canary-tiny")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features
>>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id
>>> last_hidden_state = model(input_features, decoder_input_ids=decoder_input_ids).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 2, 288]CanaryForConditionalGeneration
kelas transformers.CanaryForConditionalGeneration
< source >( config: CanaryConfig )
Parameter
- config (CanaryConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Canary dengan kepala pemodelan bahasa. Dapat digunakan untuk pengenalan ucapan otomatis multibahasa dan terjemahan ucapan-ke-teks.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = 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.EncoderDecoderCache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)
Parameter
- input_features (
torch.Tensordengan bentuk(batch_size, audio_length)) — Nilai float dari waveform ucapan mentah. Waveform ucapan mentah dapat diperoleh dengan memuat file audio.flacatau.wavke dalam array bertipelist[float],numpy.ndarray, atautorch.Tensor, misalnya melalui pustaka torchcodec (pip install torchcodec) atau pustaka soundfile (pip install soundfile). Untuk menyiapkan array menjadiinput_features, gunakan AutoFeatureExtractor untuk padding dan konversi menjadi tensor bertipetorch.Tensor. - attention_mask (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- decoder_input_ids (
torch.LongTensordengan bentuk(batch_size, target_sequence_length), opsional) — Indeks token dari urutan input decoder dalam kosakata. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu decoder input IDs?Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- decoder_attention_mask (
torch.LongTensordengan bentuk(batch_size, target_sequence_length), opsional) — Mask untuk menghindari pelaksanaan attention pada indeks token tertentu. Secara default, mask kausal akan digunakan, untuk memastikan model hanya dapat melihat input sebelumnya guna memprediksi masa depan. - encoder_outputs (
tuple[tuple[torch.Tensor]], opsional) — Tuple terdiri dari (last_hidden_state, opsional:hidden_states, opsional:attentions)last_hidden_statedengan bentuk(batch_size, sequence_length, hidden_size), opsional) adalah rangkaian hidden-states pada keluaran lapisan terakhir encoder. Digunakan dalam cross-attention decoder. - past_key_values (
~cache_utils.EncoderDecoderCache, opsional) — Hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - decoder_inputs_embeds (
tuple[torch.Tensor]dengan bentuk(batch_size, target_sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskandecoder_input_idsAnda dapat memilih untuk langsung meneruskan representasi tertanam. Jikapast_key_valuesdigunakan, secara opsional hanyadecoder_inputs_embedsyang perlu dimasukkan (lihatpast_key_values). Ini berguna jika Anda ingin lebih banyak kendali atas cara mengonversidecoder_input_idsindeks menjadi vektor terkait daripada matriks pencarian embedding internal model.Jika
decoder_input_idsdandecoder_inputs_embedskeduanya tidak disetel,decoder_inputs_embedsmengambil nilai dariinputs_embeds. - decoder_position_ids (
torch.LongTensordengan bentuk(batch_size, target_sequence_length)) — Indeks posisi setiap token dalam urutan input pada position embeddings. Digunakan untuk menghitung position embeddings hinggaconfig.decoder_config.max_position_embeddings - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values). - labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa yang disamarkan (masked language modeling). Indeks harus berada dalam[0, ..., config.vocab_size]atau -100 (lihat docstringinput_ids). Token dengan indeks yang disetel ke-100diabaikan (disamarkan), kerugian hanya dihitung untuk token dengan label dalam[0, ..., config.vocab_size].
Mengembalikan
Seq2SeqLMOutput atau tuple(torch.Tensor)
A Seq2SeqLMOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (CanaryConfig) dan input.
Metode forward dari CanaryForConditionalGeneration menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss pemodelan bahasa.logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax).past_key_values (
EncoderDecoderCache, opsional, dikembalikan ketikause_cache=Truediteruskan atau ketikaconfig.use_cache=True) — Ini adalah instance EncoderDecoderCache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Mengandung hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan (lihat input
past_key_values) untuk mempercepat decoding berurutan.decoder_hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states dari decoder pada output setiap layer ditambah output embedding awal.
decoder_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
cross_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari lapisan cross-attention decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.
encoder_last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir dari encoder model.encoder_hidden_states (
tuple(torch.Tensor), opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states dari encoder pada output setiap layer ditambah output embedding awal.
encoder_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari encoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
Contoh:
>>> import torch
>>> from transformers import AutoProcessor, CanaryForConditionalGeneration
>>> from datasets import load_dataset
>>> processor = AutoProcessor.from_pretrained("UsefulSensors/canary-tiny")
>>> model = CanaryForConditionalGeneration.from_pretrained("UsefulSensors/canary-tiny")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features
>>> generated_ids = model.generate(input_features, max_new_tokens=100)
>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
'Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'