Transformers documentation
SeamlessM4T
이 모델은 2023-08-22에 HF papers에 게시되었으며, 2023-10-23에 Hugging Face Transformers에 기여되었습니다.
SeamlessM4T
개요
SeamlessM4T 모델은 Meta AI의 Seamless Communication 팀이 SeamlessM4T — Massively Multilingual & Multimodal Machine Translation에서 제안했습니다.
이것은 모델의 version 1 릴리스입니다. 업데이트된 version 2 릴리스에 대해서는 Seamless M4T v2 문서를 참조하세요.
SeamlessM4T는 다양한 언어 공동체의 사람들이 음성 및 텍스트를 통해 자연스럽게 소통할 수 있도록 고품질 번역을 제공하는 모델 모음입니다.
SeamlessM4T는 별도의 모델에 의존하지 않고도 여러 작업을 수행할 수 있습니다:
- 음성-음성 번역(S2ST)
- 음성-텍스트 번역(S2TT)
- 텍스트-음성 번역(T2ST)
- 텍스트-대-텍스트 번역(T2TT)
- 자동 음성 인식(ASR)
SeamlessM4TModel은 위의 모든 작업을 수행할 수 있지만, 각 작업에는 전용 서브모델이 별도로 존재합니다.
해당 논문의 초록은 다음과 같습니다:
어떤 요소가 필요할까요? 두 언어 간 음성 번역을 돕는 도구인 Babel Fish를 만들기 위해서는? 최근 텍스트 기반 모델의 돌파구로 기계 번역의 언어 커버리지가 200개 언어를 넘어섰지만, 통합된 음성-음성 번역 모델은 아직 유사한 진전을 이루지 못했습니다. 보다 구체적으로, 기존의 음성-음성 번역 시스템은 번역을 단계적으로 수행하는 연쇄(cascaded) 시스템에 의존하여, 고품질의 통합 시스템을 구현하는 것이 어려웠습니다. 이러한 격차를 해결하기 위해, 우리는 SeamlessM4T를 소개합니다. SeamlessM4T는 최대 100개 언어에 대해 음성-음성 번역, 음성-텍스트 번역, 텍스트-음성 번역, 텍스트-텍스트 번역, 자동 음성 인식(ASR)을 지원하는 단일 모델입니다. 이를 구축하기 위해, 우리는 100만 시간의 오픈 음성 오디오 데이터를 사용하여 w2v-BERT 2.0으로 자기지도 학습(self-supervised) 음성 표현을 학습했습니다. 이후, 자동으로 정렬된 음성 번역으로 구성된 멀티모달 코퍼스를 생성했습니다. 이를 필터링하고 인간 라벨링 데이터 및 의사 라벨링(pseudo-labeled) 데이터와 결합하여, 음성 및 텍스트 모두에서 영어로 번역하고 영어에서 번역할 수 있는 첫 번째 다국어 시스템을 개발했습니다. FLEURS 벤치마크에서 SeamlessM4T는 여러 대상 언어로의 번역에 대해 새로운 기준을 설정하며, 직접적인 음성-텍스트 번역에서 이전 SOTA 대비 20% BLEU 향상을 달성했습니다. 강력한 연쇄 모델과 비교할 때, SeamlessM4T는 음성-텍스트에서 영어로 번역하는 품질을 1.3 BLEU 포인트, 음성-음성에서 2.6 ASR-BLEU 포인트 향상시킵니다. 견고성(robustness)을 테스트한 결과, 우리의 시스템은 현재 SOTA 모델에 비해 음성-텍스트 작업에서 배경 소음과 화자 변화에 대해 더 나은 성능을 보였습니다. 특히, 우리는 SeamlessM4T를 성별 편향과 추가된 독성(toxicity)에 대해 평가하여 번역의 안전성을 평가했습니다. 마지막으로, 이 작업의 모든 기여는 오픈소스로 공개되어 있으며 https://github.com/facebookresearch/seamless_communication에서 접근할 수 있습니다.
사용
먼저, 프로세서와 모델의 체크포인트를 로드합니다:
from transformers import AutoProcessor, SeamlessM4TModel
processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
model = SeamlessM4TModel.from_pretrained("facebook/hf-seamless-m4t-medium", device_map="auto")이 모델은 텍스트 또는 오디오에 대해 자연스럽게 사용할 수 있으며, 번역된 텍스트나 번역된 오디오를 생성할 수 있습니다.
프로세서를 사용하여 텍스트와 오디오를 처리하는 방법은 다음과 같습니다:
# 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 test as well
text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt").to(model.device)음성
SeamlessM4TModel은 거의 또는 전혀 변경하지 않고도 텍스트나 음성 생성을 매끄럽게 수행할 수 있습니다. 러시아어 음성 번역을 목표로 해 보겠습니다:
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()거의 동일한 코드로 영어 텍스트와 아랍어 음성에서 러시아어 음성 샘플로 번역했습니다.
텍스트
마찬가지로, 동일한 모델로 오디오 파일이나 텍스트에서 번역된 텍스트를 생성할 수 있습니다. SeamlessM4TModel.generate()에 generate_speech=False를 전달하기만 하면 됩니다.
이번에는 프랑스어로 번역해 보겠습니다.
# 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)팁
1. 전용 모델 사용
SeamlessM4TModel은 음성 및 텍스트를 생성하기 위한 transformers의 최상위 모델입니다. 하지만 추가 구성 요소 없이 해당 작업을 수행하는 전용 모델을 사용하면 메모리 사용량을 줄일 수도 있습니다. 예를 들어, 오디오-오디오 생성 스니펫을 S2ST 작업에 특화된 모델로 대체할 수 있으며, 나머지 코드는 완전히 동일합니다:
from transformers import SeamlessM4TForSpeechToSpeech
model = SeamlessM4TForSpeechToSpeech.from_pretrained("facebook/hf-seamless-m4t-medium", device_map="auto")또는 텍스트-텍스트 생성 스니펫을 T2TT 작업에 특화된 모델로 교체할 수 있으며, 이 경우 generate_speech=False만 제거하면 됩니다.
from transformers import SeamlessM4TForTextToText
model = SeamlessM4TForTextToText.from_pretrained("facebook/hf-seamless-m4t-medium", device_map="auto")SeamlessM4TForSpeechToText와 SeamlessM4TForTextToSpeech도 자유롭게 사용해 보세요.
2. 화자 ID 변경
spkr_id 인수를 사용하여 음성 합성에 사용할 화자를 변경할 수 있습니다. 일부 언어의 경우 특정 spkr_id가 다른 것보다 더 잘 작동합니다!
3. 생성 전략 변경
음성 및 텍스트 생성에 서로 다른 생성 전략을 사용할 수 있습니다. 예를 들어 .generate(input_ids=input_ids, text_num_beams=4, speech_do_sample=True)를 사용하면 텍스트 모델에서는 beam-search 디코딩을, 음성 모델에서는 다항 분포 샘플링을 순차적으로 수행합니다.
4. 음성 및 텍스트를 동시에 생성
return_intermediate_token_ids=True를 SeamlessM4TModel과 함께 사용하면 음성 및 텍스트를 모두 반환합니다!
모델 아키텍처
SeamlessM4T는 텍스트와 음성 순차 생성을 매끄럽게 처리하는 다재다능한 아키텍처를 갖추고 있습니다. 이 구성은 두 개의 sequence-to-sequence (seq2seq) 모델로 이루어져 있습니다. 첫 번째 모델은 입력 모달리티를 번역된 텍스트로 변환하고, 두 번째 모델은 번역된 텍스트에서 음성 토큰인 'unit tokens'를 생성합니다.
각 모달리티는 고유한 아키텍처를 가진 전용 인코더를 사용합니다. 또한 음성 출력을 위해, HiFi-GAN 아키텍처에서 영감을 받은 보코더가 두 번째 seq2seq 모델 위에 배치됩니다.
생성 과정은 다음과 같이 작동합니다:
- 입력 텍스트 또는 음성 데이터는 해당 인코더를 통해 처리됩니다.
- 디코더는 원하는 언어의 텍스트 토큰을 생성합니다.
- 음성 생성이 필요한 경우, 표준 인코더-디코더 구조를 따르는 두 번째 seq2seq 모델이 unit token을 생성합니다.
- 이러한 unit token은 최종 vocoder를 통과하여 실제 음성으로 생성됩니다.
이 모델은 ylacombe님이 기여했습니다. 원본 코드는 여기에서 찾을 수 있습니다.
SeamlessM4TModel
class transformers.SeamlessM4TModel
< source >( config: SeamlessM4TConfigcurrent_modality = 'text' )
매개변수
- config (SeamlessM4TConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
- current_modality (
str, 선택 사항, 기본값"text") — 기본 모달리티입니다. 모델 초기화에 사용됩니다.
SeamlessM4T의 원래 모델 transformer로, 사용 가능한 모든 작업(S2ST, S2TT, T2TT, T2ST)에 사용할 수 있습니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
generate
< source >( input_ids: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespkr_id: int | None = 0generate_speech: bool | None = True**kwargs ) → Union[SeamlessM4TGenerationOutput, tuple[Tensor], ModelOutput]
매개변수
- input_ids (
torch.LongTensor의 형태(batch_size, sequence_length), , 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다.SeamlessM4TTokenizer 또는 SeamlessM4TProcessor를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- input_features (
torch.Tensor, shape(batch_size, sequence_length, num_banks), 선택 사항) — 입력 오디오 특징입니다. SeamlessM4TFeatureExtractor 클래스 또는 SeamlessM4TProcessor 클래스에서 반환된 값이어야 합니다. 자세한 내용은 SeamlessM4TFeatureExtractor.call()를 참조하세요. - return_intermediate_token_ids (
bool, 선택 사항) —True인 경우, 중간 생성 텍스트와 유닛 토큰도 반환합니다. 오디오와 함께 번역된 텍스트도 얻고 싶다면True로 설정하세요.generate_speech=False인 경우 이 매개변수는 무시되고 텍스트 토큰이 반환됩니다. - tgt_lang (
str, 선택 사항) — 번역의 대상 언어로 사용할 언어입니다. - spkr_id (
int, 선택 사항, 기본값 0) — 음성 합성에 사용되는 화자의 id입니다.config.vocoder_num_spkrs보다 작아야 합니다. - generate_speech (
bool, 선택 사항, 기본값True) —False인 경우, 텍스트 토큰만 반환하고 음성 생성을 수행하지 않습니다. - kwargs (선택 사항) —
로 전달되는 나머지 키워드 인자 딕셔너리 GenerationMixin.generate(). 키워드 인자는 두 가지 유형이 있습니다:
접두사가 없는 경우, decoder_input_ids를 제외하고 각 서브 모델의 generate 메서드에 **kwargs로 입력됩니다. decoder_input_ids는 텍스트 컴포넌트에만 전달됩니다. text_ 또는 speech_ 접두사가 있는 경우, 각각 텍스트 모델과 음성 모델의 generate 메서드에 입력됩니다. 접두사가 없는 키워드보다 우선순위가 높습니다. 즉, 한 가지 생성에는 생성 전략을 지정하고 다른 생성에는 지정하지 않는 등의 작업이 가능합니다.
- 접두사가 없으면 각 서브모델의
generate메서드에**kwargs로 입력되며,decoder_input_ids는 텍스트 컴포넌트를 통해서만 전달됩니다. - text_ 또는 speech_ 접두사가 있는 경우, 각각 텍스트 모델과 음성 모델의
generate메서드에 입력으로 사용됩니다. 접두사가 없는 키워드보다 우선순위가 높습니다.
즉, 예를 들어 한 생성에는 생성 전략을 지정하고 다른 생성에는 지정하지 않을 수 있습니다.
- 접두사가 없으면 각 서브모델의
반환값
Union[SeamlessM4TGenerationOutput, tuple[Tensor], ModelOutput]
generate_speech와return_intermediate_token_ids가 True인 경우,SeamlessM4TGenerationOutput를 반환합니다.generate_speech가 호출되고return_intermediate_token_ids가 False인 경우,(batch_size, sequence_length)형태의 웨이브폼과 각 샘플의 길이를 나타내는waveform_lengths로 구성된 튜플을 반환합니다.generate_speech=False인 경우ModelOutput를 반환합니다.
번역된 토큰 ID 및/또는 번역된 오디오 웨이브폼을 생성합니다.
이 메서드는 두 개의 서로 다른 서브모델의
.generate함수를 순차적으로 호출합니다. 두 가지 수준에서 키워드 인수를 지정할 수 있습니다. 두 모델 모두에 전달되는 일반 인수를 지정하거나, 둘 중 하나에만 전달되는 접두사가 붙은 인수를 지정할 수 있습니다.예를 들어,
.generate(input_ids=input_ids, num_beams=4, speech_do_sample=True)를 호출하면 텍스트 모델에는 beam-search decoding을, 음성 모델에는 multinomial beam-search sampling을 순차적으로 수행합니다.생성 전략 개요와 코드 예제는 다음 가이드를 참고하세요.
SeamlessM4TForTextToSpeech
class transformers.SeamlessM4TForTextToSpeech
< source >( config: SeamlessM4TConfig )
매개변수
- config (SeamlessM4TConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
T2ST에 사용할 수 있는 텍스트-음성 변환 SeamlessM4T 모델 transformer입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
generate
< source >( input_ids: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespkr_id: int | None = 0**kwargs ) → Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
매개변수
- input_ids (
torch.LongTensor의 형태(batch_size, sequence_length)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. SeamlessM4TTokenizer 또는 SeamlessM4TProcessor를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()을 참조하세요. input ID란 무엇인가요?SeamlessM4TTokenizer 또는 SeamlessM4TProcessor를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- return_intermediate_token_ids (
bool, 선택 사항) —True인 경우, 중간 생성 텍스트와 유닛 토큰도 반환합니다. 오디오와 함께 번역된 텍스트도 얻고 싶다면True로 설정하세요. - tgt_lang (
str, 선택 사항) — 번역의 대상 언어로 사용할 언어입니다. - spkr_id (
int, 선택 사항, 기본값 0) — 음성 합성에 사용되는 화자의 id입니다.config.vocoder_num_spkrs보다 작아야 합니다. - kwargs (선택 사항) —
로 전달되는 나머지 키워드 인자 딕셔너리 GenerationMixin.generate(). 키워드 인자는 두 가지 유형이 있습니다:
접두사가 없는 경우, decoder_input_ids를 제외하고 각 서브 모델의 generate 메서드에 **kwargs로 입력됩니다. decoder_input_ids는 텍스트 컴포넌트에만 전달됩니다. text_ 또는 speech_ 접두사가 있는 경우, 각각 텍스트 모델과 음성 모델의 generate 메서드에 입력됩니다. 접두사가 없는 키워드보다 우선순위가 높습니다. 즉, 한 가지 생성에는 생성 전략을 지정하고 다른 생성에는 지정하지 않는 등의 작업이 가능합니다.
- 접두사가 없으면 각 서브모델의
generate메서드에**kwargs로 입력되며,decoder_input_ids는 텍스트 컴포넌트를 통해서만 전달됩니다. - text_ 또는 speech_ 접두사가 있는 경우, 각각 텍스트 모델과 음성 모델의
generate메서드에 입력으로 사용됩니다. 접두사가 없는 키워드보다 우선순위가 높습니다.
즉, 예를 들어 한 생성에는 생성 전략을 지정하고 다른 생성에는 지정하지 않을 수 있습니다.
- 접두사가 없으면 각 서브모델의
반환값
Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
return_intermediate_token_ids가 True인 경우,SeamlessM4TGenerationOutput를 반환합니다.return_intermediate_token_ids가 False인 경우,(batch_size, sequence_length)형태의 웨이브폼과 각 샘플의 길이를 나타내는waveform_lengths로 구성된 튜플을 반환합니다.
번역된 오디오 웨이브폼을 생성합니다.
이 메서드는 두 개의 서로 다른 서브모델의
.generate함수를 순차적으로 호출합니다. 두 가지 수준에서 키워드 인수를 지정할 수 있습니다. 두 모델 모두에 전달되는 일반 인수를 지정하거나, 둘 중 하나에만 전달되는 접두사가 붙은 인수를 지정할 수 있습니다.예를 들어,
.generate(input_ids, num_beams=4, speech_do_sample=True)를 호출하면 텍스트 모델에는 beam-search decoding을, 음성 모델에는 multinomial beam-search sampling을 순차적으로 수행합니다.생성 전략 개요와 코드 예제는 다음 가이드를 참고하세요.
SeamlessM4TForSpeechToSpeech
class transformers.SeamlessM4TForSpeechToSpeech
< source >( config: SeamlessM4TConfig )
매개변수
- config (SeamlessM4TConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
S2ST에 사용할 수 있는 음성-음성 SeamlessM4T 모델 transformer입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
generate
< source >( input_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespkr_id: int | None = 0**kwargs ) → Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
매개변수
- input_features (
torch.Tensor, shape(batch_size, sequence_length, num_banks)) — 입력 오디오 특징입니다. SeamlessM4TFeatureExtractor 클래스 또는 SeamlessM4TProcessor 클래스에서 반환된 값이어야 합니다. 자세한 내용은 SeamlessM4TFeatureExtractor.call()를 참고하세요. - return_intermediate_token_ids (
bool, 선택 사항) —True인 경우, 중간 생성 텍스트와 유닛 토큰도 반환합니다. 오디오와 함께 번역된 텍스트도 얻고 싶다면True로 설정하세요. - tgt_lang (
str, 선택 사항) — 번역의 대상 언어로 사용할 언어입니다. - spkr_id (
int, 선택 사항, 기본값 0) — 음성 합성에 사용되는 화자의 id입니다.config.vocoder_num_spkrs보다 작아야 합니다. - kwargs (선택 사항) —
로 전달되는 나머지 키워드 인자 딕셔너리 GenerationMixin.generate(). 키워드 인자는 두 가지 유형이 있습니다:
접두사가 없는 경우, decoder_input_ids를 제외하고 각 서브 모델의 generate 메서드에 **kwargs로 입력됩니다. decoder_input_ids는 텍스트 컴포넌트에만 전달됩니다. text_ 또는 speech_ 접두사가 있는 경우, 각각 텍스트 모델과 음성 모델의 generate 메서드에 입력됩니다. 접두사가 없는 키워드보다 우선순위가 높습니다. 즉, 한 가지 생성에는 생성 전략을 지정하고 다른 생성에는 지정하지 않는 등의 작업이 가능합니다.
- 접두사가 없으면 각 서브모델의
generate메서드에**kwargs로 입력되며,decoder_input_ids는 텍스트 컴포넌트를 통해서만 전달됩니다. - text_ 또는 speech_ 접두사가 있는 경우, 각각 텍스트 모델과 음성 모델의
generate메서드에 입력으로 사용됩니다. 접두사가 없는 키워드보다 우선순위가 높습니다.
즉, 예를 들어 한 생성에는 생성 전략을 지정하고 다른 생성에는 지정하지 않을 수 있습니다.
- 접두사가 없으면 각 서브모델의
반환값
Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
return_intermediate_token_ids가 True인 경우,SeamlessM4TGenerationOutput를 반환합니다.return_intermediate_token_ids가 False인 경우,(batch_size, sequence_length)형태의 웨이브폼과 각 샘플의 길이를 나타내는waveform_lengths로 구성된 튜플을 반환합니다.
번역된 오디오 웨이브폼을 생성합니다.
이 메서드는 두 개의 서로 다른 서브모델의
.generate함수를 순차적으로 호출합니다. 두 가지 수준에서 키워드 인수를 지정할 수 있습니다. 두 모델 모두에 전달되는 일반 인수를 지정하거나, 둘 중 하나에만 전달되는 접두사가 붙은 인수를 지정할 수 있습니다.예를 들어,
.generate(input_features, num_beams=4, speech_do_sample=True)를 호출하면 텍스트 모델에는 beam-search decoding을, 음성 모델에는 multinomial beam-search sampling을 순차적으로 수행합니다.생성 전략 개요와 코드 예제는 다음 가이드를 참고하세요.
SeamlessM4TForTextToText
class transformers.SeamlessM4TForTextToText
< source >( config: SeamlessM4TConfig )
매개변수
- config (SeamlessM4TConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
T2TT에 사용할 수 있는 텍스트-대-텍스트 SeamlessM4T Model transformer입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
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)
매개변수
- input_ids (
torch.LongTensor형상이(batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- decoder_input_ids (
torch.LongTensorshape(batch_size, target_sequence_length), 선택 사항) — 어휘(decoder input sequence) 토큰의 인덱스입니다. 인덱스는 AutoTokenizer를 사용하여 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()을 참조하세요. decoder input ID란 무엇인가요? Bart는 decoder_input_ids 생성의 시작 토큰으로 eos_token_id를 사용합니다. past_key_values를 사용하는 경우, 선택적으로 마지막 decoder_input_ids만 입력하면 됩니다(past_key_values 참조). 번역 및 요약 학습의 경우 decoder_input_ids를 제공해야 합니다. decoder_input_ids가 제공되지 않으면, 해당 논문에 따라 노이즈 제거 사전 학습을 위해 input_ids를 오른쪽으로 이동시켜 이 텐서를 생성합니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
Bart는
decoder_input_ids생성의 시작 토큰으로eos_token_id를 사용합니다.past_key_values를 사용하는 경우, 선택적으로 마지막decoder_input_ids만 입력하면 됩니다(past_key_values참조).번역 및 요약 학습을 위해
decoder_input_ids를 제공해야 합니다.decoder_input_ids가 제공되지 않으면, 해당 논문에 따라 노이즈 제거 사전 학습을 위해input_ids를 오른쪽으로 이동시켜 이 텐서를 생성합니다. - decoder_attention_mask (
torch.LongTensor다음 형태의(batch_size, target_sequence_length), 선택 사항) — 기본 동작:decoder_input_ids. 의 pad 토큰을 무시하는 텐서를 생성합니다. 기본값으로 Causal mask도 사용됩니다. 패딩 동작을 변경하려면 modeling_bart._prepare_decoder_attention_mask를 읽고 필요에 맞게 수정해야 합니다. 기본 전략에 대한 자세한 내용은 논문에서 다이어그램 1을 참고하세요.패딩 동작을 변경하려면
modeling_bart._prepare_decoder_attention_mask를 읽고 필요에 맞게 수정해야 합니다. 기본 전략에 대한 자세한 정보는 논문의 다이어그램 1을 참고하세요. - encoder_outputs (
tuple[tuple[torch.Tensor]], 선택 사항) — (last_hidden_state, 선택 사항:hidden_states, 선택 사항:attentions)으로 구성된 Tuple입니다.last_hidden_state의 shape은(batch_size, sequence_length, hidden_size), 선택 사항)이며, 인코더의 마지막 레이어 출력에서 생성된 hidden-states의 시퀀스입니다. 디코더의 cross-attention에 사용됩니다. - past_key_values (
~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는past_key_values디코딩의 이전 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - inputs_embeds (
torch.Tensor형상이(batch_size, sequence_length, hidden_size), 선택 사항) — 선택적으로,input_ids대신 임베딩된 표현을 직접 전달할 수 있습니다. 이는input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 모델 내부 임베딩 조회 행렬보다 더 많은 제어가 필요할 때 유용합니다.labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항): 마스크 언어 모델링 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[-100, 0, ..., config.vocab_size]범위여야 합니다(input_idsdocstring 참조). 인덱스가-100으로 설정된 토큰은 무시(마스크)되며, 손실은 라벨이[0, ..., config.vocab_size]범위에 있는 토큰에 대해서만 계산됩니다. - decoder_inputs_embeds (
torch.Tensor형상(batch_size, target_sequence_length, hidden_size), 선택 사항) — 선택적으로,decoder_input_ids대신에 임베딩된 표현을 직접 전달할 수 있습니다.past_key_values이 사용되면, 선택적으로 마지막decoder_inputs_embeds만 입력하면 됩니다(참고:past_key_values). 이는decoder_input_ids인덱스를 관련 벡터로 변환하는 방식을 모델의 내부 임베딩 조회 행렬보다 더 세밀하게 제어하려는 경우에 유용합니다.decoder_input_ids와decoder_inputs_embeds가 모두 설정되지 않은 경우,decoder_inputs_embeds는inputs_embeds의 값을 가져옵니다. - labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항) — 마스크 언어 모델링 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.vocab_size]범위 내의 값이거나 -100이어야 합니다(input_idsdocstring 참조). 인덱스가-100으로 설정된 토큰은 무시(마스크)되며, 손실은[0, ..., config.vocab_size]범위의 라벨을 가진 토큰에 대해서만 계산됩니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
Seq2SeqLMOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 Seq2SeqLMOutput입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우에도 동일합니다. 구성(SeamlessM4TConfig)과 입력에 따라 다양한 요소를 포함합니다.
SeamlessM4TForTextToText의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 언어 모델링 손실.logits (
torch.Tensor, shape(batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).past_key_values (
EncoderDecoderCache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — EncoderDecoderCache 인스턴스입니다. 자세한 내용은 kv 캐시 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value)를 포함합니다(입력
past_key_values참조).decoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 디코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
decoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 decoder의 attention 가중치입니다.
cross_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
encoder_last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 모델 인코더의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.encoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되었거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 인코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
encoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 인코더 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
매개변수
- input_ids (
torch.Tensor모달리티에 따라 형태가 달라지는 선택 사항) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다.SeamlessM4TTokenizer 또는 SeamlessM4TProcessor를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- tgt_lang (
str, 선택 사항) — 번역의 대상 언어로 사용할 언어입니다. - generation_config (
~generation.GenerationConfig, 선택) — 생성 호출의 기본 파라미터화로 사용할 생성 구성입니다.**kwargs로 전달된 값 중generation_config의 속성과 일치하는 값은 해당 속성을 덮어씁니다.generation_config가 제공되지 않으면 기본값이 사용되며, 이 기본값은 다음 우선순위로 로드됩니다. 1)generation_config.json모델 파일이 존재하는 경우 해당 파일에서; 2) 모델 구성에서. 명시되지 않은 파라미터는 GenerationConfig의 기본값을 상속받으므로, 생성을 파라미터화하려면 해당 문서에서 기본값을 확인하시기 바랍니다. - logits_processor (
LogitsProcessorList, 선택) — 인자와 generation config에서 기본으로 생성되는 logits processor를 보완하는 사용자 정의 logits processor입니다. 인자나 generation config로 이미 생성된 logit processor를 전달하면 오류가 발생합니다. 이 기능은 고급 사용자를 위해 제공됩니다. - stopping_criteria (
StoppingCriteriaList, 선택 사항) — 인자와 generation config에서 기본으로 생성되는 stopping criteria를 보완하는 사용자 정의 stopping criteria입니다. 인자 또는 generation config로 이미 생성된 stopping criteria가 전달되면 오류가 발생합니다. 이 기능은 고급 사용자를 대상으로 합니다. - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], 선택) — 지정된 경우, 이 함수는 각 단계에서 beam search를 허용된 토큰으로만 제한합니다. 지정되지 않으면 제약이 적용되지 않습니다. 이 함수는 두 개의 인수를 받습니다: 배치 IDbatch_id와input_ids. 배치 IDbatch_id와 이전에 생성된 토큰inputs_ids에 조건부인 다음 생성 단계에 허용되는 토큰의 목록을 반환해야 합니다. 이 인수는 Autoregressive Entity Retrieval에 설명된 바와 같이 접두사에 조건부인 제약 생성에 유용합니다. - synced_gpus (
bool, 선택 사항, 기본값False) —FullyShardedDataParallel및 DeepSpeed ZeRO Stage 3에서 데드락을 방지하기 위해 max_length까지 while 루프를 계속 실행할지 여부. - kwargs (
dict[str, Any], 선택) —generate_config의 즉석 파라미터화 및/또는 모델의forward함수로 전달되는 모델 특정 추가 kwargs입니다.
반환값
ModelOutput 또는 torch.LongTensor
return_dict_in_generate=True인 경우 또는 config.return_dict_in_generate=True인 경우 ModelOutput, 아니면 torch.Tensor입니다. 가능한 ModelOutput 유형은 다음과 같습니다:
토큰 ID의 시퀀스를 생성합니다.
대부분의 생성 제어 매개변수는
generation_config에 설정되며, 전달되지 않으면 모델의 기본 생성 구성으로 설정됩니다.generation_config의 항목은 generate()에 해당 매개변수를 전달하여 오버라이드할 수 있습니다. 예를 들어.generate(inputs, num_beams=4, do_sample=True)와 같이 사용할 수 있습니다.생성 전략 개요와 코드 예제는 다음 가이드를 참고하세요.
SeamlessM4TForSpeechToText
클래스 transformers.SeamlessM4TForSpeechToText
< source >( config: SeamlessM4TConfig )
매개변수
- config (SeamlessM4TConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
S2TT에 사용할 수 있는 음성-텍스트 변환 SeamlessM4T 모델 transformer입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
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)
매개변수
- input_features (
torch.Tensor, shape(batch_size, sequence_length, num_banks)) — 입력 오디오 특징입니다. SeamlessM4TFeatureExtractor 클래스 또는 SeamlessM4TProcessor 클래스에서 반환된 값이어야 합니다. 자세한 내용은 SeamlessM4TFeatureExtractor.call()를 참고하세요. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- decoder_input_ids (
torch.LongTensorshape(batch_size, target_sequence_length), 선택 사항) — 어휘(decoder input sequence) 토큰의 인덱스입니다. 인덱스는 AutoTokenizer를 사용하여 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()을 참조하세요. decoder input ID란 무엇인가요? Bart는 decoder_input_ids 생성의 시작 토큰으로 eos_token_id를 사용합니다. past_key_values를 사용하는 경우, 선택적으로 마지막 decoder_input_ids만 입력하면 됩니다(past_key_values 참조). 번역 및 요약 학습의 경우 decoder_input_ids를 제공해야 합니다. decoder_input_ids가 제공되지 않으면, 해당 논문에 따라 노이즈 제거 사전 학습을 위해 input_ids를 오른쪽으로 이동시켜 이 텐서를 생성합니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
Bart는
decoder_input_ids생성의 시작 토큰으로eos_token_id를 사용합니다.past_key_values를 사용하는 경우, 선택적으로 마지막decoder_input_ids만 입력하면 됩니다(past_key_values참조).번역 및 요약 학습을 위해
decoder_input_ids를 제공해야 합니다.decoder_input_ids가 제공되지 않으면, 해당 논문에 따라 노이즈 제거 사전 학습을 위해input_ids를 오른쪽으로 이동시켜 이 텐서를 생성합니다. - decoder_attention_mask (
torch.LongTensor다음 형태의(batch_size, target_sequence_length), 선택 사항) — 기본 동작:decoder_input_ids. 의 pad 토큰을 무시하는 텐서를 생성합니다. 기본값으로 Causal mask도 사용됩니다. 패딩 동작을 변경하려면 modeling_bart._prepare_decoder_attention_mask를 읽고 필요에 맞게 수정해야 합니다. 기본 전략에 대한 자세한 내용은 논문에서 다이어그램 1을 참고하세요.패딩 동작을 변경하려면
modeling_bart._prepare_decoder_attention_mask를 읽고 필요에 맞게 수정해야 합니다. 기본 전략에 대한 자세한 정보는 논문의 다이어그램 1을 참고하세요. - encoder_outputs (
tuple[tuple[torch.Tensor]], 선택 사항) — (last_hidden_state, 선택 사항:hidden_states, 선택 사항:attentions)으로 구성된 Tuple입니다.last_hidden_state의 shape은(batch_size, sequence_length, hidden_size), 선택 사항)이며, 인코더의 마지막 레이어 출력에서 생성된 hidden-states의 시퀀스입니다. 디코더의 cross-attention에 사용됩니다. - past_key_values (
~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는past_key_values디코딩의 이전 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - inputs_embeds (
torch.Tensor형상이(batch_size, sequence_length, hidden_size), 선택 사항) — 선택적으로,input_ids대신 임베딩된 표현을 직접 전달할 수 있습니다. 이는input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 모델 내부 임베딩 조회 행렬보다 더 많은 제어가 필요할 때 유용합니다.labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항): 마스크 언어 모델링 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[-100, 0, ..., config.vocab_size]범위여야 합니다(input_idsdocstring 참조). 인덱스가-100으로 설정된 토큰은 무시(마스크)되며, 손실은 라벨이[0, ..., config.vocab_size]범위에 있는 토큰에 대해서만 계산됩니다. - decoder_inputs_embeds (
torch.Tensor형상(batch_size, target_sequence_length, hidden_size), 선택 사항) — 선택적으로,decoder_input_ids대신에 임베딩된 표현을 직접 전달할 수 있습니다.past_key_values이 사용되면, 선택적으로 마지막decoder_inputs_embeds만 입력하면 됩니다(참고:past_key_values). 이는decoder_input_ids인덱스를 관련 벡터로 변환하는 방식을 모델의 내부 임베딩 조회 행렬보다 더 세밀하게 제어하려는 경우에 유용합니다.decoder_input_ids와decoder_inputs_embeds가 모두 설정되지 않은 경우,decoder_inputs_embeds는inputs_embeds의 값을 가져옵니다. - labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항) — 마스크 언어 모델링 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.vocab_size]범위 내의 값이거나 -100이어야 합니다(input_idsdocstring 참조). 인덱스가-100으로 설정된 토큰은 무시(마스크)되며, 손실은[0, ..., config.vocab_size]범위의 라벨을 가진 토큰에 대해서만 계산됩니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
Seq2SeqLMOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 Seq2SeqLMOutput입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우에도 동일합니다. 구성(SeamlessM4TConfig)과 입력에 따라 다양한 요소를 포함합니다.
SeamlessM4TForSpeechToText의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 언어 모델링 손실.logits (
torch.Tensor, shape(batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).past_key_values (
EncoderDecoderCache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — EncoderDecoderCache 인스턴스입니다. 자세한 내용은 kv 캐시 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value)를 포함합니다(입력
past_key_values참조).decoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 디코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
decoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 decoder의 attention 가중치입니다.
cross_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
encoder_last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 모델 인코더의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.encoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되었거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 인코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
encoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 인코더 attention 가중치입니다.
예:
>>> from transformers import AutoProcessor, SeamlessM4TForSpeechToText
>>> 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 = SeamlessM4TForSpeechToText.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
매개변수
- input_features (
torch.Tensor, shape(batch_size, sequence_length, num_banks)) — 입력 오디오 특징입니다. SeamlessM4TFeatureExtractor 클래스 또는 SeamlessM4TProcessor 클래스에서 반환된 값이어야 합니다. 자세한 내용은 SeamlessM4TFeatureExtractor.call()를 참고하세요. - tgt_lang (
str, 선택 사항) — 번역의 대상 언어로 사용할 언어입니다. - generation_config (
~generation.GenerationConfig, 선택) — 생성 호출의 기본 파라미터화로 사용할 생성 구성입니다.**kwargs로 전달된 값 중generation_config의 속성과 일치하는 값은 해당 속성을 덮어씁니다.generation_config가 제공되지 않으면 기본값이 사용되며, 이 기본값은 다음 우선순위로 로드됩니다. 1)generation_config.json모델 파일이 존재하는 경우 해당 파일에서; 2) 모델 구성에서. 명시되지 않은 파라미터는 GenerationConfig의 기본값을 상속받으므로, 생성을 파라미터화하려면 해당 문서에서 기본값을 확인하시기 바랍니다. - logits_processor (
LogitsProcessorList, 선택) — 인자와 generation config에서 기본으로 생성되는 logits processor를 보완하는 사용자 정의 logits processor입니다. 인자나 generation config로 이미 생성된 logit processor를 전달하면 오류가 발생합니다. 이 기능은 고급 사용자를 위해 제공됩니다. - stopping_criteria (
StoppingCriteriaList, 선택 사항) — 인자와 generation config에서 기본으로 생성되는 stopping criteria를 보완하는 사용자 정의 stopping criteria입니다. 인자 또는 generation config로 이미 생성된 stopping criteria가 전달되면 오류가 발생합니다. 이 기능은 고급 사용자를 대상으로 합니다. - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], 선택) — 지정된 경우, 이 함수는 각 단계에서 beam search를 허용된 토큰으로만 제한합니다. 지정되지 않으면 제약이 적용되지 않습니다. 이 함수는 두 개의 인수를 받습니다: 배치 IDbatch_id와input_ids. 배치 IDbatch_id와 이전에 생성된 토큰inputs_ids에 조건부인 다음 생성 단계에 허용되는 토큰의 목록을 반환해야 합니다. 이 인수는 Autoregressive Entity Retrieval에 설명된 바와 같이 접두사에 조건부인 제약 생성에 유용합니다. - synced_gpus (
bool, 선택 사항, 기본값False) —FullyShardedDataParallel및 DeepSpeed ZeRO Stage 3에서 데드락을 방지하기 위해 max_length까지 while 루프를 계속 실행할지 여부. - kwargs (
dict[str, Any], 선택) —generate_config의 즉석 파라미터화 및/또는 모델의forward함수로 전달되는 모델 특정 추가 kwargs입니다.
반환값
ModelOutput 또는 torch.LongTensor
return_dict_in_generate=True인 경우 또는 config.return_dict_in_generate=True인 경우 ModelOutput, 아니면 torch.Tensor입니다. 가능한 ModelOutput 유형은 다음과 같습니다:
토큰 ID의 시퀀스를 생성합니다.
대부분의 생성 제어 매개변수는
generation_config에 설정되며, 전달되지 않으면 모델의 기본 생성 구성으로 설정됩니다.generation_config의 항목은 generate()에 해당 매개변수를 전달하여 오버라이드할 수 있습니다. 예를 들어.generate(inputs, num_beams=4, do_sample=True)와 같이 사용할 수 있습니다.생성 전략 개요와 코드 예제는 다음 가이드를 참고하세요.
SeamlessM4TConfig
클래스 transformers.SeamlessM4TConfig
< 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 = 10082hidden_size: int = 1024initializer_range: float = 0.02layer_norm_eps: float = 1e-05use_cache: bool = Truemax_position_embeddings: int = 1024encoder_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 = 160num_conv_pos_embeddings: int = 128num_conv_pos_embedding_groups: int = 16adaptor_kernel_size: int = 8adaptor_stride: int = 8adaptor_dropout: float | int = 0.1num_adapter_layers: int = 1position_embeddings_type: str = 'relative'rotary_embedding_base: int = 10000max_source_positions: int = 4096conv_depthwise_kernel_size: int = 31t2u_bos_token_id: int | None = 0t2u_pad_token_id: int | None = 1t2u_eos_token_id: int | list[int] | None = 2t2u_decoder_start_token_id: int = 2t2u_max_new_tokens: int = 1024t2u_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 = 2048sampling_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 )
매개변수
- is_encoder_decoder (
bool, 선택 사항, 기본값True) — 모델이 인코더/디코더로 사용되는지 여부를 나타냅니다. - vocab_size (
int, 선택 사항, 기본값256102) — 모델의 어휘 크기입니다.input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다. - t2u_vocab_size (
int, 선택 사항, 기본값 10082) — SeamlessM4T 모델의 단위 어휘 크기입니다. ~SeamlessM4TModel, ~SeamlessM4TForSpeechToSpeech 또는 ~SeamlessM4TForTextToSpeech의 Text-To-Units 서브모델을 호출할 때 전달하는inputs_ids로 표현할 수 있는 서로 다른 단위 토큰의 수를 정의합니다. - hidden_size (
int, 선택 사항, 기본값1024) — 숨겨진 표현의 차원입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다. - layer_norm_eps (
float, 선택 사항, 기본값1e-05) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다. - use_cache (
bool, 선택 사항, 기본값True) — 모델이 마지막 key/values attention을 반환할지 여부입니다(모든 모델에서 사용되지 않음).config.is_decoder=True인 경우 또는 모델이 decoder-only 생성 모델인 경우에만 관련이 있습니다. - max_position_embeddings (
int, 선택 사항, 기본값1024) — 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다. - encoder_layerdrop (
Union[float, int], 선택 사항, 기본값0.05) — 인코더의 LayerDrop 확률입니다. 자세한 내용은 [LayerDrop 논문](https://huggingface.co/papers/1909.11556 참조)을 참고하세요. - decoder_layerdrop (
Union[float, int], 선택 사항, 기본값0.05) — 디코더의 LayerDrop 확률입니다. 자세한 내용은 [LayerDrop 논문](https://huggingface.co/papers/1909.11556 참조)을 참고하세요. - activation_function (
str, 선택 사항, 기본값relu) — 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어,"gelu","relu","silu"등이 있습니다. - dropout (
Union[float, int], 선택 사항, 기본값0.1) — 모든 dropout 레이어에 적용할 비율입니다. - attention_dropout (
Union[float, int], 선택 사항, 기본값0.1) — Attention 확률에 적용할 dropout 비율입니다. - activation_dropout (
Union[float, int], 선택 사항, 기본값0.0) — 완전 연결 레이어 내부 활성화에 적용할 dropout 비율입니다. - scale_embedding (
bool, 선택 사항, 기본값True) — 임베딩을 sqrt(d_model)로 나누어 스케일링할지 여부입니다. - encoder_layers (
int, 선택 사항, 기본값24) — Transformer 인코더의 숨겨진 레이어 수입니다. 설정하지 않으면num_layers와 동일한 값을 사용합니다. - encoder_ffn_dim (
int, 선택 사항, 기본값8192) — 인코더의 “중간” 레이어(일반적으로 feed-forward 레이어라고도 함)의 차원입니다. - encoder_attention_heads (
int, 선택 사항, 기본값16) — Transformer 인코더의 각 어텐션 레이어에 사용할 어텐션 헤드 수입니다. - decoder_layers (
int, 선택 사항, 기본값24) — Transformer decoder의 숨겨진 레이어 수입니다. 설정하지 않으면num_layers와 동일한 값을 사용합니다. - decoder_ffn_dim (
int, 선택 사항, 기본값8192) — decoder의 “intermediate”(일반적으로 feed-forward라고도 함) 레이어의 차원입니다. - decoder_attention_heads (
int, 선택 사항, 기본값16) — Transformer decoder의 각 attention layer에 사용할 attention head 수입니다. - decoder_start_token_id (
int, 선택 사항, 기본값3) — 인코더-디코더 모델이bos와 다른 토큰으로 디코딩을 시작하는 경우, 해당 토큰의 id입니다. - max_new_tokens (
int, 선택 사항, 기본값 256) — 프롬프트의 토큰 수를 무시하고 생성할 텍스트 토큰의 최대 개수입니다. - pad_token_id (
int, 선택 사항, 기본값0) — 어휘에서 패딩에 사용되는 토큰 ID입니다. - bos_token_id (
int, 선택 사항, 기본값2) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다. - eos_token_id (
Union[int, list[int]], 선택 사항, 기본값3) — 어휘에서 스트림 종료에 사용되는 토큰 ID입니다. - speech_encoder_layers (
int, 선택 사항, 기본값 24) — Transformer 음성 인코더의 숨겨진 레이어 수입니다. - speech_encoder_attention_heads (
int, 선택 사항, 기본값 16) — Transformer 음성 인코더의 각 어텐션 레이어에 사용할 어텐션 헤드 수입니다. - speech_encoder_intermediate_size (
int, 선택 사항, 기본값 4096) — Transformer 음성 인코더의 “intermediate”(즉, feed-forward) 레이어의 차원. - speech_encoder_hidden_act (
str또는function, 선택 사항, 기본값"swish") — 음성 인코더의 비선형 활성화 함수(함수 또는 문자열)입니다. 문자열인 경우"gelu","relu","selu","swish","gelu_new"를 지원합니다. - speech_encoder_dropout (
float, 선택 사항, 기본값 0.0) — 음성 인코더의 모든 레이어에 적용할 dropout 확률입니다. - add_adapter (
bool, 선택 사항, 기본값True) — 음성 인코더 위에 어댑터 레이어를 추가합니다. - speech_encoder_layerdrop (
float, 선택 사항, 기본값 0.1) — 음성 인코더의 LayerDrop 확률입니다. 자세한 내용은 [LayerDrop 논문](see https://huggingface.co/papers/1909.11556)을 참고하세요. - feature_projection_input_dim (
int, 선택 사항, 기본값 160) — 음성 인코더의 입력 특징 투사(input feature projection)의 입력 차원, 즉 SeamlessM4TFeatureExtractor로 입력 오디오를 처리한 후의 차원을 의미합니다. - num_conv_pos_embeddings (
int, 선택 사항, 기본값 128) — 컨볼루션 위치 임베딩의 개수입니다. 음성 인코더의 1차원 컨볼루션 위치 임베딩 레이어의 커널 크기를 정의합니다. - num_conv_pos_embedding_groups (
int, 선택 사항, 기본값 16) — 음성 인코더의 1D 합성곱 위치 임베딩 레이어의 그룹 수. - adaptor_kernel_size (
int, 선택 사항, 기본값 8) — 어댑터 네트워크의 합성곱 레이어 커널 크기입니다.add_adapter is True인 경우에만 관련이 있습니다. - adaptor_stride (
int, 선택 사항, 기본값 8) — 어댑터 네트워크의 합성곱 계층 스트라이드입니다.add_adapter is True인 경우에만 관련이 있습니다. - adaptor_dropout (
float, 선택 사항, 기본값 0.1) — 음성 어댑터의 모든 레이어에 적용되는 dropout 확률입니다. - num_adapter_layers (
int, optional, 기본값 1) — 어댑터 네트워크에서 사용할 컨볼루션 레이어의 수입니다.add_adapter is True인 경우에만 관련이 있습니다. - position_embeddings_type (
str, 선택 사항, 기본값"relative") — 상대 위치 임베딩과 로터리 위치 임베딩을 각각 지정하려면relative또는rotary로 설정할 수 있습니다.None으로 두면 상대 위치 임베딩이 적용되지 않습니다. 음성 인코더에만 적용됩니다. - rotary_embedding_base (
int, 선택 사항, 기본값 10000) —"rotary"위치 임베딩을 사용하는 경우, 임베딩 기반의 크기를 정의합니다. 음성 인코더에만 적용됩니다. - max_source_positions (
int, 선택 사항, 기본값 4096) —"relative"위치 임베딩을 사용하는 경우, 최대 소스 입력 위치를 정의합니다. 음성 인코더에만 적용됩니다. - conv_depthwise_kernel_size (
int, 선택 사항, 기본값 31) — Conformer 블록의 convolutional depthwise 1D 레이어의 kernel size입니다. 음성 인코더에만 적용됩니다. - t2u_bos_token_id (
int, 선택 사항, 기본값 0) — 스트림 시작 유닛 토큰의 id입니다. 텍스트-투-유닛 seq2seq 모델에만 적용됩니다. - t2u_pad_token_id (
int, 선택 사항, 기본값 1) — padding 유닛 토큰의 id입니다. 텍스트-투-유닛 seq2seq 모델에만 적용됩니다. - t2u_eos_token_id (
int, 선택 사항, 기본값 2) — 스트림 종료 유닛 토큰의 id입니다. 텍스트-투-유닛 seq2seq 모델에만 적용됩니다. - t2u_decoder_start_token_id (
int, 선택 사항, 기본값 2) — 인코더-디코더 모델이 bos와 다른 토큰으로 디코딩을 시작하는 경우, 해당 토큰의 id입니다. 텍스트-투-유닛 seq2seq 모델에만 적용됩니다. - t2u_max_new_tokens (
int, 선택 사항, 기본값 1024) — 프롬프트의 토큰 수를 무시하고 생성할 최대 단위 토큰 수입니다. text-to-unit seq2seq 모델에만 적용됩니다. - t2u_encoder_layers (
int, 선택 사항, 기본값 6) — Transformer 텍스트-단위 인코더의 숨겨진 레이어 수입니다. - t2u_encoder_ffn_dim (
int, 선택 사항, 기본값 8192) — Transformer text-to-unit 인코더의 “intermediate”(즉, feed-forward) 레이어의 차원. - t2u_encoder_attention_heads (
int, 선택 사항, 기본값 16) — Transformer text-to-unit 인코더의 각 attention layer에 사용할 attention head 수입니다. - t2u_decoder_layers (
int, 선택 사항, 기본값 6) — Transformer 텍스트-단위 디코더의 숨겨진 레이어 수입니다. - t2u_decoder_ffn_dim (
int, 선택 사항, 기본값 8192) — Transformer text-to-unit decoder의 “intermediate”(즉, feed-forward) 레이어의 차원. - t2u_decoder_attention_heads (
int, 선택 사항, 기본값 16) — Transformer text-to-unit decoder의 각 attention layer에 사용할 attention head 수입니다. - t2u_max_position_embeddings (
int, 선택 사항, 기본값 2048) — 이 모델의 text-to-unit 구성 요소가 사용될 수 있는 최대 시퀀스 길이입니다. 혹시 모를 상황에 대비하여 일반적으로 큰 값(예: 512, 1024, 2048)으로 설정합니다. - sampling_rate (
int, 선택 사항, 기본값16000) — 오디오 파일을 디지털화할 때 사용할 샘플링 주파수입니다. 헤르츠(Hz) 단위로 표시됩니다. - upsample_initial_channel (
int, 선택 사항, 기본값 512) — hifi-gan 업샘플링 네트워크로 입력되는 채널 수입니다. 보코더에만 적용됩니다. - upsample_rates (
tuple[int]또는list[int], 선택 사항, 기본값[5, 4, 4, 2, 2]) — vocoder 업샘플링 네트워크의 각 1D 합성곱 계층의 스트라이드를 정의하는 정수 튜플입니다. upsample_rates의 길이는 합성곱 계층의 수를 정의하며 upsample_kernel_sizes의 길이와 일치해야 합니다. vocoder에만 적용됩니다. - upsample_kernel_sizes (
tuple[int]또는list[int], 선택 사항, 기본값[11, 8, 8, 4, 4]) — vocoder 업샘플링 네트워크의 각 1D 합성곱 계층의 커널 크기를 정의하는 정수 튜플입니다. upsample_kernel_sizes의 길이는 합성곱 계층의 수를 정의하며, upsample_rates의 길이와 일치해야 합니다. vocoder에만 적용됩니다. - resblock_kernel_sizes (
tuple[int]또는list[int], 선택 사항, 기본값[3, 7, 11]) — 멀티 리셉티브 필드 퓨전(MRF) 모듈에서 보코더의 1D 합성곱 계층 커널 크기를 정의하는 정수 튜플입니다. 보코더에만 적용됩니다. - resblock_dilation_sizes (
tuple[tuple[int]]또는list[list[int]], 선택 사항, 기본값[[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — 멀티 리셉티브 필드 퓨전(MRF) 모듈의 보코더 dilated 1D convolutional layer의 dilation rate를 정의하는 정수의 중첩 tuple입니다. 보코더에만 적용됩니다. - leaky_relu_slope (
float, 선택 사항, 기본값 0.1) — vocoder에서 leaky ReLU 활성화 함수에 사용되는 음의 기울기의 각도입니다. vocoder에만 적용됩니다. - unit_hifi_gan_vocab_size (
int, 선택 사항, 기본값 10000) — SeamlessM4T 보코더의 어휘 크기입니다. ~SeamlessM4TModel, ~SeamlessM4TForSpeechToSpeech 또는 ~SeamlessM4TForTextToSpeech의 보코더를 호출할 때 전달하는inputs_ids로 표현할 수 있는 서로 다른 유닛 토큰의 수를 정의합니다. - unit_embed_dim (
int, 선택 사항, 기본값 1280) — hifi-gan 보코더에 전달되는 입력 id의 투영 차원입니다. 보코더에만 적용됩니다. - lang_embed_dim (
int, 선택 사항, 기본값 256) — hifi-gan 보코더에 전달되는 대상 언어의 투영 차원입니다. 보코더에만 적용됩니다. - spkr_embed_dim (
int, 선택 사항, 기본값 256) — hifi-gan 보코더에 전달되는 스피커 ID의 투영 차원입니다. 보코더에만 적용됩니다. - vocoder_num_langs (
int, 선택 사항, 기본값 36) — vocoder가 지원하는 언어의 수입니다.t2u_num_langs와 다를 수 있습니다. - vocoder_num_spkrs (
int, 선택 사항, 기본값 200) — vocoder가 지원하는 화자 수입니다. - variance_predictor_kernel_size (
int, 선택 사항, 기본값 3) — Duration predictor의 kernel size입니다. vocoder에만 적용됩니다. - var_pred_dropout (
float, 선택 사항, 기본값 0.5) — 길이 예측기의 dropout 확률입니다. vocoder에만 적용됩니다. - vocoder_offset (
int, 선택 사항, 기본값 4) — 심볼 토큰을 고려하여 유닛 토큰 ID를 이 값만큼 오프셋합니다. vocoder에만 적용됩니다. - tie_word_embeddings (
bool, 선택, 기본값True) — 모델의tied_weights_keys매핑에 따라 가중치 임베딩을 묶을지 여부.
이것은 SeamlessM4TModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Seamless M4T 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 facebook/hf-seamless-m4t-medium의 구성과 유사한 구성이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
>>> from transformers import SeamlessM4TModel, SeamlessM4TConfig
>>> # Initializing a SeamlessM4T "facebook/hf-seamless-m4t-medium" style configuration
>>> configuration = SeamlessM4TConfig()
>>> # Initializing a model from the "facebook/hf-seamless-m4t-medium" style configuration
>>> model = SeamlessM4TModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configSeamlessM4TTokenizer
클래스 transformers.SeamlessM4TTokenizer
< source >( vocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = Nonebos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'src_lang = 'eng'tgt_lang = 'fra'additional_special_tokens = Nonekeep_accents = Nonevocab_file = None**kwargs )
매개변수
- vocab (
list또는dict, 선택) — (token, score) 튜플의 목록 또는 토큰을 인덱스로 매핑하는 dict입니다. 제공되지 않으면 기본 vocab을 사용합니다. - merges (
str또는list, 선택 사항) — BPE 모델용 병합 규칙 목록입니다. 제공되지 않으면 빈 목록을 사용합니다. - bos_token (
str, 선택 사항, 기본값은"<s>") — 사전 학습 시 사용된 시퀀스 시작 토큰입니다. 시퀀스 분류기 토큰으로 사용할 수 있습니다.특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스의 시작에 사용되는 토큰은 이 토큰이 아닙니다. 사용되는 토큰은
cls_token입니다. - eos_token (
str, 선택 사항, 기본값은"</s>") — 시퀀스 종료 토큰입니다. 특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 종료에 사용되는 토큰은 이 토큰이 아닙니다. 시퀀스 종료에 사용되는 토큰은 sep_token입니다.특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 끝에는 이 토큰이 사용되지 않습니다. 사용되는 토큰은
sep_token입니다. - sep_token (
str, 선택, 기본값"</s>") — 여러 시퀀스로 시퀀스를 구성할 때 사용되는 구분 토큰입니다. 예를 들어 시퀀스 분류의 두 시퀀스나 질의응답의 텍스트와 질문 등에 사용됩니다. 특수 토큰으로 구성된 시퀀스의 마지막 토큰으로도 사용됩니다. - cls_token (
str, 선택 사항, 기본값"<s>") — 시퀀스 분류(토큰별 분류가 아닌 전체 시퀀스 분류)를 수행할 때 사용되는 분류기 토큰입니다. 특수 토큰을 사용하여 시퀀스를 구성할 경우 시퀀스의 첫 번째 토큰입니다. - unk_token (
str, 선택 사항, 기본값"<unk>") — 미지의 토큰입니다. 어휘에 없는 토큰은 ID로 변환할 수 없으므로, 대신 이 토큰으로 설정됩니다. - pad_token (
str, 선택 사항, 기본값"<pad>") — 패딩에 사용되는 토큰입니다. 예를 들어, 길이가 다른 시퀀스를 배치(batching)할 때 사용됩니다. - src_lang (
str, 선택 사항, 기본값"eng") — 번역에 사용할 원본 언어입니다. - tgt_lang (
str, 선택 사항, 기본값"fra") — 번역의 대상 언어로 사용할 언어입니다. - additional_special_tokens (
str또는tokenizers.AddedToken의 tuple 또는 list, 선택 사항) — 추가 특수 토큰의 tuple 또는 list입니다.
HuggingFace의 tokenizers 라이브러리를 기반으로 하는 SeamlessM4T 토크나이저를 생성합니다. BPE를 기반으로 합니다.
이 토크나이저는 대부분의 주요 메서드를 포함하고 있는 TokenizersBackend를 상속합니다. 해당 메서드에 대한 자세한 내용은 이 상위 클래스를 참고하세요.
토큰화 방법은 소스 언어 문서의 경우 <language code> <tokens> <eos>, 대상 언어 문서의 경우 <eos> <language code> <tokens> <eos>입니다.
예:
>>> from transformers import SeamlessM4TTokenizer
>>> tokenizer = SeamlessM4TTokenizer.from_pretrained(
... "facebook/hf-seamless-m4t-medium", src_lang="eng", tgt_lang="fra"
... )
>>> example_english_phrase = " UN Chief Says There Is No Military Solution in Syria"
>>> expected_translation_french = "Le chef de l'ONU affirme qu'il n'y a pas de solution militaire en Syrie."
>>> inputs = tokenizer(example_english_phrase, text_target=expected_translation_french, return_tensors="pt")__call__
< source >( text: str | list[str] | list[list[str]] | None = Nonetext_pair: str | list[str] | list[list[str]] | None = Nonetext_target: str | list[str] | list[list[str]] | None = Nonetext_pair_target: str | list[str] | list[list[str]] | None = Nonepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsepad_to_multiple_of: int | None = Nonesrc_lang: str | None = Nonetgt_lang: str | None = None**kwargs )
매개변수
- text (
str,list[str],list[list[str]], 선택 사항) — 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 시퀀스가 문자열 목록(사전 토큰화)로 제공되는 경우,is_split_into_words=True를 설정해야 합니다(시퀀스 배치와의 모호성을 제거하기 위함). - text_pair (
str,list[str],list[list[str]], 선택 사항) — 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 시퀀스가 문자열 목록(사전 토큰화)로 제공되는 경우,is_split_into_words=True를 설정해야 합니다(시퀀스 배치와의 모호성을 제거하기 위함). - text_target (
str,list[str],list[list[str]], 선택 사항) — 타겟 텍스트로 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 시퀀스가 문자열 목록(사전 토큰화)로 제공되는 경우,is_split_into_words=True를 설정해야 합니다(시퀀스 배치와의 모호성을 제거하기 위함). - text_pair_target (
str,list[str],list[list[str]], 선택 사항) — 타겟 텍스트로 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 시퀀스가 문자열 목록(사전 토큰화)로 제공되는 경우,is_split_into_words=True를 설정해야 합니다(시퀀스 배치와의 모호성을 제거하기 위해). - padding (
bool,str또는 PaddingStrategy, 선택 사항, 기본값은False) — 모델의 패딩 방향과 패딩 인덱스에 따라 반환된 시퀀스에 적용할 패딩 전략을 다음 중 선택합니다:True또는'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).'max_length':max_length인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.False또는'do_not_pad'(기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
- pad_to_multiple_of (
int, 선택 사항, 기본값은None) — 값이 설정되면 시퀀스를 해당 값의 배수로 패딩합니다.이 기능은 컴퓨트 캐피빌리티가
>= 7.5(Volta)인 NVIDIA 하드웨어에서 Tensor Cores 사용을 활성화하는 데 특히 유용합니다. - src_lang (
str, 선택) — 원본 언어를 나타내는 문자열입니다. 지정하지 않으면 마지막에 지정된src_lang(초기화 시 또는 이 tokenizer를 호출할 때)이 사용됩니다. - tgt_lang (
str, 선택 사항) — 대상 언어를 나타내는 문자열입니다. 지정하지 않으면 마지막에 지정된tgt_lang(초기화 시 또는 이 tokenizer를 호출할 때)이 사용됩니다. - kwargs (선택) — TokenizersBackend.call()에 전달될 나머지 키워드 인자 딕셔너리.
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
…
빠른 토크나이저의 경우, 데이터 콜레이터는 이미 포맷된 시퀀스에 대한 마스크를 생성하기 위해 already_has_special_tokens=True를 전달하여 이 함수를 호출합니다. 이 경우 all_special_ids에 대한 멤버십을 확인하여 마스크를 계산합니다.
SeamlessM4TFeatureExtractor
class transformers.SeamlessM4TFeatureExtractor
< source >( feature_size = 80sampling_rate = 16000num_mel_bins = 80padding_value = 0.0stride = 2**kwargs )
매개변수
- feature_size (
int, 선택 사항, 기본값 80) — 추출된 특징의 차원입니다. - sampling_rate (
int, 선택 사항, 기본값 16000) — 오디오 파일을 디지털화할 때 사용할 샘플링 주파수(Hz). - num_mel_bins (
int, 선택 사항, 기본값 80) — Mel 주파수 빈의 수입니다. - padding_value (
float, 선택 사항, 기본값 0.0) — 패딩 벡터를 채우는 데 사용되는 값입니다. - stride (
int, 선택 사항, 기본값 2) — (batch_size,num_frames,num_mel_bins) 형태의 오디오를 (batch_size,num_frames//stride,num_mel_bins*stride) 형태로 재구성할 때 사용되는 스트라이드입니다.
SeamlessM4T feature extractor를 생성합니다.
이 feature extractor는 대부분의 주요 메서드를 포함하는 SequenceFeatureExtractor를 상속합니다. 해당 메서드에 대한 자세한 내용은 이 상위 클래스를 참고하세요.
이 클래스는 원시 음성에서 멜 필터 뱅크(mel-filter bank) 특징을 추출합니다.
__call__
< source >( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]padding: bool | str | transformers.utils.generic.PaddingStrategy = Truepad_to_multiple_of: int | None = 2max_length: int | None = Nonetruncation: bool = Falsereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonesampling_rate: int | None = Nonereturn_attention_mask: bool | None = Nonedo_normalize_per_mel_bins: bool | None = True**kwargs )
매개변수
- raw_speech (
np.ndarray,torch.Tensor,list[float],list[np.ndarray],list[torch.Tensor], — -
list[list[float]],list[list[list[float]]]) — 패딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 numpy 배열, torch 텐서, float 값의 리스트, numpy 배열의 리스트, torch 텐서의 리스트, float 값의 리스트의 리스트, 또는 float 값의 리스트의 리스트의 리스트일 수 있습니다.raw_speech가 1차원np.ndarray,torch.Tensor또는list[float]인 경우,raw_speech는 단일 채널, 단일 샘플 사운드로 간주됩니다. 그 외 모든 경우,raw_speech의 첫 번째 차원은np.ndarray,torch.Tensor또는list[...]에서든 배치 내 샘플 수를 나타내며, 채널 수 (즉, 모노 또는 스테레오 특성)은 나머지 차원에서 유도됩니다 (1D -> 단일 채널 웨이브폼 배치; 2D-> 스테레오 채널 웨이브폼 배치). - padding (
bool,str또는 PaddingStrategy, 선택 사항, 기본값은True) — 모델의 패딩 방향과 패딩 인덱스에 따라 반환된 시퀀스에 적용할 패딩 전략을 다음 중 선택합니다:True또는'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).'max_length':max_length인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.False또는'do_not_pad'(기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
- pad_to_multiple_of (
int, 선택 사항, 기본값은 2) — 설정된 경우, 시퀀스를 제공된 값의 배수로 패딩합니다.이 기능은 NVIDIA 하드웨어에서 Tensor Cores 사용을 활성화하는 데 특히 유용하며, 이는 compute capability가
>= 7.5(Volta)인 하드웨어나, 시퀀스 길이가 128의 배수일 때 성능 향상을 얻는 TPU에서 해당됩니다. - max_length (
int, 선택 사항) — 반환되는 목록의 최대 길이 및 선택적으로 패딩 길이(위 참조). - truncation (
bool) — 입력 시퀀스가 max_length보다 길 경우 max_length로 잘라내는 truncation을 활성화합니다. - return_attention_mask (
bool, 선택 사항) — attention mask를 반환할지 여부. 기본값을 그대로 두면 해당 feature_extractor의 기본 설정에 따라 attention mask를 반환합니다.SeamlessM4T 모델의 경우, 미묘한 버그를 방지하기 위해 배치 추론 시
attention_mask를 항상 전달해야 합니다. - return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, Python 정수 목록 대신 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.'np': Numpynp.ndarray객체를 반환합니다.
- sampling_rate (
int, 선택 사항) —raw_speech입력이 샘플링된 샘플링 레이트입니다. 조용한 오류를 방지하려면 forward 호출 시sampling_rate를 전달하는 것이 강력히 권장됩니다. - do_normalize_per_mel_bins (
bool, 선택 사항, 기본값True) — mel 채널별로 입력을 평균 0, 분산 1로 정규화할지 여부. - kwargs (선택) — 토크나이저 또는 feature extractor에 전달될 나머지 keyword argument 사전입니다.
하나 이상의 시퀀스를 특징화(featurize)하고 모델에 맞게 준비하는 주요 메서드입니다.
SeamlessM4TProcessor
class transformers.SeamlessM4TProcessor
< source >( feature_extractortokenizer )
SeamlessM4TProcessor를 생성하며, feature extractor와 tokenizer를 단일 processor로 래핑합니다.
SeamlessM4TProcessor는 SeamlessM4TFeatureExtractor와 SeamlessM4TTokenizer의 모든 기능을 제공합니다. 자세한 내용은 ~SeamlessM4TFeatureExtractor와 ~SeamlessM4TTokenizer를 참고하세요.
__call__
< source >( text: str | list[str] | list[list[str]] | None = Noneaudio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'> ) → BatchEncoding
매개변수
- text (
Union[str, list[str], list[list[str]]], 선택 사항) — 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 사전 토큰화된 입력을 전달하는 경우, 배치 입력과의 혼동을 피하기 위해is_split_into_words=True를 설정하세요. - audio (
Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]], 선택 사항) — 준비할 오디오 또는 오디오 배치입니다. 각 오디오는 NumPy 배열 또는 PyTorch 텐서일 수 있습니다. NumPy 배열/PyTorch 텐서의 경우, 각 오디오의 shape은 (C, T)여야 하며, 여기서 C는 채널 수, T는 오디오의 샘플 길이입니다. - return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.'np': NumPynp.ndarray객체를 반환합니다.
- **kwargs (ProcessingKwargs, 선택) — 각 모달리티(텍스트, 이미지, 비디오, 오디오)에 대한 추가 처리 옵션입니다. 모델별 매개변수는 위에 나열되어 있으며, 지원되는 인수의 전체 목록은 TypedDict 클래스를 참조하세요.
반환값
다음 필드를 가진 BatchEncoding:
- input_ids — 모델에 입력할 토큰 ID 목록.
text가None이 아닌 경우 반환됩니다. - attention_mask — 모델이 어떤 토큰에 주의를 기울여야 하는지 지정하는 인덱스 목록 (
return_attention_mask=True인 경우 또는self.model_input_names에 “attention_mask”가 포함되어 있고text가None이 아닌 경우). - input_features — 모델에 입력할 오디오 입력 특징.
audios가None이 아닐 때 반환됩니다.
SeamlessM4TCodeHifiGan
class transformers.SeamlessM4TCodeHifiGan
< source >( config: SeamlessM4TConfig )
매개변수
- config (SeamlessM4TConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
이 저장소에 설명된 HiFi-GAN 보코더를 코드로 구현합니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: LongTensorspkr_id: Tensorlang_id: Tensor**kwargs )
매개변수
- input_ids (
torch.LongTensor형상(batch_size, sequence_length)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스.SeamlessM4TTextToUnitForConditionalGeneration를 사용하여 인덱스를 얻을 수 있습니다. 입력 ID란 무엇인가요?
- spkr_id (
int, 선택) — 음성 합성에 사용되는 화자의 ID입니다.config.vocoder_num_spkrs보다 작아야 합니다. - tgt_lang (
str, 선택 사항) — 번역의 대상 언어로 사용할 언어 ID입니다.
SeamlessM4THifiGan
forward
< source >( inputs_embeds: Tensor ) → torch.Tensor
매개변수
- spectrogram (
torch.Tensor) — 로그 멜 스펙트로그램을 포함하는 텐서. 배치 형태일 경우(batch_size, sequence_length, model_in_dim)형태를, 배치되지 않은 형태일 경우(sequence_length, model_in_dim)형태를 가질 수 있습니다.model_in_dim은config.unit_embed_dim,config.lang_embed_dim,config.spkr_embed_dim의 합입니다.
반환값
torch.Tensor
음성 웨이브포름을 포함하는 Tensor입니다. 입력 스펙트로그램이 배치된 경우, 형태는 (batch_size, num_frames,)입니다. 배치되지 않은 경우, 형태는 (num_frames,)입니다.
log-mel spectrogram을 음성 waveform으로 변환합니다. log-mel spectrogram의 batch를 전달하면 음성 waveform의 batch가 반환됩니다. 단일, 비-batch log-mel spectrogram을 전달하면 단일, 비-batch 음성 waveform이 반환됩니다.
SeamlessM4TTextToUnitModel
class transformers.SeamlessM4TTextToUnitModel
< source >( config: SeamlessM4TConfigembed_tokens_decoder: typing.Optional[torch.nn.Embedding] = None )
매개변수
- config (SeamlessM4TConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
- embed_tokens_decoder (
nn.Embedding, 선택) — 디코더의 입력 임베딩입니다.
Transformer 기반의 텍스트-단위 인코더-디코더입니다. 인코더는 임베딩이 없는 SeamlessM4TEncoder이고, 디코더는 SeamlessM4TDecoder입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
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] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqModelOutput or tuple(torch.Tensor)
매개변수
- input_ids (
torch.LongTensor형상이(batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- decoder_input_ids (
torch.LongTensor형상(batch_size, target_sequence_length), 선택 사항) — 어휘에서 디코더 입력 시퀀스 토큰의 인덱스입니다. AutoTokenizer를 사용하여 인덱스를 가져올 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()을 참조하세요. 디코더 입력 ID란 무엇인가요?AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- decoder_attention_mask (
torch.LongTensor, shape(batch_size, target_sequence_length), 선택 사항) — 특정 토큰 인덱스에 대한 attention을 수행하지 않도록 하는 mask입니다. 기본적으로 causal mask를 사용하여 모델이 미래를 예측할 때 이전 입력만 참조할 수 있도록 합니다. - encoder_outputs (
tuple[tuple[torch.Tensor]], 선택 사항) — (last_hidden_state, 선택 사항:hidden_states, 선택 사항:attentions)으로 구성된 Tuple입니다.last_hidden_state의 shape은(batch_size, sequence_length, hidden_size), 선택 사항)이며, 인코더의 마지막 레이어 출력에서 생성된 hidden-states의 시퀀스입니다. 디코더의 cross-attention에 사용됩니다. - past_key_values (
~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는past_key_values디코딩의 이전 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - decoder_inputs_embeds (
torch.Tensor형상(batch_size, target_sequence_length, hidden_size), 선택 사항) — 선택적으로,decoder_input_ids대신에 임베딩된 표현을 직접 전달할 수 있습니다.past_key_values이 사용되면, 선택적으로 마지막decoder_inputs_embeds만 입력하면 됩니다(참고:past_key_values). 이는decoder_input_ids인덱스를 관련 벡터로 변환하는 방식을 모델의 내부 임베딩 조회 행렬보다 더 세밀하게 제어하려는 경우에 유용합니다.decoder_input_ids와decoder_inputs_embeds가 모두 설정되지 않은 경우,decoder_inputs_embeds는inputs_embeds의 값을 가져옵니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
Seq2SeqModelOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 Seq2SeqModelOutput(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(SeamlessM4TConfig)과 입력에 따라 다양한 요소를 포함합니다.
SeamlessM4TTextToUnitModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 decoder 마지막 레이어 출력의 hidden-state 시퀀스입니다.past_key_values가 사용되면,(batch_size, 1, hidden_size)형태의 시퀀스의 마지막 hidden-state만 출력됩니다.past_key_values (
EncoderDecoderCache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — EncoderDecoderCache 인스턴스입니다. 자세한 내용은 kv 캐시 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value)를 포함합니다(입력
past_key_values참조).decoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어 출력의 decoder hidden-states와 선택적인 초기 embedding 출력
decoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 decoder의 attention 가중치입니다.
cross_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
encoder_last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 모델 인코더의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.encoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되었거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어 출력의 인코더 hidden-states와 선택적인 초기 임베딩 출력.
encoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 인코더 attention 가중치입니다.
SeamlessM4TTextToUnitForConditionalGeneration
class transformers.SeamlessM4TTextToUnitForConditionalGeneration
< source >( config: SeamlessM4TConfigembed_tokens_decoder: typing.Optional[torch.nn.Embedding] = None )
매개변수
- config (SeamlessM4TConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
- embed_tokens_decoder (
nn.Embedding, 선택) — 디코더의 입력 임베딩입니다.
언어 모델 헤드를 갖춘 Transformer 텍스트-단위 인코더-디코더입니다. 기본 인코더-디코더 모델은 SeamlessM4TTextToUnit입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
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)
매개변수
- input_ids (
torch.LongTensor형상이(batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- decoder_input_ids (
torch.LongTensorshape(batch_size, target_sequence_length), 선택 사항) — 어휘(decoder input sequence) 토큰의 인덱스입니다. 인덱스는 AutoTokenizer를 사용하여 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()을 참조하세요. decoder input ID란 무엇인가요? Bart는 decoder_input_ids 생성의 시작 토큰으로 eos_token_id를 사용합니다. past_key_values를 사용하는 경우, 선택적으로 마지막 decoder_input_ids만 입력하면 됩니다(past_key_values 참조). 번역 및 요약 학습의 경우 decoder_input_ids를 제공해야 합니다. decoder_input_ids가 제공되지 않으면, 해당 논문에 따라 노이즈 제거 사전 학습을 위해 input_ids를 오른쪽으로 이동시켜 이 텐서를 생성합니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
Bart는
decoder_input_ids생성의 시작 토큰으로eos_token_id를 사용합니다.past_key_values를 사용하는 경우, 선택적으로 마지막decoder_input_ids만 입력하면 됩니다(past_key_values참조).번역 및 요약 학습을 위해
decoder_input_ids를 제공해야 합니다.decoder_input_ids가 제공되지 않으면, 해당 논문에 따라 노이즈 제거 사전 학습을 위해input_ids를 오른쪽으로 이동시켜 이 텐서를 생성합니다. - decoder_attention_mask (
torch.LongTensor다음 형태의(batch_size, target_sequence_length), 선택 사항) — 기본 동작:decoder_input_ids. 의 pad 토큰을 무시하는 텐서를 생성합니다. 기본값으로 Causal mask도 사용됩니다. 패딩 동작을 변경하려면 modeling_bart._prepare_decoder_attention_mask를 읽고 필요에 맞게 수정해야 합니다. 기본 전략에 대한 자세한 내용은 논문에서 다이어그램 1을 참고하세요.패딩 동작을 변경하려면
modeling_bart._prepare_decoder_attention_mask를 읽고 필요에 맞게 수정해야 합니다. 기본 전략에 대한 자세한 정보는 논문의 다이어그램 1을 참고하세요. - encoder_outputs (
tuple[tuple[torch.Tensor]], 선택 사항) — (last_hidden_state, 선택 사항:hidden_states, 선택 사항:attentions)으로 구성된 Tuple입니다.last_hidden_state의 shape은(batch_size, sequence_length, hidden_size), 선택 사항)이며, 인코더의 마지막 레이어 출력에서 생성된 hidden-states의 시퀀스입니다. 디코더의 cross-attention에 사용됩니다. - past_key_values (
~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는past_key_values디코딩의 이전 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - inputs_embeds (
torch.Tensor형상이(batch_size, sequence_length, hidden_size), 선택 사항) — 선택적으로,input_ids대신 임베딩된 표현을 직접 전달할 수 있습니다. 이는input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 모델 내부 임베딩 조회 행렬보다 더 많은 제어가 필요할 때 유용합니다.labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항): 마스크 언어 모델링 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[-100, 0, ..., config.vocab_size]범위여야 합니다(input_idsdocstring 참조). 인덱스가-100으로 설정된 토큰은 무시(마스크)되며, 손실은 라벨이[0, ..., config.vocab_size]범위에 있는 토큰에 대해서만 계산됩니다. - decoder_inputs_embeds (
torch.Tensor형상(batch_size, target_sequence_length, hidden_size), 선택 사항) — 선택적으로,decoder_input_ids대신에 임베딩된 표현을 직접 전달할 수 있습니다.past_key_values이 사용되면, 선택적으로 마지막decoder_inputs_embeds만 입력하면 됩니다(참고:past_key_values). 이는decoder_input_ids인덱스를 관련 벡터로 변환하는 방식을 모델의 내부 임베딩 조회 행렬보다 더 세밀하게 제어하려는 경우에 유용합니다.decoder_input_ids와decoder_inputs_embeds가 모두 설정되지 않은 경우,decoder_inputs_embeds는inputs_embeds의 값을 가져옵니다. - labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항) — 마스크 언어 모델링 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.vocab_size]범위 내의 값이거나 -100이어야 합니다(input_idsdocstring 참조). 인덱스가-100으로 설정된 토큰은 무시(마스크)되며, 손실은[0, ..., config.vocab_size]범위의 라벨을 가진 토큰에 대해서만 계산됩니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
Seq2SeqLMOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 Seq2SeqLMOutput입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우에도 동일합니다. 구성(SeamlessM4TConfig)과 입력에 따라 다양한 요소를 포함합니다.
SeamlessM4TTextToUnitForConditionalGeneration의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 언어 모델링 손실.logits (
torch.Tensor, shape(batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).past_key_values (
EncoderDecoderCache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — EncoderDecoderCache 인스턴스입니다. 자세한 내용은 kv 캐시 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value)를 포함합니다(입력
past_key_values참조).decoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 디코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
decoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 decoder의 attention 가중치입니다.
cross_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
encoder_last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 모델 인코더의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.encoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되었거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 인코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
encoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 인코더 attention 가중치입니다.